<?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>198157</bug_id>
          
          <creation_ts>2019-05-22 21:52:42 -0700</creation_ts>
          <short_desc>[WASM-References] Add support for Funcref in parameters and return types</short_desc>
          <delta_ts>2019-06-17 11:47:27 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>Yousuke.Kimoto</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1538548</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-05-22 21:52:42 -0700</bug_when>
    <thetext>Add support for Funcref as a value type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543585</commentid>
    <comment_count>1</comment_count>
      <attachid>371816</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-10 20:44:17 -0700</bug_when>
    <thetext>Created attachment 371816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543586</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-10 20:45:55 -0700</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543852</commentid>
    <comment_count>3</comment_count>
      <attachid>371816</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-11 15:31:59 -0700</bug_when>
    <thetext>Comment on attachment 371816
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        a funcref (nÃ©e anyfunc), we first make sure it is an exported wasm function or null. 

remove non-ascii character here.

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:1016
&gt; +            } else if (!value.isFunction(*instance-&gt;owner&lt;JSObject&gt;()-&gt;vm()))

Maybe I&apos;m missing something, but based on the type system, aren&apos;t the only options for this value jsNull() or web assembly host function?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:606
&gt; +        JSValue value = JSValue::decode(encValue);
&gt; +        if (instance-&gt;table()-&gt;type() == TableElementType::Anyref)
&gt; +            instance-&gt;table()-&gt;set(idx, value);
&gt; +        else if (instance-&gt;table()-&gt;type() == TableElementType::Funcref) {
&gt; +            WebAssemblyFunction* wasmFunction;
&gt; +            WebAssemblyWrapperFunction* wasmWrapperFunction;
&gt; +
&gt; +            if (isWebAssemblyHostFunction(*instance-&gt;owner&lt;JSObject&gt;()-&gt;vm(), value, wasmFunction, wasmWrapperFunction)) {
&gt; +                ASSERT(!!wasmFunction || !!wasmWrapperFunction);
&gt; +                if (wasmFunction)
&gt; +                    instance-&gt;table()-&gt;asFuncrefTable()-&gt;setFunction(idx, jsCast&lt;JSObject*&gt;(value), wasmFunction-&gt;importableFunction(), &amp;wasmFunction-&gt;instance()-&gt;instance());
&gt; +                else
&gt; +                    instance-&gt;table()-&gt;asFuncrefTable()-&gt;setFunction(idx, jsCast&lt;JSObject*&gt;(value), wasmWrapperFunction-&gt;importableFunction(), &amp;wasmWrapperFunction-&gt;instance()-&gt;instance());
&gt; +            } else if (!value.isFunction(*instance-&gt;owner&lt;JSObject&gt;()-&gt;vm()))
&gt; +                instance-&gt;table()-&gt;clear(idx);
&gt; +            else
&gt; +                ASSERT_NOT_REACHED();
&gt; +        } else
&gt; +            ASSERT_NOT_REACHED();

This is identical to WasmAIRIRGenerator. Let&apos;s make a helper for it.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:622
&gt; +        JSValue val = instance-&gt;getFunctionWrapper(index);
&gt; +        ASSERT(val.isFunction(*instance-&gt;owner&lt;JSObject&gt;()-&gt;vm()));
&gt; +        return JSValue::encode(val);

ditto.

&gt; Source/JavaScriptCore/wasm/WasmBBQPlan.cpp:289
&gt; +        // TODO check if used in ref.func

?

&gt; Source/JavaScriptCore/wasm/WasmBBQPlan.cpp:290
&gt; +        if (m_exportedFunctionIndices.contains(functionIndex) || true) {

oops

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:47
&gt; +    return (Checked&lt;size_t&gt;(module.moduleInformation().functionIndexSpaceSize()) * sizeof(WriteBarrier&lt;Unknown&gt;)).unsafeGet();

This is not great. We probably only ref.func a few functions, but we&apos;re allocating space for all of them. Can we have a mapping from index=&gt;index, where ModuleInformation just has a HashMap from index in function index space to index in this buffer?

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:65
&gt; +        new (&amp;m_globals.get()[i].anyref) WriteBarrier&lt;Unknown&gt;(UndefinedWriteBarrierTag);

Don&apos;t we want the null value to be jsNull? Not undefined?

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:67
&gt; +    for (unsigned i = 0; i &lt; m_module-&gt;moduleInformation().functionIndexSpaceSize(); ++i)
&gt; +        new (&amp;m_functionWrappers.get()[i]) WriteBarrier&lt;Unknown&gt;(UndefinedWriteBarrierTag);

I think it&apos;s ok to just zero this. Since they should all get filled in (see above). Also, based on above, maybe we just want to use Vector?

&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:191
&gt; +    auto type = m_module.tableInformation.type() == TableElementType::Funcref ? Type::Anyfunc : Type::Anyref;

I suggested this helper in the past, but maybe I was wrong. It would be nice if the tableInformation.type() returned Wasm type.

&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:211
&gt; +    WASM_VALIDATOR_FAIL_IF(index &gt;= m_module.functionIndexSpaceSize(), &quot;ref.func index &quot;, index, &quot; is too large&quot;);

nit: it&apos;d be nice to get a better error message here, maybe one that contains &quot;index&quot; and &quot;index space size&quot;

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:333
&gt; +                emitWasmToJSException(jit, GPRInfo::argumentGPR2, Wasm::ExceptionType::FuncrefNotWasm);

I vote for just going to the slow path instead of this. It makes us have to reason less about if this is a valid place to emit this exception handler.
(My guess: this might be wrong, and it might have to do with callee saves.)

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:244
&gt; +                    return exception(createJSWebAssemblyLinkError(exec, vm, importFailMessage(import, &quot;imported global&quot;, &quot;must be a wasm exported function&quot;)));

nit: error message should also say &quot;or null&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544656</commentid>
    <comment_count>4</comment_count>
      <attachid>372095</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-13 19:02:31 -0700</bug_when>
    <thetext>Created attachment 372095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544897</commentid>
    <comment_count>5</comment_count>
      <attachid>372095</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-14 17:07:24 -0700</bug_when>
    <thetext>Comment on attachment 372095
Patch

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

I found GC bug, so r-, but the code looks really nice!

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:98
&gt; +void setWasmTableElement(Wasm::Instance* instance, uint32_t idx, uint64_t encValue)

Is encValue always encoded JSValue? If so, let&apos;s use EncodedJSValue type instead. And the name &quot;encodedValue&quot; is better.
I also like &quot;index&quot; instead of &quot;idx&quot;.

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:123
&gt; +    JSValue val = instance-&gt;getFunctionWrapper(index);

val =&gt; value.

&gt; Source/JavaScriptCore/wasm/WasmInstance.h:167
&gt; +    HashMap&lt;uint32_t, WriteBarrier&lt;Unknown&gt;, IntHash&lt;uint32_t&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;uint32_t&gt;&gt; m_functionWrappers;

I think visitChildren handling for m_functionWrappers is missing.

&gt; Source/JavaScriptCore/wasm/js/JSToWasm.cpp:127
&gt; +        emitWasmToJSException(jit, GPRInfo::argumentGPR2, argumentsIncludeI64 ? ExceptionType::I64ArgumentType : ExceptionType::I64ReturnType);

I like to see the word &quot;Throw&quot; for such a function. So, &quot;emitThrowWasmToJSException&quot; would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544906</commentid>
    <comment_count>6</comment_count>
      <attachid>372095</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-14 17:36:44 -0700</bug_when>
    <thetext>Comment on attachment 372095
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmInstance.h:167
&gt;&gt; +    HashMap&lt;uint32_t, WriteBarrier&lt;Unknown&gt;, IntHash&lt;uint32_t&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;uint32_t&gt;&gt; m_functionWrappers;
&gt; 
&gt; I think visitChildren handling for m_functionWrappers is missing.

We do it in the JS wrapper, right?

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:98
&gt; +        visitor.appendUnbarriered(thisObject-&gt;instance().getFunctionWrapper(i));

We do the function wrapper visiting here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544944</commentid>
    <comment_count>7</comment_count>
      <attachid>372170</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-14 19:47:08 -0700</bug_when>
    <thetext>Created attachment 372170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545119</commentid>
    <comment_count>8</comment_count>
      <attachid>372170</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-16 00:16:28 -0700</bug_when>
    <thetext>Comment on attachment 372170
Patch

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

r=me with several fixes.

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:86
&gt; +    return m_functionWrappers.contains(i) ? m_functionWrappers.get(i).get() : jsNull();

`contains(i)` and `get(i)` calls are duplicate basically. So we are looking up hash table twice.
Can we just use `get(i)`? I think it will return empty WriteBarrier thing.
Then, we can convert JSEmpty to JSNull, and we can do this function without using `contains`.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:98
&gt; +        visitor.appendUnbarriered(thisObject-&gt;instance().getFunctionWrapper(i));

Ah, I missed it. Why not just iterating the hashmap of wrappers? I think # of wrappers can be much smaller than the total number of function space size. And it also avoids repeated calls of `contains()` / `get()` in getFunctionWrapper.
And I think the hashtable can be modified by the user&apos;s setFunctionWrapper. So locking is necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545302</commentid>
    <comment_count>9</comment_count>
      <attachid>372256</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-17 10:39:36 -0700</bug_when>
    <thetext>Created attachment 372256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545307</commentid>
    <comment_count>10</comment_count>
      <attachid>372257</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-17 10:59:49 -0700</bug_when>
    <thetext>Created attachment 372257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545334</commentid>
    <comment_count>11</comment_count>
      <attachid>372257</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-17 11:44:24 -0700</bug_when>
    <thetext>Comment on attachment 372257
Patch

Clearing flags on attachment: 372257

Committed r246504: &lt;https://trac.webkit.org/changeset/246504&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545335</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-17 11:44:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545336</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-17 11:47:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/51814501&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371816</attachid>
            <date>2019-06-10 20:44:17 -0700</date>
            <delta_ts>2019-06-13 19:02:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198157-20190610204416.patch</filename>
            <type>text/plain</type>
            <size>89050</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWY0YzYxYWZhNDhiM2M3N2FhZDM5ZGYwMjFhNWZjNjU5OWVlOWQ2Li43MmNhY2JjMmFiYTE2ODI2
Y2UwODk0ZDM0ZTRiZTEyNmE2NWNmMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOS0wNi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIEZ1
bmNyZWYgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZnVuY3JlZiBpbiBw
YXJhbWV0ZXJzLCBnbG9iYWxzLCBhbmQgaW4gdGFibGUuZ2V0L3NldC4gV2hlbiBjb252ZXJ0aW5n
IGEgSlNWYWx1ZSB0byAKKyAgICAgICAgYSBmdW5jcmVmIChuw6llIGFueWZ1bmMpLCB3ZSBmaXJz
dCBtYWtlIHN1cmUgaXQgaXMgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiBvciBudWxsLiAKKwor
ICAgICAgICBXZSBhbHNvIGFkZCBzdXBwb3J0IGZvciBSZWYuZnVuYy4gQW55d2hlcmUgYSBSZWYu
ZnVuYyBpcyB1c2VkLCAoc3RhdGljYWxseSkgd2UgY29uc3RydWN0IGEgSlMgd3JhcHBlcgorICAg
ICAgICBmb3IgaXQgc28gdGhhdCB3ZSBuZXZlciBuZWVkIHRvIGNvbnN0cnVjdCBKU1ZhbHVlcyB3
aGVuIGhhbmRsaW5nIHJlZmVyZW5jZXMuIFRoaXMgc2hvdWxkIG1ha2UgdGhyZWFkcworICAgICAg
ICBlYXNpZXIgdG8gaW1wbGVtZW50LgorCisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6dG1wRm9yVHlwZSk6
CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjptb3ZlT3BGb3JWYWx1ZVR5cGUp
OgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgorICAgICAgICAo
SlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6CisgICAgICAgIChKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
YWRkUmV0dXJuKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToKKyAgICAgICAgKiB3YXNt
L1dhc21DYWxsaW5nQ29udmVudGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpDYWxsaW5nQ29u
dmVudGlvbkFpcjo6bWFyc2hhbGxBcmd1bWVudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206
OkNhbGxpbmdDb252ZW50aW9uQWlyOjpzZXR1cENhbGwgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbUV4Y2VwdGlvblR5cGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6aXNWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjppc1N1YnR5
cGUpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6
Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAg
ICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4
cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6Okluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFu
Y2U6OmdldEZ1bmN0aW9uV3JhcHBlciBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Okluc3Rh
bmNlOjpzZXRGdW5jdGlvbldyYXBwZXIpOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmg6
CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OnJlZmVyZW5jZWRGdW5jdGlvbnMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6YWRkUmVmZXJlbmNlZEZ1bmN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWwpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAgICAgKiB3YXNtL1dhc21W
YWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZUdldCk6
CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNldCk6CisgICAgICAgIChK
U0M6Oldhc206OlZhbGlkYXRlOjphZGRSZWZJc051bGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpW
YWxpZGF0ZTo6YWRkUmVmRnVuYyk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjpzZXRM
b2NhbCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRDYWxsKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9q
cy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBl
cik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAo
SlNDOjppc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
cik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmg6CisgICAg
ICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmhhbmRsZUJh
ZEk2NFVzZSk6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6ZW1pdFdhc21Ub0pTRXhjZXB0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pT
Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdyk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0wNiAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgYWFy
Y2g2NDog4oCYSlNDOjpBUk02NEFzc2VtYmxlcjo6TGlua1JlY29yZDo6PHVubmFtZWQgdW5pb24+
OjpSZWFsVHlwZXM6Om1fY29tcGFyZVJlZ2lzdGVy4oCZIGlzIHRvbyBzbWFsbCB0byBob2xkIGFs
bCB2YWx1ZXMgb2Yg4oCYSlNDOjpBUk02NEFzc2VtYmxlcjo6UmVnaXN0ZXJJROKAmSB7YWthIOKA
mGVudW0gSlNDOjpBUk02NFJlZ2lzdGVyczo6UmVnaXN0ZXJJROKAmX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGFkYjMzZjU0
MDQ3ODBiNTRkMWE5ZTgxMTEyNDk4NzhjMzdjNWFlNzMuLmNlMDk4NzhmYWI0MjVlMTk1NTU5ZDA3
YmQ2ZmY0ZWI5Y2ZjMWQwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkJpbmFy
eVN3aXRjaC5oIgogI2luY2x1ZGUgIkRpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVy
cy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIlNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAt
MjM0LDYgKzIzNSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJlZmVyZW5jZXMKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUmIHZh
bHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKIAogICAgIC8vIFRhYmxlcwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpOwpAQCAtMzcwLDYgKzM3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZzMy
KCk7CiAgICAgICAgIGNhc2UgVHlwZTo6STY0OgogICAgICAgICBjYXNlIFR5cGU6OkFueXJlZjoK
KyAgICAgICAgY2FzZSBUeXBlOjpBbnlmdW5jOgogICAgICAgICAgICAgcmV0dXJuIGc2NCgpOwog
ICAgICAgICBjYXNlIFR5cGU6OkYzMjoKICAgICAgICAgICAgIHJldHVybiBmMzIoKTsKQEAgLTU1
NCw2ICs1NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIE1vdmUzMjsKICAgICAg
ICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZTo6QW55cmVmOgorICAgICAgICBj
YXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAgICAgICByZXR1cm4gTW92ZTsKICAgICAgICAgY2Fz
ZSBUeXBlOjpGMzI6CiAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OwpAQCAtNzk5LDYgKzgw
Myw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1h
dGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZTo6QW55cmVmOgorICAgICAgICBj
YXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgYXJnLCBtX2xvY2Fs
c1tpXSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlOjpGMzI6CkBAIC04
ODQsNiArODg5LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1
aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBtX2xvY2Fscy51bmNoZWNr
ZWRBcHBlbmQobG9jYWwpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBU
eXBlOjpBbnlyZWY6CisgICAgICAgIGNhc2UgVHlwZTo6QW55ZnVuYzoKICAgICAgICAgICAgIGFw
cGVuZChNb3ZlLCBBcmc6OmltbShKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSwgbG9jYWwpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZTo6STMyOgpAQCAtOTE4LDYgKzky
NCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KEJhc2ljQmxvY2sqIGJsb2Nr
LCBUeXBlIHR5cGUsIHVpbnQ2NF90IHZhbHVlKSAtCiAgICAgY2FzZSBUeXBlOjpJMzI6CiAgICAg
Y2FzZSBUeXBlOjpJNjQ6CiAgICAgY2FzZSBUeXBlOjpBbnlyZWY6CisgICAgY2FzZSBUeXBlOjpB
bnlmdW5jOgogICAgICAgICBhcHBlbmQoYmxvY2ssIE1vdmUsIEFyZzo6YmlnSW1tKHZhbHVlKSwg
cmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpGMzI6CkBAIC05NTMsNiAr
OTYwLDIyIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlw
ZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAor
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIC8vIEZJWE1FOiBFbWl0IHRo
aXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2
Pi4KKyAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGU6OkFueWZ1bmMpOworCisgICAgdWludDY0
X3QgKCpkb1JlZkZ1bmMpKEluc3RhbmNlKiwgdWludDMyX3QpID0gW10gKEluc3RhbmNlKiBpbnN0
YW5jZSwgdWludDMyX3QgaW5kZXgpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgSlNWYWx1ZSB2YWwg
PSBpbnN0YW5jZS0+Z2V0RnVuY3Rpb25XcmFwcGVyKGluZGV4KTsKKyAgICAgICAgQVNTRVJUKHZh
bC5pc0Z1bmN0aW9uKCppbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCkpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWwpOworICAgIH07CisKKyAgICBlbWl0Q0NhbGwo
ZG9SZWZGdW5jLCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMy
LCBpbmRleCkpOworCisgICAgcmV0dXJuIHsgfTsKK30KKwogYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KQEAgLTk3NiwxMCAr
OTk5LDI2IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBl
JiBpZHgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4KICAgICBBU1NFUlQoaWR4LnR5cGUoKSA9
PSBUeXBlOjpJMzIpOwogICAgIEFTU0VSVCh2YWx1ZS50bXAoKSk7CiAKLSAgICB2b2lkICgqZG9T
ZXQpKEluc3RhbmNlKiwgaW50MzJfdCwgdWludDY0X3QgdmFsdWUpID0gW10gKEluc3RhbmNlKiBp
bnN0YW5jZSwgaW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbHVlKSAtPiB2b2lkIHsKLSAgICAgICAg
Ly8gRklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBw
b3J0ZWQgaGVyZS4KLSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgxNTc+Ci0gICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5zZXQoaWR4LCBKU1Zh
bHVlOjpkZWNvZGUodmFsdWUpKTsKKyAgICB2b2lkICgqZG9TZXQpKEluc3RhbmNlKiwgdWludDMy
X3QsIHVpbnQ2NF90IHZhbHVlKSA9IFtdIChJbnN0YW5jZSogaW5zdGFuY2UsIHVpbnQzMl90IGlk
eCwgdWludDY0X3QgZW5jVmFsdWUpIC0+IHZvaWQgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY1ZhbHVlKTsKKyAgICAgICAgaWYgKGluc3RhbmNlLT50YWJsZSgp
LT50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6QW55cmVmKQorICAgICAgICAgICAgaW5zdGFu
Y2UtPnRhYmxlKCktPnNldChpZHgsIHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2Ut
PnRhYmxlKCktPnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKSB7CisgICAgICAg
ICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb247CisgICAgICAgICAgICBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbjsKKworICAgICAgICAg
ICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24oKmluc3RhbmNlLT5vd25lcjxKU09iamVj
dD4oKS0+dm0oKSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoISF3YXNtRnVuY3Rpb24gfHwgISF3YXNtV3JhcHBlckZ1
bmN0aW9uKTsKKyAgICAgICAgICAgICAgICBpZiAod2FzbUZ1bmN0aW9uKQorICAgICAgICAgICAg
ICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24o
aWR4LCBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSksIHdhc21GdW5jdGlvbi0+aW1wb3J0YWJsZUZ1
bmN0aW9uKCksICZ3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCkpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCktPmFz
RnVuY3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGlkeCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUp
LCB3YXNtV3JhcHBlckZ1bmN0aW9uLT5pbXBvcnRhYmxlRnVuY3Rpb24oKSwgJndhc21XcmFwcGVy
RnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCkpOworICAgICAgICAgICAgfSBlbHNlIGlm
ICghdmFsdWUuaXNGdW5jdGlvbigqaW5zdGFuY2UtPm93bmVyPEpTT2JqZWN0PigpLT52bSgpKSkK
KyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+Y2xlYXIoaWR4KTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCiAgICAg
ZW1pdENDYWxsKGRvU2V0LCBUeXBlZFRtcCgpLCBpbnN0YW5jZVZhbHVlKCksIGlkeCwgdmFsdWUp
OwpAQCAtMTEwMyw3ICsxMTQyLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKHVp
bnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFIKICAgICAgICAg
YXBwZW5kKG1vdmVPcEZvclZhbHVlVHlwZSh0eXBlKSwgdmFsdWUsIEFyZzo6YWRkcih0ZW1wKSk7
CiAgICAgfQogCi0gICAgaWYgKHR5cGUgPT0gQW55cmVmKQorICAgIGlmIChpc1N1YnR5cGUodHlw
ZSwgQW55cmVmKSkKICAgICAgICAgZW1pdFdyaXRlQmFycmllckZvckpTV3JhcHBlcigpOwogCiAg
ICAgcmV0dXJuIHsgfTsKQEAgLTE2MjMsNiArMTY2Miw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZFJldHVybihjb25zdCBDb250cm9sRGF0YSYgZGF0YSwgY29uc3QgRXhwcmVzc2lvbkxpc3Qm
IHJlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgICAg
IGNhc2UgVHlwZTo6QW55cmVmOgorICAgICAgICBjYXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAg
ICAgICBhcHBlbmQoTW92ZSwgcmV0dXJuVmFsdWVzWzBdLCByZXR1cm5WYWx1ZUdQUik7CiAgICAg
ICAgICAgICBhcHBlbmQoUmV0NjQsIHJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDU1YmQyZDhiNWZlNjYxOTZhNWUyZDVkMjk2MmVkMTZhOTYyNmE5NGQuLjhlOTAzOWFi
MzYxMWUxZWE0MjhjMDE1OTA3Y2ViOTE4OGU5NjFiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNp
bmNsdWRlICJCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiRGlzYWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
VmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0xODcsNiArMTg4LDcgQEAgcHVibGljOgogCiAgICAgLy8g
UmVmZXJlbmNlcwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZklz
TnVsbChFeHByZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCiAgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlk
eCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC01MzgsNyArNTQwLDcgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KSAtPiBQYXJ0aWFs
UmVzdWx0CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgVmFyaWFibGUqIGxvY2FsID0gbV9wcm9jLmFkZFZhcmlhYmxlKHRvQjNUeXBlKHR5cGUpKTsK
ICAgICAgICAgbV9sb2NhbHMudW5jaGVja2VkQXBwZW5kKGxvY2FsKTsKLSAgICAgICAgYXV0byB2
YWwgPSB0eXBlID09IEFueXJlZiA/IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkgOiAwOworICAg
ICAgICBhdXRvIHZhbCA9IGlzU3VidHlwZSh0eXBlLCBBbnlyZWYpID8gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKSA6IDA7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFi
bGVWYWx1ZT4obV9wcm9jLCBTZXQsIE9yaWdpbigpLCBsb2NhbCwgY29uc3RhbnQodG9CM1R5cGUo
dHlwZSksIHZhbCwgT3JpZ2luKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKQEAgLTU4Miwx
MCArNTg0LDI2IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5
cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4KIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAt
PiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgotICAgIHZvaWQgKCpk
b1NldCkoSW5zdGFuY2UqLCBpbnQzMl90LCB1aW50NjRfdCB2YWx1ZSkgPSBbXSAoSW5zdGFuY2Uq
IGluc3RhbmNlLCBpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsdWUpIC0+IHZvaWQgewotICAgICAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJlIHN1
cHBvcnRlZCBoZXJlLgotICAgICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODE1Nz4KLSAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCktPnNldChpZHgsIEpT
VmFsdWU6OmRlY29kZSh2YWx1ZSkpOworICAgIHZvaWQgKCpkb1NldCkoSW5zdGFuY2UqLCB1aW50
MzJfdCwgdWludDY0X3QgdmFsdWUpID0gW10gKEluc3RhbmNlKiBpbnN0YW5jZSwgdWludDMyX3Qg
aWR4LCB1aW50NjRfdCBlbmNWYWx1ZSkgLT4gdm9pZCB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jVmFsdWUpOworICAgICAgICBpZiAoaW5zdGFuY2UtPnRhYmxl
KCktPnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYpCisgICAgICAgICAgICBpbnN0
YW5jZS0+dGFibGUoKS0+c2V0KGlkeCwgdmFsdWUpOworICAgICAgICBlbHNlIGlmIChpbnN0YW5j
ZS0+dGFibGUoKS0+dHlwZSgpID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpIHsKKyAgICAg
ICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbjsKKyAgICAgICAgICAgIFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOworCisgICAgICAg
ICAgICBpZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbigqaW5zdGFuY2UtPm93bmVyPEpTT2Jq
ZWN0PigpLT52bSgpLCB2YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkg
eworICAgICAgICAgICAgICAgIEFTU0VSVCghIXdhc21GdW5jdGlvbiB8fCAhIXdhc21XcmFwcGVy
RnVuY3Rpb24pOworICAgICAgICAgICAgICAgIGlmICh3YXNtRnVuY3Rpb24pCisgICAgICAgICAg
ICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5hc0Z1bmNyZWZUYWJsZSgpLT5zZXRGdW5jdGlv
bihpZHgsIGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKSwgd2FzbUZ1bmN0aW9uLT5pbXBvcnRhYmxl
RnVuY3Rpb24oKSwgJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+
YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaWR4LCBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1
ZSksIHdhc21XcmFwcGVyRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbVdyYXBw
ZXJGdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKCF2YWx1ZS5pc0Z1bmN0aW9uKCppbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCkp
KQorICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5jbGVhcihpZHgpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OlZvaWQs
IG9yaWdpbigpLApAQCAtNTk1LDYgKzYxMywyMiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRh
YmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUAog
ICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAorewor
ICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KKyAgICB1aW50NjRfdCAoKmRvUmVmRnVuYykoSW5zdGFu
Y2UqLCB1aW50MzJfdCkgPSBbXSAoSW5zdGFuY2UqIGluc3RhbmNlLCB1aW50MzJfdCBpbmRleCkg
LT4gdWludDY0X3QgeworICAgICAgICBKU1ZhbHVlIHZhbCA9IGluc3RhbmNlLT5nZXRGdW5jdGlv
bldyYXBwZXIoaW5kZXgpOworICAgICAgICBBU1NFUlQodmFsLmlzRnVuY3Rpb24oKmluc3RhbmNl
LT5vd25lcjxKU09iamVjdD4oKS0+dm0oKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHZhbCk7CisgICAgfTsKKworICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6SW50NjQsIG9yaWdpbigpLAorICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4oZG9SZWZGdW5jLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAg
IGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCBpbmRleCkpOworCisgICAg
cmV0dXJuIHsgfTsKK30KKwogYXV0byBCM0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEFT
U0VSVChtX2xvY2Fsc1tpbmRleF0pOwpAQCAtNjc5LDcgKzcxMyw3IEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4g
UGFydGlhbFJlCiAgICAgVmFsdWUqIGdsb2JhbHNBcnJheSA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCks
IGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mR2xv
YmFscygpKSk7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBTdG9yZSwgb3JpZ2luKCksIHZhbHVlLCBnbG9iYWxzQXJyYXksIHNhZmVDYXN0PGludDMy
X3Q+KGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogCi0gICAgaWYgKG1faW5mby5nbG9iYWxz
W2luZGV4XS50eXBlID09IEFueXJlZikKKyAgICBpZiAoaXNTdWJ0eXBlKG1faW5mby5nbG9iYWxz
W2luZGV4XS50eXBlLCBBbnlyZWYpKQogICAgICAgICBlbWl0V3JpdGVCYXJyaWVyRm9ySlNXcmFw
cGVyKCk7CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCmluZGV4IDBiMzhmOWQ1OTZiZmMwN2JjYjY3MmJjMmExN2I3MWFhZGMxYzQ5
YWEuLjFlMDIwN2YxMDAyMGU0NjZiYzMzYWViMGJhMWY1ZDdhM2EwZDcxNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTI4Niw3ICsyODYsOCBAQCB2
b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMoQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQog
CiAgICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdID0gV1RGTW92
ZSgqcGFyc2VBbmRDb21waWxlUmVzdWx0KTsKIAotICAgICAgICBpZiAobV9leHBvcnRlZEZ1bmN0
aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgeworICAgICAgICAvLyBUT0RPIGNo
ZWNrIGlmIHVzZWQgaW4gcmVmLmZ1bmMKKyAgICAgICAgaWYgKG1fZXhwb3J0ZWRGdW5jdGlvbklu
ZGljZXMuY29udGFpbnMoZnVuY3Rpb25JbmRleCkgfHwgdHJ1ZSkgewogICAgICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
X2VtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uSW5kZXgsIG1fY3Jl
YXRlRW1iZWRkZXJXcmFwcGVyKG1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XSwg
c2lnbmF0dXJlLCAmbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9t
b2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgbV9tb2RlLCBmdW5jdGlvbkluZGV4KSk7CiAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCAx
MGViOGNkNGU3MzM2ZTBlZjI0ZGM5YmU1MDRiNzUwN2NlODNjNzUyLi5mN2JlMzhjNjdiZWU5ZWIz
NTMzMjExM2IyM2U2YjI0M2RlOTRjZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtMjM2LDYgKzIzNiw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgVHlwZTo6STMyOgogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAg
ICAgICAgY2FzZSBUeXBlOjpBbnlyZWY6CisgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAg
ICAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRJbXBsKG1fZ3ByQXJncywgZ3BBcmd1bWVudENvdW50
LCBzdGFja09mZnNldCwgcmVnRnVuYywgc3RhY2tGdW5jKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFR5cGU6OkYzMjoKQEAgLTMwMSw2ICszMDIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgVHlwZTo6STMyOgogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2Fz
ZSBUeXBlOjpBbnlyZWY6CisgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAgICAgICAgICAg
IHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnQgPSBCMzo6VmFsdWVSZXA6OnJlZyhHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FeGNlcHRpb25UeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRXhjZXB0aW9uVHlwZS5oCmluZGV4
IGQ0NDZjMGVkMWI0ZGQ5ZjY2ZmY1OTM4MjY1YTA2NmUwZGM5MmQ2MTEuLmYwMGY4ZjE4MWU2NDBk
OGU4M2Y4NmIyZDlkYzFjNmMzMjU4ZDJjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21FeGNlcHRpb25UeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUV4Y2VwdGlvblR5cGUuaApAQCAtNDIsNyArNDIsOCBAQCBuYW1lc3BhY2UgV2Fz
bSB7CiAgICAgbWFjcm8oSW50ZWdlck92ZXJmbG93LCAiSW50ZWdlciBvdmVyZmxvdyIpIFwKICAg
ICBtYWNybyhTdGFja092ZXJmbG93LCAiU3RhY2sgb3ZlcmZsb3ciKSBcCiAgICAgbWFjcm8oSTY0
QXJndW1lbnRUeXBlLCAiV2ViQXNzZW1ibHkgZnVuY3Rpb24gd2l0aCBhbiBpNjQgYXJndW1lbnQg
Y2FuJ3QgYmUgY2FsbGVkIGZyb20gSmF2YVNjcmlwdCIpIFwKLSAgICBtYWNybyhJNjRSZXR1cm5U
eXBlLCAiV2ViQXNzZW1ibHkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGk2NCBjYW4ndCBiZSBjYWxs
ZWQgZnJvbSBKYXZhU2NyaXB0IikKKyAgICBtYWNybyhJNjRSZXR1cm5UeXBlLCAiV2ViQXNzZW1i
bHkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGk2NCBjYW4ndCBiZSBjYWxsZWQgZnJvbSBKYXZhU2Ny
aXB0IikgXAorICAgIG1hY3JvKEZ1bmNyZWZOb3RXYXNtLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4
cG9ydGVkIHdhc20gZnVuY3Rpb24iKQogCiBlbnVtIGNsYXNzIEV4Y2VwdGlvblR5cGUgOiB1aW50
MzJfdCB7CiAjZGVmaW5lIE1BS0VfRU5VTShlbnVtTmFtZSwgZXJyb3IpIGVudW1OYW1lLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IDYyOTIyNTBmMjVlZWE5NDkw
YzQzYTRlYmQ0NmQyZTI1ZTBjMzZjOTUuLjgwYTMxNGZmNzU3ZjA3M2IwYjkxYzgwNWEzMDliOTI1
NjZiZDMyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3Jt
YXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTY4
LDEyICs2OCwyMCBAQCBpbmxpbmUgYm9vbCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAgICAgY2Fz
ZSBGNjQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQW55cmVmOgorICAgIGNhc2Ug
QW55ZnVuYzoKICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNl
cygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CisKK2lubGluZSBib29sIGlzU3VidHlwZShUeXBlIHN1YiwgVHlwZSBwYXJlbnQpCit7
CisgICAgaWYgKHN1YiA9PSBwYXJlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBzdWIgPT0gQW55ZnVuYyAmJiBwYXJlbnQgPT0gQW55cmVmOworfQogICAgIAogZW51bSBjbGFz
cyBFeHRlcm5hbEtpbmQgOiB1aW50OF90IHsKICAgICAvLyBGSVhNRSBhdXRvLWdlbmVyYXRlIHRo
aXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMzEKQEAgLTEz
OCw2ICsxNDYsNyBAQCBzdHJ1Y3QgR2xvYmFsIHsKICAgICBlbnVtIEluaXRpYWxpemF0aW9uVHlw
ZSB7CiAgICAgICAgIElzSW1wb3J0LAogICAgICAgICBGcm9tR2xvYmFsSW1wb3J0LAorICAgICAg
ICBGcm9tUmVmRnVuYywKICAgICAgICAgRnJvbUV4cHJlc3Npb24KICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGRmYWU4
ZjJjZjNhZDJkYTE4YWE4OGJiMjZiZDU1OGNjN2Q4NDc2ZGUuLjI2MGJlNmQ1YzlkYmFiOWY5Zjlj
ZTY3ZTcwZjI3Yjk4YTZhNjA3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC0zMDEsNyArMzAxLDcgQEAgYXV0byBGdW5jdGlvblBh
cnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAg
Y2FzZSBSZWZOdWxsOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsK
LSAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRDb25zdGFudChB
bnlyZWYsIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpKTsKKyAgICAgICAgbV9leHByZXNzaW9u
U3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRDb25zdGFudChBbnlmdW5jLCBKU1ZhbHVlOjplbmNv
ZGUoanNOdWxsKCkpKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zMTQsNiAr
MzE0LDE3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigp
IC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNl
IFJlZkZ1bmM6IHsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIEV4cHJlc3Npb25U
eXBlIHJlc3VsdDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihpbmRleCksICJjYW4ndCBn
ZXQgaW5kZXggZm9yIHJlZi5mdW5jIik7CisKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRF
WFQoYWRkUmVmRnVuYyhpbmRleCwgcmVzdWx0KSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNr
LmFwcGVuZChyZXN1bHQpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIGNhc2Ug
R2V0TG9jYWw6IHsKICAgICAgICAgdWludDMyX3QgaW5kZXg7CiAgICAgICAgIEV4cHJlc3Npb25U
eXBlIHJlc3VsdDsKQEAgLTY4MSw2ICs2OTIsMTMgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCisgICAgY2FzZSBSZWZGdW5jOiB7CisgICAgICAgIHVp
bnQzMl90IHVudXNlZDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50
MzIodW51c2VkKSwgImNhbid0IGdldCBpbW1lZGlhdGUgZm9yICIsIG1fY3VycmVudE9wY29kZSwg
IiBpbiB1bnJlYWNoYWJsZSBjb250ZXh0Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90
IGVuYWJsZWQiKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKICAgICBjYXNlIEdyb3dN
ZW1vcnk6CiAgICAgY2FzZSBDdXJyZW50TWVtb3J5OiB7CiAgICAgICAgIHVpbnQ4X3QgcmVzZXJ2
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAppbmRleCAz
NzA1OTk2OGUwYjc4NTRkMjczMzZmMTkzN2VjMjU4YTM3MGI0OTY2Li44NjAzZjk1N2QwZGM2NDFl
NDZjNDEwYzY3NTYzZTQ3ZjFjN2FlNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21JbnN0YW5jZS5jcHAKQEAgLTQxLDEyICs0MSwxOCBAQCBzaXplX3QgZ2xvYmFsTWVtb3J5
Qnl0ZVNpemUoTW9kdWxlJiBtb2R1bGUpCiB7CiAgICAgcmV0dXJuIChDaGVja2VkPHNpemVfdD4o
bW9kdWxlLm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFscy5zaXplKCkpICogc2l6ZW9mKFJlZ2lz
dGVyKSkudW5zYWZlR2V0KCk7CiB9CisKK3NpemVfdCBmdW5jdGlvbldyYXBwZXJCeXRlU2l6ZShN
b2R1bGUmIG1vZHVsZSkKK3sKKyAgICByZXR1cm4gKENoZWNrZWQ8c2l6ZV90Pihtb2R1bGUubW9k
dWxlSW5mb3JtYXRpb24oKS5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpICogc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPikpLnVuc2FmZUdldCgpOworfQogfQogCiBJbnN0YW5jZTo6SW5zdGFu
Y2UoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiBw
b2ludGVyVG9Ub3BFbnRyeUZyYW1lLCB2b2lkKiogcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCwg
U3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3JlVG9wQ2FsbEZyYW1lKQogICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX21vZHVsZShXVEZNb3ZlKG1vZHVsZSkpCiAgICAgLCBt
X2dsb2JhbHMoTWFsbG9jUHRyPEdsb2JhbFZhbHVlPjo6bWFsbG9jKGdsb2JhbE1lbW9yeUJ5dGVT
aXplKG1fbW9kdWxlLmdldCgpKSkpCisgICAgLCBtX2Z1bmN0aW9uV3JhcHBlcnMoTWFsbG9jUHRy
PFdyaXRlQmFycmllcjxVbmtub3duPj46Om1hbGxvYyhmdW5jdGlvbldyYXBwZXJCeXRlU2l6ZSht
X21vZHVsZS5nZXQoKSkpKQogICAgICwgbV9nbG9iYWxzVG9NYXJrKG1fbW9kdWxlLmdldCgpLm1v
ZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFscy5zaXplKCkpCiAgICAgLCBtX3BvaW50ZXJUb1RvcEVu
dHJ5RnJhbWUocG9pbnRlclRvVG9wRW50cnlGcmFtZSkKICAgICAsIG1fcG9pbnRlclRvQWN0dWFs
U3RhY2tMaW1pdChwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0KQpAQCAtNTUsOSArNjEsMTIgQEAg
SW5zdGFuY2U6Okluc3RhbmNlKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxl
LCBFbnRyeUZyYW1lKiogcG9pbnRlclQKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9udW1JbXBvcnRGdW5jdGlvbnM7ICsraSkKICAgICAgICAgbmV3IChpbXBvcnRGdW5jdGlvbklu
Zm8oaSkpIEltcG9ydEZ1bmN0aW9uSW5mbygpOwotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lk
Kj4obV9nbG9iYWxzLmdldCgpKSwgMCwgZ2xvYmFsTWVtb3J5Qnl0ZVNpemUobV9tb2R1bGUuZ2V0
KCkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9y
bWF0aW9uKCkuZ2xvYmFscy5zaXplKCk7ICsraSkKKyAgICAgICAgbmV3ICgmbV9nbG9iYWxzLmdl
dCgpW2ldLmFueXJlZikgV3JpdGVCYXJyaWVyPFVua25vd24+KFVuZGVmaW5lZFdyaXRlQmFycmll
clRhZyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZv
cm1hdGlvbigpLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKTsgKytpKQorICAgICAgICBuZXcgKCZt
X2Z1bmN0aW9uV3JhcHBlcnMuZ2V0KClbaV0pIFdyaXRlQmFycmllcjxVbmtub3duPihVbmRlZmlu
ZWRXcml0ZUJhcnJpZXJUYWcpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21vZHVs
ZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChtX21vZHVsZS5nZXQoKS5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHNbaV0udHlwZSA9PSBB
bnlyZWYpCisgICAgICAgIGlmIChpc1N1YnR5cGUobV9tb2R1bGUuZ2V0KCkubW9kdWxlSW5mb3Jt
YXRpb24oKS5nbG9iYWxzW2ldLnR5cGUsIEFueXJlZikpCiAgICAgICAgICAgICBtX2dsb2JhbHNU
b01hcmsuc2V0KGkpOwogICAgIH0KIH0KQEAgLTgwLDYgKzg5LDE4IEBAIHZvaWQgSW5zdGFuY2U6
OnNldEdsb2JhbCh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIG1fZ2xvYmFscy5nZXQo
KVtpXS5hbnlyZWYuc2V0KCpvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPnZtKCksIG93
bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSwgdmFsdWUpOwogfQogCitKU1ZhbHVlIEluc3Rh
bmNlOjpnZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQgaSkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9mdW5jdGlvbldyYXBwZXJzLmdldCgpW2ldLmdldCgpOworfQorCit2b2lkIEluc3RhbmNlOjpz
ZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NF
UlQobV9vd25lcik7CisgICAgQVNTRVJUKHZhbHVlLmlzRnVuY3Rpb24oKm93bmVyPEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZT4oKS0+dm0oKSkpOworICAgIG1fZnVuY3Rpb25XcmFwcGVycy5nZXQoKVtp
XS5zZXQoKm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+dm0oKSwgb3duZXI8SlNXZWJB
c3NlbWJseUluc3RhbmNlPigpLCB2YWx1ZSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpX
YXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21JbnN0YW5jZS5oCmluZGV4IDVkMWZjZjNmOWQzYjgyYmQwOTgxYTIwY2NjZDU0
NGU3ODA3Y2U0ZDcuLjAxNWFlMWFiYjUzNjA5NzQ5MTM3Njk3NDQyZjA3NzlkOGI2NTJiMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCkBAIC05MSw2ICs5MSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdsb2JhbCh1bnNpZ25lZCBpLCBpbnQ2NF90IGJpdHMp
IHsgbV9nbG9iYWxzLmdldCgpW2ldLnByaW1pdGl2ZSA9IGJpdHM7IH0KICAgICB2b2lkIHNldEds
b2JhbCh1bnNpZ25lZCwgSlNWYWx1ZSk7CiAgICAgY29uc3QgQml0VmVjdG9yJiBnbG9iYWxzVG9N
YXJrKCkgeyByZXR1cm4gbV9nbG9iYWxzVG9NYXJrOyB9CisgICAgSlNWYWx1ZSBnZXRGdW5jdGlv
bldyYXBwZXIodW5zaWduZWQpIGNvbnN0OworICAgIHZvaWQgc2V0RnVuY3Rpb25XcmFwcGVyKHVu
c2lnbmVkLCBKU1ZhbHVlKTsKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnko
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CkBAIC0xNTksNiArMTYxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgdWludDY0X3QgcHJpbWl0aXZlOwogICAgIH07CiAgICAgTWFsbG9jUHRyPEdsb2JhbFZh
bHVlPiBtX2dsb2JhbHM7CisgICAgTWFsbG9jUHRyPFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9m
dW5jdGlvbldyYXBwZXJzOwogICAgIEJpdFZlY3RvciBtX2dsb2JhbHNUb01hcms7CiAgICAgRW50
cnlGcmFtZSoqIG1fcG9pbnRlclRvVG9wRW50cnlGcmFtZSB7IG51bGxwdHIgfTsKICAgICB2b2lk
KiogbV9wb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCBhZDVl
Yjk1MjZhYzdhYzNiZTQzN2ZjNjIzZGYwYmQ3ZGMyMDgwN2QyLi44OGY2NmNiNjM5MTU5YzM2OWQ5
ZGRlNjBhMWZjZTZkYTVkMTcxMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVk
ZSAiV2FzbUZvcm1hdC5oIgogCisjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewpAQCAt
NjYsNiArNjcsOSBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICB1aW50MzJfdCBtZW1vcnlDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1lbW9yeSA/IDEgOiAwOyB9CiAgICAgdWludDMyX3QgdGFibGVD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlSW5mb3JtYXRpb24gPyAxIDogMDsgfQogCisgICAg
Y29uc3QgQml0VmVjdG9yJiByZWZlcmVuY2VkRnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWZlcmVuY2VkRnVuY3Rpb25zOyB9CisgICAgdm9pZCBhZGRSZWZlcmVuY2VkRnVuY3Rpb24odW5z
aWduZWQgaW5kZXgpIGNvbnN0IHsgbV9yZWZlcmVuY2VkRnVuY3Rpb25zLnNldChpbmRleCk7IH0K
KwogICAgIFZlY3RvcjxJbXBvcnQ+IGltcG9ydHM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4
PiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUlu
ZGV4PiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKQEAgLTg0LDYgKzg4LDggQEAg
c3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1v
ZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgdW5zaWduZWQgZmlyc3RJbnRlcm5hbEdsb2JhbCB7IDAg
fTsKICAgICBWZWN0b3I8Q3VzdG9tU2VjdGlvbj4gY3VzdG9tU2VjdGlvbnM7CiAgICAgUmVmPE5h
bWVTZWN0aW9uPiBuYW1lU2VjdGlvbjsKKyAgICAKKyAgICBtdXRhYmxlIEJpdFZlY3RvciBtX3Jl
ZmVyZW5jZWRGdW5jdGlvbnM7CiB9OwogCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggN2U0NWRlZWE4M2Q2ZTVjOWI2NjY0
NmI5YzIxOTRhZWY3NzlkODRmYi4uMjlmM2E1ZDE3M2Q4NTljZGZmN2M4MDYwYjE3NjBiOGNhMjk1
NDExNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmNwcApAQCAtMjkwLDkgKzI5MCwxMSBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlR2xv
YmFsKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxT
KHBhcnNlSW5pdEV4cHIoaW5pdE9wY29kZSwgZ2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1i
ZXIsIHR5cGVGb3JJbml0T3Bjb2RlKSk7CiAgICAgICAgIGlmIChpbml0T3Bjb2RlID09IEdldEds
b2JhbCkKICAgICAgICAgICAgIGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPSBHbG9iYWw6OkZy
b21HbG9iYWxJbXBvcnQ7CisgICAgICAgIGVsc2UgaWYgKGluaXRPcGNvZGUgPT0gUmVmRnVuYykK
KyAgICAgICAgICAgIGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPSBHbG9iYWw6OkZyb21SZWZG
dW5jOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnbG9iYWwuaW5pdGlhbGl6YXRpb25UeXBl
ID0gR2xvYmFsOjpGcm9tRXhwcmVzc2lvbjsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0
eXBlRm9ySW5pdE9wY29kZSAhPSBnbG9iYWwudHlwZSwgIkdsb2JhbCBpbml0X2V4cHIgb3Bjb2Rl
IG9mIHR5cGUgIiwgdHlwZUZvckluaXRPcGNvZGUsICIgZG9lc24ndCBtYXRjaCBnbG9iYWwncyB0
eXBlICIsIGdsb2JhbC50eXBlKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighaXNTdWJ0
eXBlKHR5cGVGb3JJbml0T3Bjb2RlLCBnbG9iYWwudHlwZSksICJHbG9iYWwgaW5pdF9leHByIG9w
Y29kZSBvZiB0eXBlICIsIHR5cGVGb3JJbml0T3Bjb2RlLCAiIGRvZXNuJ3QgbWF0Y2ggZ2xvYmFs
J3MgdHlwZSAiLCBnbG9iYWwudHlwZSk7CiAKICAgICAgICAgbV9pbmZvLT5nbG9iYWxzLnVuY2hl
Y2tlZEFwcGVuZChXVEZNb3ZlKGdsb2JhbCkpOwogICAgIH0KQEAgLTQ3OCwxMSArNDgwLDIxIEBA
IGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2
NF90JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAgICAgfQogCiAgICAgY2FzZSBSZWZOdWxsOiB7Ci0g
ICAgICAgIHJlc3VsdFR5cGUgPSBBbnlyZWY7CisgICAgICAgIHJlc3VsdFR5cGUgPSBBbnlmdW5j
OwogICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFJlZkZ1bmM6IHsKKyAgICAgICAg
dWludDMyX3QgaW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUlu
dDMyKGluZGV4KSwgImNhbid0IGdldCByZWYuZnVuYyBpbmRleCIpOworICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKGluZGV4ID49IG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSwgInJlZi5mdW5j
IGluZGV4IiwgaW5kZXgsICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGZ1bmN0aW9ucyAiLCBtX2lu
Zm8tPmZ1bmN0aW9ucy5zaXplKCkpOworCisgICAgICAgIHJlc3VsdFR5cGUgPSBBbnlmdW5jOwor
ICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBpbmRleDsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAidW5r
bm93biBpbml0X2V4cHIgb3Bjb2RlICIsIG9wY29kZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5kZXggNjYxOWRmYmZkMDNlNTBhMzM1NDc1
Y2E3ZGYzNTJiZTEyMDY1MWZlZC4uMjI5NzJhNjQwNDNlMzQ0Y2IzZDAyZDlhM2I5MjRmMDQzYzQz
ZDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBA
IC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmVmZXJlbmNlcwogICAgIFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAg
IC8vIFRhYmxlcwogICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhw
cmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0xNzgsMTggKzE3
OSwyMCBAQCBhdXRvIFZhbGlkYXRlOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUpIC0+IFJlc3VsdAogCiBhdXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldChFeHByZXNzaW9u
VHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsKLSAgICByZXN1
bHQgPSBUeXBlOjpBbnlyZWY7CisgICAgYXV0byB0eXBlID0gbV9tb2R1bGUudGFibGVJbmZvcm1h
dGlvbi50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiA/IFR5cGU6OkFueWZ1bmMg
OiBUeXBlOjpBbnlyZWY7CisgICAgcmVzdWx0ID0gdHlwZTsKICAgICBXQVNNX1ZBTElEQVRPUl9G
QUlMX0lGKFR5cGU6OkkzMiAhPSBpZHgsICJ0YWJsZS5nZXQgaW5kZXggdG8gdHlwZSAiLCBpZHgs
ICIgZXhwZWN0ZWQgIiwgVHlwZTo6STMyKTsKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFRh
YmxlRWxlbWVudFR5cGU6OkFueXJlZiAhPSBtX21vZHVsZS50YWJsZUluZm9ybWF0aW9uLnR5cGUo
KSwgInRhYmxlLmdldCBleHBlY3RzIHRoZSB0YWJsZSB0byBoYXZlIHR5cGUgIiwgVHlwZTo6QW55
cmVmKTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKIGF1dG8gVmFsaWRhdGU6OmFkZFRhYmxlU2V0
KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUmVzdWx0CiB7
CisgICAgYXV0byB0eXBlID0gbV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50eXBlKCkgPT0gVGFi
bGVFbGVtZW50VHlwZTo6RnVuY3JlZiA/IFR5cGU6OkFueWZ1bmMgOiBUeXBlOjpBbnlyZWY7CiAg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaWR4LCAidGFibGUuc2V0IGlu
ZGV4IHRvIHR5cGUgIiwgaWR4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7Ci0gICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRihUeXBlOjpBbnlyZWYgIT0gdmFsdWUsICJ0YWJsZS5zZXQgdmFsdWUg
dG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCBUeXBlOjpBbnlyZWYpOwotICAgIFdBU01f
VkFMSURBVE9SX0ZBSUxfSUYoVGFibGVFbGVtZW50VHlwZTo6QW55cmVmICE9IG1fbW9kdWxlLnRh
YmxlSW5mb3JtYXRpb24udHlwZSgpLCAidGFibGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhh
dmUgdHlwZSAiLCBUeXBlOjpBbnlyZWYpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlz
U3VidHlwZSh2YWx1ZSwgdHlwZSksICJ0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSAiLCB2YWx1ZSwg
IiBleHBlY3RlZCAiLCB0eXBlKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fbW9kdWxl
LnRhYmxlSW5mb3JtYXRpb24udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkFueXJlZgorICAg
ICAgICAmJiBtX21vZHVsZS50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRU
eXBlOjpGdW5jcmVmLCAidGFibGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBh
bnlyZWYgb3IgYW55ZnVuYyIpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTE5Nyw3ICsyMDAs
MTYgQEAgYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhw
cmVzc2lvblR5cGUmIHZhbHVlKSAtPiBSZXN1bHQKIGF1dG8gVmFsaWRhdGU6OmFkZFJlZklzTnVs
bChFeHByZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3Vs
dAogewogICAgIHJlc3VsdCA9IFR5cGU6OkkzMjsKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lG
KFR5cGU6OkFueXJlZiAhPSB2YWx1ZSwgInJlZi5pc19udWxsIHRvIHR5cGUgIiwgdmFsdWUsICIg
ZXhwZWN0ZWQgIiwgVHlwZTo6QW55cmVmKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFp
c1N1YnR5cGUodmFsdWUsIFR5cGU6OkFueXJlZiksICJyZWYuaXNfbnVsbCB0byB0eXBlICIsIHZh
bHVlLCAiIGV4cGVjdGVkICIsIFR5cGU6OkFueXJlZik7CisKKyAgICByZXR1cm4geyB9OworfQor
CithdXRvIFZhbGlkYXRlOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBSZXN1bHQKK3sKKyAgICByZXN1bHQgPSBUeXBlOjpBbnlmdW5jOworICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9tb2R1bGUuZnVuY3Rpb25JbmRleFNw
YWNlU2l6ZSgpLCAicmVmLmZ1bmMgaW5kZXggIiwgaW5kZXgsICIgaXMgdG9vIGxhcmdlIik7Cisg
ICAgbV9tb2R1bGUuYWRkUmVmZXJlbmNlZEZ1bmN0aW9uKGluZGV4KTsKIAogICAgIHJldHVybiB7
IH07CiB9CkBAIC0yMjMsNyArMjM1LDcgQEAgYXV0byBWYWxpZGF0ZTo6c2V0TG9jYWwodWludDMy
X3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBSZXN1bHQKIHsKICAgICBFeHByZXNz
aW9uVHlwZSBsb2NhbFR5cGU7CiAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhnZXRMb2Nh
bChpbmRleCwgbG9jYWxUeXBlKSk7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihsb2NhbFR5
cGUgIT0gdmFsdWUsICJzZXRfbG9jYWwgdG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCBs
b2NhbFR5cGUpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZSwg
bG9jYWxUeXBlKSwgInNldF9sb2NhbCB0byB0eXBlICIsIHZhbHVlLCAiIGV4cGVjdGVkICIsIGxv
Y2FsVHlwZSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMzYxLDcgKzM3Myw3IEBAIGF1dG8g
VmFsaWRhdGU6OmFkZENhbGwodW5zaWduZWQsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBj
b25zdCBWZWN0b3I8RXhwcmVzCiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihzaWduYXR1cmUu
YXJndW1lbnRDb3VudCgpICE9IGFyZ3Muc2l6ZSgpLCAiYXJpdHkgbWlzbWF0Y2ggaW4gY2FsbCwg
Z290ICIsIGFyZ3Muc2l6ZSgpLCAiIGFyZ3VtZW50cywgZXhwZWN0ZWQgIiwgc2lnbmF0dXJlLmFy
Z3VtZW50Q291bnQoKSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5zaXpl
KCk7ICsraSkKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmdzW2ldICE9IHNpZ25h
dHVyZS5hcmd1bWVudChpKSwgImFyZ3VtZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbCwgZ290ICIs
IGFyZ3NbaV0sICIsIGV4cGVjdGVkICIsIHNpZ25hdHVyZS5hcmd1bWVudChpKSk7CisgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShhcmdzW2ldLCBzaWduYXR1cmUuYXJn
dW1lbnQoaSkpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsLCBnb3QgIiwgYXJnc1tp
XSwgIiwgZXhwZWN0ZWQgIiwgc2lnbmF0dXJlLmFyZ3VtZW50KGkpKTsKIAogICAgIHJlc3VsdCA9
IHNpZ25hdHVyZS5yZXR1cm5UeXBlKCk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTM3NCw3ICszODYs
NyBAQCBhdXRvIFZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXNzaQogICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYo
YXJndW1lbnRDb3VudCAhPSBhcmdzLnNpemUoKSAtIDEsICJhcml0eSBtaXNtYXRjaCBpbiBjYWxs
X2luZGlyZWN0LCBnb3QgIiwgYXJncy5zaXplKCkgLSAxLCAiIGFyZ3VtZW50cywgZXhwZWN0ZWQg
IiwgYXJndW1lbnRDb3VudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1l
bnRDb3VudDsgKytpKQotICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZ3NbaV0gIT0g
c2lnbmF0dXJlLmFyZ3VtZW50KGkpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsX2lu
ZGlyZWN0LCBnb3QgIiwgYXJnc1tpXSwgIiwgZXhwZWN0ZWQgIiwgc2lnbmF0dXJlLmFyZ3VtZW50
KGkpKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFyZ3NbaV0s
IHNpZ25hdHVyZS5hcmd1bWVudChpKSksICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGxf
aW5kaXJlY3QsIGdvdCAiLCBhcmdzW2ldLCAiLCBleHBlY3RlZCAiLCBzaWduYXR1cmUuYXJndW1l
bnQoaSkpOwogCiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmdzLmxhc3QoKSAhPSBJMzIs
ICJub24taTMyIGNhbGxfaW5kaXJlY3QgaW5kZXggIiwgYXJncy5sYXN0KCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggMjYzMTNlODQyNjk2NTdm
ZWU5YjZjYmQ3M2I1NzA1OGM0NDVmYjViOC4uZTgwYWFmZWE0YWE2ZDljZDg5N2I1NTJhNDc2ZGU3
MDVjZDE4ZGYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUg
IkRpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iu
aCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgpAQCAtODMsNiAr
ODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21X
cmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAogICAgICAgICAgICAgRkFMTFRIUk9VR0g7
CiAgICAgICAgIGNhc2UgV2FzbTo6STMyOgogICAgICAgICBjYXNlIFdhc206OkFueXJlZjoKKyAg
ICAgICAgY2FzZSBXYXNtOjpBbnlmdW5jOgogICAgICAgICAgICAgaWYgKG51bUdQUnMgPj0gd2Fz
bUNhbGxpbmdDb252ZW50aW9uKCkubV9ncHJBcmdzLnNpemUoKSkKICAgICAgICAgICAgICAgICB0
b3RhbEZyYW1lU2l6ZSArPSBzaXplb2Yodm9pZCopOwogICAgICAgICAgICAgKytudW1HUFJzOwpA
QCAtMTIyLDIwICsxMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3Jl
YXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAogICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMiwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkluc3RhbmNlKCkpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOwogICAgICAgICB9CiAKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgSW5zdGFuY2U6Om9mZnNldE9mUG9pbnRl
clRvVG9wRW50cnlGcmFtZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBq
aXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oYXJndW1lbnRzSW5jbHVkZUk2NCA/IEV4Y2VwdGlvblR5cGU6Okk2NEFyZ3Vt
ZW50VHlwZSA6IEV4Y2VwdGlvblR5cGU6Okk2NFJldHVyblR5cGUpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKLQotICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7Ci0KLSAgICAgICAgaml0Lmp1bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcpOwotICAgICAgICBqaXQuYnJlYWtwb2ludCgpOyAv
LyBXZSBzaG91bGQgbm90IHJlYWNoIHRoaXMuCi0KLSAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4od2FzbVRvSlNFeGNlcHRpb24pKTsK
LSAgICAgICAgfSk7CisgICAgICAgIGVtaXRXYXNtVG9KU0V4Y2VwdGlvbihqaXQsIEdQUkluZm86
OmFyZ3VtZW50R1BSMiwgYXJndW1lbnRzSW5jbHVkZUk2NCA/IEV4Y2VwdGlvblR5cGU6Okk2NEFy
Z3VtZW50VHlwZSA6IEV4Y2VwdGlvblR5cGU6Okk2NFJldHVyblR5cGUpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTY1LDYgKzE1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0
JiBjb21wCiAgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5hcmd1bWVudChpKSkgewogICAg
ICAgICAgICAgY2FzZSBXYXNtOjpJMzI6CiAgICAgICAgICAgICBjYXNlIFdhc206Okk2NDoKKyAg
ICAgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55
cmVmOgogICAgICAgICAgICAgICAgIGlmIChudW1HUFJzID49IHdhc21DYWxsaW5nQ29udmVudGlv
bigpLm1fZ3ByQXJncy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ25hdHVy
ZS5hcmd1bWVudChpKSA9PSBXYXNtOjpJMzIpIHsKQEAgLTI1MCw3ICsyNDAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0
aW9uQ29udGV4dCYgY29tcAogICAgICAgICBqaXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5l
ZCgpLCBKU1ZhbHVlUmVncyB7IEdQUkluZm86OnJldHVyblZhbHVlR1BSIH0pOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFdhc206OkFueXJlZjoKLSAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQg
dG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBwb3J0ZWQgaGVyZS4KKyAgICBj
YXNlIFdhc206OkFueWZ1bmM6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2FzbTo6STMyOgog
ICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTI2OCw3ICsyNTgsNiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29u
dGV4dCYgY29tcAogICAgIH0KICAgICBjYXNlIFdhc206Okk2NDoKICAgICBjYXNlIFdhc206OkZ1
bmM6Ci0gICAgY2FzZSBXYXNtOjpBbnlmdW5jOgogICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZWEyOTJhMjJmNjRlMzg1
Y2VkMjMzYjhmNGNiYWM1YzhjMDhjNmUxZi4uMTNkMGEwOTQ3ZWUxZGYwZWVhMTM2MGY0NjBkMmJk
NGM2NTU0NzBlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SGVscGVycy5oCkBAIC0xMjIsNyArMTIyLDcgQEAgQUxXQVlTX0lOTElORSBi
b29sIGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24oVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBXZWJB
c3NlbWJseUYKIH0KIAogCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNXZWJBc3NlbWJseUhvc3RGdW5j
dGlvbihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNXZWJB
c3NlbWJseUhvc3RGdW5jdGlvbihWTSYgdm0sIEpTVmFsdWUgb2JqZWN0KQogewogICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIHVudXNlZDsKICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiog
dW51c2VkMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDY2NmJmNDdmMWZlMjMzMDJmYzMwZmQ0ZTFkYzcz
OTQ1ZWE0YjNkM2YuLjIwYjYwZmM3MTE1YWJkMmE3NjI2NzQ3ZGVlNWMxYTk3NDkwNjcwMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcApAQCAtOTEsMTEgKzkxLDExIEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmluc3RhbmNlKCkubnVtSW1w
b3J0RnVuY3Rpb25zKCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoKnRoaXNPYmplY3Qt
Pmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248V3JpdGVCYXJyaWVyPEpTT2JqZWN0Pj4oaSkpOyAv
LyBUaGlzIGFsc28ga2VlcHMgdGhlIGZ1bmN0aW9ucycgSlNXZWJBc3NlbWJseUluc3RhbmNlIGFs
aXZlLgogCi0gICAgZm9yIChzaXplX3QgaSA6IHRoaXNPYmplY3QtPmluc3RhbmNlKCkuZ2xvYmFs
c1RvTWFyaygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNy
ZWZzIG9uY2UgdGhleSBhcmUgc3VwcG9ydGVkIGhlcmUuCi0gICAgICAgIC8vIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU3PgorICAgIGZvciAoc2l6ZV90IGkg
OiB0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLmdsb2JhbHNUb01hcmsoKSkKICAgICAgICAgdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZChKU1ZhbHVlOjpkZWNvZGUodGhpc09iamVjdC0+aW5zdGFuY2Uo
KS5sb2FkSTY0R2xvYmFsKGkpKSk7Ci0gICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRoaXNPYmplY3QtPmluc3RhbmNlKCkubW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS5m
dW5jdGlvbkluZGV4U3BhY2VTaXplKCk7ICsraSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZCh0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLmdldEZ1bmN0aW9uV3JhcHBlcihpKSk7CiB9
CiAKIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2RlQmxvY2ssIEpT
T2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3IuY3BwCmluZGV4IDk2M2MyODJlOGI4OGRmMjNiYTM5OTdiMWQ3ZDE1MDhj
ZDJjZjg4YzEuLjhhYjJmOTAzYWNhYzE1YjEzYTFkZTM5MjQ3YzA1NTA1MmVkY2YzNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3IuY3BwCkBAIC00OCw2ICs0OCwxMiBAQCBKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yOjpKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cgogCiBjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6c19pbmZv
ID0geyAiV2ViQXNzZW1ibHkuUnVudGltZUVycm9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKSB9
OwogCitKU09iamVjdCogY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUq
IGV4ZWMsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVCghbWVz
c2FnZS5pc0VtcHR5KCkpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIEpTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKK30KICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yLmgKaW5kZXggNjhkM2FkMTQ2NWIxYWY4ZTZlMTE2OTM2ZmExYmM5MmY2
ZWE2NTFkNS4uODYxZjQ3MmYzZGI3NzA5N2VhM2JjYzI0YzkyNDYzYTljMTFiOGUyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IuaApAQCAtNDMsNiArNDMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvcihWTSYsIFN0cnVjdHVyZSopOwogfTsKIAorSlNPYmplY3QqIGNyZWF0
ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoRXhlY1N0YXRlKiwgVk0mLCBjb25zdCBTdHJpbmcm
KTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggNWJmZjlj
YzZkMDQ0MWYwZWZjZjIxYjlkY2Y5ODgxMDdmYjU2ODhiYi4uNWM3YjAwNjUxNmY2MmUxNDk4Mjk3
YWM5NDI0MzJmNGIwOTIxODVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dh
c21Ub0pTLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgog
I2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgpAQCAtNjUsNyArNjYsNiBAQCBzdGF0aWMgRXhwZWN0ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiBoYW5kbGVC
YQogICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKICAgICAgICAgY2FzZSBWb2lkOgogICAgICAg
ICBjYXNlIEZ1bmM6Ci0gICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICAgICAgY2FzZSBJNjQ6IHsKQEAgLTE2MiwxMCAr
MTYyLDEwIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+
LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFy
Z1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgVm9pZDoKICAgICAgICAgICAgIGNhc2UgRnVuYzoK
LSAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgSTY0OgogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBjYXNl
IEFueXJlZjoKKyAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgSTMy
OiB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGdwclJlZzsKICAgICAgICAgICAgICAgICBpZiAo
bWFyc2hhbGxlZEdQUnMgPCB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKQEAgLTIzNywxNCArMjM3
LDE3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBC
aW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoYXJnVHlwZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFZvaWQ6CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBbnlmdW5jOgog
ICAgICAgICAgICAgICAgICAgICBjYXNlIEk2NDoKICAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgSTMy
OgogICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oYnVmZmVyW2FyZ051bV0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFueWZ1bmM6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShidWZmZXJbYXJnTnVtXSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbigqdm0sIGFyZykgfHwg
YXJnLmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQW55cmVmOgotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25j
ZSB0aGV5IGFyZSBzdXBwb3J0ZWQgaGVyZS4KICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9
IEpTVmFsdWU6OmRlY29kZShidWZmZXJbYXJnTnVtXSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBGMzI6CkBAIC0yNjgsNyArMjcxLDYg
QEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRp
bmdGYWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWFs
UmVzdWx0OwogICAgICAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoKSkg
ewogICAgICAgICAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAgICAgICAgICAgICBjYXNlIEFueWZ1
bmM6CiAgICAgICAgICAgICAgICAgY2FzZSBJNjQ6CiAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
Mjc4LDYgKzI4MCwxMSBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5
UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICAgICAgICAg
ICAgICByZWFsUmVzdWx0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQz
Ml90PihyZXN1bHQudG9JbnQzMihleGVjKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBBbnlmdW5jOiB7CisgICAg
ICAgICAgICAgICAgICAgIHJlYWxSZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5pc0Z1bmN0aW9uKCp2bSkgfHwgcmVzdWx0
LmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGNhc2UgQW55cmVmOiB7CiAgICAgICAgICAgICAgICAgICAgIHJl
YWxSZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0zNzEsMTAgKzM3OCwxMCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAg
ICAgICAgICAgc3dpdGNoIChhcmdUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIFZvaWQ6CiAgICAg
ICAgICAgICBjYXNlIEZ1bmM6Ci0gICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAg
ICBjYXNlIEk2NDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyAvLyBIYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAgY2FzZSBBbnlyZWY6CisgICAgICAgICAg
ICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAgICBjYXNlIEkzMjogewogICAgICAgICAgICAgICAg
IEdQUlJlZyBncHJSZWc7CiAgICAgICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRHUFJzIDwgd2Fz
bUNDLm1fZ3ByQXJncy5zaXplKCkpCkBAIC0zOTAsNyArMzk3LDYgQEAgRXhwZWN0ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9K
UyhWTSogdm0KICAgICAgICAgICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwclJl
ZywgZ3ByUmVnKTsgLy8gQ2xlYXIgbm9uLWludDMyIGFuZCBub24tdGFnIGJpdHMuCiAgICAgICAg
ICAgICAgICAgICAgIGppdC5ib3hJbnQzMihncHJSZWcsIEpTVmFsdWVSZWdzKGdwclJlZyksIERv
Tm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUgc3Vw
cG9ydGVkIGhlcmUuCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoZ3ByUmVnLCBjYWxsZWVG
cmFtZS53aXRoT2Zmc2V0KGNhbGxlZUZyYW1lT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgY2Fs
bGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTQ0MSwxMCArNDQ3LDEwIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxX
YXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAg
ICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgVm9pZDoKICAgICAgICAg
ICAgIGNhc2UgRnVuYzoKLSAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNh
c2UgSTY0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8v
IEhhbmRsZWQgYWJvdmUuCiAgICAgICAgICAgICBjYXNlIEFueXJlZjoKKyAgICAgICAgICAgIGNh
c2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgSTMyOgogICAgICAgICAgICAgICAgIC8vIFNr
aXBwZWQ6IGhhbmRsZWQgYWJvdmUuCiAgICAgICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRHUFJz
ID49IHdhc21DQy5tX2dwckFyZ3Muc2l6ZSgpKQpAQCAtNTE5LDcgKzUyNSw2IEBAIEV4cGVjdGVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4g
d2FzbVRvSlMoVk0qIHZtCiAgICAgICAgIC8vIERpc2NhcmQuCiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRnVuYzoKLSAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgIC8vIEZvciB0aGUgSmF2YVNj
cmlwdCBlbWJlZGRpbmcsIGltcG9ydHMgd2l0aCB0aGVzZSB0eXBlcyBpbiB0aGVpciBzaWduYXR1
cmUgcmV0dXJuIGFyZSBhIFdlYkFzc2VtYmx5Lk1vZHVsZSB2YWxpZGF0aW9uIGVycm9yLgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTU1
Myw2ICs1NTgsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRy
VGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICBkb25lLmxpbmso
JmppdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEFueWZ1bmM6CiAgICAgY2Fz
ZSBBbnlyZWY6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRjMyOiB7CkBAIC02OTUsNiArNzAx
LDI1IEBAIHZvaWQqIHdhc21Ub0pTRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhj
ZXB0aW9uVHlwZSB0eXBlLCBJbnN0YW5jZSogd2FzCiAgICAgcmV0dXJuIHZtLnRhcmdldE1hY2hp
bmVQQ0ZvclRocm93OwogfQogCit2b2lkIGVtaXRXYXNtVG9KU0V4Y2VwdGlvbihDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIHdhc21JbnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlKQor
eworICAgIEFTU0VSVCh3YXNtSW5zdGFuY2UgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUluc3RhbmNlLCBXYXNtOjpJ
bnN0YW5jZTo6b2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1lKCkpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
Ojphcmd1bWVudEdQUjApLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5jb3B5Q2Fs
bGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0
YXRpY19jYXN0PGludDMyX3Q+KHR5cGUpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKworICAg
IENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKwor
ICAgIGppdC5qdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBFeGNlcHRpb25IYW5kbGVyUHRy
VGFnKTsKKyAgICBqaXQuYnJlYWtwb2ludCgpOyAvLyBXZSBzaG91bGQgbm90IHJlYWNoIHRoaXMu
CisKKyAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Cisg
ICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KFdhc206Ondhc21Ub0pTRXhjZXB0aW9uKSk7CisgICAgfSk7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuaAppbmRleCBlMGM3NGMzMzgzNmYwNTJmNjBmZTg3
NGU5M2EwYzcxZDY4M2Y4NjFlLi5kZTNlN2NiZjRkNDE4NmZlMGY5ZDc3YTNlMTM3ODVlOGNhYmM1
YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgY2xhc3MgSW5zdGFuY2U7CiBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiwgQmFnPENhbGxM
aW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hdHVyZUluZGV4LCB1bnNpZ25lZCBpbXBvcnRJ
bmRleCk7CiAKIHZvaWQqIHdhc21Ub0pTRXhjZXB0aW9uKEV4ZWNTdGF0ZSosIFdhc206OkV4Y2Vw
dGlvblR5cGUsIEluc3RhbmNlKik7Cit2b2lkIGVtaXRXYXNtVG9KU0V4Y2VwdGlvbihDQ2FsbEhl
bHBlcnMmLCBHUFJSZWcgd2FzbUluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlKTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCA5MWI1YjgzODg1MjBhMTQy
YWFlMDljNTJkYzNmYzg1MzhlMTdiY2ZmLi44NWY3MjVlZThmZTMyMTAxN2MyMjQyZTU4ODNkYjE2
YWQ1N2Q0YmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtODQsNiArODQsMTEgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICBjYXNlIFdhc206OkkzMjoKICAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6
OmRlY29kZShhcmcudG9JbnQzMihleGVjKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBXYXNtOjpBbnlmdW5jOiB7CisgICAgICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0
RnVuY3Rpb24odm0sIGFyZykgJiYgIWFyZy5pc051bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVKU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yKGV4ZWMsIHZtLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9y
dGVkIHdhc20gZnVuY3Rpb24iKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBXYXNtOjpBbnlyZWY6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXYXNtOjpJNjQ6CkBAIC05Nyw3ICsxMDIsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXYXNtOjpWb2lkOgogICAgICAgICBjYXNlIFdh
c206OkZ1bmM6Ci0gICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMjgsNiArMjMyLDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246Ompz
Q2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgIGFyZ3VtZW50c0luY2x1ZGVJNjQgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgorICAg
ICAgICBjYXNlIFdhc206OkFueWZ1bmM6CiAgICAgICAgIGNhc2UgV2FzbTo6STMyOgogICAgICAg
ICAgICAgaWYgKG51bUdQUnMgPj0gV2FzbTo6d2FzbUNhbGxpbmdDb252ZW50aW9uKCkubV9ncHJB
cmdzLnNpemUoKSkKICAgICAgICAgICAgICAgICB0b3RhbEZyYW1lU2l6ZSArPSBzaXplb2YoQ1BV
UmVnaXN0ZXIpOwpAQCAtMzAzLDYgKzMwOCwzMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQog
ICAgICAgICAgICAgICAgICAgICArK251bUdQUnM7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlmdW5jOiB7CisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgorICAgICAgICAgICAgICAgIGJvb2wgKCpz
aG91bGRUaHJvdykoV2FzbTo6SW5zdGFuY2UqLCBKU1ZhbHVlKSA9IFtdIChXYXNtOjpJbnN0YW5j
ZSogd2FzbUluc3RhbmNlLCBKU1ZhbHVlIGFyZykgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAg
ICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSB3YXNtSW5zdGFuY2UtPm93bmVy
PEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGFyZykgJiYgIWFyZy5p
c051bGwoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcExpc3QgZG9uZTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoJmluc3RhbmNlKCktPmluc3RhbmNlKCkpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworCisgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUoc2hv
dWxkVGhyb3cpPihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
CisgICAgICAgICAgICAgICAgYXV0byBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsK
KworICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oc2hvdWxkVGhyb3cpKTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworCisgICAgICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZpbnN0YW5jZSgpLT5pbnN0
YW5jZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgICAgICAgICBlbWl0V2Fz
bVRvSlNFeGNlcHRpb24oaml0LCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIFdhc206OkV4Y2VwdGlv
blR5cGU6OkZ1bmNyZWZOb3RXYXNtKTsKKyAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7
CisKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGNhc2UgV2FzbTo6QW55cmVmOiB7CiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwg
c2NyYXRjaEdQUik7CiAKQEAgLTQ2NiwxMyArNDk4LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xv
dygpCiAgICAgICAgIGlzTmFOLmxpbmsoJmppdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIFdhc206OkFueXJlZjogewotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3gg
d2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJlIHN1cHBvcnRlZCBoZXJlLgorICAgIGNhc2UgV2Fz
bTo6QW55ZnVuYzoKKyAgICBjYXNlIFdhc206OkFueXJlZjoKICAgICAgICAgYnJlYWs7Ci0gICAg
fQogICAgIGNhc2UgV2FzbTo6STY0OgogICAgIGNhc2UgV2FzbTo6RnVuYzoKLSAgICBjYXNlIFdh
c206OkFueWZ1bmM6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDRmODAxZTU3NjkyN2ZmNjZlZTUwYzY1
MDg5MGVmZTAyMTcwN2I4ZjIuLmIzNzFlYzIwNjlmZjU1ODgwYmVlMjY3ZDZiYTgwZmJmZGYxZDhk
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTIzNSwxMCArMjM1LDE1IEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVj
dCogaW1wb3J0T2JqCiAgICAgICAgICAgICAvLyBpaS4gSWYgdGhlIGdsb2JhbF90eXBlIG9mIGkg
aXMgaTY0IG9yIFR5cGUodikgaXMgbm90IE51bWJlciwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5r
RXJyb3IuCiAgICAgICAgICAgICBpZiAobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQu
a2luZEluZGV4XS50eXBlID09IFdhc206Okk2NCkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxN
ZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJjYW5ub3QgYmUgYW4gaTY0IikpKTsK
LSAgICAgICAgICAgIGlmIChtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5k
ZXhdLnR5cGUgIT0gV2FzbTo6QW55cmVmICYmICF2YWx1ZS5pc051bWJlcigpKQorICAgICAgICAg
ICAgaWYgKCFpc1N1YnR5cGUobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZElu
ZGV4XS50eXBlLCBXYXNtOjpBbnlyZWYpICYmICF2YWx1ZS5pc051bWJlcigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVj
LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3Qg
YmUgYSBudW1iZXIiKSkpOwogICAgICAgICAgICAgLy8gaWlpLiBBcHBlbmQgVG9XZWJBc3NlbWJs
eVZhbHVlKHYpIHRvIGltcG9ydHMuCiAgICAgICAgICAgICBzd2l0Y2ggKG1vZHVsZUluZm9ybWF0
aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSkgeworICAgICAgICAgICAgY2FzZSBX
YXNtOjpBbnlmdW5jOgorICAgICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5j
dGlvbih2bSwgdmFsdWUpICYmICF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBp
bXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAibXVzdCBiZSBhIHdh
c20gZXhwb3J0ZWQgZnVuY3Rpb24iKSkpOworICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPmlu
c3RhbmNlKCkuc2V0R2xvYmFsKGltcG9ydC5raW5kSW5kZXgsIHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgogICAgICAgICAgICAg
ICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGltcG9ydC5raW5kSW5kZXgsIHZh
bHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMxOSw2ICszMjQsNDcgQEAgdm9pZCBX
ZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpT
T2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgfQogICAgIH0KIAorICAgIHVuc2lnbmVkIGZ1bmN0
aW9uSW1wb3J0Q291bnQgPSBjb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKKyAgICBh
dXRvIG1ha2VGdW5jdGlvbldyYXBwZXIgPSBbJl0gKGNvbnN0IFN0cmluZyYgZmllbGQsIHVpbnQz
Ml90IGluZGV4KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBtYWRlIGEg
d3JhcHBlciwgZG8gbm90IG1ha2UgYSBuZXcgb25lLgorICAgICAgICBKU1ZhbHVlIHdyYXBwZXIg
PSBqc051bGwoKTsKKworICAgICAgICBpZiAoKHdyYXBwZXIgPSBtX2luc3RhbmNlLT5pbnN0YW5j
ZSgpLmdldEZ1bmN0aW9uV3JhcHBlcihpbmRleCkpLmlzRnVuY3Rpb24odm0pKQorICAgICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICAgICAgLy8gMS4gSWYgZSBpcyBhIGNsb3N1cmUgYzoK
KyAgICAgICAgLy8gICBpLiBJZiB0aGVyZSBpcyBhbiBFeHBvcnRlZCBGdW5jdGlvbiBFeG90aWMg
T2JqZWN0IGZ1bmMgaW4gZnVuY3Mgd2hvc2UgZnVuYy5bW0Nsb3N1cmVdXSBlcXVhbHMgYywgdGhl
biByZXR1cm4gZnVuYy4KKyAgICAgICAgLy8gICBpaS4gKE5vdGU6IEF0IG1vc3Qgb25lIHdyYXBw
ZXIgaXMgY3JlYXRlZCBmb3IgYW55IGNsb3N1cmUsIHNvIGZ1bmMgaXMgdW5pcXVlLCBldmVuIGlm
IHRoZXJlIGFyZSBtdWx0aXBsZSBvY2N1cnJhbmNlcyBpbiB0aGUgbGlzdC4gTW9yZW92ZXIsIGlm
IHRoZSBpdGVtIHdhcyBhbiBpbXBvcnQgdGhhdCBpcyBhbHJlYWR5IGFuIEV4cG9ydGVkIEZ1bmN0
aW9uIEV4b3RpYyBPYmplY3QsIHRoZW4gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdCB3aWxs
IGJlIGZvdW5kLiBGb3IgaW1wb3J0cyB0aGF0IGFyZSByZWd1bGFyIEpTIGZ1bmN0aW9ucywgYSBu
ZXcgd3JhcHBlciB3aWxsIGJlIGNyZWF0ZWQuKQorICAgICAgICBpZiAoaW5kZXggPCBmdW5jdGlv
bkltcG9ydENvdW50KSB7CisgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBt
X2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVj
dD4+KGluZGV4KS0+Z2V0KCk7CisgICAgICAgICAgICBpZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5j
dGlvbih2bSwgZnVuY3Rpb25JbXBvcnQpKQorICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBmdW5j
dGlvbkltcG9ydDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFdhc206OlNp
Z25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLT5zaWduYXR1cmVJbmRleEZyb21G
dW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOworICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBv
cnQsIGluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyAgIGlpaS4gT3RoZXJ3aXNlOgor
ICAgICAgICAgICAgLy8gICAgIGEuIExldCBmdW5jIGJlIGFuIEV4cG9ydGVkIEZ1bmN0aW9uIEV4
b3RpYyBPYmplY3QgY3JlYXRlZCBmcm9tIGMuCisgICAgICAgICAgICAvLyAgICAgYi4gQXBwZW5k
IGZ1bmMgdG8gZnVuY3MuCisgICAgICAgICAgICAvLyAgICAgYy4gUmV0dXJuIGZ1bmMuCisgICAg
ICAgICAgICBXYXNtOjpDYWxsZWUmIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSA9IGNvZGVCbG9j
ay0+ZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7
CisgICAgICAgICAgICBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9j
YXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNvZGVCbG9jay0+ZW50cnlwb2ludExvYWRM
b2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOworICAgICAgICAgICAgV2FzbTo6
U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJv
bUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7CisgICAgICAgICAgICBjb25zdCBXYXNtOjpTaWdu
YXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0
dXJlSW5kZXgpOworICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCksIHNpZ25hdHVyZS5hcmd1bWVudENvdW50
KCksIGZpZWxkLCBtX2luc3RhbmNlLmdldCgpLCBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVu
dHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAgIHdyYXBw
ZXIgPSBmdW5jdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCh3cmFwcGVyLmlzRnVu
Y3Rpb24odm0pKTsKKyAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRGdW5jdGlvbldy
YXBwZXIoaW5kZXgsIHdyYXBwZXIpOworCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIH07
CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBtb2R1bGVJbmZvcm1hdGlvbi5yZWZlcmVuY2VkRnVu
Y3Rpb25zKCkpCisgICAgICAgIG1ha2VGdW5jdGlvbldyYXBwZXIoIlJlZmVyZW5jZWQgZnVuY3Rp
b24iLCBpbmRleCk7CisKICAgICAvLyBHbG9iYWxzCiAgICAgewogICAgICAgICBmb3IgKHNpemVf
dCBnbG9iYWxJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmZpcnN0SW50ZXJuYWxHbG9iYWw7IGds
b2JhbEluZGV4IDwgbW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFscy5zaXplKCk7ICsrZ2xvYmFsSW5k
ZXgpIHsKQEAgLTMyNywxMyArMzczLDE2IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAg
ICAgICAgICBpZiAoZ2xvYmFsLmluaXRpYWxpemF0aW9uVHlwZSA9PSBXYXNtOjpHbG9iYWw6OkZy
b21HbG9iYWxJbXBvcnQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsLmluaXRpYWxC
aXRzT3JJbXBvcnROdW1iZXIgPCBtb2R1bGVJbmZvcm1hdGlvbi5maXJzdEludGVybmFsR2xvYmFs
KTsKICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChnbG9i
YWxJbmRleCwgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTY0R2xvYmFsKGdsb2JhbC5pbml0
aWFsQml0c09ySW1wb3J0TnVtYmVyKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGdsb2JhbC5p
bml0aWFsaXphdGlvblR5cGUgPT0gV2FzbTo6R2xvYmFsOjpGcm9tUmVmRnVuYykgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlciA8IG1vZHVs
ZUluZm9ybWF0aW9uLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKG1ha2VGdW5jdGlvbldyYXBwZXIoIkdsb2JhbCBpbml0IGV4cHIiLCBnbG9iYWwuaW5p
dGlhbEJpdHNPckltcG9ydE51bWJlcikuaXNGdW5jdGlvbih2bSkpOworICAgICAgICAgICAgICAg
IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGdsb2JhbEluZGV4LCBKU1ZhbHVlOjpl
bmNvZGUobWFrZUZ1bmN0aW9uV3JhcHBlcigiR2xvYmFsIGluaXQgZXhwciIsIGdsb2JhbC5pbml0
aWFsQml0c09ySW1wb3J0TnVtYmVyKSkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoZ2xvYmFsSW5kZXgsIGdsb2Jh
bC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIFN5
bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9IG1vZHVsZS0+ZXhwb3J0U3ltYm9sVGFibGUo
KTsKLSAgICB1bnNpZ25lZCBmdW5jdGlvbkltcG9ydENvdW50ID0gY29kZUJsb2NrLT5mdW5jdGlv
bkltcG9ydENvdW50KCk7CiAKICAgICAvLyBMZXQgZXhwb3J0cyBiZSBhIGxpc3Qgb2YgKHN0cmlu
ZywgSlMgdmFsdWUpIHBhaXJzIHRoYXQgaXMgbWFwcGVkIGZyb20gZWFjaCBleHRlcm5hbCB2YWx1
ZSBlIGluIGluc3RhbmNlLmV4cG9ydHMgYXMgZm9sbG93czoKICAgICBKU01vZHVsZUVudmlyb25t
ZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBudWxscHRyLCBleHBvcnRTeW1ib2xUYWJsZSwgSlNWYWx1ZSgpLCB0aGlz
KTsKQEAgLTM0MSwzMCArMzkwLDkgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlu
ayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAg
SlNWYWx1ZSBleHBvcnRlZFZhbHVlOwogICAgICAgICBzd2l0Y2ggKGV4cC5raW5kKSB7CiAgICAg
ICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5jdGlvbjogewotICAgICAgICAgICAgLy8g
MS4gSWYgZSBpcyBhIGNsb3N1cmUgYzoKLSAgICAgICAgICAgIC8vICAgaS4gSWYgdGhlcmUgaXMg
YW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCBmdW5jIGluIGZ1bmNzIHdob3NlIGZ1
bmMuW1tDbG9zdXJlXV0gZXF1YWxzIGMsIHRoZW4gcmV0dXJuIGZ1bmMuCi0gICAgICAgICAgICAv
LyAgIGlpLiAoTm90ZTogQXQgbW9zdCBvbmUgd3JhcHBlciBpcyBjcmVhdGVkIGZvciBhbnkgY2xv
c3VyZSwgc28gZnVuYyBpcyB1bmlxdWUsIGV2ZW4gaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9jY3Vy
cmFuY2VzIGluIHRoZSBsaXN0LiBNb3Jlb3ZlciwgaWYgdGhlIGl0ZW0gd2FzIGFuIGltcG9ydCB0
aGF0IGlzIGFscmVhZHkgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCwgdGhlbiB0
aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0IHdpbGwgYmUgZm91bmQuIEZvciBpbXBvcnRzIHRo
YXQgYXJlIHJlZ3VsYXIgSlMgZnVuY3Rpb25zLCBhIG5ldyB3cmFwcGVyIHdpbGwgYmUgY3JlYXRl
ZC4pCi0gICAgICAgICAgICBpZiAoZXhwLmtpbmRJbmRleCA8IGZ1bmN0aW9uSW1wb3J0Q291bnQp
IHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gZXhwLmtpbmRJbmRl
eDsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGZ1bmN0
aW9uSW5kZXgpLT5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNXZWJBc3NlbWJseUhvc3RG
dW5jdGlvbih2bSwgZnVuY3Rpb25JbXBvcnQpKQotICAgICAgICAgICAgICAgICAgICBleHBvcnRl
ZFZhbHVlID0gZnVuY3Rpb25JbXBvcnQ7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxl
LT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgs
IG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vICAgaWlpLiBPdGhlcndpc2U6
Ci0gICAgICAgICAgICAgICAgLy8gICAgIGEuIExldCBmdW5jIGJlIGFuIEV4cG9ydGVkIEZ1bmN0
aW9uIEV4b3RpYyBPYmplY3QgY3JlYXRlZCBmcm9tIGMuCi0gICAgICAgICAgICAgICAgLy8gICAg
IGIuIEFwcGVuZCBmdW5jIHRvIGZ1bmNzLgotICAgICAgICAgICAgICAgIC8vICAgICBjLiBSZXR1
cm4gZnVuYy4KLSAgICAgICAgICAgICAgICBXYXNtOjpDYWxsZWUmIGVtYmVkZGVyRW50cnlwb2lu
dENhbGxlZSA9IGNvZGVCbG9jay0+ZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9u
SW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKLSAgICAgICAgICAgICAgICBXYXNtOjpXYXNtVG9X
YXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlv
biA9IGNvZGVCbG9jay0+ZW50cnlwb2ludExvYWRMb2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3Bh
Y2UoZXhwLmtpbmRJbmRleCk7Ci0gICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXgg
c2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZShleHAua2luZEluZGV4KTsKLSAgICAgICAgICAgICAgICBjb25zdCBXYXNtOjpTaWduYXR1
cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJl
SW5kZXgpOwotICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0g
V2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpLCBzaWduYXR1cmUuYXJndW1lbnRDb3Vu
dCgpLCBTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVsZCksIG1faW5zdGFuY2UuZ2V0KCksIGVtYmVk
ZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlwb2ludExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5k
ZXgpOwotICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbjsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBtYWtlRnVuY3Rpb25XcmFwcGVyKFN0
cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxkKSwgZXhwLmtpbmRJbmRleCk7CisgICAgICAgICAgICBB
U1NFUlQoZXhwb3J0ZWRWYWx1ZS5pc0Z1bmN0aW9uKHZtKSk7CisgICAgICAgICAgICBBU1NFUlQo
bWFrZUZ1bmN0aW9uV3JhcHBlcihTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVsZCksIGV4cC5raW5k
SW5kZXgpID09IGV4cG9ydGVkVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBAIC0zODgsOCArNDE2
LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgICAgIC8vIFJldHVybiBUb0pT
VmFsdWUodikuCiAgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbC50eXBlKSB7CiAgICAgICAgICAg
ICBjYXNlIFdhc206OkFueXJlZjoKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJlIHN1cHBvcnRlZCBoZXJlLgotICAgICAg
ICAgICAgICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
MTU3PgorICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlmdW5jOgogICAgICAgICAgICAgICAgIGV4
cG9ydGVkVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2Fk
STY0R2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDMwYmJjNzQ3MjM3ODM5MjJlZGJiZjYz
NDk5MzQ5MGY0OGI3YjdlMDIuLjc1Mjg1ZDZmYjcwMDkwMWNhNTI3NWVhM2ZkNzViYjE4ZDMwZTQx
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTExLDEzICsxMSwxMyBA
QAogICAgICAgICAiaTY0IjogICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMiwg
ImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJmMzIiOiAgICAgeyAidHlwZSI6ICJ2
YXJpbnQ3IiwgInZhbHVlIjogIC0zLCAiYjN0eXBlIjogIkIzOjpGbG9hdCIgfSwKICAgICAgICAg
ImY2NCI6ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTQsICJiM3R5cGUiOiAi
QjM6OkRvdWJsZSIgfSwKLSAgICAgICAgImFueWZ1bmMiOiB7ICJ0eXBlIjogInZhcmludDciLCAi
dmFsdWUiOiAtMTYsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCisgICAgICAgICJhbnlmdW5jIjog
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTE2LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIg
fSwKICAgICAgICAgImFueXJlZiI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtMTcs
ICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6IC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAg
InZvaWQiOiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtNjQsICJiM3R5cGUiOiAi
QjM6OlZvaWQiIH0KICAgICB9LAotICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYz
MiIsICJmNjQiLCAiYW55cmVmIl0sCi0gICAgImJsb2NrX3R5cGUiOiBbImkzMiIsICJpNjQiLCAi
ZjMyIiwgImY2NCIsICJ2b2lkIiwgImFueXJlZiJdLAorICAgICJ2YWx1ZV90eXBlIjogWyJpMzIi
LCAiaTY0IiwgImYzMiIsICJmNjQiLCAiYW55cmVmIiwgImFueWZ1bmMiXSwKKyAgICAiYmxvY2tf
dHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgInZvaWQiLCAiYW55cmVmIiwgImFu
eWZ1bmMiXSwKICAgICAiZWxlbV90eXBlIjogWyJhbnlmdW5jIiwiYW55cmVmIl0sCiAgICAgImV4
dGVybmFsX2tpbmQiOiB7CiAgICAgICAgICJGdW5jdGlvbiI6IHsgInR5cGUiOiAidWludDgiLCAi
dmFsdWUiOiAwIH0sCkBAIC01OSw4ICs1OSw5IEBACiAgICAgICAgICJpNjQuY29uc3QiOiAgICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICA2NiwgInJldHVybiI6
IFsiaTY0Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJ2YXJpbnQ2NCJ9
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBpNjQiIH0sCiAgICAgICAgICJm
NjQuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6
ICA2OCwgInJldHVybiI6IFsiZjY0Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAgICAgICAidHlw
ZSI6ICJkb3VibGUifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmNjQi
IH0sCiAgICAgICAgICJmMzIuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lh
bCIsICAgICJ2YWx1ZSI6ICA2NywgInJldHVybiI6IFsiZjMyIl0sICAgICAgInBhcmFtZXRlciI6
IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUi
LCAgICAgICAgICAidHlwZSI6ICJmbG9hdCJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRl
cnByZXRlZCBhcyBmMzIiIH0sCi0gICAgICAgICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIwOCwgInJldHVybiI6IFsiYW55cmVmIl0s
ICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtd
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25z
dGFudCBudWxsIHJlZmVyZW5jZSIgfSwKKyAgICAgICAgInJlZi5udWxsIjogICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjA4LCAicmV0dXJuIjogWyJhbnlm
dW5jIl0sICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJh
IGNvbnN0YW50IG51bGwgcmVmZXJlbmNlIiB9LAogICAgICAgICAicmVmLmlzX251bGwiOiAgICAg
ICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAyMDksICJyZXR1cm4iOiBb
ImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueXJlZiJdLCAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogImRldGVybWluZSBpZiBhIHJlZmVyZW5jZSBpcyBudWxsIiB9LAorICAgICAgICAicmVmLmZ1
bmMiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAyMTAs
ICJyZXR1cm4iOiBbImFueWZ1bmMiXSwgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAi
dmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogInJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb24gYXQgdGhl
IGdpdmVuIGluZGV4IiB9LAogICAgICAgICAiZ2V0X2xvY2FsIjogICAgICAgICAgIHsgImNhdGVn
b3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzIsICJyZXR1cm4iOiBbImFueSJdLCAgICAg
ICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInJlYWQgYSBs
b2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0sCiAgICAgICAgICJzZXRfbG9jYWwiOiAgICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzMywgInJldHVybiI6
IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0sCiAgICAgICAgICJ0
ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6
ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0sICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIg
YW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTlmYzJhY2FlNjdiOTcxNThmOWMyMjVmNmI4
ODhlMTNhOTUzZjBmZS4uMzFiYjk5ZWQwMmU5NjY0Mjg4ODkyNTE2Mjg5ZmI2ZTBlMjM5OTBlMiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMyBAQAorMjAxOS0wNi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9y
IEZ1bmNyZWYgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdhc20vQnVpbGRlci5qczoKKyAgICAg
ICAgKGV4cG9ydC5kZWZhdWx0LkJ1aWxkZXIucHJvdG90eXBlLl9yZWdpc3RlclNlY3Rpb25CdWls
ZGVycy5jb25zdC5zZWN0aW9uLmluLldBU00uZGVzY3JpcHRpb24uc2VjdGlvbi5zd2l0Y2guc2Vj
dGlvbi5jYXNlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRoaXMuc2VjdGlvbik6CisgICAgICAgICog
d2FzbS9yZWZlcmVuY2VzL2FueXJlZl9nbG9iYWxzLmpzOgorICAgICAgICAqIHdhc20vcmVmZXJl
bmNlcy9mdW5jX3JlZi5qczogQWRkZWQuCisgICAgICAgIChmdWxsR0MuZ2MubWFrZUV4cG9ydGVk
RnVuY3Rpb24pOgorICAgICAgICAobWFrZUV4cG9ydGVkSWRlbnQpOgorICAgICAgICAobWFrZUFu
eWZ1bmNJZGVudCk6CisgICAgICAgIChmdW4pOgorICAgICAgICAoYXNzZXJ0LmVxLmluc3RhbmNl
LmV4cG9ydHMuZml4LmZ1bik6CisgICAgICAgIChhc3NlcnQuZXEuaW5zdGFuY2UuZXhwb3J0cy5m
aXgpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuRW5kLkVuZC5GdW5jdGlvbi5FbmQu
Q29kZS5FbmQuV2ViQXNzZW1ibHkuaW1wLnJlZik6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRf
aGVyZS5FbmQuRW5kLkZ1bmN0aW9uLkVuZC5Db2RlLkVuZC5XZWJBc3NlbWJseSk6CisgICAgICAg
IChHZXRMb2NhbC4wLkkzMkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseS5mdW4p
OgorICAgICAgICAoR2V0TG9jYWwuMC5JMzJDb25zdC4wLlRhYmxlU2V0LkVuZC5FbmQuV2ViQXNz
ZW1ibHkuYXNzZXJ0LnRocm93cyk6CisgICAgICAgIChHZXRMb2NhbC4wLkkzMkNvbnN0LjAuVGFi
bGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseSk6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAg
ICAgICAgKGFzc2VydC50aHJvd3MuZG9UZXN0KToKKyAgICAgICAgKGxldC5pbXBvcnRlZEZ1bi5v
Zik6CisgICAgICAgIChtYWtlQW55ZnVuY0lkZW50LmZ1bik6CisgICAgICAgICogd2FzbS9yZWZl
cmVuY2VzL3ZhbGlkYXRpb24uanM6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAg
KiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0wNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5f
bWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBv
cnQgZm9yIEFueXJlZiB0YWJsZXMsIFRhYmxlLmdldCBhbmQgVGFibGUuc2V0IChmb3IgQW55cmVm
IG9ubHkpLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dh
c20vQnVpbGRlci5qcwppbmRleCA3ZTdjMWI3ZGMyMjNjODgzZTEwZTZmMzczYmNkZDNjNmMyOWQ1
MTFiLi42NWYxZjQ3N2E5OGI4NjIwZmNjZDJhYThmOGMxMTA5ZTBhZjY3ODY2IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpA
QCAtNTM2LDYgKzUzNiwxMCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVzaCh7IHR5cGUsIG9wOiAiZ2V0X2dsb2Jh
bCIsIG11dGFiaWxpdHk6IF9ub3JtYWxpemVNdXRhYmlsaXR5KG11dGFiaWxpdHkpLCBpbml0VmFs
dWUgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5n
UHJveHlGb3IoZ2xvYmFsQnVpbGRlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmRnVuYzogKHR5cGUsIGluaXRWYWx1ZSwgbXV0YWJpbGl0
eSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHsgdHlwZSwg
b3A6ICJyZWYuZnVuYyIsIG11dGFiaWxpdHk6IF9ub3JtYWxpemVNdXRhYmlsaXR5KG11dGFiaWxp
dHkpLCBpbml0VmFsdWUgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9l
cnJvckhhbmRsaW5nUHJveHlGb3IoZ2xvYmFsQnVpbGRlcik7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgUmVmTnVsbDogKHR5cGUsIG11dGFiaWxp
dHkpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVzaCh7IHR5cGUs
IG9wOiAicmVmLm51bGwiLCBtdXRhYmlsaXR5OiBfbm9ybWFsaXplTXV0YWJpbGl0eShtdXRhYmls
aXR5KSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxp
bmdQcm94eUZvcihnbG9iYWxCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZl
cmVuY2VzL2FueXJlZl9nbG9iYWxzLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVm
X2dsb2JhbHMuanMKaW5kZXggMTg0NDU3YTMzZmVjYjBiMDhhZGUxM2RlY2ZjZjE5ZTdkMzMwODlh
ZS4uMmQzY2E3YmM2MDVmNzk3NGNmZWYyNTgxNGU4OWFlNTg0YjA1MzEzMCAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX2dsb2JhbHMuanMKKysrIGIvSlNUZXN0cy93
YXNtL3JlZmVyZW5jZXMvYW55cmVmX2dsb2JhbHMuanMKQEAgLTU2LDcgKzU2LDkgQEAgYXNzZXJ0
LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgbnVsbCkKIAogY29uc3Qgb2JqID0geyB0ZXN0OiAi
aGkiIH0KIAotJDEuZXhwb3J0cy5zZXRfZ2xvYihvYmopOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5n
ZXRfZ2xvYigpLCBvYmopOworYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmV4cGdsb2Iy
ID0gbnVsbCwgVHlwZUVycm9yLCAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9w
ZXJ0eS4iKQorCiskMS5leHBvcnRzLnNldF9nbG9iKG9iaik7IGFzc2VydC5lcSgkMS5leHBvcnRz
LmdldF9nbG9iKCksIG9iaik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmV4cGdsb2IyLCAiaGkiKQog
JDEuZXhwb3J0cy5zZXRfZ2xvYig1KTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwg
NSkKICQxLmV4cG9ydHMuc2V0X2dsb2IobnVsbCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9n
bG9iKCksIG51bGwpCiAkMS5leHBvcnRzLnNldF9nbG9iKCJoaSIpOyBhc3NlcnQuZXEoJDEuZXhw
b3J0cy5nZXRfZ2xvYigpLCAiaGkiKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5j
ZXMvZnVuY19yZWYuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMTVhMjEwNjljYTJjMThlODAxNjZkYTZhZGNhYzBjNWE5ZjRhZThiCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMKQEAgLTAsMCAr
MSw0NDcgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0
IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CisKK2Z1bGxHQygpCitnYygpCisKK2Z1bmN0
aW9uIG1ha2VFeHBvcnRlZEZ1bmN0aW9uKGkpIHsKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBC
dWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigp
LkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiaCIp
CisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0
aW9uKCJoIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0sIFtdKQorICAgICAgICAgICAgICAu
STMyQ29uc3QoaSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKTsKKworICAg
IGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1
bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29uc3QgaW5zdGFuY2UgPSBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKTsKKworICAgIHJldHVybiBpbnN0YW5jZS5l
eHBvcnRzLmgKK30KKworZnVuY3Rpb24gbWFrZUV4cG9ydGVkSWRlbnQoKSB7CisgICAgY29uc3Qg
YnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAg
ICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oImgiKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAg
ICAgICAgICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0s
IFtdKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAgIC5FbmQoKTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5n
ZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7Cisg
ICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKTsKKwor
ICAgIHJldHVybiBpbnN0YW5jZS5leHBvcnRzLmgKK30KKworZnVuY3Rpb24gbWFrZUFueWZ1bmNJ
ZGVudCgpIHsKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAg
LlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLkV4
cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiaCIpCisgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsi
YW55ZnVuYyJdLCByZXQ6ICJhbnlmdW5jIiB9LCBbXSkKKyAgICAgICAgICAgICAgLkdldExvY2Fs
KDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCk7CisKKyAgICBjb25zdCBi
aW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7CisKKyAgICByZXR1cm4gaW5zdGFuY2UuZXhwb3J0cy5o
Cit9CisKK3sKKyAgICBjb25zdCBteWZ1biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDEzMzcpOwor
ICAgIGZ1bmN0aW9uIGZ1bigpIHsKKyAgICAgICAgcmV0dXJuIDQxOworICAgIH0KKworICAgIGNv
bnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisg
ICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJoIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJpIikKKyAgICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfaCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZml4
IikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfbm90X2V4cG9ydGVkIikKKyAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJsb2NhbF9yZWFkIikKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAg
ICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJhbnlmdW5j
Il0sIHJldDogImFueXJlZiIgfSwgWyJhbnlyZWYiXSkKKyAgICAgICAgICAgICAgLkdldExvY2Fs
KDApCisgICAgICAgICAgICAgIC5TZXRMb2NhbCgxKQorICAgICAgICAgICAgICAuR2V0TG9jYWwo
MSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImkiLCB7IHBh
cmFtczogWyJhbnlmdW5jIl0sIHJldDogImFueWZ1bmMiIH0sIFsiYW55ZnVuYyJdKQorICAgICAg
ICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlNldExvY2FsKDEpCisgICAgICAg
ICAgICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiZ2V0X2giLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0sIFsiYW55ZnVu
YyJdKQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlJlZkZ1bmMo
MCkKKyAgICAgICAgICAgICAgLlNldExvY2FsKDApCisgICAgICAgICAgICAgIC5JZigiYW55ZnVu
YyIpCisgICAgICAgICAgICAgIC5CbG9jaygiYW55ZnVuYyIsIChiKSA9PgorICAgICAgICAgICAg
ICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAuRWxzZSgp
CisgICAgICAgICAgICAgIC5CbG9jaygiYW55ZnVuYyIsIChiKSA9PgorICAgICAgICAgICAgICAg
IGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImZpeCIsIHsgcGFyYW1z
OiBbXSwgcmV0OiAiYW55ZnVuYyIgfSwgW10pCisgICAgICAgICAgICAgIC5SZWZGdW5jKDMpCisg
ICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfbm90X2V4cG9y
dGVkIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9LCBbXSkKKyAgICAgICAgICAgICAg
LlJlZkZ1bmMoNSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24o
InJldF80MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAgICAgICAgICAg
LkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlv
bigibG9jYWxfcmVhZCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9LCBbImFueWZ1bmMiXSkK
KyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5SZWZJc051bGwoKQor
ICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpOworCisgICAgY29uc3QgYmluID0g
YnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUpOworICAgIGZ1bGxHQygpOworCisgICAgYXNzZXJ0LmVxKGluc3Rh
bmNlLmV4cG9ydHMubG9jYWxfcmVhZCgpLCAxKQorICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBv
cnRzLmgobnVsbCksIG51bGwpCisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGluc3RhbmNlLmV4
cG9ydHMuaChmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1
bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFzc2VydC5lcShpbnN0
YW5jZS5leHBvcnRzLmgobXlmdW4pLCBteWZ1bikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGlu
c3RhbmNlLmV4cG9ydHMuaCg1KSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQg
d2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IGluc3RhbmNlLmV4cG9ydHMuaCh1bmRlZmluZWQpLCBFcnJvciwgIkFueWZ1
bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4u
LmFyZ3MpJykiKQorCisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuaShudWxsKSwgbnVs
bCkKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5pKG15ZnVuKSwgbXlmdW4pCisgICAg
YXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzLmkoZnVuKSwgRXJyb3IsICJBbnlm
dW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYygu
Li5hcmdzKScpIikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGluc3RhbmNlLmV4cG9ydHMuaSg1
KSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZh
bHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gaW5z
dGFuY2UuZXhwb3J0cy5nZXRfaCgpKGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4
cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAg
YXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X2goKShudWxsKSwgbnVsbCkKKyAgICBhc3Nl
cnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfaCgpKG15ZnVuKSwgbXlmdW4pCisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzLmdldF9oKCkoNSksIEVycm9yLCAiQW55ZnVu
YyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4u
YXJncyknKSIpCisKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfbm90X2V4cG9y
dGVkKCkoKSwgNDIpCisKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5maXgoKSgpLCBp
bnN0YW5jZS5leHBvcnRzLmZpeCgpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5m
aXgoKSwgaW5zdGFuY2UuZXhwb3J0cy5maXgpOworfQorCisvLyBHbG9iYWxzCisKK3sKKyAgICBj
b25zdCBteWZ1biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDQyKTsKKyAgICBmdW5jdGlvbiBmdW4o
KSB7CisgICAgICAgIHJldHVybiA0MTsKKyAgICB9CisKKyAgICBjb25zdCAkMSA9ICgoKSA9PiBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxk
ZXIoKSkKKyAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAu
R2xvYmFsKCkuQW55ZnVuYygiaW1wIiwgInJlZiIsICJpbW11dGFibGUiKS5FbmQoKQorICAgICAg
LkVuZCgpCisgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgLkdsb2JhbCgpCisgICAgICAg
ICAgLlJlZk51bGwoImFueWZ1bmMiLCAibXV0YWJsZSIpCisgICAgICAgICAgLlJlZk51bGwoImFu
eWZ1bmMiLCAiaW1tdXRhYmxlIikKKyAgICAgICAgICAuR2V0R2xvYmFsKCJhbnlmdW5jIiwgMCwg
Im11dGFibGUiKQorICAgICAgICAgIC5SZWZGdW5jKCJhbnlmdW5jIiwgMiwgImltbXV0YWJsZSIp
CisgICAgICAuRW5kKCkKKyAgICAgIC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0
X2dsb2IiKQorICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X2dsb2IiKQorICAgICAgICAgIC5GdW5j
dGlvbigiZ2xvYl9pc19udWxsIikKKyAgICAgICAgICAuRnVuY3Rpb24oInNldF9nbG9iX251bGwi
KQorICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X2ltcG9ydCIpCisgICAgICAgICAgLkdsb2JhbCgi
ZXhwZ2xvYiIsIDIpCisgICAgICAgICAgLkdsb2JhbCgiZXhwZ2xvYjIiLCAwKQorICAgICAgICAg
IC5HbG9iYWwoImV4cF9nbG9iX2lzX251bGwiLCA0KQorICAgICAgLkVuZCgpCisgICAgICAuQ29k
ZSgpCisgICAgICAgIC5GdW5jdGlvbigic2V0X2dsb2IiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0s
IHJldDogInZvaWQiIH0pCisgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgLlNldEds
b2JhbCgxKQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oImdldF9nbG9iIiwg
eyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgICAgLkdldEdsb2JhbCgx
KQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oImdsb2JfaXNfbnVsbCIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgLkNhbGwoMSkKKyAgICAgICAg
ICAgIC5SZWZJc051bGwoKQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oInNl
dF9nbG9iX251bGwiLCB7IHBhcmFtczogW10sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAu
UmVmTnVsbCgpCisgICAgICAgICAgICAuQ2FsbCgwKQorICAgICAgICAuRW5kKCkKKworICAgICAg
ICAuRnVuY3Rpb24oImdldF9pbXBvcnQiLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0p
CisgICAgICAgICAgICAuR2V0R2xvYmFsKDApCisgICAgICAgIC5FbmQoKQorICAgICAgLkVuZCgp
LldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDogeyByZWY6IG1ha2VFeHBvcnRlZEZ1bmN0aW9u
KDEzMzcpIH0gfSkpKCk7CisKKyAgICBmdWxsR0MoKTsKKworICAgIGFzc2VydC5lcSgkMS5leHBv
cnRzLmdldF9pbXBvcnQoKSgpLCAxMzM3KQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmV4cGds
b2IsIG51bGwpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZXhwZ2xvYjIoKSwgMTMzNykKKyAg
ICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5leHBfZ2xvYl9pc19udWxsLCAkMS5leHBvcnRzLmdsb2Jf
aXNfbnVsbCk7CisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgbnVsbCkKKwor
ICAgICQxLmV4cG9ydHMuc2V0X2dsb2IobXlmdW4pOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRf
Z2xvYigpLCBteWZ1bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCkoKSwgNDIpOyBh
c3NlcnQuZXEoJDEuZXhwb3J0cy5leHBnbG9iMigpLCAxMzM3KQorICAgICQxLmV4cG9ydHMuc2V0
X2dsb2IobnVsbCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIG51bGwpCisgICAg
JDEuZXhwb3J0cy5zZXRfZ2xvYihteWZ1bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9i
KCkoKSwgNDIpOworCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnNldF9nbG9i
KGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24g
KGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0
cy5nbG9iX2lzX251bGwoKSwgMCkKKyAgICAkMS5leHBvcnRzLnNldF9nbG9iX251bGwoKTsgYXNz
ZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEoJDEuZXhw
b3J0cy5nbG9iX2lzX251bGwoKSwgMSkKK30KKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkK
KyAgLlR5cGUoKS5FbmQoKQorICAuSW1wb3J0KCkKKyAgICAgICAuR2xvYmFsKCkuQW55ZnVuYygi
aW1wIiwgInJlZiIsICJpbW11dGFibGUiKS5FbmQoKQorICAuRW5kKCkKKyAgLkZ1bmN0aW9uKCku
RW5kKCkKKyAgLkNvZGUoKS5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwgeyBpbXA6IHsgcmVm
OiBmdW5jdGlvbigpIHsgcmV0dXJuICJoaSIgfSB9IH0pLCBFcnJvciwgImltcG9ydGVkIGdsb2Jh
bCBpbXA6cmVmIG11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIChldmFsdWF0aW5nICdu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UnKSIpOworCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgIC5UeXBlKCkuRW5kKCkKKyAgLkZ1
bmN0aW9uKCkuRW5kKCkKKyAgLkNvZGUoKQorICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBb
ImFueWZ1bmMiXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgLkdldExvY2FsKDApCisgICAgLkVu
ZCgpCisgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5N
b2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogY29udHJvbCBmbG93IHJldHVybnMgd2l0aCB1bmV4cGVj
dGVkIHR5cGUsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUnKSIpOworCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgIC5UeXBlKCkuRW5kKCkKKyAgLkZ1bmN0aW9uKCkuRW5k
KCkKKyAgLlRhYmxlKCkKKyAgICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5j
In0pCisgIC5FbmQoKQorICAuQ29kZSgpCisgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsi
aTMyIl0sIHJldDogInZvaWQiIH0pCisgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgIC5JMzJDb25z
dCgwKQorICAgICAgLlRhYmxlU2V0KCkKKyAgICAuRW5kKCkKKyAgLkVuZCgpLldlYkFzc2VtYmx5
KCkuZ2V0KCkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0
YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBJMzIgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rpb24g
YXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIik7CisKKy8v
IFRhYmxlcworeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAuVHlwZSgpLkVuZCgpCisg
ICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJs
ZSh7aW5pdGlhbDogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgIC5FbmQoKQorICAgICAg
Lkdsb2JhbCgpCisgICAgICAgICAgLlJlZk51bGwoImFueWZ1bmMiLCAibXV0YWJsZSIpCisgICAg
ICAuRW5kKCkKKyAgICAgIC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0X2dsb2Ii
KQorICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X2dsb2IiKQorICAgICAgICAgIC5GdW5jdGlvbigi
Y2FsbF9nbG9iIikKKyAgICAgICAgICAuRnVuY3Rpb24oInJldF8yMCIpCisgICAgICAuRW5kKCkK
KyAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJzZXRfZ2xvYiIsIHsgcGFyYW1zOiBb
ImFueWZ1bmMiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAuU2V0R2xvYmFsKDApCisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigi
Z2V0X2dsb2IiLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0pCisgICAgICAgICAgICAu
R2V0R2xvYmFsKDApCisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigiY2FsbF9n
bG9iIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgICAgLkdldEdsb2JhbCgwKQorICAgICAgICAgICAgLlRhYmxlU2V0
KCkKKworICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
KyAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMiwwKQorICAgICAgICAuRW5kKCkKKworICAgICAg
ICAuRnVuY3Rpb24oInJldF8yMCIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisg
ICAgICAgICAgICAuSTMyQ29uc3QoMjApCisgICAgICAgIC5FbmQoKQorICAgICAgLkVuZCgpLldl
YkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGNvbnN0IG15ZnVuID0gbWFrZUV4cG9ydGVkRnVu
Y3Rpb24oMTMzNyk7CisgICAgZnVuY3Rpb24gZnVuKGkpIHsKKyAgICAgICAgcmV0dXJuIDQxOwor
ICAgIH0KKyAgICBjb25zdCBpZGVudCA9IG1ha2VFeHBvcnRlZElkZW50KCk7CisKKyAgICAkMS5l
eHBvcnRzLnNldF9nbG9iKCQxLmV4cG9ydHMucmV0XzIwKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMu
Z2V0X2dsb2IoKSwgJDEuZXhwb3J0cy5yZXRfMjApOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxs
X2dsb2IoNDIpLCAyMCkKKyAgICAkMS5leHBvcnRzLnNldF9nbG9iKG51bGwpOyBhc3NlcnQuZXEo
JDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBudWxsKTsgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBv
cnRzLmNhbGxfZ2xvYig0MiksIEVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUg
ZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgJDEuZXhwb3J0cy5zZXRf
Z2xvYihpZGVudCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIGlkZW50KTsgYXNz
ZXJ0LmVxKCQxLmV4cG9ydHMuY2FsbF9nbG9iKDQyKSwgNDIpCisKKyAgICBhc3NlcnQudGhyb3dz
KCgpID0+ICQxLmV4cG9ydHMuc2V0X2dsb2IoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUg
YW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikK
KyAgICAkMS5leHBvcnRzLnNldF9nbG9iKG15ZnVuKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0
X2dsb2IoKSwgbXlmdW4pOyBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF9nbG9i
KDQyKSwgRXJyb3IsICJjYWxsX2luZGlyZWN0IHRvIGEgc2lnbmF0dXJlIHRoYXQgZG9lcyBub3Qg
bWF0Y2ggKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisKKyAgICBmb3IgKGxldCBpPTA7
IGk8MTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5z
ZXRfZ2xvYihmdW5jdGlvbigpIHt9KSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0
ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgfQor
fQorCisvLyBUYWJsZSBzZXQvZ2V0CisKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAg
LlR5cGUoKS5FbmQoKQorICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgIC5UYWJsZSgpCisg
ICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAg
ICAuRW5kKCkKKyAgICAgIC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0IikKKyAg
ICAgICAgICAuRnVuY3Rpb24oImdldCIpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAg
ICAgICAgLkZ1bmN0aW9uKCJzZXQiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDogInZvaWQi
IH0pCisgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJn
ZXQiLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0pCisgICAgICAgICAgICAuSTMyQ29u
c3QoMCkKKyAgICAgICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgIC5FbmQoKQorICAgICAgLkVu
ZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGZ1bmN0aW9uIGRvU2V0KCkgeworICAg
ICAgICBjb25zdCBteWZ1biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDQ0NCk7CisgICAgICAgIGZv
ciAobGV0IGk9MDsgaTwxMDAwOyArK2kpIHsKKyAgICAgICAgICAgICQxLmV4cG9ydHMuc2V0KG15
ZnVuKTsKKyAgICAgICAgfQorICAgICAgICAkMS5leHBvcnRzLnNldChteWZ1bik7IGFzc2VydC5l
cSgkMS5leHBvcnRzLmdldCgpLCBteWZ1bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldCgpKCks
IDQ0NCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9UZXN0KGosaywgbCkgeworICAgICAgICBm
dWxsR0MoKTsKKyAgICAgICAgbGV0IGdhcmJhZ2UgPSB7IHZhbDogImhpIiwgdmFsMjogNSwgYXJy
OiBbXSB9CisgICAgICAgIGZvciAobGV0IGk9MDsgaTwxMDA7ICsraSkgZ2FyYmFnZS5hcnIgKz0g
KHsgZmllbGQ6IGkgKyBqICsgayArIGwgfSkKKyAgICAgICAgZnVsbEdDKCk7CisKKyAgICAgICAg
Zm9yIChsZXQgaT0wOyBpPDEwMDsgKytpKSB7CisgICAgICAgICAgICBhc3NlcnQuZXEoJDEuZXhw
b3J0cy5nZXQoKSgpLCA0NDQpOworICAgICAgICAgICAgZnVsbEdDKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKworICAgIGRvU2V0KCkKKyAgICBkb1Rlc3QoMCwwLDApCit9CisKKy8vIFdhc20tPkpT
IENhbGxzCisKK2ZvciAobGV0IGltcG9ydGVkRnVuIG9mIFtmdW5jdGlvbihpKSB7IHJldHVybiBp
OyB9LCBtYWtlQW55ZnVuY0lkZW50KCldKSB7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAg
IC5UeXBlKCkuRW5kKCkKKyAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAuRnVuY3Rpb24oImlt
cCIsICJoIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAg
LkVuZCgpCisgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgLlRhYmxlKCkKKyAgICAgICAg
ICAgIC5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgIC5FbmQo
KQorICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MSIpCisgICAgICAg
ICAgLkZ1bmN0aW9uKCJ0ZXN0MiIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MyIpCisgICAg
ICAgICAgLkZ1bmN0aW9uKCJ0ZXN0NCIpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAg
ICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MSIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAiYW55
ZnVuYyIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAuQ2FsbCgwKQorICAg
ICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oInRlc3QyIiwgeyBwYXJhbXM6IFtdLCBy
ZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgIC5SZWZGdW5jKDEpCisgICAgICAgICAgLkNhbGwo
MCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MyIsIHsgcGFyYW1z
OiBbImFueWZ1bmMiXSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkK
KyAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAuUmVmRnVuYygwKQorICAgICAgICAg
IC5UYWJsZVNldCgpCisgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLkNhbGxJbmRp
cmVjdCgwLCAwKQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oInRlc3Q0Iiwg
eyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgIC5SZWZGdW5jKDEpCisg
ICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLlJlZkZ1bmMoMCkKKyAgICAgICAgICAu
VGFibGVTZXQoKQorICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgIC5DYWxsSW5kaXJl
Y3QoMCwgMCkKKyAgICAgICAgLkVuZCgpCisgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQo
KSksIHsgaW1wOiB7IGg6IGltcG9ydGVkRnVuIH0gfSk7CisKKyAgICBjb25zdCBteWZ1biA9IG1h
a2VFeHBvcnRlZEZ1bmN0aW9uKDEzMzcpOworICAgIGZ1bmN0aW9uIGZ1bihpKSB7CisgICAgICAg
IHJldHVybiA0MTsKKyAgICB9CisKKyAgICBmb3IgKGxldCB0ZXN0IG9mIFskMS5leHBvcnRzLnRl
c3QxLCAkMS5leHBvcnRzLnRlc3QzXSkgeworICAgICAgICBhc3NlcnQuZXEodGVzdChteWZ1biks
IG15ZnVuKQorICAgICAgICBhc3NlcnQuZXEodGVzdChteWZ1bikoKSwgMTMzNykKKyAgICAgICAg
YXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0KGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFu
IGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisK
KyAgICAgICAgZm9yIChsZXQgaT0wOyBpPDEwMDA7ICsraSkgeworICAgICAgICAgICAgYXNzZXJ0
LnRocm93cygoKSA9PiB0ZXN0KGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9y
dGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmb3IgKGxldCB0ZXN0IG9mIFskMS5leHBvcnRzLnRlc3QyLCAkMS5l
eHBvcnRzLnRlc3Q0XSkgeworICAgICAgICBhc3NlcnQuZXEodGVzdCgpLCAkMS5leHBvcnRzLnRl
c3QxKQorICAgICAgICBhc3NlcnQuZXEodGVzdCgpKG15ZnVuKSwgbXlmdW4pCisgICAgICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gdGVzdCgpKGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFu
IGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisK
KyAgICAgICAgZm9yIChsZXQgaT0wOyBpPDEwMDA7ICsraSkgeworICAgICAgICAgICAgYXNzZXJ0
LnRocm93cygoKSA9PiB0ZXN0KCkoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhw
b3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICAg
ICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlk
YXRpb24uanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzCmluZGV4IGQz
OGMyNjViZmZmNjEwYWQ0OTQ4ODRmOWE3N2E2MzczYzg0ZTUyYTMuLjhmODE2MzY5YTc0ZTg5ZTQ5
ZTY5MDlkZjQ0NTU1MGZkMGY2NmMyMTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVu
Y2VzL3ZhbGlkYXRpb24uanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlv
bi5qcwpAQCAtNjMsNyArNjMsNyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpz
JzsKICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCk7CiAgICAgYmluLnRyaW0o
KTsKIAotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4u
Z2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9l
c24ndCB2YWxpZGF0ZTogdGFibGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBB
bnlyZWYsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoYmluLmdldCgpKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldl
YkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgdmFsdWUgdG8gdHlw
ZSBBbnlyZWYgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVh
dGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsKIH0KIAogewpAQCAt
ODYsNyArODYsNyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICBj
b25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCk7CiAgICAgYmluLnRyaW0oKTsKIAotICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpLCBX
ZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxp
ZGF0ZTogdGFibGUuZ2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBBbnlyZWYsIGlu
IGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YmluLmdldCgpKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5
Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiBjb250cm9sIGZsb3cgcmV0dXJucyB3aXRoIHVuZXhw
ZWN0ZWQgdHlwZSwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsKIH0KIAogewpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggMzBiYmM3NDcy
Mzc4MzkyMmVkYmJmNjM0OTkzNDkwZjQ4YjdiN2UwMi4uNjRjYTBiNWIyMDhkOTFiMmJmNzg2NTU3
NTcxMjQ3M2Q1YjcyNTBhMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysg
Yi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC0xMSwxMyArMTEsMTMgQEAKICAgICAgICAgImk2
NCI6ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIsICJiM3R5cGUiOiAiQjM6
OkludDY0IiB9LAogICAgICAgICAiZjMyIjogICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtMywgImIzdHlwZSI6ICJCMzo6RmxvYXQiIH0sCiAgICAgICAgICJmNjQiOiAgICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC00LCAiYjN0eXBlIjogIkIzOjpEb3VibGUiIH0s
Ci0gICAgICAgICJhbnlmdW5jIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTE2LCAi
YjN0eXBlIjogIkIzOjpWb2lkIiB9LAorICAgICAgICAiYW55ZnVuYyI6IHsgInR5cGUiOiAidmFy
aW50NyIsICJ2YWx1ZSI6IC0xNiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJh
bnlyZWYiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTE3LCAiYjN0eXBlIjogIkIz
OjpJbnQ2NCIgfSwKICAgICAgICAgImZ1bmMiOiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFs
dWUiOiAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjogICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9CiAg
ICAgfSwKLSAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImFu
eXJlZiJdLAotICAgICJibG9ja190eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAi
dm9pZCIsICJhbnlyZWYiXSwKKyAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIi
LCAiZjY0IiwgImFueXJlZiIsICJhbnlmdW5jIl0sCisgICAgImJsb2NrX3R5cGUiOiBbImkzMiIs
ICJpNjQiLCAiZjMyIiwgImY2NCIsICJ2b2lkIiwgImFueXJlZiIsICJhbnlmdW5jIl0sCiAgICAg
ImVsZW1fdHlwZSI6IFsiYW55ZnVuYyIsImFueXJlZiJdLAogICAgICJleHRlcm5hbF9raW5kIjog
ewogICAgICAgICAiRnVuY3Rpb24iOiB7ICJ0eXBlIjogInVpbnQ4IiwgInZhbHVlIjogMCB9LApA
QCAtNTksOCArNTksOSBAQAogICAgICAgICAiaTY0LmNvbnN0IjogICAgICAgICAgIHsgImNhdGVn
b3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgNjYsICJyZXR1cm4iOiBbImk2NCJdLCAgICAg
ICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAidmFyaW50NjQifV0sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3Rh
bnQgdmFsdWUgaW50ZXJwcmV0ZWQgYXMgaTY0IiB9LAogICAgICAgICAiZjY0LmNvbnN0IjogICAg
ICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgNjgsICJyZXR1cm4i
OiBbImY2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAiZG91YmxlIn1d
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQgYXMgZjY0IiB9LAogICAgICAgICAi
ZjMyLmNvbnN0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUi
OiAgNjcsICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAgInR5
cGUiOiAiZmxvYXQifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQgYXMgZjMy
IiB9LAotICAgICAgICAicmVmLm51bGwiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNp
YWwiLCAgICAidmFsdWUiOiAyMDgsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgbnVsbCByZWZl
cmVuY2UiIH0sCisgICAgICAgICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
c3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIwOCwgInJldHVybiI6IFsiYW55ZnVuYyJdLCAgInBhcmFt
ZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCBudWxs
IHJlZmVyZW5jZSIgfSwKICAgICAgICAgInJlZi5pc19udWxsIjogICAgICAgICB7ICJjYXRlZ29y
eSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjA5LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAi
cGFyYW1ldGVyIjogWyJhbnlyZWYiXSwgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXRlcm1pbmUg
aWYgYSByZWZlcmVuY2UgaXMgbnVsbCIgfSwKKyAgICAgICAgInJlZi5mdW5jIjogICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjEwLCAicmV0dXJuIjogWyJh
bnlmdW5jIl0sICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJyZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uIGF0IHRoZSBnaXZlbiBpbmRleCIg
fSwKICAgICAgICAgImdldF9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFs
IiwgICAgInZhbHVlIjogIDMyLCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjog
W10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJsb2NhbF9p
bmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEgbG9jYWwgdmFyaWFibGUg
b3IgcGFyYW1ldGVyIiB9LAogICAgICAgICAic2V0X2xvY2FsIjogICAgICAgICAgIHsgImNhdGVn
b3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzMsICJyZXR1cm4iOiBbXSwgICAgICAgICAg
ICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEg
bG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIiB9LAogICAgICAgICAidGVlX2xvY2FsIjogICAg
ICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzQsICJyZXR1cm4i
OiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMy
In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIGFuZCByZXR1cm4gdGhl
IHNhbWUgdmFsdWUiIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372095</attachid>
            <date>2019-06-13 19:02:31 -0700</date>
            <delta_ts>2019-06-14 19:47:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198157-20190613190231.patch</filename>
            <type>text/plain</type>
            <size>86192</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NWVlMjY3MzU3MTQzYzUwNjc2Y2I3ZTE0YTJkOWFjNTY4YTJkMThiLi5mYjFiZTc0NDM0ODBlMzA1
OTc2MjBjNzRmZmUxMDZmMzcwOGE4MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOS0wNi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIEZ1
bmNyZWYgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZnVuY3JlZiBpbiBw
YXJhbWV0ZXJzLCBnbG9iYWxzLCBhbmQgaW4gdGFibGUuZ2V0L3NldC4gV2hlbiBjb252ZXJ0aW5n
IGEgSlNWYWx1ZSB0byAKKyAgICAgICAgYSBmdW5jcmVmIChuw6llIGFueWZ1bmMpLCB3ZSBmaXJz
dCBtYWtlIHN1cmUgaXQgaXMgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiBvciBudWxsLiAKKwor
ICAgICAgICBXZSBhbHNvIGFkZCBzdXBwb3J0IGZvciBSZWYuZnVuYy4gQW55d2hlcmUgYSBSZWYu
ZnVuYyBpcyB1c2VkLCAoc3RhdGljYWxseSkgd2UgY29uc3RydWN0IGEgSlMgd3JhcHBlcgorICAg
ICAgICBmb3IgaXQgc28gdGhhdCB3ZSBuZXZlciBuZWVkIHRvIGNvbnN0cnVjdCBKU1ZhbHVlcyB3
aGVuIGhhbmRsaW5nIHJlZmVyZW5jZXMuIFRoaXMgc2hvdWxkIG1ha2UgdGhyZWFkcworICAgICAg
ICBlYXNpZXIgdG8gaW1wbGVtZW50LgorCisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6dG1wRm9yVHlwZSk6
CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjptb3ZlT3BGb3JWYWx1ZVR5cGUp
OgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgorICAgICAgICAo
SlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6CisgICAgICAgIChKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
YWRkUmV0dXJuKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToKKyAgICAgICAgKiB3YXNt
L1dhc21DYWxsaW5nQ29udmVudGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpDYWxsaW5nQ29u
dmVudGlvbkFpcjo6bWFyc2hhbGxBcmd1bWVudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206
OkNhbGxpbmdDb252ZW50aW9uQWlyOjpzZXR1cENhbGwgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbUV4Y2VwdGlvblR5cGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6aXNWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjppc1N1YnR5
cGUpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6
Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAg
ICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4
cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6Okluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFu
Y2U6OmdldEZ1bmN0aW9uV3JhcHBlciBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Okluc3Rh
bmNlOjpzZXRGdW5jdGlvbldyYXBwZXIpOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmg6
CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OnJlZmVyZW5jZWRGdW5jdGlvbnMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6YWRkUmVmZXJlbmNlZEZ1bmN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWwpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAgICAgKiB3YXNtL1dhc21W
YWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZUdldCk6
CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNldCk6CisgICAgICAgIChK
U0M6Oldhc206OlZhbGlkYXRlOjphZGRSZWZJc051bGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpW
YWxpZGF0ZTo6YWRkUmVmRnVuYyk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjpzZXRM
b2NhbCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRDYWxsKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9q
cy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBl
cik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAo
SlNDOjppc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
cik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmg6CisgICAg
ICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmhhbmRsZUJh
ZEk2NFVzZSk6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6ZW1pdFdhc21Ub0pTRXhjZXB0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pT
Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdyk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0xMyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFlhcnIgYnl0ZWNv
ZGUgY29tcGlsYXRpb24gZmFpbHVyZSBzaG91bGQgYmUgZ3JhY2VmdWxseSBoYW5kbGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRl
eCA1N2IzZGY4MTBlNGIxMmY5ZTczYWM0YjE0NzgwYjE2NDlkODczY2IyLi40MWVmZDYyMDJhNTdk
YjQ2MmNiZjU0OGJkMWY3YTJhMGFmNmFiZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTIzNCw2ICsyMzQsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBSZWZlcmVuY2VzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVu
Yyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJs
ZXMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHBy
ZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTM3MCw2ICszNzEs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGczMigpOwogICAgICAgICBjYXNlIFR5
cGU6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlOjpBbnlyZWY6CisgICAgICAgIGNhc2UgVHlwZTo6
QW55ZnVuYzoKICAgICAgICAgICAgIHJldHVybiBnNjQoKTsKICAgICAgICAgY2FzZSBUeXBlOjpG
MzI6CiAgICAgICAgICAgICByZXR1cm4gZjMyKCk7CkBAIC01NTQsNiArNTU2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiBNb3ZlMzI7CiAgICAgICAgIGNhc2UgVHlwZTo6STY0Ogog
ICAgICAgICBjYXNlIFR5cGU6OkFueXJlZjoKKyAgICAgICAgY2FzZSBUeXBlOjpBbnlmdW5jOgog
ICAgICAgICAgICAgcmV0dXJuIE1vdmU7CiAgICAgICAgIGNhc2UgVHlwZTo6RjMyOgogICAgICAg
ICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKQEAgLTc5OSw2ICs4MDIsNyBAQCBBaXJJUkdlbmVyYXRv
cjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9j
ZWR1cmUmIHBybwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZTo6STY0Ogog
ICAgICAgICBjYXNlIFR5cGU6OkFueXJlZjoKKyAgICAgICAgY2FzZSBUeXBlOjpBbnlmdW5jOgog
ICAgICAgICAgICAgYXBwZW5kKE1vdmUsIGFyZywgbV9sb2NhbHNbaV0pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZTo6RjMyOgpAQCAtODg1LDYgKzg4OSw3IEBAIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QgY291bnQpIC0+IFBh
cnRpYWxSZXN1bHQKICAgICAgICAgbV9sb2NhbHMudW5jaGVja2VkQXBwZW5kKGxvY2FsKTsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgVHlwZTo6QW55cmVmOgorICAgICAg
ICBjYXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjppbW0o
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSksIGxvY2FsKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFR5cGU6OkkzMjoKQEAgLTkxOSw2ICs5MjQsNyBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRDb25zdGFudChCYXNpY0Jsb2NrKiBibG9jaywgVHlwZSB0eXBlLCB1aW50NjRf
dCB2YWx1ZSkgLQogICAgIGNhc2UgVHlwZTo6STMyOgogICAgIGNhc2UgVHlwZTo6STY0OgogICAg
IGNhc2UgVHlwZTo6QW55cmVmOgorICAgIGNhc2UgVHlwZTo6QW55ZnVuYzoKICAgICAgICAgYXBw
ZW5kKGJsb2NrLCBNb3ZlLCBBcmc6OmJpZ0ltbSh2YWx1ZSksIHJlc3VsdCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgVHlwZTo6RjMyOgpAQCAtOTU0LDYgKzk2MCwxNSBAQCBhdXRvIEFpcklS
R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUmIHZhbHVlLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KQogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBh
cnRpYWxSZXN1bHQKK3sKKyAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCisgICAgcmVzdWx0ID0gdG1w
Rm9yVHlwZShUeXBlOjpBbnlmdW5jKTsKKyAgICBlbWl0Q0NhbGwoJmRvV2FzbVJlZkZ1bmMsIHJl
c3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBlOjpJMzIsIGluZGV4KSk7CisK
KyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdldChF
eHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgpAQCAtOTc3LDEzICs5OTIsNyBAQCBhdXRv
IEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNz
aW9uVHlwZSYgdmFsdWUpIC0+CiAgICAgQVNTRVJUKGlkeC50eXBlKCkgPT0gVHlwZTo6STMyKTsK
ICAgICBBU1NFUlQodmFsdWUudG1wKCkpOwogCi0gICAgdm9pZCAoKmRvU2V0KShJbnN0YW5jZSos
IGludDMyX3QsIHVpbnQ2NF90IHZhbHVlKSA9IFtdIChJbnN0YW5jZSogaW5zdGFuY2UsIGludDMy
X3QgaWR4LCB1aW50NjRfdCB2YWx1ZSkgLT4gdm9pZCB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUgc3VwcG9ydGVkIGhlcmUuCi0g
ICAgICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU3
PgotICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+c2V0KGlkeCwgSlNWYWx1ZTo6ZGVjb2RlKHZh
bHVlKSk7Ci0gICAgfTsKLQotICAgIGVtaXRDQ2FsbChkb1NldCwgVHlwZWRUbXAoKSwgaW5zdGFu
Y2VWYWx1ZSgpLCBpZHgsIHZhbHVlKTsKKyAgICBlbWl0Q0NhbGwoJnNldFdhc21UYWJsZUVsZW1l
bnQsIFR5cGVkVG1wKCksIGluc3RhbmNlVmFsdWUoKSwgaWR4LCB2YWx1ZSk7CiAKICAgICByZXR1
cm4geyB9OwogfQpAQCAtMTEwNCw3ICsxMTEzLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6c2V0
R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFIK
ICAgICAgICAgYXBwZW5kKG1vdmVPcEZvclZhbHVlVHlwZSh0eXBlKSwgdmFsdWUsIEFyZzo6YWRk
cih0ZW1wKSk7CiAgICAgfQogCi0gICAgaWYgKHR5cGUgPT0gQW55cmVmKQorICAgIGlmIChpc1N1
YnR5cGUodHlwZSwgQW55cmVmKSkKICAgICAgICAgZW1pdFdyaXRlQmFycmllckZvckpTV3JhcHBl
cigpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE2MjQsNiArMTYzMyw3IEBAIGF1dG8gQWlySVJH
ZW5lcmF0b3I6OmFkZFJldHVybihjb25zdCBDb250cm9sRGF0YSYgZGF0YSwgY29uc3QgRXhwcmVz
c2lvbkxpc3QmIHJlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlOjpJNjQ6
CiAgICAgICAgIGNhc2UgVHlwZTo6QW55cmVmOgorICAgICAgICBjYXNlIFR5cGU6OkFueWZ1bmM6
CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgcmV0dXJuVmFsdWVzWzBdLCByZXR1cm5WYWx1ZUdQ
Uik7CiAgICAgICAgICAgICBhcHBlbmQoUmV0NjQsIHJldHVyblZhbHVlR1BSKTsKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCmluZGV4IDIyMjZmZmM3MmM5MzgyY2MyNmZiM2ViYmUwOTQyOTc2MGVmNDRhYjcu
LjVlNmE1N2ViMThmZjVmNjVjYmQ4YTIwY2ViMzMyNmI1NDFhYThmYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE4Nyw2ICsx
ODcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZWZlcmVuY2VzCiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAK
ICAgICAvLyBUYWJsZXMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRU
YWJsZUdldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAg
LTUzOSw3ICs1NDAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwg
dWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBWYXJpYWJsZSogbG9jYWwgPSBtX3Byb2MuYWRk
VmFyaWFibGUodG9CM1R5cGUodHlwZSkpOwogICAgICAgICBtX2xvY2Fscy51bmNoZWNrZWRBcHBl
bmQobG9jYWwpOwotICAgICAgICBhdXRvIHZhbCA9IHR5cGUgPT0gQW55cmVmID8gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKSA6IDA7CisgICAgICAgIGF1dG8gdmFsID0gaXNTdWJ0eXBlKHR5cGUs
IEFueXJlZikgPyBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpIDogMDsKICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIFNldCwgT3JpZ2luKCks
IGxvY2FsLCBjb25zdGFudCh0b0IzVHlwZSh0eXBlKSwgdmFsLCBPcmlnaW4oKSkpOwogICAgIH0K
ICAgICByZXR1cm4geyB9OwpAQCAtNTgzLDE5ICs1ODQsMjUgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPgogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4
LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhN
RTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODUwNj4uCi0gICAgdm9pZCAoKmRvU2V0KShJbnN0YW5jZSosIGludDMyX3QsIHVpbnQ2
NF90IHZhbHVlKSA9IFtdIChJbnN0YW5jZSogaW5zdGFuY2UsIGludDMyX3QgaWR4LCB1aW50NjRf
dCB2YWx1ZSkgLT4gdm9pZCB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNt
IEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUgc3VwcG9ydGVkIGhlcmUuCi0gICAgICAgIC8vIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU3PgotICAgICAgICBpbnN0
YW5jZS0+dGFibGUoKS0+c2V0KGlkeCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7Ci0gICAgfTsK
IAogICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6
Vm9pZCwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihkb1NldCwg
QjNDQ2FsbFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJnNldFdh
c21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQdHJUYWcpKSwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgp
LCBpZHgsIHZhbHVlKTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAoreworICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KKworICAgIHJlc3VsdCA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6SW50NjQs
IG9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJmRvV2FzbVJlZkZ1
bmMsIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFu
dChUeXBlOjpJMzIsIGluZGV4KSk7CisKKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKG1fbG9jYWxzW2luZGV4XSk7CkBAIC02
ODAsNyArNjg3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpzZXRHbG9iYWwodWludDMyX3QgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFsUmUKICAgICBWYWx1ZSogZ2xvYmFs
c0FycmF5ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBM
b2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxp
bnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZHbG9iYWxzKCkpKTsKICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlLCBvcmlnaW4oKSwgdmFsdWUs
IGdsb2JhbHNBcnJheSwgc2FmZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIp
KSk7CiAKLSAgICBpZiAobV9pbmZvLmdsb2JhbHNbaW5kZXhdLnR5cGUgPT0gQW55cmVmKQorICAg
IGlmIChpc1N1YnR5cGUobV9pbmZvLmdsb2JhbHNbaW5kZXhdLnR5cGUsIEFueXJlZikpCiAgICAg
ICAgIGVtaXRXcml0ZUJhcnJpZXJGb3JKU1dyYXBwZXIoKTsKIAogICAgIHJldHVybiB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggMGIzOGY5ZDU5
NmJmYzA3YmNiNjcyYmMyYTE3YjcxYWFkYzFjNDlhYS4uNjVjZGU2NjJjZWFlMWM1MmFlNzYzOTg3
ODE2NTQ2MGJlY2VlZTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQ
bGFuLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9u
cyhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAKICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5j
dGlvbnNbZnVuY3Rpb25JbmRleF0gPSBXVEZNb3ZlKCpwYXJzZUFuZENvbXBpbGVSZXN1bHQpOwog
Ci0gICAgICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmNvbnRhaW5zKGZ1bmN0aW9u
SW5kZXgpKSB7CisgICAgICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmNvbnRhaW5z
KGZ1bmN0aW9uSW5kZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5jZWRGdW5jdGlv
bnMoKS5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgewogICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX2VtYmVkZGVy
VG9XYXNtSW50ZXJuYWxGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uSW5kZXgsIG1fY3JlYXRlRW1iZWRk
ZXJXcmFwcGVyKG1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XSwgc2lnbmF0dXJl
LCAmbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJbmZv
cm1hdGlvbi5nZXQoKSwgbV9tb2RlLCBmdW5jdGlvbkluZGV4KSk7CiAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCAxMGViOGNkNGU3
MzM2ZTBlZjI0ZGM5YmU1MDRiNzUwN2NlODNjNzUyLi5mN2JlMzhjNjdiZWU5ZWIzNTMzMjExM2Iy
M2U2YjI0M2RlOTRjZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtMjM2LDYgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgVHlwZTo6STMyOgogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2Fz
ZSBUeXBlOjpBbnlyZWY6CisgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAgICAgICAgICAg
IG1hcnNoYWxsQXJndW1lbnRJbXBsKG1fZ3ByQXJncywgZ3BBcmd1bWVudENvdW50LCBzdGFja09m
ZnNldCwgcmVnRnVuYywgc3RhY2tGdW5jKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFR5cGU6OkYzMjoKQEAgLTMwMSw2ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
VHlwZTo6STMyOgogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlOjpB
bnlyZWY6CisgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAgICAgICAgICAgIHBhdGNocG9p
bnQtPnJlc3VsdENvbnN0cmFpbnQgPSBCMzo6VmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FeGNlcHRpb25UeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRXhjZXB0aW9uVHlwZS5oCmluZGV4IGQ0NDZjMGVk
MWI0ZGQ5ZjY2ZmY1OTM4MjY1YTA2NmUwZGM5MmQ2MTEuLmYwMGY4ZjE4MWU2NDBkOGU4M2Y4NmIy
ZDlkYzFjNmMzMjU4ZDJjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21FeGNlcHRpb25UeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUV4Y2VwdGlvblR5cGUuaApAQCAtNDIsNyArNDIsOCBAQCBuYW1lc3BhY2UgV2FzbSB7CiAgICAg
bWFjcm8oSW50ZWdlck92ZXJmbG93LCAiSW50ZWdlciBvdmVyZmxvdyIpIFwKICAgICBtYWNybyhT
dGFja092ZXJmbG93LCAiU3RhY2sgb3ZlcmZsb3ciKSBcCiAgICAgbWFjcm8oSTY0QXJndW1lbnRU
eXBlLCAiV2ViQXNzZW1ibHkgZnVuY3Rpb24gd2l0aCBhbiBpNjQgYXJndW1lbnQgY2FuJ3QgYmUg
Y2FsbGVkIGZyb20gSmF2YVNjcmlwdCIpIFwKLSAgICBtYWNybyhJNjRSZXR1cm5UeXBlLCAiV2Vi
QXNzZW1ibHkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGk2NCBjYW4ndCBiZSBjYWxsZWQgZnJvbSBK
YXZhU2NyaXB0IikKKyAgICBtYWNybyhJNjRSZXR1cm5UeXBlLCAiV2ViQXNzZW1ibHkgZnVuY3Rp
b24gdGhhdCByZXR1cm5zIGk2NCBjYW4ndCBiZSBjYWxsZWQgZnJvbSBKYXZhU2NyaXB0IikgXAor
ICAgIG1hY3JvKEZ1bmNyZWZOb3RXYXNtLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdh
c20gZnVuY3Rpb24iKQogCiBlbnVtIGNsYXNzIEV4Y2VwdGlvblR5cGUgOiB1aW50MzJfdCB7CiAj
ZGVmaW5lIE1BS0VfRU5VTShlbnVtTmFtZSwgZXJyb3IpIGVudW1OYW1lLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IDYyOTIyNTBmMjVlZWE5NDkwYzQzYTRlYmQ0
NmQyZTI1ZTBjMzZjOTUuLjdjMDM0NDE3YTEzZjI2MWI4NDc1YzhlZGM0Mjc0ZmE4MDUxOGI5ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTY4LDEyICs2OCwy
MCBAQCBpbmxpbmUgYm9vbCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAgICAgY2FzZSBGNjQ6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQW55cmVmOgorICAgIGNhc2UgQW55ZnVuYzoK
ICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisK
K2lubGluZSBib29sIGlzU3VidHlwZShUeXBlIHN1YiwgVHlwZSBwYXJlbnQpCit7CisgICAgaWYg
KHN1YiA9PSBwYXJlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBzdWIgPT0g
QW55ZnVuYyAmJiBwYXJlbnQgPT0gQW55cmVmOworfQogICAgIAogZW51bSBjbGFzcyBFeHRlcm5h
bEtpbmQgOiB1aW50OF90IHsKICAgICAvLyBGSVhNRSBhdXRvLWdlbmVyYXRlIHRoaXMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMzEKQEAgLTEzOCw2ICsxNDYs
NyBAQCBzdHJ1Y3QgR2xvYmFsIHsKICAgICBlbnVtIEluaXRpYWxpemF0aW9uVHlwZSB7CiAgICAg
ICAgIElzSW1wb3J0LAogICAgICAgICBGcm9tR2xvYmFsSW1wb3J0LAorICAgICAgICBGcm9tUmVm
RnVuYywKICAgICAgICAgRnJvbUV4cHJlc3Npb24KICAgICB9OwogCkBAIC0yMzQsNiArMjQzLDcg
QEAgcHVibGljOgogICAgIHVpbnQzMl90IGluaXRpYWwoKSBjb25zdCB7IHJldHVybiBtX2luaXRp
YWw7IH0KICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWF4aW11bTsgfQogICAgIFRhYmxlRWxlbWVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorICAgIFdhc206OlR5cGUgd2FzbVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiA/IFR5cGU6OkFueWZ1bmMgOiBUeXBlOjpBbnly
ZWY7IH0KIAogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2luaXRpYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGRmYWU4ZjJjZjNh
ZDJkYTE4YWE4OGJiMjZiZDU1OGNjN2Q4NDc2ZGUuLjI2MGJlNmQ1YzlkYmFiOWY5ZjljZTY3ZTcw
ZjI3Yjk4YTZhNjA3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
dW5jdGlvblBhcnNlci5oCkBAIC0zMDEsNyArMzAxLDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2FzZSBS
ZWZOdWxsOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFz
c2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKLSAgICAg
ICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRDb25zdGFudChBbnlyZWYs
IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpKTsKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2su
YXBwZW5kKG1fY29udGV4dC5hZGRDb25zdGFudChBbnlmdW5jLCBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zMTQsNiArMzE0LDE3
IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBh
cnRpYWxSZXN1bHQKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJlZkZ1
bmM6IHsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIHJl
c3VsdDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihpbmRleCksICJjYW4ndCBnZXQgaW5k
ZXggZm9yIHJlZi5mdW5jIik7CisKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRk
UmVmRnVuYyhpbmRleCwgcmVzdWx0KSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVu
ZChyZXN1bHQpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIGNhc2UgR2V0TG9j
YWw6IHsKICAgICAgICAgdWludDMyX3QgaW5kZXg7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJl
c3VsdDsKQEAgLTY4MSw2ICs2OTIsMTMgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCisgICAgY2FzZSBSZWZGdW5jOiB7CisgICAgICAgIHVpbnQzMl90
IHVudXNlZDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodW51
c2VkKSwgImNhbid0IGdldCBpbW1lZGlhdGUgZm9yICIsIG1fY3VycmVudE9wY29kZSwgIiBpbiB1
bnJlYWNoYWJsZSBjb250ZXh0Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJs
ZWQiKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKICAgICBjYXNlIEdyb3dNZW1vcnk6
CiAgICAgY2FzZSBDdXJyZW50TWVtb3J5OiB7CiAgICAgICAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAppbmRleCAzNzA1OTk2
OGUwYjc4NTRkMjczMzZmMTkzN2VjMjU4YTM3MGI0OTY2Li45NWYzYTg2Zjc5YTM2MDNmMTZmNzg3
YjcyNzhlY2Y3MWMzODZkYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21J
bnN0YW5jZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMu
aCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJSZWdpc3Rl
ci5oIgogI2luY2x1ZGUgIldhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIgpAQCAtNTcsNyArNTgsNyBA
QCBJbnN0YW5jZTo6SW5zdGFuY2UoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1
bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVyVAogICAgICAgICBuZXcgKGltcG9ydEZ1bmN0aW9uSW5m
byhpKSkgSW1wb3J0RnVuY3Rpb25JbmZvKCk7CiAgICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQq
PihtX2dsb2JhbHMuZ2V0KCkpLCAwLCBnbG9iYWxNZW1vcnlCeXRlU2l6ZShtX21vZHVsZS5nZXQo
KSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21vZHVsZS0+bW9kdWxlSW5mb3Jt
YXRpb24oKS5nbG9iYWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX21vZHVsZS5nZXQo
KS5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHNbaV0udHlwZSA9PSBBbnlyZWYpCisgICAgICAg
IGlmIChpc1N1YnR5cGUobV9tb2R1bGUuZ2V0KCkubW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxz
W2ldLnR5cGUsIEFueXJlZikpCiAgICAgICAgICAgICBtX2dsb2JhbHNUb01hcmsuc2V0KGkpOwog
ICAgIH0KIH0KQEAgLTgwLDYgKzgxLDUwIEBAIHZvaWQgSW5zdGFuY2U6OnNldEdsb2JhbCh1bnNp
Z25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIG1fZ2xvYmFscy5nZXQoKVtpXS5hbnlyZWYuc2V0
KCpvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPnZtKCksIG93bmVyPEpTV2ViQXNzZW1i
bHlJbnN0YW5jZT4oKSwgdmFsdWUpOwogfQogCitKU1ZhbHVlIEluc3RhbmNlOjpnZXRGdW5jdGlv
bldyYXBwZXIodW5zaWduZWQgaSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mdW5jdGlvbldyYXBw
ZXJzLmNvbnRhaW5zKGkpID8gbV9mdW5jdGlvbldyYXBwZXJzLmdldChpKS5nZXQoKSA6IGpzTnVs
bCgpOworfQorCit2b2lkIEluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQgaSwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9vd25lcik7CisgICAgQVNTRVJUKHZhbHVl
LmlzRnVuY3Rpb24oKm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+dm0oKSkpOworICAg
IEFTU0VSVCghbV9mdW5jdGlvbldyYXBwZXJzLmNvbnRhaW5zKGkpKTsKKyAgICBtX2Z1bmN0aW9u
V3JhcHBlcnMuc2V0KGksIFdyaXRlQmFycmllcjxVbmtub3duPigqb3duZXI8SlNXZWJBc3NlbWJs
eUluc3RhbmNlPigpLT52bSgpLCBvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCksIHZhbHVl
KSk7CisgICAgQVNTRVJUKGdldEZ1bmN0aW9uV3JhcHBlcihpKSA9PSB2YWx1ZSk7Cit9CisKK3Zv
aWQgc2V0V2FzbVRhYmxlRWxlbWVudChXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIHVpbnQzMl90
IGlkeCwgdWludDY0X3QgZW5jVmFsdWUpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNWYWx1ZSk7CisgICAgaWYgKGluc3RhbmNlLT50YWJsZSgpLT50eXBlKCkgPT0g
V2FzbTo6VGFibGVFbGVtZW50VHlwZTo6QW55cmVmKQorICAgICAgICBpbnN0YW5jZS0+dGFibGUo
KS0+c2V0KGlkeCwgdmFsdWUpOworICAgIGVsc2UgaWYgKGluc3RhbmNlLT50YWJsZSgpLT50eXBl
KCkgPT0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZikgeworICAgICAgICBXZWJBc3Nl
bWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb247CisgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOworCisgICAgICAgIGlmIChpc1dlYkFzc2VtYmx5
SG9zdEZ1bmN0aW9uKCppbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCksIHZhbHVlLCB3
YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7CisgICAgICAgICAgICBBU1NFUlQo
ISF3YXNtRnVuY3Rpb24gfHwgISF3YXNtV3JhcHBlckZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGlm
ICh3YXNtRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCktPmFzRnVu
Y3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGlkeCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLCB3
YXNtRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbUZ1bmN0aW9uLT5pbnN0YW5j
ZSgpLT5pbnN0YW5jZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnN0
YW5jZS0+dGFibGUoKS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaWR4LCBqc0Nhc3Q8
SlNPYmplY3QqPih2YWx1ZSksIHdhc21XcmFwcGVyRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlv
bigpLCAmd2FzbVdyYXBwZXJGdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7CisgICAg
ICAgIH0gZWxzZSBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+dGFi
bGUoKS0+Y2xlYXIoaWR4KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit1aW50NjRfdCBkb1dhc21SZWZGdW5jKFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSwgdWludDMy
X3QgaW5kZXgpCit7CisgICAgSlNWYWx1ZSB2YWwgPSBpbnN0YW5jZS0+Z2V0RnVuY3Rpb25XcmFw
cGVyKGluZGV4KTsKKyAgICBBU1NFUlQodmFsLmlzRnVuY3Rpb24oKmluc3RhbmNlLT5vd25lcjxK
U09iamVjdD4oKS0+dm0oKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsKTsKK30K
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
TUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5j
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKaW5kZXggNWQx
ZmNmM2Y5ZDNiODJiZDA5ODFhMjBjY2NkNTQ0ZTc4MDdjZTRkNy4uMGJiNGJjOWI0YjYwZTczZDhi
YjcwOTZiMmYzMjZjZjU3YzFmNjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUluc3RhbmNlLmgKQEAgLTQwLDYgKzQwLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
YXNtIHsKIAogc3RydWN0IENvbnRleHQ7CiAKK3ZvaWQgc2V0V2FzbVRhYmxlRWxlbWVudChXYXNt
OjpJbnN0YW5jZSosIHVpbnQzMl90LCB1aW50NjRfdCBlbmNWYWx1ZSk7Cit1aW50NjRfdCBkb1dh
c21SZWZGdW5jKFdhc206Okluc3RhbmNlKiwgdWludDMyX3QpOworCiBjbGFzcyBJbnN0YW5jZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxJbnN0YW5jZT4gewogcHVibGljOgogICAgIHVzaW5nIFN0b3JlVG9wQ2FsbEZyYW1lQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQodm9pZCopPjsKQEAgLTkxLDYgKzk0LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0R2xvYmFsKHVuc2lnbmVkIGksIGludDY0X3QgYml0cykgeyBtX2ds
b2JhbHMuZ2V0KClbaV0ucHJpbWl0aXZlID0gYml0czsgfQogICAgIHZvaWQgc2V0R2xvYmFsKHVu
c2lnbmVkLCBKU1ZhbHVlKTsKICAgICBjb25zdCBCaXRWZWN0b3ImIGdsb2JhbHNUb01hcmsoKSB7
IHJldHVybiBtX2dsb2JhbHNUb01hcms7IH0KKyAgICBKU1ZhbHVlIGdldEZ1bmN0aW9uV3JhcHBl
cih1bnNpZ25lZCkgY29uc3Q7CisgICAgdm9pZCBzZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQs
IEpTVmFsdWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFu
Y2UsIG1fZ2xvYmFscyk7IH0KQEAgLTE1OSw2ICsxNjQsNyBAQCBwcml2YXRlOgogICAgICAgICB1
aW50NjRfdCBwcmltaXRpdmU7CiAgICAgfTsKICAgICBNYWxsb2NQdHI8R2xvYmFsVmFsdWU+IG1f
Z2xvYmFsczsKKyAgICBIYXNoTWFwPHVpbnQzMl90LCBXcml0ZUJhcnJpZXI8VW5rbm93bj4sIElu
dEhhc2g8dWludDMyX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQz
Ml90Pj4gbV9mdW5jdGlvbldyYXBwZXJzOwogICAgIEJpdFZlY3RvciBtX2dsb2JhbHNUb01hcms7
CiAgICAgRW50cnlGcmFtZSoqIG1fcG9pbnRlclRvVG9wRW50cnlGcmFtZSB7IG51bGxwdHIgfTsK
ICAgICB2b2lkKiogbV9wb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0IHsgbnVsbHB0ciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaApp
bmRleCBhZDVlYjk1MjZhYzdhYzNiZTQzN2ZjNjIzZGYwYmQ3ZGMyMDgwN2QyLi44OGY2NmNiNjM5
MTU5YzM2OWQ5ZGRlNjBhMWZjZTZkYTVkMTcxMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgogCisjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdh
c20gewpAQCAtNjYsNiArNjcsOSBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICB1aW50MzJfdCBt
ZW1vcnlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1lbW9yeSA/IDEgOiAwOyB9CiAgICAgdWludDMy
X3QgdGFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlSW5mb3JtYXRpb24gPyAxIDogMDsg
fQogCisgICAgY29uc3QgQml0VmVjdG9yJiByZWZlcmVuY2VkRnVuY3Rpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZlcmVuY2VkRnVuY3Rpb25zOyB9CisgICAgdm9pZCBhZGRSZWZlcmVuY2VkRnVu
Y3Rpb24odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgbV9yZWZlcmVuY2VkRnVuY3Rpb25zLnNldChp
bmRleCk7IH0KKwogICAgIFZlY3RvcjxJbXBvcnQ+IGltcG9ydHM7CiAgICAgVmVjdG9yPFNpZ25h
dHVyZUluZGV4PiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7CiAgICAgVmVjdG9yPFNp
Z25hdHVyZUluZGV4PiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKQEAgLTg0LDYg
Kzg4LDggQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgdW5zaWduZWQgZmlyc3RJbnRlcm5hbEds
b2JhbCB7IDAgfTsKICAgICBWZWN0b3I8Q3VzdG9tU2VjdGlvbj4gY3VzdG9tU2VjdGlvbnM7CiAg
ICAgUmVmPE5hbWVTZWN0aW9uPiBuYW1lU2VjdGlvbjsKKyAgICAKKyAgICBtdXRhYmxlIEJpdFZl
Y3RvciBtX3JlZmVyZW5jZWRGdW5jdGlvbnM7CiB9OwogCiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggMzBiNmYzY2VkOWRm
NTYyNjIyMjYyNzI1M2MyNDY4NGEzYzhiNDk0My4uMjU0ZTgyNmE4MDMwOTQ0MGNkMjU3ZjNkNzQ2
YjcwMjE5Y2Q0MzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcApAQCAtMjkxLDkgKzI5MSwxMSBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6
OnBhcnNlR2xvYmFsKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBXQVNNX0ZBSUxfSUZfSEVM
UEVSX0ZBSUxTKHBhcnNlSW5pdEV4cHIoaW5pdE9wY29kZSwgZ2xvYmFsLmluaXRpYWxCaXRzT3JJ
bXBvcnROdW1iZXIsIHR5cGVGb3JJbml0T3Bjb2RlKSk7CiAgICAgICAgIGlmIChpbml0T3Bjb2Rl
ID09IEdldEdsb2JhbCkKICAgICAgICAgICAgIGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPSBH
bG9iYWw6OkZyb21HbG9iYWxJbXBvcnQ7CisgICAgICAgIGVsc2UgaWYgKGluaXRPcGNvZGUgPT0g
UmVmRnVuYykKKyAgICAgICAgICAgIGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPSBHbG9iYWw6
OkZyb21SZWZGdW5jOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnbG9iYWwuaW5pdGlhbGl6
YXRpb25UeXBlID0gR2xvYmFsOjpGcm9tRXhwcmVzc2lvbjsKLSAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRih0eXBlRm9ySW5pdE9wY29kZSAhPSBnbG9iYWwudHlwZSwgIkdsb2JhbCBpbml0X2V4
cHIgb3Bjb2RlIG9mIHR5cGUgIiwgdHlwZUZvckluaXRPcGNvZGUsICIgZG9lc24ndCBtYXRjaCBn
bG9iYWwncyB0eXBlICIsIGdsb2JhbC50eXBlKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighaXNTdWJ0eXBlKHR5cGVGb3JJbml0T3Bjb2RlLCBnbG9iYWwudHlwZSksICJHbG9iYWwgaW5p
dF9leHByIG9wY29kZSBvZiB0eXBlICIsIHR5cGVGb3JJbml0T3Bjb2RlLCAiIGRvZXNuJ3QgbWF0
Y2ggZ2xvYmFsJ3MgdHlwZSAiLCBnbG9iYWwudHlwZSk7CiAKICAgICAgICAgbV9pbmZvLT5nbG9i
YWxzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGdsb2JhbCkpOwogICAgIH0KQEAgLTQ3OSwxMSAr
NDgxLDIxIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNv
ZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAgICAgfQogCiAgICAgY2FzZSBSZWZO
dWxsOiB7Ci0gICAgICAgIHJlc3VsdFR5cGUgPSBBbnlyZWY7CisgICAgICAgIHJlc3VsdFR5cGUg
PSBBbnlmdW5jOwogICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFJlZkZ1bmM6IHsK
KyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFyVUludDMyKGluZGV4KSwgImNhbid0IGdldCByZWYuZnVuYyBpbmRleCIpOworICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4ID49IG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSwg
InJlZi5mdW5jIGluZGV4IiwgaW5kZXgsICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGZ1bmN0aW9u
cyAiLCBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCkpOworCisgICAgICAgIHJlc3VsdFR5cGUgPSBB
bnlmdW5jOworICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBpbmRleDsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0
cnVlLCAidW5rbm93biBpbml0X2V4cHIgb3Bjb2RlICIsIG9wY29kZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5kZXggYTRiNzhlNDU4ZGY0
NTk4ZTBjY2RhNjFmYTk0ZWM5MTlhMjlhZmNmNC4uZjU5NGFlZTcyNjJkMzIwZWViY2Y1OGU4NjI5
YjFiYjI3OTcxOTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRh
dGUuY3BwCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmVmZXJlbmNlcwog
ICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBl
JiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KTsKIAogICAgIC8vIFRhYmxlcwogICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFi
bGVHZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0x
NzksMTggKzE4MCwxOSBAQCBhdXRvIFZhbGlkYXRlOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUpIC0+IFJlc3VsdAogCiBhdXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldChF
eHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsK
LSAgICByZXN1bHQgPSBUeXBlOjpBbnlyZWY7CisgICAgcmVzdWx0ID0gbV9tb2R1bGUudGFibGVJ
bmZvcm1hdGlvbi53YXNtVHlwZSgpOwogICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZTo6
STMyICE9IGlkeCwgInRhYmxlLmdldCBpbmRleCB0byB0eXBlICIsIGlkeCwgIiBleHBlY3RlZCAi
LCBUeXBlOjpJMzIpOwotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVGFibGVFbGVtZW50VHlw
ZTo6QW55cmVmICE9IG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpLCAidGFibGUuZ2V0
IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSAiLCBUeXBlOjpBbnlyZWYpOwogCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAogYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5
cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBSZXN1bHQKIHsKKyAgICBhdXRvIHR5
cGUgPSBtX21vZHVsZS50YWJsZUluZm9ybWF0aW9uLndhc21UeXBlKCk7CiAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaWR4LCAidGFibGUuc2V0IGluZGV4IHRvIHR5cGUg
IiwgaWR4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRihUeXBlOjpBbnlyZWYgIT0gdmFsdWUsICJ0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSAiLCB2
YWx1ZSwgIiBleHBlY3RlZCAiLCBUeXBlOjpBbnlyZWYpOwotICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoVGFibGVFbGVtZW50VHlwZTo6QW55cmVmICE9IG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRp
b24udHlwZSgpLCAidGFibGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSAiLCBU
eXBlOjpBbnlyZWYpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1
ZSwgdHlwZSksICJ0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAi
LCB0eXBlKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fbW9kdWxlLnRhYmxlSW5mb3Jt
YXRpb24udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkFueXJlZgorICAgICAgICAmJiBtX21v
ZHVsZS50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVm
LCAidGFibGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBhbnlyZWYgb3IgYW55
ZnVuYyIpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTE5OCw3ICsyMDAsMTYgQEAgYXV0byBW
YWxpZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUm
IHZhbHVlKSAtPiBSZXN1bHQKIGF1dG8gVmFsaWRhdGU6OmFkZFJlZklzTnVsbChFeHByZXNzaW9u
VHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAogewogICAgIHJl
c3VsdCA9IFR5cGU6OkkzMjsKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGU6OkFueXJl
ZiAhPSB2YWx1ZSwgInJlZi5pc19udWxsIHRvIHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0ZWQgIiwg
VHlwZTo6QW55cmVmKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodmFs
dWUsIFR5cGU6OkFueXJlZiksICJyZWYuaXNfbnVsbCB0byB0eXBlICIsIHZhbHVlLCAiIGV4cGVj
dGVkICIsIFR5cGU6OkFueXJlZik7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFZhbGlk
YXRlOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAt
PiBSZXN1bHQKK3sKKyAgICByZXN1bHQgPSBUeXBlOjpBbnlmdW5jOworICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9tb2R1bGUuZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpLCAi
cmVmLmZ1bmMgaW5kZXggIiwgaW5kZXgsICIgaXMgdG9vIGxhcmdlLCBtYXggaXMgIiwgbV9tb2R1
bGUuZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICBtX21vZHVsZS5hZGRSZWZlcmVuY2Vk
RnVuY3Rpb24oaW5kZXgpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTIyNCw3ICsyMzUsNyBA
QCBhdXRvIFZhbGlkYXRlOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUg
dmFsdWUpIC0+IFJlc3VsdAogewogICAgIEV4cHJlc3Npb25UeXBlIGxvY2FsVHlwZTsKICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKGdldExvY2FsKGluZGV4LCBsb2NhbFR5cGUpKTsKLSAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGxvY2FsVHlwZSAhPSB2YWx1ZSwgInNldF9sb2NhbCB0
byB0eXBlICIsIHZhbHVlLCAiIGV4cGVjdGVkICIsIGxvY2FsVHlwZSk7CisgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKHZhbHVlLCBsb2NhbFR5cGUpLCAic2V0X2xvY2FsIHRv
IHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0ZWQgIiwgbG9jYWxUeXBlKTsKICAgICByZXR1cm4geyB9
OwogfQogCkBAIC0zNjIsNyArMzczLDcgQEAgYXV0byBWYWxpZGF0ZTo6YWRkQ2FsbCh1bnNpZ25l
ZCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXMKICAgICBX
QVNNX1ZBTElEQVRPUl9GQUlMX0lGKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgIT0gYXJncy5z
aXplKCksICJhcml0eSBtaXNtYXRjaCBpbiBjYWxsLCBnb3QgIiwgYXJncy5zaXplKCksICIgYXJn
dW1lbnRzLCBleHBlY3RlZCAiLCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQotICAgICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKGFyZ3NbaV0gIT0gc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCAiYXJndW1l
bnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsLCBnb3QgIiwgYXJnc1tpXSwgIiwgZXhwZWN0ZWQgIiwg
c2lnbmF0dXJlLmFyZ3VtZW50KGkpKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRigh
aXNTdWJ0eXBlKGFyZ3NbaV0sIHNpZ25hdHVyZS5hcmd1bWVudChpKSksICJhcmd1bWVudCB0eXBl
IG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmdzW2ldLCAiLCBleHBlY3RlZCAiLCBzaWduYXR1
cmUuYXJndW1lbnQoaSkpOwogCiAgICAgcmVzdWx0ID0gc2lnbmF0dXJlLnJldHVyblR5cGUoKTsK
ICAgICByZXR1cm4geyB9OwpAQCAtMzc1LDcgKzM4Niw3IEBAIGF1dG8gVmFsaWRhdGU6OmFkZENh
bGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJl
c3NpCiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmd1bWVudENvdW50ICE9IGFyZ3Muc2l6
ZSgpIC0gMSwgImFyaXR5IG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmdzLnNp
emUoKSAtIDEsICIgYXJndW1lbnRzLCBleHBlY3RlZCAiLCBhcmd1bWVudENvdW50KTsKIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnc1tpXSAhPSBzaWduYXR1cmUuYXJndW1lbnQoaSksICJh
cmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmdzW2ldLCAi
LCBleHBlY3RlZCAiLCBzaWduYXR1cmUuYXJndW1lbnQoaSkpOworICAgICAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUoYXJnc1tpXSwgc2lnbmF0dXJlLmFyZ3VtZW50KGkpKSwg
ImFyZ3VtZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZ3NbaV0s
ICIsIGV4cGVjdGVkICIsIHNpZ25hdHVyZS5hcmd1bWVudChpKSk7CiAKICAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKGFyZ3MubGFzdCgpICE9IEkzMiwgIm5vbi1pMzIgY2FsbF9pbmRpcmVjdCBp
bmRleCAiLCBhcmdzLmxhc3QoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
VG9XYXNtLmNwcAppbmRleCA2NTdkYTU3YWViN2NlM2RhZWFmM2MyNTc0NzgxOGI2MjBkY2UxNDky
Li4xYzJmNWZiNThiNmM5OTk2MTA2NDE1MTAxYWI1NDI1NDE4N2RiNzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCkBAIC04Myw2ICs4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0
JiBjb21wCiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBXYXNtOjpJMzI6
CiAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgorICAgICAgICBjYXNlIFdhc206OkFueWZ1bmM6
CiAgICAgICAgICAgICBpZiAobnVtR1BScyA+PSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2dw
ckFyZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAgIHRvdGFsRnJhbWVTaXplICs9IHNpemVvZih2
b2lkKik7CiAgICAgICAgICAgICArK251bUdQUnM7CkBAIC0xMjIsMjAgKzEyNCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGls
YXRpb25Db250ZXh0JiBjb21wCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9m
ZnNldE9mSW5zdGFuY2UoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIH0KIAot
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1l
bnRHUFIyLCBJbnN0YW5jZTo6b2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1lKCkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pihhcmd1bWVudHNJbmNs
dWRlSTY0ID8gRXhjZXB0aW9uVHlwZTo6STY0QXJndW1lbnRUeXBlIDogRXhjZXB0aW9uVHlwZTo6
STY0UmV0dXJuVHlwZSkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotCi0gICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLQotICAgICAg
ICBqaXQuanVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRXhjZXB0aW9uSGFuZGxlclB0clRh
Zyk7Ci0gICAgICAgIGppdC5icmVha3BvaW50KCk7IC8vIFdlIHNob3VsZCBub3QgcmVhY2ggdGhp
cy4KLQotICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPih3YXNtVG9KU0V4Y2VwdGlvbikpOwotICAgICAgICB9KTsKKyAgICAgICAgZW1p
dFdhc21Ub0pTRXhjZXB0aW9uKGppdCwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBhcmd1bWVudHNJ
bmNsdWRlSTY0ID8gRXhjZXB0aW9uVHlwZTo6STY0QXJndW1lbnRUeXBlIDogRXhjZXB0aW9uVHlw
ZTo6STY0UmV0dXJuVHlwZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0x
NjUsNiArMTU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpT
VG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXAKICAgICAgICAgICAgIHN3aXRj
aCAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpKSB7CiAgICAgICAgICAgICBjYXNlIFdhc206OkkzMjoK
ICAgICAgICAgICAgIGNhc2UgV2FzbTo6STY0OgorICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlm
dW5jOgogICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlyZWY6CiAgICAgICAgICAgICAgICAgaWYg
KG51bUdQUnMgPj0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkubV9ncHJBcmdzLnNpemUoKSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpID09IFdhc206Okkz
MikgewpAQCAtMjUwLDcgKzI0MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9u
PiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21wCiAgICAgICAg
IGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIEpTVmFsdWVSZWdzIHsgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2FzbTo6QW55
cmVmOgotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNl
IHRoZXkgYXJlIHN1cHBvcnRlZCBoZXJlLgorICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXYXNtOjpJMzI6CiAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJU
b1B0cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpA
QCAtMjY4LDcgKzI1OCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVh
dGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21wCiAgICAgfQogICAgIGNh
c2UgV2FzbTo6STY0OgogICAgIGNhc2UgV2FzbTo6RnVuYzoKLSAgICBjYXNlIFdhc206OkFueWZ1
bmM6CiAgICAgICAgIGppdC5icmVha3BvaW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUhlbHBlcnMuaAppbmRleCBlYTI5MmEyMmY2NGUzODVjZWQyMzNiOGY0Y2JhYzVjOGMwOGM2ZTFm
Li4xM2QwYTA5NDdlZTFkZjBlZWExMzYwZjQ2MGQyYmQ0YzY1NTQ3MGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKQEAg
LTEyMiw3ICsxMjIsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNXZWJBc3NlbWJseUhvc3RGdW5j
dGlvbihWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIFdlYkFzc2VtYmx5RgogfQogCiAKLUFMV0FZU19J
TkxJTkUgYm9vbCBpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKFZNJiB2bSwgSlNPYmplY3QqIG9i
amVjdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKFZNJiB2
bSwgSlNWYWx1ZSBvYmplY3QpCiB7CiAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogdW51c2VkOwog
ICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB1bnVzZWQyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5k
ZXggNjY2YmY0N2YxZmUyMzMwMmZjMzBmZDRlMWRjNzM5NDVlYTRiM2QzZi4uMjBiNjBmYzcxMTVh
YmQyYTc2MjY3NDdkZWU1YzFhOTc0OTA2NzAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC05MSwxMSAr
OTEsMTEgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdGhpc09iamVjdC0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMoKTsgKytpKQogICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlv
bjxXcml0ZUJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRoaXMgYWxzbyBrZWVwcyB0aGUgZnVu
Y3Rpb25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUuCiAKLSAgICBmb3IgKHNpemVfdCBp
IDogdGhpc09iamVjdC0+aW5zdGFuY2UoKS5nbG9iYWxzVG9NYXJrKCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBwb3J0
ZWQgaGVyZS4KLSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgxNTc+CisgICAgZm9yIChzaXplX3QgaSA6IHRoaXNPYmplY3QtPmluc3RhbmNlKCku
Z2xvYmFsc1RvTWFyaygpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKEpTVmFs
dWU6OmRlY29kZSh0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLmxvYWRJNjRHbG9iYWwoaSkpKTsKLSAg
ICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+aW5zdGFuY2Uo
KS5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKTsg
KytpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHRoaXNPYmplY3QtPmluc3Rh
bmNlKCkuZ2V0RnVuY3Rpb25XcmFwcGVyKGkpKTsKIH0KIAogdm9pZCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmZpbmFsaXplQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZjxXYXNt
OjpDb2RlQmxvY2s+JiYgd2FzbUNvZGVCbG9jaywgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2Fz
bTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKaW5kZXgg
OTYzYzI4MmU4Yjg4ZGYyM2JhMzk5N2IxZDdkMTUwOGNkMmNmODhjMS4uOGFiMmY5MDNhY2FjMTVi
MTNhMWRlMzkyNDdjMDU1MDUyZWRjZjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKQEAgLTQ4
LDYgKzQ4LDEyIEBAIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OkpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyCiAKIGNvbnN0IENsYXNzSW5mbyBK
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5SdW50aW1l
RXJyb3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IpIH07CiAKK0pTT2JqZWN0KiBjcmVhdGVKU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
KyAgICByZXR1cm4gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBn
bG9iYWxPYmplY3QtPndlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2Up
OworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaAppbmRleCA2
OGQzYWQxNDY1YjFhZjhlNmUxMTY5MzZmYTFiYzkyZjZlYTY1MWQ1Li44NjFmNDcyZjNkYjc3MDk3
ZWEzYmNjMjRjOTI0NjNhOWMxMWI4ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCkBAIC00Myw2ICs0
Myw4IEBAIHByb3RlY3RlZDoKICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiwgU3Ry
dWN0dXJlKik7CiB9OwogCitKU09iamVjdCogY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
cihFeGVjU3RhdGUqLCBWTSYsIGNvbnN0IFN0cmluZyYpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCA1YmZmOWNjNmQwNDQxZjBlZmNmMjFiOWRjZjk4ODEw
N2ZiNTY4OGJiLi41YzdiMDA2NTE2ZjYyZTE0OTgyOTdhYzk0MjQzMmY0YjA5MjE4NWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVy
cy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC02NSw3
ICs2Niw2IEBAIHN0YXRpYyBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5
UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IGhhbmRsZUJhCiAgICAgICAgIHN3aXRjaCAoYXJnVHlw
ZSkgewogICAgICAgICBjYXNlIFZvaWQ6CiAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAgICAgY2Fz
ZSBBbnlmdW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAog
ICAgICAgICBjYXNlIEk2NDogewpAQCAtMTYyLDEwICsxNjIsMTAgQEAgRXhwZWN0ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9K
UyhWTSogdm0KICAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgewogICAgICAgICAgICAgY2Fz
ZSBWb2lkOgogICAgICAgICAgICAgY2FzZSBGdW5jOgotICAgICAgICAgICAgY2FzZSBBbnlmdW5j
OgogICAgICAgICAgICAgY2FzZSBJNjQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGNhc2UgQW55cmVmOgorICAgICAgICAgICAgY2Fz
ZSBBbnlmdW5jOgogICAgICAgICAgICAgY2FzZSBJMzI6IHsKICAgICAgICAgICAgICAgICBHUFJS
ZWcgZ3ByUmVnOwogICAgICAgICAgICAgICAgIGlmIChtYXJzaGFsbGVkR1BScyA8IHdhc21DQy5t
X2dwckFyZ3Muc2l6ZSgpKQpAQCAtMjM3LDE0ICsyMzcsMTcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhW
TSogdm0KICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVm9pZDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBGdW5jOgotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
STY0OgogICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBJMzI6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmcgPSBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihidWZmZXJbYXJnTnVtXSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QW55ZnVuYzogeworICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2Rl
KGJ1ZmZlclthcmdOdW1dKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc1dlYkFz
c2VtYmx5SG9zdEZ1bmN0aW9uKCp2bSwgYXJnKSB8fCBhcmcuaXNOdWxsKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBbnlyZWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJlIHN1cHBvcnRlZCBoZXJl
LgogICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGJ1ZmZlclth
cmdOdW1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEYzMjoKQEAgLTI2OCw3ICsyNzEsNiBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2
bQogICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlYWxSZXN1bHQ7CiAgICAgICAgICAgICAgICAg
c3dpdGNoIChzaWduYXR1cmUucmV0dXJuVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBG
dW5jOgotICAgICAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgICAgICBjYXNl
IEk2NDoKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzgsNiArMjgwLDExIEBAIEV4cGVjdGVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4g
d2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAgICAgICAgICAgIHJlYWxSZXN1bHQgPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdC50b0ludDMyKGV4ZWMp
KSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjYXNlIEFueWZ1bmM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVhbFJlc3Vs
dCA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0LmlzRnVuY3Rpb24oKnZtKSB8fCByZXN1bHQuaXNOdWxsKCkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBB
bnlyZWY6IHsKICAgICAgICAgICAgICAgICAgICAgcmVhbFJlc3VsdCA9IEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTM3MSwxMCArMzc4LDEw
IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5k
aW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUp
IHsKICAgICAgICAgICAgIGNhc2UgVm9pZDoKICAgICAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAg
ICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgSTY0OgogICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCiAgICAg
ICAgICAgICBjYXNlIEFueXJlZjoKKyAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAg
ICAgIGNhc2UgSTMyOiB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGdwclJlZzsKICAgICAgICAg
ICAgICAgICBpZiAobWFyc2hhbGxlZEdQUnMgPCB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKQEAg
LTM5MCw3ICszOTcsNiBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5
UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICAgICAgICAg
ICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIoZ3ByUmVnLCBncHJSZWcpOyAvLyBDbGVhciBub24t
aW50MzIgYW5kIG5vbi10YWcgYml0cy4KICAgICAgICAgICAgICAgICAgICAgaml0LmJveEludDMy
KGdwclJlZywgSlNWYWx1ZVJlZ3MoZ3ByUmVnKSwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYm94
IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBwb3J0ZWQgaGVyZS4KICAgICAgICAgICAg
ICAgICBqaXQuc3RvcmU2NChncHJSZWcsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoY2FsbGVlRnJh
bWVPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArPSBzaXplb2Yo
UmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQxLDEwICs0NDcsMTAgQEAg
RXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdG
YWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgewog
ICAgICAgICAgICAgY2FzZSBWb2lkOgogICAgICAgICAgICAgY2FzZSBGdW5jOgotICAgICAgICAg
ICAgY2FzZSBBbnlmdW5jOgogICAgICAgICAgICAgY2FzZSBJNjQ6CiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KICAgICAgICAg
ICAgIGNhc2UgQW55cmVmOgorICAgICAgICAgICAgY2FzZSBBbnlmdW5jOgogICAgICAgICAgICAg
Y2FzZSBJMzI6CiAgICAgICAgICAgICAgICAgLy8gU2tpcHBlZDogaGFuZGxlZCBhYm92ZS4KICAg
ICAgICAgICAgICAgICBpZiAobWFyc2hhbGxlZEdQUnMgPj0gd2FzbUNDLm1fZ3ByQXJncy5zaXpl
KCkpCkBAIC01MTksNyArNTI1LDYgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdh
c21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAg
Ly8gRGlzY2FyZC4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGdW5jOgotICAgIGNhc2UgQW55
ZnVuYzoKICAgICAgICAgLy8gRm9yIHRoZSBKYXZhU2NyaXB0IGVtYmVkZGluZywgaW1wb3J0cyB3
aXRoIHRoZXNlIHR5cGVzIGluIHRoZWlyIHNpZ25hdHVyZSByZXR1cm4gYXJlIGEgV2ViQXNzZW1i
bHkuTW9kdWxlIHZhbGlkYXRpb24gZXJyb3IuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTUzLDYgKzU1OCw3IEBAIEV4cGVjdGVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2Fz
bVRvSlMoVk0qIHZtCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQW55ZnVuYzoKICAgICBjYXNlIEFueXJlZjoKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGMzI6IHsKQEAgLTY5NSw2ICs3MDEsMjUgQEAgdm9pZCogd2FzbVRvSlNFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUsIEluc3RhbmNl
KiB3YXMKICAgICByZXR1cm4gdm0udGFyZ2V0TWFjaGluZVBDRm9yVGhyb3c7CiB9CiAKK3ZvaWQg
ZW1pdFdhc21Ub0pTRXhjZXB0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgd2FzbUluc3Rh
bmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHdhc21JbnN0YW5j
ZSAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyh3YXNtSW5zdGFuY2UsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZlBvaW50ZXJU
b1RvcEVudHJ5RnJhbWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0Lm1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odHlwZSkp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworCisgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwg
PSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCisgICAgaml0Lmp1bXAoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcpOworICAgIGppdC5icmVha3BvaW50
KCk7IC8vIFdlIHNob3VsZCBub3QgcmVhY2ggdGhpcy4KKworICAgIGppdC5hZGRMaW5rVGFzayhb
PV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGNh
bGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24p
KTsKKyAgICB9KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dhc21Ub0pTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5oCmluZGV4IGUwYzc0YzMzODM2ZjA1MmY2MGZlODc0ZTkzYTBjNzFkNjgzZjg2MWUuLmRlM2U3
Y2JmNGQ0MTg2ZmUwZjlkNzdhM2UxMzc4NWU4Y2FiYzVhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2FzbVRvSlMuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBJbnN0YW5jZTsK
IEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5n
RmFpbHVyZT4gd2FzbVRvSlMoVk0qLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywg
U2lnbmF0dXJlSW5kZXgsIHVuc2lnbmVkIGltcG9ydEluZGV4KTsKIAogdm9pZCogd2FzbVRvSlNF
eGNlcHRpb24oRXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSW5zdGFuY2UqKTsKK3Zv
aWQgZW1pdFdhc21Ub0pTRXhjZXB0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZyB3YXNtSW5zdGFu
Y2UsIFdhc206OkV4Y2VwdGlvblR5cGUpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwCmluZGV4IDJmZjBlNzhlNTgyZjY1NjFhMjhmM2M1OTUzNzgyMWMwMzk4MGI4OTAu
LjllMmRmNmFjMjIyMTM5YjM3OWIwY2EzZWM0Y2EyN2M2YTkwM2UzM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBA
IC04NCw2ICs4NCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
V2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGNhc2UgV2FzbTo6
STMyOgogICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGFyZy50b0ludDMyKGV4ZWMp
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdhc206OkFueWZ1bmM6IHsKKyAg
ICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJnKSAmJiAhYXJn
LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZXhl
Yywgdm0sICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIpKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkFueXJlZjoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206Okk2NDoKQEAgLTk3LDcgKzEw
Miw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJs
eUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFdhc206OlZvaWQ6CiAgICAgICAgIGNhc2UgV2FzbTo6RnVuYzoKLSAgICAgICAgY2FzZSBX
YXNtOjpBbnlmdW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgfQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKQEAgLTIyOCw2ICsyMzIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAg
ICAgICAgICAgYXJndW1lbnRzSW5jbHVkZUk2NCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBXYXNtOjpBbnlyZWY6CisgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoK
ICAgICAgICAgY2FzZSBXYXNtOjpJMzI6CiAgICAgICAgICAgICBpZiAobnVtR1BScyA+PSBXYXNt
Ojp3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2dwckFyZ3Muc2l6ZSgpKQogICAgICAgICAgICAg
ICAgIHRvdGFsRnJhbWVTaXplICs9IHNpemVvZihDUFVSZWdpc3Rlcik7CkBAIC0zMDMsNiArMzA4
LDI3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1
bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgICAgICAgICAgICAgICAgICsrbnVt
R1BSczsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFdhc206OkFueWZ1bmM6IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogRW1p
dCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODUwNj4uCisgICAgICAgICAgICAgICAgYm9vbCAoKnNob3VsZFRocm93KShXYXNtOjpJbnN0YW5j
ZSosIEpTVmFsdWUpID0gW10gKFdhc206Okluc3RhbmNlKiB3YXNtSW5zdGFuY2UsIEpTVmFsdWUg
YXJnKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSA9IHdhc21JbnN0YW5jZS0+b3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigp
OworICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW5z
dGFuY2UtPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhaXNXZWJBc3NlbWJs
eUhvc3RGdW5jdGlvbih2bSwgYXJnKSAmJiAhYXJnLmlzTnVsbCgpOworICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZpbnN0YW5jZSgpLT5pbnN0YW5jZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAg
ICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwganNPZmZzZXQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAg
ICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShzaG91bGRUaHJvdyk+KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCisgICAgICAgICAgICAg
ICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAg
ICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihzaG91bGRUaHJvdykpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpOb25a
ZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworCisgICAgICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFdhc206OkFueXJlZjogewog
ICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBqc09mZnNldCksIHNjcmF0Y2hHUFIpOwogCkBAIC00NjYsMTMg
KzQ5MiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1i
bHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAgICAgICBpc05hTi5saW5rKCZq
aXQpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBXYXNtOjpBbnlyZWY6IHsKLSAg
ICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFy
ZSBzdXBwb3J0ZWQgaGVyZS4KKyAgICBjYXNlIFdhc206OkFueWZ1bmM6CisgICAgY2FzZSBXYXNt
OjpBbnlyZWY6CiAgICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIFdhc206Okk2NDoKICAg
ICBjYXNlIFdhc206OkZ1bmM6Ci0gICAgY2FzZSBXYXNtOjpBbnlmdW5jOgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNw
cAppbmRleCA0ZjgwMWU1NzY5MjdmZjY2ZWU1MGM2NTA4OTBlZmUwMjE3MDdiOGYyLi4xMmIxY2Vm
MmRmNDY4NzlhMmM3ZjFiMzcxZjRjNTkzOTliZWM2NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBA
IC0yMzUsMTAgKzIzNSwxNSBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICAgICAg
Ly8gaWkuIElmIHRoZSBnbG9iYWxfdHlwZSBvZiBpIGlzIGk2NCBvciBUeXBlKHYpIGlzIG5vdCBO
dW1iZXIsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgogICAgICAgICAgICAgaWYgKG1v
ZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSA9PSBXYXNtOjpJ
NjQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5
TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBn
bG9iYWwiLCAiY2Fubm90IGJlIGFuIGk2NCIpKSk7Ci0gICAgICAgICAgICBpZiAobW9kdWxlSW5m
b3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlICE9IFdhc206OkFueXJlZiAm
JiAhdmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIGlmICghaXNTdWJ0eXBlKG1vZHVsZUlu
Zm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSwgV2FzbTo6QW55cmVmKSAm
JiAhdmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNy
ZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGlt
cG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgbnVtYmVyIikpKTsKICAgICAgICAg
ICAgIC8vIGlpaS4gQXBwZW5kIFRvV2ViQXNzZW1ibHlWYWx1ZSh2KSB0byBpbXBvcnRzLgogICAg
ICAgICAgICAgc3dpdGNoIChtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5k
ZXhdLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKKyAgICAgICAgICAg
ICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVlKSAmJiAhdmFsdWUu
aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAi
aW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIG9yIG51
bGwiKSkpOworICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFs
KGltcG9ydC5raW5kSW5kZXgsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgogICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPmlu
c3RhbmNlKCkuc2V0R2xvYmFsKGltcG9ydC5raW5kSW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTMxOSw2ICszMjQsNDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoK
ICAgICAgICAgfQogICAgIH0KIAorICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW1wb3J0Q291bnQgPSBj
b2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKKyAgICBhdXRvIG1ha2VGdW5jdGlvbldy
YXBwZXIgPSBbJl0gKGNvbnN0IFN0cmluZyYgZmllbGQsIHVpbnQzMl90IGluZGV4KSAtPiBKU1Zh
bHVlIHsKKyAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBtYWRlIGEgd3JhcHBlciwgZG8gbm90IG1h
a2UgYSBuZXcgb25lLgorICAgICAgICBKU1ZhbHVlIHdyYXBwZXIgPSBtX2luc3RhbmNlLT5pbnN0
YW5jZSgpLmdldEZ1bmN0aW9uV3JhcHBlcihpbmRleCk7CisKKyAgICAgICAgaWYgKCF3cmFwcGVy
LmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICAgICAgLy8gMS4g
SWYgZSBpcyBhIGNsb3N1cmUgYzoKKyAgICAgICAgLy8gICBpLiBJZiB0aGVyZSBpcyBhbiBFeHBv
cnRlZCBGdW5jdGlvbiBFeG90aWMgT2JqZWN0IGZ1bmMgaW4gZnVuY3Mgd2hvc2UgZnVuYy5bW0Ns
b3N1cmVdXSBlcXVhbHMgYywgdGhlbiByZXR1cm4gZnVuYy4KKyAgICAgICAgLy8gICBpaS4gKE5v
dGU6IEF0IG1vc3Qgb25lIHdyYXBwZXIgaXMgY3JlYXRlZCBmb3IgYW55IGNsb3N1cmUsIHNvIGZ1
bmMgaXMgdW5pcXVlLCBldmVuIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBvY2N1cnJhbmNlcyBpbiB0
aGUgbGlzdC4gTW9yZW92ZXIsIGlmIHRoZSBpdGVtIHdhcyBhbiBpbXBvcnQgdGhhdCBpcyBhbHJl
YWR5IGFuIEV4cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3QsIHRoZW4gdGhlIG9yaWdpbmFs
IGZ1bmN0aW9uIG9iamVjdCB3aWxsIGJlIGZvdW5kLiBGb3IgaW1wb3J0cyB0aGF0IGFyZSByZWd1
bGFyIEpTIGZ1bmN0aW9ucywgYSBuZXcgd3JhcHBlciB3aWxsIGJlIGNyZWF0ZWQuKQorICAgICAg
ICBpZiAoaW5kZXggPCBmdW5jdGlvbkltcG9ydENvdW50KSB7CisgICAgICAgICAgICBKU09iamVj
dCogZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9u
PFdyaXRlQmFycmllcjxKU09iamVjdD4+KGluZGV4KS0+Z2V0KCk7CisgICAgICAgICAgICBpZiAo
aXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgZnVuY3Rpb25JbXBvcnQpKQorICAgICAgICAg
ICAgICAgIHdyYXBwZXIgPSBmdW5jdGlvbkltcG9ydDsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxl
LT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOworICAgICAgICAg
ICAgICAgIHdyYXBwZXIgPSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1
Y3R1cmUoKSwgZnVuY3Rpb25JbXBvcnQsIGluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBzaWduYXR1
cmVJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyAgIGlpaS4gT3RoZXJ3aXNlOgorICAgICAgICAgICAgLy8gICAgIGEuIExldCBmdW5jIGJlIGFu
IEV4cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3QgY3JlYXRlZCBmcm9tIGMuCisgICAgICAg
ICAgICAvLyAgICAgYi4gQXBwZW5kIGZ1bmMgdG8gZnVuY3MuCisgICAgICAgICAgICAvLyAgICAg
Yy4gUmV0dXJuIGZ1bmMuCisgICAgICAgICAgICBXYXNtOjpDYWxsZWUmIGVtYmVkZGVyRW50cnlw
b2ludENhbGxlZSA9IGNvZGVCbG9jay0+ZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZShpbmRleCk7CisgICAgICAgICAgICBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0
YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNvZGVC
bG9jay0+ZW50cnlwb2ludExvYWRMb2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgp
OworICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1
bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7CisgICAgICAg
ICAgICBjb25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUlu
Zm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgV2ViQXNzZW1ibHlG
dW5jdGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCksIHNp
Z25hdHVyZS5hcmd1bWVudENvdW50KCksIGZpZWxkLCBtX2luc3RhbmNlLmdldCgpLCBlbWJlZGRl
ckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4
KTsKKyAgICAgICAgICAgIHdyYXBwZXIgPSBmdW5jdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVCh3cmFwcGVyLmlzRnVuY3Rpb24odm0pKTsKKyAgICAgICAgbV9pbnN0YW5jZS0+aW5z
dGFuY2UoKS5zZXRGdW5jdGlvbldyYXBwZXIoaW5kZXgsIHdyYXBwZXIpOworCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBtb2R1bGVJbmZv
cm1hdGlvbi5yZWZlcmVuY2VkRnVuY3Rpb25zKCkpCisgICAgICAgIG1ha2VGdW5jdGlvbldyYXBw
ZXIoIlJlZmVyZW5jZWQgZnVuY3Rpb24iLCBpbmRleCk7CisKICAgICAvLyBHbG9iYWxzCiAgICAg
ewogICAgICAgICBmb3IgKHNpemVfdCBnbG9iYWxJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmZp
cnN0SW50ZXJuYWxHbG9iYWw7IGdsb2JhbEluZGV4IDwgbW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFs
cy5zaXplKCk7ICsrZ2xvYmFsSW5kZXgpIHsKQEAgLTMyNywxMyArMzczLDE2IEBAIHZvaWQgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09i
amVjdCogaW1wb3J0T2JqCiAgICAgICAgICAgICBpZiAoZ2xvYmFsLmluaXRpYWxpemF0aW9uVHlw
ZSA9PSBXYXNtOjpHbG9iYWw6OkZyb21HbG9iYWxJbXBvcnQpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoZ2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIgPCBtb2R1bGVJbmZvcm1hdGlv
bi5maXJzdEludGVybmFsR2xvYmFsKTsKICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0
YW5jZSgpLnNldEdsb2JhbChnbG9iYWxJbmRleCwgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2Fk
STY0R2xvYmFsKGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKSk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPT0gV2FzbTo6R2xvYmFsOjpG
cm9tUmVmRnVuYykgeworICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWwuaW5pdGlhbEJpdHNP
ckltcG9ydE51bWJlciA8IG1vZHVsZUluZm9ybWF0aW9uLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUo
KSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1ha2VGdW5jdGlvbldyYXBwZXIoIkdsb2JhbCBp
bml0IGV4cHIiLCBnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlcikuaXNGdW5jdGlvbih2
bSkpOworICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGds
b2JhbEluZGV4LCBKU1ZhbHVlOjplbmNvZGUobWFrZUZ1bmN0aW9uV3JhcHBlcigiR2xvYmFsIGlu
aXQgZXhwciIsIGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKSkpOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9i
YWwoZ2xvYmFsSW5kZXgsIGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9IG1vZHVs
ZS0+ZXhwb3J0U3ltYm9sVGFibGUoKTsKLSAgICB1bnNpZ25lZCBmdW5jdGlvbkltcG9ydENvdW50
ID0gY29kZUJsb2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCk7CiAKICAgICAvLyBMZXQgZXhwb3J0
cyBiZSBhIGxpc3Qgb2YgKHN0cmluZywgSlMgdmFsdWUpIHBhaXJzIHRoYXQgaXMgbWFwcGVkIGZy
b20gZWFjaCBleHRlcm5hbCB2YWx1ZSBlIGluIGluc3RhbmNlLmV4cG9ydHMgYXMgZm9sbG93czoK
ICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52
aXJvbm1lbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBleHBvcnRTeW1ib2xU
YWJsZSwgSlNWYWx1ZSgpLCB0aGlzKTsKQEAgLTM0MSwzMCArMzkwLDkgQEAgdm9pZCBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0
KiBpbXBvcnRPYmoKICAgICAgICAgSlNWYWx1ZSBleHBvcnRlZFZhbHVlOwogICAgICAgICBzd2l0
Y2ggKGV4cC5raW5kKSB7CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5jdGlv
bjogewotICAgICAgICAgICAgLy8gMS4gSWYgZSBpcyBhIGNsb3N1cmUgYzoKLSAgICAgICAgICAg
IC8vICAgaS4gSWYgdGhlcmUgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCBm
dW5jIGluIGZ1bmNzIHdob3NlIGZ1bmMuW1tDbG9zdXJlXV0gZXF1YWxzIGMsIHRoZW4gcmV0dXJu
IGZ1bmMuCi0gICAgICAgICAgICAvLyAgIGlpLiAoTm90ZTogQXQgbW9zdCBvbmUgd3JhcHBlciBp
cyBjcmVhdGVkIGZvciBhbnkgY2xvc3VyZSwgc28gZnVuYyBpcyB1bmlxdWUsIGV2ZW4gaWYgdGhl
cmUgYXJlIG11bHRpcGxlIG9jY3VycmFuY2VzIGluIHRoZSBsaXN0LiBNb3Jlb3ZlciwgaWYgdGhl
IGl0ZW0gd2FzIGFuIGltcG9ydCB0aGF0IGlzIGFscmVhZHkgYW4gRXhwb3J0ZWQgRnVuY3Rpb24g
RXhvdGljIE9iamVjdCwgdGhlbiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0IHdpbGwgYmUg
Zm91bmQuIEZvciBpbXBvcnRzIHRoYXQgYXJlIHJlZ3VsYXIgSlMgZnVuY3Rpb25zLCBhIG5ldyB3
cmFwcGVyIHdpbGwgYmUgY3JlYXRlZC4pCi0gICAgICAgICAgICBpZiAoZXhwLmtpbmRJbmRleCA8
IGZ1bmN0aW9uSW1wb3J0Q291bnQpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdW5jdGlv
bkluZGV4ID0gZXhwLmtpbmRJbmRleDsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rp
b25JbXBvcnQgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFy
cmllcjxKU09iamVjdD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgZnVuY3Rpb25JbXBvcnQpKQotICAgICAg
ICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gZnVuY3Rpb25JbXBvcnQ7Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gbW9kdWxlLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3Bh
Y2UoZnVuY3Rpb25JbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25J
bXBvcnQsIGZ1bmN0aW9uSW5kZXgsIG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IC8vICAgaWlpLiBPdGhlcndpc2U6Ci0gICAgICAgICAgICAgICAgLy8gICAgIGEuIExldCBmdW5j
IGJlIGFuIEV4cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3QgY3JlYXRlZCBmcm9tIGMuCi0g
ICAgICAgICAgICAgICAgLy8gICAgIGIuIEFwcGVuZCBmdW5jIHRvIGZ1bmNzLgotICAgICAgICAg
ICAgICAgIC8vICAgICBjLiBSZXR1cm4gZnVuYy4KLSAgICAgICAgICAgICAgICBXYXNtOjpDYWxs
ZWUmIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSA9IGNvZGVCbG9jay0+ZW1iZWRkZXJFbnRyeXBv
aW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKLSAgICAgICAg
ICAgICAgICBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24g
ZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNvZGVCbG9jay0+ZW50cnlwb2ludExvYWRMb2NhdGlv
bkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZXhwLmtpbmRJbmRleCk7Ci0gICAgICAgICAgICAgICAg
V2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUlu
ZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKLSAgICAgICAgICAgICAg
ICBjb25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9y
bWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwotICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5
RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpLCBz
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVsZCksIG1f
aW5zdGFuY2UuZ2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlwb2ludExvYWRM
b2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOwotICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUg
PSBmdW5jdGlvbjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBt
YWtlRnVuY3Rpb25XcmFwcGVyKFN0cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxkKSwgZXhwLmtpbmRJ
bmRleCk7CisgICAgICAgICAgICBBU1NFUlQoZXhwb3J0ZWRWYWx1ZS5pc0Z1bmN0aW9uKHZtKSk7
CisgICAgICAgICAgICBBU1NFUlQobWFrZUZ1bmN0aW9uV3JhcHBlcihTdHJpbmc6OmZyb21VVEY4
KGV4cC5maWVsZCksIGV4cC5raW5kSW5kZXgpID09IGV4cG9ydGVkVmFsdWUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRh
YmxlOiB7CkBAIC0zODgsOCArNDE2LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6
bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAg
ICAgICAgIC8vIFJldHVybiBUb0pTVmFsdWUodikuCiAgICAgICAgICAgICBzd2l0Y2ggKGdsb2Jh
bC50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFdhc206OkFueXJlZjoKLSAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJlIHN1
cHBvcnRlZCBoZXJlLgotICAgICAgICAgICAgICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU3PgorICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlmdW5j
OgogICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9pbnN0
YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTY0R2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
d2FzbS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDMw
YmJjNzQ3MjM3ODM5MjJlZGJiZjYzNDk5MzQ5MGY0OGI3YjdlMDIuLjc1Mjg1ZDZmYjcwMDkwMWNh
NTI3NWVhM2ZkNzViYjE4ZDMwZTQxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpz
b24KQEAgLTExLDEzICsxMSwxMyBAQAogICAgICAgICAiaTY0IjogICAgIHsgInR5cGUiOiAidmFy
aW50NyIsICJ2YWx1ZSI6ICAtMiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJm
MzIiOiAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zLCAiYjN0eXBlIjogIkIz
OjpGbG9hdCIgfSwKICAgICAgICAgImY2NCI6ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFs
dWUiOiAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKLSAgICAgICAgImFueWZ1bmMiOiB7
ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtMTYsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0s
CisgICAgICAgICJhbnlmdW5jIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTE2LCAi
YjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImFueXJlZiI6ICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAtMTcsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAi
ZnVuYyI6ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0zMiwgImIzdHlwZSI6ICJC
Mzo6Vm9pZCIgfSwKICAgICAgICAgInZvaWQiOiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFs
dWUiOiAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0KICAgICB9LAotICAgICJ2YWx1ZV90eXBl
IjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiYW55cmVmIl0sCi0gICAgImJsb2NrX3R5
cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJ2b2lkIiwgImFueXJlZiJdLAorICAg
ICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiYW55cmVmIiwgImFu
eWZ1bmMiXSwKKyAgICAiYmxvY2tfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0Iiwg
InZvaWQiLCAiYW55cmVmIiwgImFueWZ1bmMiXSwKICAgICAiZWxlbV90eXBlIjogWyJhbnlmdW5j
IiwiYW55cmVmIl0sCiAgICAgImV4dGVybmFsX2tpbmQiOiB7CiAgICAgICAgICJGdW5jdGlvbiI6
IHsgInR5cGUiOiAidWludDgiLCAidmFsdWUiOiAwIH0sCkBAIC01OSw4ICs1OSw5IEBACiAgICAg
ICAgICJpNjQuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2
YWx1ZSI6ICA2NiwgInJldHVybiI6IFsiaTY0Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAgICAg
ICAidHlwZSI6ICJ2YXJpbnQ2NCJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBh
cyBpNjQiIH0sCiAgICAgICAgICJmNjQuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
c3BlY2lhbCIsICAgICJ2YWx1ZSI6ICA2OCwgInJldHVybiI6IFsiZjY0Il0sICAgICAgInBhcmFt
ZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
dmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJkb3VibGUifV0sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1
ZSBpbnRlcnByZXRlZCBhcyBmNjQiIH0sCiAgICAgICAgICJmMzIuY29uc3QiOiAgICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICA2NywgInJldHVybiI6IFsiZjMy
Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJmbG9hdCJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
YSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmMzIiIH0sCi0gICAgICAgICJyZWYubnVs
bCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIwOCwg
InJldHVybiI6IFsiYW55cmVmIl0sICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCBudWxsIHJlZmVyZW5jZSIgfSwKKyAgICAgICAgInJl
Zi5udWxsIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjog
MjA4LCAicmV0dXJuIjogWyJhbnlmdW5jIl0sICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAg
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IG51bGwgcmVmZXJlbmNlIiB9LAogICAgICAg
ICAicmVmLmlzX251bGwiOiAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFs
dWUiOiAyMDksICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueXJlZiJd
LCAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogImRldGVybWluZSBpZiBhIHJlZmVyZW5jZSBpcyBudWxs
IiB9LAorICAgICAgICAicmVmLmZ1bmMiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNp
YWwiLCAgICAidmFsdWUiOiAyMTAsICJyZXR1cm4iOiBbImFueWZ1bmMiXSwgICJwYXJhbWV0ZXIi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0
aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInJldHVybiBhIHJlZmVyZW5jZSB0
byB0aGUgZnVuY3Rpb24gYXQgdGhlIGdpdmVuIGluZGV4IiB9LAogICAgICAgICAiZ2V0X2xvY2Fs
IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzIsICJy
ZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogInJlYWQgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0sCiAgICAg
ICAgICJzZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2
YWx1ZSI6ICAzMywgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0s
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJh
bWV0ZXIiIH0sCiAgICAgICAgICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
c3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFt
ZXRlciI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
bG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2
YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzY0ZWZj
NzExNzBjMmFiYjQ1ZWRjMmI1OWFjNWFjMGM0ZTAxNmVjYi4uZGMzNWY1NTQ0ZGVmYTkxZDZhYjMz
MWIzNDcwYTQwMTY5MzAyZDA1MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxOS0wNi0xMCAgSnVzdGluIE1p
Y2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJl
bmNlc10gQWRkIHN1cHBvcnQgZm9yIEZ1bmNyZWYgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5
cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgx
NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdh
c20vQnVpbGRlci5qczoKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LkJ1aWxkZXIucHJvdG90eXBl
Ll9yZWdpc3RlclNlY3Rpb25CdWlsZGVycy5jb25zdC5zZWN0aW9uLmluLldBU00uZGVzY3JpcHRp
b24uc2VjdGlvbi5zd2l0Y2guc2VjdGlvbi5jYXNlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRoaXMu
c2VjdGlvbik6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl9nbG9iYWxzLmpzOgor
ICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qczogQWRkZWQuCisgICAgICAgIChm
dWxsR0MuZ2MubWFrZUV4cG9ydGVkRnVuY3Rpb24pOgorICAgICAgICAobWFrZUV4cG9ydGVkSWRl
bnQpOgorICAgICAgICAobWFrZUFueWZ1bmNJZGVudCk6CisgICAgICAgIChmdW4pOgorICAgICAg
ICAoYXNzZXJ0LmVxLmluc3RhbmNlLmV4cG9ydHMuZml4LmZ1bik6CisgICAgICAgIChhc3NlcnQu
ZXEuaW5zdGFuY2UuZXhwb3J0cy5maXgpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUu
RW5kLkVuZC5GdW5jdGlvbi5FbmQuQ29kZS5FbmQuV2ViQXNzZW1ibHkuaW1wLnJlZik6CisgICAg
ICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5FbmQuRW5kLkZ1bmN0aW9uLkVuZC5Db2RlLkVuZC5X
ZWJBc3NlbWJseSk6CisgICAgICAgIChHZXRMb2NhbC4wLkkzMkNvbnN0LjAuVGFibGVTZXQuRW5k
LkVuZC5XZWJBc3NlbWJseS5mdW4pOgorICAgICAgICAoR2V0TG9jYWwuMC5JMzJDb25zdC4wLlRh
YmxlU2V0LkVuZC5FbmQuV2ViQXNzZW1ibHkuYXNzZXJ0LnRocm93cyk6CisgICAgICAgIChHZXRM
b2NhbC4wLkkzMkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseSk6CisgICAgICAg
IChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MuZG9UZXN0KToKKyAgICAg
ICAgKGxldC5pbXBvcnRlZEZ1bi5vZik6CisgICAgICAgIChtYWtlQW55ZnVuY0lkZW50LmZ1bik6
CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanM6CisgICAgICAgIChhc3Nl
cnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0xMyAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFlhcnIgYnl0ZWNvZGUg
Y29tcGlsYXRpb24gZmFpbHVyZSBzaG91bGQgYmUgZ3JhY2VmdWxseSBoYW5kbGVkCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCmlu
ZGV4IDdlN2MxYjdkYzIyM2M4ODNlMTBlNmYzNzNiY2RkM2M2YzI5ZDUxMWIuLjY1ZjFmNDc3YTk4
Yjg2MjBmY2NkMmFhOGY4YzExMDllMGFmNjc4NjYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9C
dWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCkBAIC01MzYsNiArNTM2LDEw
IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMuZGF0YS5wdXNoKHsgdHlwZSwgb3A6ICJnZXRfZ2xvYmFsIiwgbXV0YWJpbGl0eTog
X25vcm1hbGl6ZU11dGFiaWxpdHkobXV0YWJpbGl0eSksIGluaXRWYWx1ZSB9KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihnbG9iYWxC
dWlsZGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBSZWZGdW5jOiAodHlwZSwgaW5pdFZhbHVlLCBtdXRhYmlsaXR5KSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goeyB0eXBlLCBvcDogInJlZi5mdW5jIiwg
bXV0YWJpbGl0eTogX25vcm1hbGl6ZU11dGFiaWxpdHkobXV0YWJpbGl0eSksIGluaXRWYWx1ZSB9
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94
eUZvcihnbG9iYWxCdWlsZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWZOdWxsOiAodHlwZSwgbXV0YWJpbGl0eSkgPT4gewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHsgdHlwZSwgb3A6ICJyZWYubnVsbCIs
IG11dGFiaWxpdHk6IF9ub3JtYWxpemVNdXRhYmlsaXR5KG11dGFiaWxpdHkpIH0pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKGdsb2Jh
bEJ1aWxkZXIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX2ds
b2JhbHMuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfZ2xvYmFscy5qcwppbmRl
eCAxODQ0NTdhMzNmZWNiMGIwOGFkZTEzZGVjZmNmMTllN2QzMzA4OWFlLi4yZDNjYTdiYzYwNWY3
OTc0Y2ZlZjI1ODE0ZTg5YWU1ODRiMDUzMTMwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy9hbnlyZWZfZ2xvYmFscy5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9h
bnlyZWZfZ2xvYmFscy5qcwpAQCAtNTYsNyArNTYsOSBAQCBhc3NlcnQuZXEoJDEuZXhwb3J0cy5n
ZXRfZ2xvYigpLCBudWxsKQogCiBjb25zdCBvYmogPSB7IHRlc3Q6ICJoaSIgfQogCi0kMS5leHBv
cnRzLnNldF9nbG9iKG9iaik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIG9iaik7
Cithc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuZXhwZ2xvYjIgPSBudWxsLCBUeXBlRXJy
b3IsICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpCisKKyQxLmV4
cG9ydHMuc2V0X2dsb2Iob2JqKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgb2Jq
KTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZXhwZ2xvYjIsICJoaSIpCiAkMS5leHBvcnRzLnNldF9n
bG9iKDUpOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCA1KQogJDEuZXhwb3J0cy5z
ZXRfZ2xvYihudWxsKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgbnVsbCkKICQx
LmV4cG9ydHMuc2V0X2dsb2IoImhpIik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCks
ICJoaSIpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcyBi
L0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1ZTA2ZTQ2
NTgzODcyODNjNTgzMzViOWI2NmY3Nzg1M2Y5YmIxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwpAQCAtMCwwICsxLDQ0NyBAQAoraW1wb3J0
ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CitpbXBvcnQgQnVpbGRlciBmcm9tICcu
Li9CdWlsZGVyLmpzJzsKKworZnVsbEdDKCkKK2djKCkKKworZnVuY3Rpb24gbWFrZUV4cG9ydGVk
RnVuY3Rpb24oaSkgeworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAg
ICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
ICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJoIikKKyAgICAgICAgICAuRW5k
KCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImgiLCB7IHBhcmFt
czogW10sIHJldDogImkzMiIgfSwgW10pCisgICAgICAgICAgICAgIC5JMzJDb25zdChpKQorICAg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpOworCisgICAgY29uc3QgYmluID0gYnVp
bGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoYmluKTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtb2R1bGUpOworCisgICAgcmV0dXJuIGluc3RhbmNlLmV4cG9ydHMuaAorfQorCitm
dW5jdGlvbiBtYWtlRXhwb3J0ZWRJZGVudCgpIHsKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBC
dWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigp
LkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiaCIp
CisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0
aW9uKCJoIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSwgW10pCisgICAgICAgICAg
ICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpOwor
CisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0
IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBjb25zdCBpbnN0YW5j
ZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUpOworCisgICAgcmV0dXJuIGluc3Rh
bmNlLmV4cG9ydHMuaAorfQorCitmdW5jdGlvbiBtYWtlQW55ZnVuY0lkZW50KCkgeworICAgIGNv
bnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisg
ICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJoIikKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgp
CisgICAgICAgICAgICAuRnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDog
ImFueWZ1bmMiIH0sIFtdKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5FbmQoKTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2Vi
QXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJpbik7CisgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlKTsKKworICAgIHJldHVybiBpbnN0YW5jZS5leHBvcnRzLmgKK30KKworeworICAgIGNv
bnN0IG15ZnVuID0gbWFrZUV4cG9ydGVkRnVuY3Rpb24oMTMzNyk7CisgICAgZnVuY3Rpb24gZnVu
KCkgeworICAgICAgICByZXR1cm4gNDE7CisgICAgfQorCisgICAgY29uc3QgYnVpbGRlciA9IChu
ZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rp
b24oKS5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24o
ImgiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImkiKQorICAgICAgICAgICAgICAuRnVuY3Rp
b24oImdldF9oIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJmaXgiKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oImdldF9ub3RfZXhwb3J0ZWQiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24o
ImxvY2FsX3JlYWQiKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAiYW55cmVm
IiB9LCBbImFueXJlZiJdKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAg
ICAgLlNldExvY2FsKDEpCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgICAg
LkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaSIsIHsgcGFyYW1zOiBbImFueWZ1bmMi
XSwgcmV0OiAiYW55ZnVuYyIgfSwgWyJhbnlmdW5jIl0pCisgICAgICAgICAgICAgIC5HZXRMb2Nh
bCgwKQorICAgICAgICAgICAgICAuU2V0TG9jYWwoMSkKKyAgICAgICAgICAgICAgLkdldExvY2Fs
KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfaCIs
IHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIgfSwgWyJhbnlmdW5jIl0pCisgICAgICAgICAg
ICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuUmVmRnVuYygwKQorICAgICAgICAgICAg
ICAuU2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLklmKCJhbnlmdW5jIikKKyAgICAgICAgICAg
ICAgLkJsb2NrKCJhbnlmdW5jIiwgKGIpID0+CisgICAgICAgICAgICAgICAgYi5HZXRMb2NhbCgw
KQorICAgICAgICAgICAgICApCisgICAgICAgICAgICAgIC5FbHNlKCkKKyAgICAgICAgICAgICAg
LkJsb2NrKCJhbnlmdW5jIiwgKGIpID0+CisgICAgICAgICAgICAgICAgYi5HZXRMb2NhbCgwKQor
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZml4IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlm
dW5jIiB9LCBbXSkKKyAgICAgICAgICAgICAgLlJlZkZ1bmMoMykKKyAgICAgICAgICAgIC5FbmQo
KQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF9ub3RfZXhwb3J0ZWQiLCB7IHBhcmFtczog
W10sIHJldDogImFueWZ1bmMiIH0sIFtdKQorICAgICAgICAgICAgICAuUmVmRnVuYyg1KQorICAg
ICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0XzQyIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJpMzIiIH0sIFtdKQorICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisg
ICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJsb2NhbF9yZWFkIiwg
eyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0sIFsiYW55ZnVuYyJdKQorICAgICAgICAgICAgICAu
R2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlJlZklzTnVsbCgpCisgICAgICAgICAgICAuRW5k
KCkKKyAgICAgICAgICAuRW5kKCk7CisKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2Vt
Ymx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShi
aW4pOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSk7CisgICAgZnVsbEdDKCk7CisKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5sb2Nh
bF9yZWFkKCksIDEpCisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuaChudWxsKSwgbnVs
bCkKKworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gaW5zdGFuY2UuZXhwb3J0cy5oKGZ1biksIEVy
cm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRp
bmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuaCht
eWZ1biksIG15ZnVuKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gaW5zdGFuY2UuZXhwb3J0cy5o
KDUpLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChl
dmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gaW5z
dGFuY2UuZXhwb3J0cy5oKHVuZGVmaW5lZCksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4
cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisKKyAg
ICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5pKG51bGwpLCBudWxsKQorICAgIGFzc2VydC5l
cShpbnN0YW5jZS5leHBvcnRzLmkobXlmdW4pLCBteWZ1bikKKyAgICBhc3NlcnQudGhyb3dzKCgp
ID0+IGluc3RhbmNlLmV4cG9ydHMuaShmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBl
eHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gaW5zdGFuY2UuZXhwb3J0cy5pKDUpLCBFcnJvciwgIkFueWZ1
bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4u
LmFyZ3MpJykiKQorCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzLmdl
dF9oKCkoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5j
dGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQuZXEoaW5zdGFu
Y2UuZXhwb3J0cy5nZXRfaCgpKG51bGwpLCBudWxsKQorICAgIGFzc2VydC5lcShpbnN0YW5jZS5l
eHBvcnRzLmdldF9oKCkobXlmdW4pLCBteWZ1bikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGlu
c3RhbmNlLmV4cG9ydHMuZ2V0X2goKSg1KSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhw
b3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKworICAg
IGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF9ub3RfZXhwb3J0ZWQoKSgpLCA0MikKKwor
ICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmZpeCgpKCksIGluc3RhbmNlLmV4cG9ydHMu
Zml4KCkpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmZpeCgpLCBpbnN0YW5jZS5l
eHBvcnRzLmZpeCk7Cit9CisKKy8vIEdsb2JhbHMKKworeworICAgIGNvbnN0IG15ZnVuID0gbWFr
ZUV4cG9ydGVkRnVuY3Rpb24oNDIpOworICAgIGZ1bmN0aW9uIGZ1bigpIHsKKyAgICAgICAgcmV0
dXJuIDQxOworICAgIH0KKworICAgIGNvbnN0ICQxID0gKCgpID0+IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgLlR5
cGUoKS5FbmQoKQorICAgICAgLkltcG9ydCgpCisgICAgICAgICAgIC5HbG9iYWwoKS5BbnlmdW5j
KCJpbXAiLCAicmVmIiwgImltbXV0YWJsZSIpLkVuZCgpCisgICAgICAuRW5kKCkKKyAgICAgIC5G
dW5jdGlvbigpLkVuZCgpCisgICAgICAuR2xvYmFsKCkKKyAgICAgICAgICAuUmVmTnVsbCgiYW55
ZnVuYyIsICJtdXRhYmxlIikKKyAgICAgICAgICAuUmVmTnVsbCgiYW55ZnVuYyIsICJpbW11dGFi
bGUiKQorICAgICAgICAgIC5HZXRHbG9iYWwoImFueWZ1bmMiLCAwLCAibXV0YWJsZSIpCisgICAg
ICAgICAgLlJlZkZ1bmMoImFueWZ1bmMiLCAyLCAiaW1tdXRhYmxlIikKKyAgICAgIC5FbmQoKQor
ICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfZ2xvYiIpCisgICAgICAg
ICAgLkZ1bmN0aW9uKCJnZXRfZ2xvYiIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJnbG9iX2lzX251
bGwiKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0X2dsb2JfbnVsbCIpCisgICAgICAgICAgLkZ1
bmN0aW9uKCJnZXRfaW1wb3J0IikKKyAgICAgICAgICAuR2xvYmFsKCJleHBnbG9iIiwgMikKKyAg
ICAgICAgICAuR2xvYmFsKCJleHBnbG9iMiIsIDApCisgICAgICAgICAgLkdsb2JhbCgiZXhwX2ds
b2JfaXNfbnVsbCIsIDQpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1
bmN0aW9uKCJzZXRfZ2xvYiIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAidm9pZCIgfSkK
KyAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAuU2V0R2xvYmFsKDEpCisgICAgICAg
IC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigiZ2V0X2dsb2IiLCB7IHBhcmFtczogW10sIHJl
dDogImFueWZ1bmMiIH0pCisgICAgICAgICAgICAuR2V0R2xvYmFsKDEpCisgICAgICAgIC5FbmQo
KQorCisgICAgICAgIC5GdW5jdGlvbigiZ2xvYl9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJpMzIiIH0pCisgICAgICAgICAgICAuQ2FsbCgxKQorICAgICAgICAgICAgLlJlZklzTnVsbCgp
CisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigic2V0X2dsb2JfbnVsbCIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgIC5SZWZOdWxsKCkKKyAgICAg
ICAgICAgIC5DYWxsKDApCisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigiZ2V0
X2ltcG9ydCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAgIC5H
ZXRHbG9iYWwoMCkKKyAgICAgICAgLkVuZCgpCisgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5n
ZXQoKSksIHsgaW1wOiB7IHJlZjogbWFrZUV4cG9ydGVkRnVuY3Rpb24oMTMzNykgfSB9KSkoKTsK
KworICAgIGZ1bGxHQygpOworCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2ltcG9ydCgp
KCksIDEzMzcpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZXhwZ2xvYiwgbnVsbCkKKyAgICBh
c3NlcnQuZXEoJDEuZXhwb3J0cy5leHBnbG9iMigpLCAxMzM3KQorICAgIGFzc2VydC5lcSgkMS5l
eHBvcnRzLmV4cF9nbG9iX2lzX251bGwsICQxLmV4cG9ydHMuZ2xvYl9pc19udWxsKTsKKyAgICBh
c3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBudWxsKQorCisgICAgJDEuZXhwb3J0cy5z
ZXRfZ2xvYihteWZ1bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIG15ZnVuKTsg
YXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSgpLCA0Mik7IGFzc2VydC5lcSgkMS5leHBv
cnRzLmV4cGdsb2IyKCksIDEzMzcpCisgICAgJDEuZXhwb3J0cy5zZXRfZ2xvYihudWxsKTsgYXNz
ZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgbnVsbCkKKyAgICAkMS5leHBvcnRzLnNldF9n
bG9iKG15ZnVuKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSgpLCA0Mik7CisKKyAg
ICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuc2V0X2dsb2IoZnVuKSwgRXJyb3IsICJB
bnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVu
YyguLi5hcmdzKScpIikKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdsb2JfaXNfbnVsbCgp
LCAwKQorICAgICQxLmV4cG9ydHMuc2V0X2dsb2JfbnVsbCgpOyBhc3NlcnQuZXEoJDEuZXhwb3J0
cy5nZXRfZ2xvYigpLCBudWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdsb2JfaXNfbnVs
bCgpLCAxKQorfQorCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAuVHlwZSgpLkVuZCgp
CisgIC5JbXBvcnQoKQorICAgICAgIC5HbG9iYWwoKS5BbnlmdW5jKCJpbXAiLCAicmVmIiwgImlt
bXV0YWJsZSIpLkVuZCgpCisgIC5FbmQoKQorICAuRnVuY3Rpb24oKS5FbmQoKQorICAuQ29kZSgp
LkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDogeyByZWY6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gImhpIiB9IH0gfSksIEVycm9yLCAiaW1wb3J0ZWQgZ2xvYmFsIGltcDpyZWYgbXVzdCBi
ZSBhIHdhc20gZXhwb3J0ZWQgZnVuY3Rpb24gb3IgbnVsbCAoZXZhbHVhdGluZyAnbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlJykiKTsKKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAuVHlwZSgpLkVuZCgpCisgIC5GdW5jdGlvbigp
LkVuZCgpCisgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJhbnlmdW5j
Il0sIHJldDogImFueXJlZiIgfSkKKyAgICAgIC5HZXRMb2NhbCgwKQorICAgIC5FbmQoKQorICAu
RW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRv
ZXNuJ3QgdmFsaWRhdGU6IGNvbnRyb2wgZmxvdyByZXR1cm5zIHdpdGggdW5leHBlY3RlZCB0eXBl
LCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9k
dWxlJykiKTsKKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChu
ZXcgQnVpbGRlcigpKQorICAuVHlwZSgpLkVuZCgpCisgIC5GdW5jdGlvbigpLkVuZCgpCisgIC5U
YWJsZSgpCisgICAgLlRhYmxlKHtpbml0aWFsOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAu
RW5kKCkKKyAgLkNvZGUoKQorICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBbImkzMiJdLCBy
ZXQ6ICJ2b2lkIiB9KQorICAgICAgLkdldExvY2FsKDApCisgICAgICAuSTMyQ29uc3QoMCkKKyAg
ICAgIC5UYWJsZVNldCgpCisgICAgLkVuZCgpCisgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgp
KSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuc2V0
IHZhbHVlIHRvIHR5cGUgSTMyIGV4cGVjdGVkIEFueWZ1bmMsIGluIGZ1bmN0aW9uIGF0IGluZGV4
IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpOworCisvLyBUYWJsZXMK
K3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgLkZ1
bmN0aW9uKCkuRW5kKCkKKyAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAuVGFibGUoe2luaXRp
YWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAuRW5kKCkKKyAgICAgIC5HbG9iYWwo
KQorICAgICAgICAgIC5SZWZOdWxsKCJhbnlmdW5jIiwgIm11dGFibGUiKQorICAgICAgLkVuZCgp
CisgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAuRnVuY3Rpb24oInNldF9nbG9iIikKKyAgICAg
ICAgICAuRnVuY3Rpb24oImdldF9nbG9iIikKKyAgICAgICAgICAuRnVuY3Rpb24oImNhbGxfZ2xv
YiIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJyZXRfMjAiKQorICAgICAgLkVuZCgpCisgICAgICAu
Q29kZSgpCisgICAgICAgIC5GdW5jdGlvbigic2V0X2dsb2IiLCB7IHBhcmFtczogWyJhbnlmdW5j
Il0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgLlNl
dEdsb2JhbCgwKQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oImdldF9nbG9i
IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgICAgLkdldEdsb2Jh
bCgwKQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oImNhbGxfZ2xvYiIsIHsg
cGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
KyAgICAgICAgICAgIC5HZXRHbG9iYWwoMCkKKyAgICAgICAgICAgIC5UYWJsZVNldCgpCisKKyAg
ICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAg
ICAgICAuQ2FsbEluZGlyZWN0KDIsMCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0
aW9uKCJyZXRfMjAiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAg
ICAgLkkzMkNvbnN0KDIwKQorICAgICAgICAuRW5kKCkKKyAgICAgIC5FbmQoKS5XZWJBc3NlbWJs
eSgpLmdldCgpKSk7CisKKyAgICBjb25zdCBteWZ1biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDEz
MzcpOworICAgIGZ1bmN0aW9uIGZ1bihpKSB7CisgICAgICAgIHJldHVybiA0MTsKKyAgICB9Cisg
ICAgY29uc3QgaWRlbnQgPSBtYWtlRXhwb3J0ZWRJZGVudCgpOworCisgICAgJDEuZXhwb3J0cy5z
ZXRfZ2xvYigkMS5leHBvcnRzLnJldF8yMCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9i
KCksICQxLmV4cG9ydHMucmV0XzIwKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuY2FsbF9nbG9iKDQy
KSwgMjApCisgICAgJDEuZXhwb3J0cy5zZXRfZ2xvYihudWxsKTsgYXNzZXJ0LmVxKCQxLmV4cG9y
dHMuZ2V0X2dsb2IoKSwgbnVsbCk7IGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5jYWxs
X2dsb2IoNDIpLCBFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChl
dmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgICQxLmV4cG9ydHMuc2V0X2dsb2IoaWRl
bnQpOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBpZGVudCk7IGFzc2VydC5lcSgk
MS5leHBvcnRzLmNhbGxfZ2xvYig0MiksIDQyKQorCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAk
MS5leHBvcnRzLnNldF9nbG9iKGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9y
dGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgJDEu
ZXhwb3J0cy5zZXRfZ2xvYihteWZ1bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCks
IG15ZnVuKTsgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfZ2xvYig0MiksIEVy
cm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIHNpZ25hdHVyZSB0aGF0IGRvZXMgbm90IG1hdGNoIChl
dmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorCisgICAgZm9yIChsZXQgaT0wOyBpPDEwMDA7
ICsraSkgeworICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuc2V0X2dsb2Io
ZnVuY3Rpb24oKSB7fSksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20g
ZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOworICAgIH0KK30KKworLy8g
VGFibGUgc2V0L2dldAorCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgIC5UeXBlKCku
RW5kKCkKKyAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAuVGFibGUoKQorICAgICAgICAg
ICAgLlRhYmxlKHtpbml0aWFsOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgLkVuZCgp
CisgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAuRnVuY3Rpb24oInNldCIpCisgICAgICAgICAg
LkZ1bmN0aW9uKCJnZXQiKQorICAgICAgLkVuZCgpCisgICAgICAuQ29kZSgpCisgICAgICAgIC5G
dW5jdGlvbigic2V0IiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJ2b2lkIiB9KQorICAg
ICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgIC5U
YWJsZVNldCgpCisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigiZ2V0IiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgICAgLkkzMkNvbnN0KDApCisg
ICAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAuRW5kKCkKKyAgICAgIC5FbmQoKS5XZWJB
c3NlbWJseSgpLmdldCgpKSk7CisKKyAgICBmdW5jdGlvbiBkb1NldCgpIHsKKyAgICAgICAgY29u
c3QgbXlmdW4gPSBtYWtlRXhwb3J0ZWRGdW5jdGlvbig0NDQpOworICAgICAgICBmb3IgKGxldCBp
PTA7IGk8MTAwMDsgKytpKSB7CisgICAgICAgICAgICAkMS5leHBvcnRzLnNldChteWZ1bik7Cisg
ICAgICAgIH0KKyAgICAgICAgJDEuZXhwb3J0cy5zZXQobXlmdW4pOyBhc3NlcnQuZXEoJDEuZXhw
b3J0cy5nZXQoKSwgbXlmdW4pOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXQoKSgpLCA0NDQpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGRvVGVzdChqLGssIGwpIHsKKyAgICAgICAgZnVsbEdDKCk7
CisgICAgICAgIGxldCBnYXJiYWdlID0geyB2YWw6ICJoaSIsIHZhbDI6IDUsIGFycjogW10gfQor
ICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTAwOyArK2kpIGdhcmJhZ2UuYXJyICs9ICh7IGZpZWxk
OiBpICsgaiArIGsgKyBsIH0pCisgICAgICAgIGZ1bGxHQygpOworCisgICAgICAgIGZvciAobGV0
IGk9MDsgaTwxMDA7ICsraSkgeworICAgICAgICAgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0
KCkoKSwgNDQ0KTsKKyAgICAgICAgICAgIGZ1bGxHQygpOworICAgICAgICB9CisgICAgfQorCisK
KyAgICBkb1NldCgpCisgICAgZG9UZXN0KDAsMCwwKQorfQorCisvLyBXYXNtLT5KUyBDYWxscwor
Citmb3IgKGxldCBpbXBvcnRlZEZ1biBvZiBbZnVuY3Rpb24oaSkgeyByZXR1cm4gaTsgfSwgbWFr
ZUFueWZ1bmNJZGVudCgpXSkgeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAuVHlwZSgp
LkVuZCgpCisgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgLkZ1bmN0aW9uKCJpbXAiLCAiaCIs
IHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgIC5FbmQoKQor
ICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAuVGFi
bGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAuRW5kKCkKKyAgICAg
IC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigidGVzdDEiKQorICAgICAgICAgIC5GdW5j
dGlvbigidGVzdDIiKQorICAgICAgICAgIC5GdW5jdGlvbigidGVzdDMiKQorICAgICAgICAgIC5G
dW5jdGlvbigidGVzdDQiKQorICAgICAgLkVuZCgpCisgICAgICAuQ29kZSgpCisgICAgICAgIC5G
dW5jdGlvbigidGVzdDEiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDogImFueWZ1bmMiIH0p
CisgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgLkNhbGwoMCkKKyAgICAgICAgLkVu
ZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55
ZnVuYyIgfSkKKyAgICAgICAgICAuUmVmRnVuYygxKQorICAgICAgICAgIC5DYWxsKDApCisgICAg
ICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigidGVzdDMiLCB7IHBhcmFtczogWyJhbnlm
dW5jIl0sIHJldDogImFueWZ1bmMiIH0pCisgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAg
ICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLlJlZkZ1bmMoMCkKKyAgICAgICAgICAuVGFibGVT
ZXQoKQorICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwg
MCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0NCIsIHsgcGFyYW1z
OiBbXSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAuUmVmRnVuYygxKQorICAgICAgICAg
IC5JMzJDb25zdCgwKQorICAgICAgICAgIC5SZWZGdW5jKDApCisgICAgICAgICAgLlRhYmxlU2V0
KCkKKyAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAsIDAp
CisgICAgICAgIC5FbmQoKQorICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGlt
cDogeyBoOiBpbXBvcnRlZEZ1biB9IH0pOworCisgICAgY29uc3QgbXlmdW4gPSBtYWtlRXhwb3J0
ZWRGdW5jdGlvbigxMzM3KTsKKyAgICBmdW5jdGlvbiBmdW4oaSkgeworICAgICAgICByZXR1cm4g
NDE7CisgICAgfQorCisgICAgZm9yIChsZXQgdGVzdCBvZiBbJDEuZXhwb3J0cy50ZXN0MSwgJDEu
ZXhwb3J0cy50ZXN0M10pIHsKKyAgICAgICAgYXNzZXJ0LmVxKHRlc3QobXlmdW4pLCBteWZ1bikK
KyAgICAgICAgYXNzZXJ0LmVxKHRlc3QobXlmdW4pKCksIDEzMzcpCisgICAgICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gdGVzdChmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRl
ZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorCisgICAgICAg
IGZvciAobGV0IGk9MDsgaTwxMDAwOyArK2kpIHsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3Mo
KCkgPT4gdGVzdChmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNt
IGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgICAgICB9CisgICAg
fQorCisgICAgZm9yIChsZXQgdGVzdCBvZiBbJDEuZXhwb3J0cy50ZXN0MiwgJDEuZXhwb3J0cy50
ZXN0NF0pIHsKKyAgICAgICAgYXNzZXJ0LmVxKHRlc3QoKSwgJDEuZXhwb3J0cy50ZXN0MSkKKyAg
ICAgICAgYXNzZXJ0LmVxKHRlc3QoKShteWZ1biksIG15ZnVuKQorICAgICAgICBhc3NlcnQudGhy
b3dzKCgpID0+IHRlc3QoKShmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRl
ZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorCisgICAgICAg
IGZvciAobGV0IGk9MDsgaTwxMDAwOyArK2kpIHsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3Mo
KCkgPT4gdGVzdCgpKGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdh
c20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgICAgIH0KKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpz
IGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5qcwppbmRleCBkMzhjMjY1YmZm
ZjYxMGFkNDk0ODg0ZjlhNzdhNjM3M2M4NGU1MmEzLi44ZjgxNjM2OWE3NGU4OWU0OWU2OTA5ZGY0
NDU1NTBmZDBmNjZjMjE2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxp
ZGF0aW9uLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKQEAg
LTYzLDcgKzYzLDcgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAg
Y29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpOwogICAgIGJpbi50cmltKCk7CiAKLSAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKSwg
V2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFs
aWRhdGU6IHRhYmxlLnNldCBleHBlY3RzIHRoZSB0YWJsZSB0byBoYXZlIHR5cGUgQW55cmVmLCBp
biBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxl
KGJpbi5nZXQoKSknKSIpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZShiaW4uZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJs
eS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuc2V0IHZhbHVlIHRvIHR5cGUgQW55cmVm
IGV4cGVjdGVkIEFueWZ1bmMsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKScpIik7CiB9CiAKIHsKQEAgLTg2LDcgKzg2
LDcgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgY29uc3QgYmlu
ID0gYnVpbGRlci5XZWJBc3NlbWJseSgpOwogICAgIGJpbi50cmltKCk7CiAKLSAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKSwgV2ViQXNzZW1i
bHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRh
YmxlLmdldCBleHBlY3RzIHRoZSB0YWJsZSB0byBoYXZlIHR5cGUgQW55cmVmLCBpbiBmdW5jdGlv
biBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQo
KSknKSIpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShi
aW4uZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUg
ZG9lc24ndCB2YWxpZGF0ZTogY29udHJvbCBmbG93IHJldHVybnMgd2l0aCB1bmV4cGVjdGVkIHR5
cGUsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5N
b2R1bGUoYmluLmdldCgpKScpIik7CiB9CiAKIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93
YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCmluZGV4IDMwYmJjNzQ3MjM3ODM5MjJl
ZGJiZjYzNDk5MzQ5MGY0OGI3YjdlMDIuLjY0Y2EwYjViMjA4ZDkxYjJiZjc4NjU1NzU3MTI0NzNk
NWI3MjUwYTMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysrIGIvSlNUZXN0
cy93YXNtL3dhc20uanNvbgpAQCAtMTEsMTMgKzExLDEzIEBACiAgICAgICAgICJpNjQiOiAgICAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIg
fSwKICAgICAgICAgImYzMiI6ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMs
ICJiM3R5cGUiOiAiQjM6OkZsb2F0IiB9LAogICAgICAgICAiZjY0IjogICAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6ICAtNCwgImIzdHlwZSI6ICJCMzo6RG91YmxlIiB9LAotICAgICAg
ICAiYW55ZnVuYyI6IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0xNiwgImIzdHlwZSI6
ICJCMzo6Vm9pZCIgfSwKKyAgICAgICAgImFueWZ1bmMiOiB7ICJ0eXBlIjogInZhcmludDciLCAi
dmFsdWUiOiAtMTYsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiYW55cmVmIjog
IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQi
IH0sCiAgICAgICAgICJmdW5jIjogICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTMy
LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAidm9pZCI6ICAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6IC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQogICAgIH0sCi0g
ICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJhbnlyZWYiXSwK
LSAgICAiYmxvY2tfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgInZvaWQiLCAi
YW55cmVmIl0sCisgICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIs
ICJhbnlyZWYiLCAiYW55ZnVuYyJdLAorICAgICJibG9ja190eXBlIjogWyJpMzIiLCAiaTY0Iiwg
ImYzMiIsICJmNjQiLCAidm9pZCIsICJhbnlyZWYiLCAiYW55ZnVuYyJdLAogICAgICJlbGVtX3R5
cGUiOiBbImFueWZ1bmMiLCJhbnlyZWYiXSwKICAgICAiZXh0ZXJuYWxfa2luZCI6IHsKICAgICAg
ICAgIkZ1bmN0aW9uIjogeyAidHlwZSI6ICJ1aW50OCIsICJ2YWx1ZSI6IDAgfSwKQEAgLTU5LDgg
KzU5LDkgQEAKICAgICAgICAgImk2NC5jb25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJz
cGVjaWFsIiwgICAgInZhbHVlIjogIDY2LCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1l
dGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2
YWx1ZSIsICAgICAgICAgICJ0eXBlIjogInZhcmludDY0In1dLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVl
IGludGVycHJldGVkIGFzIGk2NCIgfSwKICAgICAgICAgImY2NC5jb25zdCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDY4LCAicmV0dXJuIjogWyJmNjQi
XSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogImRvdWJsZSJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJh
IGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGY2NCIgfSwKICAgICAgICAgImYzMi5jb25z
dCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDY3LCAi
cmV0dXJuIjogWyJmMzIiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogImZs
b2F0In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGYzMiIgfSwKLSAg
ICAgICAgInJlZi5udWxsIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogMjA4LCAicmV0dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogW10sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IG51bGwgcmVmZXJlbmNlIiB9
LAorICAgICAgICAicmVmLm51bGwiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwi
LCAgICAidmFsdWUiOiAyMDgsICJyZXR1cm4iOiBbImFueWZ1bmMiXSwgICJwYXJhbWV0ZXIiOiBb
XSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgbnVsbCByZWZlcmVu
Y2UiIH0sCiAgICAgICAgICJyZWYuaXNfbnVsbCI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3Bl
Y2lhbCIsICAgICJ2YWx1ZSI6IDIwOSwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRl
ciI6IFsiYW55cmVmIl0sICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZGV0ZXJtaW5lIGlmIGEgcmVm
ZXJlbmNlIGlzIG51bGwiIH0sCisgICAgICAgICJyZWYuZnVuYyI6ICAgICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIxMCwgInJldHVybiI6IFsiYW55ZnVuYyJd
LCAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmV0dXJu
IGEgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbiBhdCB0aGUgZ2l2ZW4gaW5kZXgiIH0sCiAgICAg
ICAgICJnZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2
YWx1ZSI6ICAzMiwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmVhZCBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFt
ZXRlciIgfSwKICAgICAgICAgInNldF9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJz
cGVjaWFsIiwgICAgInZhbHVlIjogIDMzLCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1l
dGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJs
b2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZh
cmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnki
XSwgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3
cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZh
bHVlIiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372170</attachid>
            <date>2019-06-14 19:47:08 -0700</date>
            <delta_ts>2019-06-17 10:39:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198157-20190614194707.patch</filename>
            <type>text/plain</type>
            <size>93160</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjkxNjBiYmQyYTU4NTJlMDg3NWFkNDI1YWQzZWIzM2MzZTA2MjQ0Li41ODNmOTFkYTdiMzMzZjlj
YjVjYjM3Y2ZlMmFlNzFhZTBlNjljNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxOS0wNi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIEZ1
bmNyZWYgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZnVuY3JlZiBpbiBw
YXJhbWV0ZXJzLCBnbG9iYWxzLCBhbmQgaW4gdGFibGUuZ2V0L3NldC4gV2hlbiBjb252ZXJ0aW5n
IGEgSlNWYWx1ZSB0byAKKyAgICAgICAgYSBmdW5jcmVmIChuZWUgYW55ZnVuYyksIHdlIGZpcnN0
IG1ha2Ugc3VyZSBpdCBpcyBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIG9yIG51bGwuIAorCisg
ICAgICAgIFdlIGFsc28gYWRkIHN1cHBvcnQgZm9yIFJlZi5mdW5jLiBBbnl3aGVyZSBhIFJlZi5m
dW5jIGlzIHVzZWQsIChzdGF0aWNhbGx5KSB3ZSBjb25zdHJ1Y3QgYSBKUyB3cmFwcGVyCisgICAg
ICAgIGZvciBpdCBzbyB0aGF0IHdlIG5ldmVyIG5lZWQgdG8gY29uc3RydWN0IEpTVmFsdWVzIHdo
ZW4gaGFuZGxpbmcgcmVmZXJlbmNlcy4gVGhpcyBzaG91bGQgbWFrZSB0aHJlYWRzCisgICAgICAg
IGVhc2llciB0byBpbXBsZW1lbnQuCisKKyAgICAgICAgRmluYWxseSwgd2UgYWRkIHNvbWUgbWlz
c2luZyBib3VuZHMgY2hlY2tzIGZvciB0YWJsZS5nZXQvc2V0LgorCisgICAgICAgICogd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6dG1wRm9yVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjptb3Zl
T3BGb3JWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWly
SVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkTG9j
YWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpB
aXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmMpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBs
YW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToK
KyAgICAgICAgKiB3YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oOgorICAgICAgICAoSlNDOjpX
YXNtOjpDYWxsaW5nQ29udmVudGlvbkFpcjo6bWFyc2hhbGxBcmd1bWVudCBjb25zdCk6CisgICAg
ICAgIChKU0M6Oldhc206OkNhbGxpbmdDb252ZW50aW9uQWlyOjpzZXR1cENhbGwgY29uc3QpOgor
ICAgICAgICAqIHdhc20vV2FzbUV4Y2VwdGlvblR5cGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21G
b3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNWYWx1ZVR5cGUpOgorICAgICAgICAoSlND
OjpXYXNtOjppc1N1YnR5cGUpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6
CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VVbnJlYWNoYWJsZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Okluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6OmdldEZ1bmN0aW9uV3JhcHBlciBjb25zdCk6CisgICAgICAgIChK
U0M6Oldhc206Okluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIpOgorICAgICAgICAqIHdhc20v
V2FzbUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OnJlZmVyZW5jZWRGdW5jdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6YWRkUmVm
ZXJlbmNlZEZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWwpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAg
ICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRl
OjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRSZWZJc051bGwpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpWYWxpZGF0ZTo6YWRkUmVmRnVuYyk6CisgICAgICAgIChKU0M6Oldhc206
OlZhbGlkYXRlOjpzZXRMb2NhbCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRD
YWxsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVy
cy5oOgorICAgICAgICAoSlNDOjppc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yLmg6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OmhhbmRsZUJhZEk2NFVzZSk6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6ZW1pdFdhc21Ub0pTRXhjZXB0aW9uKToKKyAgICAgICAgKiB3
YXNtL2pzL1dhc21Ub0pTLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdyk6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoK
KwogMjAxOS0wNi0xNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXN0b3JlIFBBQyBiYXNlZCBjYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggYWRiMzNmNTQwNDc4MGI1NGQx
YTllODExMTI0OTg3OGMzN2M1YWU3My4uYWIzMDRhNTVkMzZiMzU4NDIyYjFhMDdkMmE0NGIwMDBk
ZjUyMmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwCkBAIC0yMzQsMTAgKzIzNCwxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBSZWZl
cmVuY2VzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxs
KEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJsZXMKLSAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaWR4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgdmFs
dWUpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KEV4
cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpOwogCiAgICAgLy8gTG9jYWxzCiAgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMzcwLDYgKzM3MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gZzMyKCk7CiAgICAgICAgIGNhc2UgVHlwZTo6STY0OgogICAgICAgICBjYXNl
IFR5cGU6OkFueXJlZjoKKyAgICAgICAgY2FzZSBUeXBlOjpBbnlmdW5jOgogICAgICAgICAgICAg
cmV0dXJuIGc2NCgpOwogICAgICAgICBjYXNlIFR5cGU6OkYzMjoKICAgICAgICAgICAgIHJldHVy
biBmMzIoKTsKQEAgLTU1NCw2ICs1NTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
IE1vdmUzMjsKICAgICAgICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZTo6QW55
cmVmOgorICAgICAgICBjYXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAgICAgICByZXR1cm4gTW92
ZTsKICAgICAgICAgY2FzZSBUeXBlOjpGMzI6CiAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0
OwpAQCAtNzk5LDYgKzgwMiw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZTo6QW55
cmVmOgorICAgICAgICBjYXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAgICAgICBhcHBlbmQoTW92
ZSwgYXJnLCBtX2xvY2Fsc1tpXSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBU
eXBlOjpGMzI6CkBAIC04ODQsNiArODg4LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTG9j
YWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBt
X2xvY2Fscy51bmNoZWNrZWRBcHBlbmQobG9jYWwpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICAgICAgY2FzZSBUeXBlOjpBbnlyZWY6CisgICAgICAgIGNhc2UgVHlwZTo6QW55ZnVuYzoK
ICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmltbShKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpKSwgbG9jYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZTo6STMy
OgpAQCAtOTE4LDYgKzkyMyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KEJh
c2ljQmxvY2sqIGJsb2NrLCBUeXBlIHR5cGUsIHVpbnQ2NF90IHZhbHVlKSAtCiAgICAgY2FzZSBU
eXBlOjpJMzI6CiAgICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgY2FzZSBUeXBlOjpBbnlyZWY6Cisg
ICAgY2FzZSBUeXBlOjpBbnlmdW5jOgogICAgICAgICBhcHBlbmQoYmxvY2ssIE1vdmUsIEFyZzo6
YmlnSW1tKHZhbHVlKSwgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpG
MzI6CkBAIC05NTMsMzYgKzk1OSw0NyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZWZJc051
bGwoRXhwcmVzc2lvblR5cGUmIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogICAgIHJl
dHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Np
b25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlz
IGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4u
Ci0gICAgQVNTRVJUKGlkeC50bXAoKSk7Ci0gICAgQVNTRVJUKGlkeC50eXBlKCkgPT0gVHlwZTo6
STMyKTsKLSAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGU6OkFueXJlZik7CisgICAgcmVzdWx0
ID0gdG1wRm9yVHlwZShUeXBlOjpBbnlmdW5jKTsKKyAgICBlbWl0Q0NhbGwoJmRvV2FzbVJlZkZ1
bmMsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBlOjpJMzIsIGluZGV4
KSk7CiAKLSAgICB1aW50NjRfdCAoKmRvR2V0KShJbnN0YW5jZSosIGludDMyX3QpID0gW10gKElu
c3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBpZHgpIC0+IHVpbnQ2NF90IHsKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZS0+dGFibGUoKS0+Z2V0KGlkeCkpOwotICAgIH07
CisgICAgcmV0dXJuIHsgfTsKK30KIAotICAgIGVtaXRDQ2FsbChkb0dldCwgcmVzdWx0LCBpbnN0
YW5jZVZhbHVlKCksIGlkeCk7CithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHBy
ZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1
bHQKK3sKKyAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCisgICAgQVNTRVJUKGluZGV4LnRtcCgpKTsK
KyAgICBBU1NFUlQoaW5kZXgudHlwZSgpID09IFR5cGU6OkkzMik7CisgICAgcmVzdWx0ID0gdG1w
Rm9yVHlwZShUeXBlOjpBbnlyZWYpOworCisgICAgZW1pdENDYWxsKCZnZXRXYXNtVGFibGVFbGVt
ZW50LCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgaW5kZXgpOworICAgIGVtaXRDaGVjayhbJl0g
eworICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29u
ZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKKyAgICB9LCBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRP
ZkJvdW5kc1RhYmxlQWNjZXNzKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJl
c3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUp
IC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCi0gICAgQVNTRVJU
KGlkeC50bXAoKSk7Ci0gICAgQVNTRVJUKGlkeC50eXBlKCkgPT0gVHlwZTo6STMyKTsKKyAgICBB
U1NFUlQoaW5kZXgudG1wKCkpOworICAgIEFTU0VSVChpbmRleC50eXBlKCkgPT0gVHlwZTo6STMy
KTsKICAgICBBU1NFUlQodmFsdWUudG1wKCkpOwogCi0gICAgdm9pZCAoKmRvU2V0KShJbnN0YW5j
ZSosIGludDMyX3QsIHVpbnQ2NF90IHZhbHVlKSA9IFtdIChJbnN0YW5jZSogaW5zdGFuY2UsIGlu
dDMyX3QgaWR4LCB1aW50NjRfdCB2YWx1ZSkgLT4gdm9pZCB7Ci0gICAgICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUgc3VwcG9ydGVkIGhlcmUu
Ci0gICAgICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
MTU3PgotICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+c2V0KGlkeCwgSlNWYWx1ZTo6ZGVjb2Rl
KHZhbHVlKSk7Ci0gICAgfTsKKyAgICBhdXRvIHNob3VsZFRocm93ID0gZzMyKCk7CisgICAgZW1p
dENDYWxsKCZzZXRXYXNtVGFibGVFbGVtZW50LCBzaG91bGRUaHJvdywgaW5zdGFuY2VWYWx1ZSgp
LCBpbmRleCwgdmFsdWUpOwogCi0gICAgZW1pdENDYWxsKGRvU2V0LCBUeXBlZFRtcCgpLCBpbnN0
YW5jZVZhbHVlKCksIGlkeCwgdmFsdWUpOworICAgIGVtaXRDaGVjayhbJl0geworICAgICAgICBy
ZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6WmVybyksIHNob3VsZFRocm93LCBzaG91bGRUaHJvdyk7CisgICAgfSwgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAg
ICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZC
b3VuZHNUYWJsZUFjY2Vzcyk7CisgICAgfSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMTEw
Myw3ICsxMTIwLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFIKICAgICAgICAgYXBwZW5kKG1v
dmVPcEZvclZhbHVlVHlwZSh0eXBlKSwgdmFsdWUsIEFyZzo6YWRkcih0ZW1wKSk7CiAgICAgfQog
Ci0gICAgaWYgKHR5cGUgPT0gQW55cmVmKQorICAgIGlmIChpc1N1YnR5cGUodHlwZSwgQW55cmVm
KSkKICAgICAgICAgZW1pdFdyaXRlQmFycmllckZvckpTV3JhcHBlcigpOwogCiAgICAgcmV0dXJu
IHsgfTsKQEAgLTE2MjMsNiArMTY0MCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJldHVy
bihjb25zdCBDb250cm9sRGF0YSYgZGF0YSwgY29uc3QgRXhwcmVzc2lvbkxpc3QmIHJlCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlw
ZTo6QW55cmVmOgorICAgICAgICBjYXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAgICAgICBhcHBl
bmQoTW92ZSwgcmV0dXJuVmFsdWVzWzBdLCByZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBh
cHBlbmQoUmV0NjQsIHJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDU1
YmQyZDhiNWZlNjYxOTZhNWUyZDVkMjk2MmVkMTZhOTYyNmE5NGQuLjc3NjA5NzQ4NDNlY2NlMmYx
ZTliMTcwNTkyNWU5ODRhYWNjYmEyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE4NywxMCArMTg3LDExIEBAIHB1YmxpYzoK
IAogICAgIC8vIFJlZmVyZW5jZXMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUmIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVp
bnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIC8vIFRhYmxlcwot
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KEV4cHJlc3Np
b25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJl
c3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHBy
ZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CiAKICAgICAvLyBMb2Nh
bHMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJf
dCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC01MzgsNyArNTM5LDcgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KSAtPiBQ
YXJ0aWFsUmVzdWx0CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgVmFyaWFibGUqIGxvY2FsID0gbV9wcm9jLmFkZFZhcmlhYmxlKHRvQjNUeXBlKHR5
cGUpKTsKICAgICAgICAgbV9sb2NhbHMudW5jaGVja2VkQXBwZW5kKGxvY2FsKTsKLSAgICAgICAg
YXV0byB2YWwgPSB0eXBlID09IEFueXJlZiA/IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkgOiAw
OworICAgICAgICBhdXRvIHZhbCA9IGlzU3VidHlwZSh0eXBlLCBBbnlyZWYpID8gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKSA6IDA7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBTZXQsIE9yaWdpbigpLCBsb2NhbCwgY29uc3RhbnQodG9C
M1R5cGUodHlwZSksIHZhbCwgT3JpZ2luKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKQEAg
LTU2NSwzMiArNTY2LDUxIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJl
c3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9
OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBp
ZHgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBp
bmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+Lgot
ICAgIHVpbnQ2NF90ICgqZG9HZXQpKEluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAoSW5zdGFuY2Uq
IGluc3RhbmNlLCBpbnQzMl90IGlkeCkgLT4gdWludDY0X3QgewotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGluc3RhbmNlLT50YWJsZSgpLT5nZXQoaWR4KSk7Ci0gICAgfTsKLQogICAg
IHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0
b0IzVHlwZShBbnlyZWYpLCBvcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9p
ZCo+KGRvR2V0LCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgIGluc3RhbmNlVmFsdWUoKSwgaWR4
KTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3By
b2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZnZXRXYXNtVGFibGVFbGVtZW50
LCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgaW5kZXgpOworCisg
ICAgeworICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCisgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgcmVz
dWx0LCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgMCkpKTsKKworICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAg
ICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJv
dW5kc1RhYmxlQWNjZXNzKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4
LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
dmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGlu
ZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCisgICAg
YXV0byBzaG91bGRUaHJvdyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
bV9wcm9jLCBCMzo6SW50MzIsIG9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2
b2lkKj4oJnNldFdhc21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgaW5z
dGFuY2VWYWx1ZSgpLCBpbmRleCwgdmFsdWUpOworCisgICAgeworICAgICAgICBDaGVja1ZhbHVl
KiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBD
aGVjaywgb3JpZ2luKCksCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgc2hvdWxkVGhyb3csIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCAwKSkpOworCisgICAg
ICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNl
cHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVGFibGVBY2Nlc3MpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIEIzSVJHZW5l
cmF0b3I6OmFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCi0gICAgdm9pZCAo
KmRvU2V0KShJbnN0YW5jZSosIGludDMyX3QsIHVpbnQ2NF90IHZhbHVlKSA9IFtdIChJbnN0YW5j
ZSogaW5zdGFuY2UsIGludDMyX3QgaWR4LCB1aW50NjRfdCB2YWx1ZSkgLT4gdm9pZCB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUg
c3VwcG9ydGVkIGhlcmUuCi0gICAgICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4MTU3PgotICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+c2V0KGlkeCwg
SlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7Ci0gICAgfTsKIAotICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luKCksCi0gICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4o
KSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihkb1NldCwgQjNDQ2FsbFB0clRhZykpLAotICAgICAg
ICBpbnN0YW5jZVZhbHVlKCksIGlkeCwgdmFsdWUpOworICAgIHJlc3VsdCA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6SW50NjQsIG9yaWdpbigpLAor
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJmRvV2FzbVJlZkZ1bmMsIEIzQ0NhbGxQ
dHJUYWcpKSwKKyAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBlOjpJMzIs
IGluZGV4KSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtNjc5LDcgKzY5OSw3IEBAIGF1dG8g
QjNJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSkgLT4gUGFydGlhbFJlCiAgICAgVmFsdWUqIGdsb2JhbHNBcnJheSA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwg
b3JpZ2luKCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9m
ZnNldE9mR2xvYmFscygpKSk7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2luKCksIHZhbHVlLCBnbG9iYWxzQXJyYXksIHNhZmVD
YXN0PGludDMyX3Q+KGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogCi0gICAgaWYgKG1faW5m
by5nbG9iYWxzW2luZGV4XS50eXBlID09IEFueXJlZikKKyAgICBpZiAoaXNTdWJ0eXBlKG1faW5m
by5nbG9iYWxzW2luZGV4XS50eXBlLCBBbnlyZWYpKQogICAgICAgICBlbWl0V3JpdGVCYXJyaWVy
Rm9ySlNXcmFwcGVyKCk7CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IDBiMzhmOWQ1OTZiZmMwN2JjYjY3MmJjMmExN2I3
MWFhZGMxYzQ5YWEuLjY1Y2RlNjYyY2VhZTFjNTJhZTc2Mzk4NzgxNjU0NjBiZWNlZWUxYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTI4Niw3ICsy
ODYsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMoQ29tcGlsYXRpb25FZmZvcnQg
ZWZmb3J0KQogCiAgICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhd
ID0gV1RGTW92ZSgqcGFyc2VBbmRDb21waWxlUmVzdWx0KTsKIAotICAgICAgICBpZiAobV9leHBv
cnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgeworICAgICAgICBp
ZiAobV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSB8fCBt
X21vZHVsZUluZm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMoZnVuY3Rp
b25JbmRleCkpIHsKICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsK
ICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9lbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rp
b25zLmFkZChmdW5jdGlvbkluZGV4LCBtX2NyZWF0ZUVtYmVkZGVyV3JhcHBlcihtX2NvbXBpbGF0
aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF0sIHNpZ25hdHVyZSwgJm1fdW5saW5rZWRXYXNtVG9X
YXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIG1fbW9k
ZSwgZnVuY3Rpb25JbmRleCkpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21DYWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNhbGxpbmdDb252ZW50aW9uLmgKaW5kZXggMTBlYjhjZDRlNzMzNmUwZWYyNGRjOWJlNTA0Yjc1
MDdjZTgzYzc1Mi4uZjdiZTM4YzY3YmVlOWViMzUzMzIxMTNiMjNlNmIyNDNkZTk0Y2RjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9u
LmgKQEAgLTIzNiw2ICsyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGU6OkkzMjoK
ICAgICAgICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZTo6QW55cmVmOgorICAg
ICAgICBjYXNlIFdhc206OkFueWZ1bmM6CiAgICAgICAgICAgICBtYXJzaGFsbEFyZ3VtZW50SW1w
bChtX2dwckFyZ3MsIGdwQXJndW1lbnRDb3VudCwgc3RhY2tPZmZzZXQsIHJlZ0Z1bmMsIHN0YWNr
RnVuYyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlOjpGMzI6CkBAIC0z
MDEsNiArMzAyLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFR5cGU6OkkzMjoKICAgICAgICAg
Y2FzZSBUeXBlOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZTo6QW55cmVmOgorICAgICAgICBjYXNl
IFdhc206OkFueWZ1bmM6CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50
ID0gQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRXhjZXB0aW9uVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUV4Y2VwdGlvblR5cGUuaAppbmRleCBkNDQ2YzBlZDFiNGRkOWY2NmZmNTkzODI2NWEw
NjZlMGRjOTJkNjExLi45MzI4NjFjYTlkZDFlNWFiODM3Mzk1NjE0MzA0NWQxNzUzNTAwM2JjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRXhjZXB0aW9uVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FeGNlcHRpb25UeXBlLmgKQEAg
LTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdhc20gewogCiAjZGVmaW5lIEZPUl9FQUNIX0VYQ0VQ
VElPTihtYWNybykgXAogICAgIG1hY3JvKE91dE9mQm91bmRzTWVtb3J5QWNjZXNzLCAgIk91dCBv
ZiBib3VuZHMgbWVtb3J5IGFjY2VzcyIpIFwKKyAgICBtYWNybyhPdXRPZkJvdW5kc1RhYmxlQWNj
ZXNzLCAgIk91dCBvZiBib3VuZHMgdGFibGUgYWNjZXNzIikgXAogICAgIG1hY3JvKE91dE9mQm91
bmRzQ2FsbEluZGlyZWN0LCAiT3V0IG9mIGJvdW5kcyBjYWxsX2luZGlyZWN0IikgXAogICAgIG1h
Y3JvKE51bGxUYWJsZUVudHJ5LCAgImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5
IikgXAogICAgIG1hY3JvKEJhZFNpZ25hdHVyZSwgImNhbGxfaW5kaXJlY3QgdG8gYSBzaWduYXR1
cmUgdGhhdCBkb2VzIG5vdCBtYXRjaCIpIFwKQEAgLTQyLDcgKzQzLDggQEAgbmFtZXNwYWNlIFdh
c20gewogICAgIG1hY3JvKEludGVnZXJPdmVyZmxvdywgIkludGVnZXIgb3ZlcmZsb3ciKSBcCiAg
ICAgbWFjcm8oU3RhY2tPdmVyZmxvdywgIlN0YWNrIG92ZXJmbG93IikgXAogICAgIG1hY3JvKEk2
NEFyZ3VtZW50VHlwZSwgIldlYkFzc2VtYmx5IGZ1bmN0aW9uIHdpdGggYW4gaTY0IGFyZ3VtZW50
IGNhbid0IGJlIGNhbGxlZCBmcm9tIEphdmFTY3JpcHQiKSBcCi0gICAgbWFjcm8oSTY0UmV0dXJu
VHlwZSwgIldlYkFzc2VtYmx5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBpNjQgY2FuJ3QgYmUgY2Fs
bGVkIGZyb20gSmF2YVNjcmlwdCIpCisgICAgbWFjcm8oSTY0UmV0dXJuVHlwZSwgIldlYkFzc2Vt
Ymx5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBpNjQgY2FuJ3QgYmUgY2FsbGVkIGZyb20gSmF2YVNj
cmlwdCIpIFwKKyAgICBtYWNybyhGdW5jcmVmTm90V2FzbSwgIkFueWZ1bmMgbXVzdCBiZSBhbiBl
eHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikKIAogZW51bSBjbGFzcyBFeGNlcHRpb25UeXBlIDogdWlu
dDMyX3QgewogI2RlZmluZSBNQUtFX0VOVU0oZW51bU5hbWUsIGVycm9yKSBlbnVtTmFtZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA2MjkyMjUwZjI1ZWVhOTQ5
MGM0M2E0ZWJkNDZkMmUyNWUwYzM2Yzk1Li43YzAzNDQxN2ExM2YyNjFiODQ3NWM4ZWRjNDI3NGZh
ODA1MThiOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC02
OCwxMiArNjgsMjAgQEAgaW5saW5lIGJvb2wgaXNWYWx1ZVR5cGUoVHlwZSB0eXBlKQogICAgIGNh
c2UgRjY0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIEFueXJlZjoKKyAgICBjYXNl
IEFueWZ1bmM6CiAgICAgICAgIHJldHVybiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5j
ZXMoKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQorCitpbmxpbmUgYm9vbCBpc1N1YnR5cGUoVHlwZSBzdWIsIFR5cGUgcGFyZW50KQor
eworICAgIGlmIChzdWIgPT0gcGFyZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gc3ViID09IEFueWZ1bmMgJiYgcGFyZW50ID09IEFueXJlZjsKK30KICAgICAKIGVudW0gY2xh
c3MgRXh0ZXJuYWxLaW5kIDogdWludDhfdCB7CiAgICAgLy8gRklYTUUgYXV0by1nZW5lcmF0ZSB0
aGlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjMxCkBAIC0x
MzgsNiArMTQ2LDcgQEAgc3RydWN0IEdsb2JhbCB7CiAgICAgZW51bSBJbml0aWFsaXphdGlvblR5
cGUgewogICAgICAgICBJc0ltcG9ydCwKICAgICAgICAgRnJvbUdsb2JhbEltcG9ydCwKKyAgICAg
ICAgRnJvbVJlZkZ1bmMsCiAgICAgICAgIEZyb21FeHByZXNzaW9uCiAgICAgfTsKIApAQCAtMjM0
LDYgKzI0Myw3IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBpbml0aWFsKCkgY29uc3QgeyByZXR1
cm4gbV9pbml0aWFsOyB9CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0oKSBjb25zdCB7
IHJldHVybiBtX21heGltdW07IH0KICAgICBUYWJsZUVsZW1lbnRUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KKyAgICBXYXNtOjpUeXBlIHdhc21UeXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYgPyBUeXBlOjpBbnlmdW5jIDog
VHlwZTo6QW55cmVmOyB9CiAKIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9pbml0aWFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBk
ZmFlOGYyY2YzYWQyZGExOGFhODhiYjI2YmQ1NThjYzdkODQ3NmRlLi41OWVlZTI2MjJkZTI2ODU5
MzJjNTFjNDJmYmU4YzE5OTNmODRlOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMjgzLDI1ICsyODMsMjUgQEAgYXV0byBGdW5j
dGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAog
CiAgICAgY2FzZSBUYWJsZUdldDogewogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRp
b25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFi
bGVkIik7Ci0gICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCwgaWR4OwotICAgICAgICBXQVNN
X1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGlkeCwgInRhYmxlLmdldCIpOwotICAgICAg
ICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUdldChpZHgsIHJlc3VsdCkpOworICAg
ICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQsIGluZGV4OworICAgICAgICBXQVNNX1RSWV9QT1Bf
RVhQUkVTU0lPTl9TVEFDS19JTlRPKGluZGV4LCAidGFibGUuZ2V0Iik7CisgICAgICAgIFdBU01f
VFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxlR2V0KGluZGV4LCByZXN1bHQpKTsKICAgICAgICAg
bV9leHByZXNzaW9uU3RhY2suYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCiAgICAgY2FzZSBUYWJsZVNldDogewogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5v
dCBlbmFibGVkIik7Ci0gICAgICAgIEV4cHJlc3Npb25UeXBlIHZhbCwgaWR4OworICAgICAgICBF
eHByZXNzaW9uVHlwZSB2YWwsIGluZGV4OwogICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lP
Tl9TVEFDS19JTlRPKHZhbCwgInRhYmxlLnNldCIpOwotICAgICAgICBXQVNNX1RSWV9QT1BfRVhQ
UkVTU0lPTl9TVEFDS19JTlRPKGlkeCwgInRhYmxlLnNldCIpOwotICAgICAgICBXQVNNX1RSWV9B
RERfVE9fQ09OVEVYVChhZGRUYWJsZVNldChpZHgsIHZhbCkpOworICAgICAgICBXQVNNX1RSWV9Q
T1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGluZGV4LCAidGFibGUuc2V0Iik7CisgICAgICAgIFdB
U01fVFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxlU2V0KGluZGV4LCB2YWwpKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBjYXNlIFJlZk51bGw6IHsKICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZl
cmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOwotICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBl
bmQobV9jb250ZXh0LmFkZENvbnN0YW50KEFueXJlZiwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KSkpOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQobV9jb250ZXh0LmFkZENvbnN0
YW50KEFueWZ1bmMsIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKQEAgLTMxNCw2ICszMTQsMTcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAorICAgIGNhc2UgUmVmRnVuYzogeworICAgICAgICB1aW50MzJfdCBp
bmRleDsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5j
ZXMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNl
VmFyVUludDMyKGluZGV4KSwgImNhbid0IGdldCBpbmRleCBmb3IgcmVmLmZ1bmMiKTsKKworICAg
ICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRSZWZGdW5jKGluZGV4LCByZXN1bHQpKTsK
KyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKHJlc3VsdCk7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorCiAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICB1aW50MzJfdCBp
bmRleDsKICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwpAQCAtNjgxLDYgKzY5MiwxMyBA
QCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lv
bigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBj
YXNlIFJlZkZ1bmM6IHsKKyAgICAgICAgdWludDMyX3QgdW51c2VkOworICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih1bnVzZWQpLCAiY2FuJ3QgZ2V0IGltbWVkaWF0
ZSBmb3IgIiwgbV9jdXJyZW50T3Bjb2RlLCAiIGluIHVucmVhY2hhYmxlIGNvbnRleHQiKTsKKyAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVu
Y2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKwogICAgIGNhc2UgR3Jvd01lbW9yeToKICAgICBjYXNlIEN1cnJlbnRNZW1vcnk6
IHsKICAgICAgICAgdWludDhfdCByZXNlcnZlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuY3BwCmluZGV4IDM3MDU5OTY4ZTBiNzg1NGQyNzMzNmYxOTM3ZWMyNThh
MzcwYjQ5NjYuLjY0MWJjZmU0NmQ5ODEzNTYzNjY0ZTc3NTA3NWRlMTZlYzYyNmU1MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1vZHVs
ZUluZm9ybWF0aW9uLmgiCkBAIC01Nyw3ICs1OCw3IEBAIEluc3RhbmNlOjpJbnN0YW5jZShDb250
ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHBvaW50ZXJU
CiAgICAgICAgIG5ldyAoaW1wb3J0RnVuY3Rpb25JbmZvKGkpKSBJbXBvcnRGdW5jdGlvbkluZm8o
KTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KG1fZ2xvYmFscy5nZXQoKSksIDAsIGds
b2JhbE1lbW9yeUJ5dGVTaXplKG1fbW9kdWxlLmdldCgpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKG1fbW9kdWxlLmdldCgpLm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xv
YmFsc1tpXS50eXBlID09IEFueXJlZikKKyAgICAgICAgaWYgKGlzU3VidHlwZShtX21vZHVsZS5n
ZXQoKS5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHNbaV0udHlwZSwgQW55cmVmKSkKICAgICAg
ICAgICAgIG1fZ2xvYmFsc1RvTWFyay5zZXQoaSk7CiAgICAgfQogfQpAQCAtODAsNiArODEsNzEg
QEAgdm9pZCBJbnN0YW5jZTo6c2V0R2xvYmFsKHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAg
ICAgbV9nbG9iYWxzLmdldCgpW2ldLmFueXJlZi5zZXQoKm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0
YW5jZT4oKS0+dm0oKSwgb3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpLCB2YWx1ZSk7CiB9
CiAKK0pTVmFsdWUgSW5zdGFuY2U6OmdldEZ1bmN0aW9uV3JhcHBlcih1bnNpZ25lZCBpKSBjb25z
dAoreworICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcnMuY29udGFpbnMoaSkgPyBtX2Z1bmN0
aW9uV3JhcHBlcnMuZ2V0KGkpLmdldCgpIDoganNOdWxsKCk7Cit9CisKK3ZvaWQgSW5zdGFuY2U6
OnNldEZ1bmN0aW9uV3JhcHBlcih1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEFT
U0VSVChtX293bmVyKTsKKyAgICBBU1NFUlQodmFsdWUuaXNGdW5jdGlvbigqb3duZXI8SlNXZWJB
c3NlbWJseUluc3RhbmNlPigpLT52bSgpKSk7CisgICAgQVNTRVJUKCFtX2Z1bmN0aW9uV3JhcHBl
cnMuY29udGFpbnMoaSkpOworICAgIG1fZnVuY3Rpb25XcmFwcGVycy5zZXQoaSwgV3JpdGVCYXJy
aWVyPFVua25vd24+KCpvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPnZtKCksIG93bmVy
PEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSwgdmFsdWUpKTsKKyAgICBBU1NFUlQoZ2V0RnVuY3Rp
b25XcmFwcGVyKGkpID09IHZhbHVlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgZ2V0V2FzbVRhYmxl
RWxlbWVudChJbnN0YW5jZSogaW5zdGFuY2UsIGludDMyX3Qgc2lnbmVkSW5kZXgpCit7CisgICAg
aWYgKHNpZ25lZEluZGV4IDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB1aW50MzJfdCBp
bmRleCA9IHNpZ25lZEluZGV4OworICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUoKS0+
bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShpbnN0YW5jZS0+dGFibGUoKS0+Z2V0KGluZGV4KSk7Cit9CisKK2Jvb2wgc2V0V2FzbVRhYmxl
RWxlbWVudChJbnN0YW5jZSogaW5zdGFuY2UsIGludDMyX3Qgc2lnbmVkSW5kZXgsIEVuY29kZWRK
U1ZhbHVlIGVuY1ZhbHVlKQoreworICAgIGlmIChzaWduZWRJbmRleCA8IDApCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHVpbnQzMl90IGluZGV4ID0gc2lnbmVkSW5kZXg7CisgICAgaWYg
KGluZGV4ID49IGluc3RhbmNlLT50YWJsZSgpLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNWYWx1ZSk7Cisg
ICAgaWYgKGluc3RhbmNlLT50YWJsZSgpLT50eXBlKCkgPT0gV2FzbTo6VGFibGVFbGVtZW50VHlw
ZTo6QW55cmVmKQorICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+c2V0KGluZGV4LCB2YWx1ZSk7
CisgICAgZWxzZSBpZiAoaW5zdGFuY2UtPnRhYmxlKCktPnR5cGUoKSA9PSBXYXNtOjpUYWJsZUVs
ZW1lbnRUeXBlOjpGdW5jcmVmKSB7CisgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21G
dW5jdGlvbjsKKyAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVy
RnVuY3Rpb247CisKKyAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24oKmluc3Rh
bmNlLT5vd25lcjxKU09iamVjdD4oKS0+dm0oKSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdy
YXBwZXJGdW5jdGlvbikpIHsKKyAgICAgICAgICAgIEFTU0VSVCghIXdhc21GdW5jdGlvbiB8fCAh
IXdhc21XcmFwcGVyRnVuY3Rpb24pOworICAgICAgICAgICAgaWYgKHdhc21GdW5jdGlvbikKKyAg
ICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVu
Y3Rpb24oaW5kZXgsIGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKSwgd2FzbUZ1bmN0aW9uLT5pbXBv
cnRhYmxlRnVuY3Rpb24oKSwgJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCktPmFz
RnVuY3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGluZGV4LCBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1
ZSksIHdhc21XcmFwcGVyRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbVdyYXBw
ZXJGdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7CisgICAgICAgIH0gZWxzZSBpZiAo
dmFsdWUuaXNOdWxsKCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+Y2xlYXIoaW5k
ZXgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworRW5jb2RlZEpTVmFsdWUgZG9XYXNtUmVmRnVuYyhJbnN0YW5jZSogaW5zdGFuY2Us
IHVpbnQzMl90IGluZGV4KQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBpbnN0YW5jZS0+Z2V0RnVu
Y3Rpb25XcmFwcGVyKGluZGV4KTsKKyAgICBBU1NFUlQodmFsdWUuaXNGdW5jdGlvbigqaW5zdGFu
Y2UtPm93bmVyPEpTT2JqZWN0PigpLT52bSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5j
ZS5oCmluZGV4IDVkMWZjZjNmOWQzYjgyYmQwOTgxYTIwY2NjZDU0NGU3ODA3Y2U0ZDcuLjI4MmYx
NjM5ZWE3YmNkN2IzZTZkM2MwOGU1NTQzYTc4NDE2MGQyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCkBAIC0zOSw2ICszOSwxMSBAQAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogc3RydWN0IENvbnRleHQ7CitjbGFzcyBJbnN0YW5jZTsK
KworRW5jb2RlZEpTVmFsdWUgZ2V0V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSosIGludDMyX3Qp
OworYm9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgaW50MzJfdCwgRW5jb2RlZEpT
VmFsdWUgZW5jVmFsdWUpOworRW5jb2RlZEpTVmFsdWUgZG9XYXNtUmVmRnVuYyhJbnN0YW5jZSos
IHVpbnQzMl90KTsKIAogY2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SW5zdGFuY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5zdGFuY2U+IHsKIHB1YmxpYzoK
QEAgLTkxLDYgKzk2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0R2xvYmFsKHVuc2lnbmVkIGks
IGludDY0X3QgYml0cykgeyBtX2dsb2JhbHMuZ2V0KClbaV0ucHJpbWl0aXZlID0gYml0czsgfQog
ICAgIHZvaWQgc2V0R2xvYmFsKHVuc2lnbmVkLCBKU1ZhbHVlKTsKICAgICBjb25zdCBCaXRWZWN0
b3ImIGdsb2JhbHNUb01hcmsoKSB7IHJldHVybiBtX2dsb2JhbHNUb01hcms7IH0KKyAgICBKU1Zh
bHVlIGdldEZ1bmN0aW9uV3JhcHBlcih1bnNpZ25lZCkgY29uc3Q7CisgICAgdm9pZCBzZXRGdW5j
dGlvbldyYXBwZXIodW5zaWduZWQsIEpTVmFsdWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9tZW1v
cnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fZ2xvYmFscyk7IH0KQEAgLTE1OSw2ICsxNjYsNyBA
QCBwcml2YXRlOgogICAgICAgICB1aW50NjRfdCBwcmltaXRpdmU7CiAgICAgfTsKICAgICBNYWxs
b2NQdHI8R2xvYmFsVmFsdWU+IG1fZ2xvYmFsczsKKyAgICBIYXNoTWFwPHVpbnQzMl90LCBXcml0
ZUJhcnJpZXI8VW5rbm93bj4sIEludEhhc2g8dWludDMyX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVpbnQzMl90Pj4gbV9mdW5jdGlvbldyYXBwZXJzOwogICAgIEJpdFZl
Y3RvciBtX2dsb2JhbHNUb01hcms7CiAgICAgRW50cnlGcmFtZSoqIG1fcG9pbnRlclRvVG9wRW50
cnlGcmFtZSB7IG51bGxwdHIgfTsKICAgICB2b2lkKiogbV9wb2ludGVyVG9BY3R1YWxTdGFja0xp
bWl0IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCBhZDVlYjk1MjZhYzdhYzNiZTQzN2ZjNjIzZGYwYmQ3
ZGMyMDgwN2QyLi44OGY2NmNiNjM5MTU5YzM2OWQ5ZGRlNjBhMWZjZTZkYTVkMTcxMjg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24u
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgogCisjaW5jbHVk
ZSA8d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewpAQCAtNjYsNiArNjcsOSBAQCBzdHJ1Y3QgTW9kdWxl
SW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRp
b24+IHsKICAgICB1aW50MzJfdCBtZW1vcnlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1lbW9yeSA/
IDEgOiAwOyB9CiAgICAgdWludDMyX3QgdGFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxl
SW5mb3JtYXRpb24gPyAxIDogMDsgfQogCisgICAgY29uc3QgQml0VmVjdG9yJiByZWZlcmVuY2Vk
RnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VkRnVuY3Rpb25zOyB9CisgICAg
dm9pZCBhZGRSZWZlcmVuY2VkRnVuY3Rpb24odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgbV9yZWZl
cmVuY2VkRnVuY3Rpb25zLnNldChpbmRleCk7IH0KKwogICAgIFZlY3RvcjxJbXBvcnQ+IGltcG9y
dHM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUlu
ZGljZXM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlczsKQEAgLTg0LDYgKzg4LDggQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgdW5z
aWduZWQgZmlyc3RJbnRlcm5hbEdsb2JhbCB7IDAgfTsKICAgICBWZWN0b3I8Q3VzdG9tU2VjdGlv
bj4gY3VzdG9tU2VjdGlvbnM7CiAgICAgUmVmPE5hbWVTZWN0aW9uPiBuYW1lU2VjdGlvbjsKKyAg
ICAKKyAgICBtdXRhYmxlIEJpdFZlY3RvciBtX3JlZmVyZW5jZWRGdW5jdGlvbnM7CiB9OwogCiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5j
cHAKaW5kZXggMzBiNmYzY2VkOWRmNTYyNjIyMjYyNzI1M2MyNDY4NGEzYzhiNDk0My4uMjU0ZTgy
NmE4MDMwOTQ0MGNkMjU3ZjNkNzQ2YjcwMjE5Y2Q0MzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtMjkxLDkgKzI5MSwxMSBA
QCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlR2xvYmFsKCkgLT4gUGFydGlhbFJlc3VsdAogICAg
ICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5pdEV4cHIoaW5pdE9wY29kZSwg
Z2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIsIHR5cGVGb3JJbml0T3Bjb2RlKSk7CiAg
ICAgICAgIGlmIChpbml0T3Bjb2RlID09IEdldEdsb2JhbCkKICAgICAgICAgICAgIGdsb2JhbC5p
bml0aWFsaXphdGlvblR5cGUgPSBHbG9iYWw6OkZyb21HbG9iYWxJbXBvcnQ7CisgICAgICAgIGVs
c2UgaWYgKGluaXRPcGNvZGUgPT0gUmVmRnVuYykKKyAgICAgICAgICAgIGdsb2JhbC5pbml0aWFs
aXphdGlvblR5cGUgPSBHbG9iYWw6OkZyb21SZWZGdW5jOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBnbG9iYWwuaW5pdGlhbGl6YXRpb25UeXBlID0gR2xvYmFsOjpGcm9tRXhwcmVzc2lvbjsK
LSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0eXBlRm9ySW5pdE9wY29kZSAhPSBnbG9iYWwu
dHlwZSwgIkdsb2JhbCBpbml0X2V4cHIgb3Bjb2RlIG9mIHR5cGUgIiwgdHlwZUZvckluaXRPcGNv
ZGUsICIgZG9lc24ndCBtYXRjaCBnbG9iYWwncyB0eXBlICIsIGdsb2JhbC50eXBlKTsKKyAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighaXNTdWJ0eXBlKHR5cGVGb3JJbml0T3Bjb2RlLCBnbG9i
YWwudHlwZSksICJHbG9iYWwgaW5pdF9leHByIG9wY29kZSBvZiB0eXBlICIsIHR5cGVGb3JJbml0
T3Bjb2RlLCAiIGRvZXNuJ3QgbWF0Y2ggZ2xvYmFsJ3MgdHlwZSAiLCBnbG9iYWwudHlwZSk7CiAK
ICAgICAgICAgbV9pbmZvLT5nbG9iYWxzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGdsb2JhbCkp
OwogICAgIH0KQEAgLTQ3OSwxMSArNDgxLDIxIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJ
bml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAg
ICAgfQogCiAgICAgY2FzZSBSZWZOdWxsOiB7Ci0gICAgICAgIHJlc3VsdFR5cGUgPSBBbnlyZWY7
CisgICAgICAgIHJlc3VsdFR5cGUgPSBBbnlmdW5jOwogICAgICAgICBiaXRzT3JJbXBvcnROdW1i
ZXIgPSBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIFJlZkZ1bmM6IHsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGluZGV4KSwgImNhbid0IGdldCByZWYu
ZnVuYyBpbmRleCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4ID49IG1faW5m
by0+ZnVuY3Rpb25zLnNpemUoKSwgInJlZi5mdW5jIGluZGV4IiwgaW5kZXgsICIgZXhjZWVkcyB0
aGUgbnVtYmVyIG9mIGZ1bmN0aW9ucyAiLCBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCkpOworCisg
ICAgICAgIHJlc3VsdFR5cGUgPSBBbnlmdW5jOworICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIg
PSBpbmRleDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAidW5rbm93biBpbml0X2V4cHIgb3Bjb2RlICIsIG9w
Y29kZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5j
cHAKaW5kZXggYTRiNzhlNDU4ZGY0NTk4ZTBjY2RhNjFmYTk0ZWM5MTlhMjlhZmNmNC4uN2YxYWM2
MWVlOGEyNGNkMWU5MThiOGJkZWFjY2I4ZGJlNDM0OGU5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC0xMDMsMTAgKzEwMywxMSBAQCBwdWJsaWM6
CiAKICAgICAvLyBSZWZlcmVuY2VzCiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRS
ZWZJc051bGwoRXhwcmVzc2lvblR5cGUmIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
KyAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCi0gICAgUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxl
U2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUp
OwogCiAgICAgLy8gTG9jYWxzCiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2Nh
bCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0xNzcsMjAgKzE3
OCwyMSBAQCBhdXRvIFZhbGlkYXRlOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUpIC0+IFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gVmFsaWRhdGU6OmFk
ZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFJlc3VsdAorYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBUeXBl
OjpBbnlyZWY7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaWR4LCAi
dGFibGUuZ2V0IGluZGV4IHRvIHR5cGUgIiwgaWR4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7
Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYgIT0g
bV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50eXBlKCksICJ0YWJsZS5nZXQgZXhwZWN0cyB0aGUg
dGFibGUgdG8gaGF2ZSB0eXBlICIsIFR5cGU6OkFueXJlZik7CisgICAgcmVzdWx0ID0gbV9tb2R1
bGUudGFibGVJbmZvcm1hdGlvbi53YXNtVHlwZSgpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxf
SUYoVHlwZTo6STMyICE9IGluZGV4LCAidGFibGUuZ2V0IGluZGV4IHRvIHR5cGUgIiwgaW5kZXgs
ICIgZXhwZWN0ZWQgIiwgVHlwZTo6STMyKTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8g
VmFsaWRhdGU6OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBl
JiB2YWx1ZSkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRUYWJsZVNldChFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUmVzdWx0CiB7Ci0gICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaWR4LCAidGFibGUuc2V0IGluZGV4IHRv
IHR5cGUgIiwgaWR4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7Ci0gICAgV0FTTV9WQUxJREFU
T1JfRkFJTF9JRihUeXBlOjpBbnlyZWYgIT0gdmFsdWUsICJ0YWJsZS5zZXQgdmFsdWUgdG8gdHlw
ZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCBUeXBlOjpBbnlyZWYpOwotICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoVGFibGVFbGVtZW50VHlwZTo6QW55cmVmICE9IG1fbW9kdWxlLnRhYmxlSW5m
b3JtYXRpb24udHlwZSgpLCAidGFibGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlw
ZSAiLCBUeXBlOjpBbnlyZWYpOworICAgIGF1dG8gdHlwZSA9IG1fbW9kdWxlLnRhYmxlSW5mb3Jt
YXRpb24ud2FzbVR5cGUoKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGU6OkkzMiAh
PSBpbmRleCwgInRhYmxlLnNldCBpbmRleCB0byB0eXBlICIsIGluZGV4LCAiIGV4cGVjdGVkICIs
IFR5cGU6OkkzMik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKHZhbHVl
LCB0eXBlKSwgInRhYmxlLnNldCB2YWx1ZSB0byB0eXBlICIsIHZhbHVlLCAiIGV4cGVjdGVkICIs
IHR5cGUpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9tb2R1bGUudGFibGVJbmZvcm1h
dGlvbi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6QW55cmVmCisgICAgICAgICYmIG1fbW9k
dWxlLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYs
ICJ0YWJsZS5zZXQgZXhwZWN0cyB0aGUgdGFibGUgdG8gaGF2ZSB0eXBlIGFueXJlZiBvciBhbnlm
dW5jIik7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMTk4LDcgKzIwMCwxNiBAQCBhdXRvIFZh
bGlkYXRlOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYg
dmFsdWUpIC0+IFJlc3VsdAogYXV0byBWYWxpZGF0ZTo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25U
eXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUmVzdWx0CiB7CiAgICAgcmVz
dWx0ID0gVHlwZTo6STMyOwotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZTo6QW55cmVm
ICE9IHZhbHVlLCAicmVmLmlzX251bGwgdG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCBU
eXBlOjpBbnlyZWYpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1
ZSwgVHlwZTo6QW55cmVmKSwgInJlZi5pc19udWxsIHRvIHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0
ZWQgIiwgVHlwZTo6QW55cmVmKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gVmFsaWRh
dGU6OmFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFJlc3VsdAoreworICAgIHJlc3VsdCA9IFR5cGU6OkFueWZ1bmM7CisgICAgV0FTTV9WQUxJREFU
T1JfRkFJTF9JRihpbmRleCA+PSBtX21vZHVsZS5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCksICJy
ZWYuZnVuYyBpbmRleCAiLCBpbmRleCwgIiBpcyB0b28gbGFyZ2UsIG1heCBpcyAiLCBtX21vZHVs
ZS5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOworICAgIG1fbW9kdWxlLmFkZFJlZmVyZW5jZWRG
dW5jdGlvbihpbmRleCk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMjI0LDcgKzIzNSw3IEBA
IGF1dG8gVmFsaWRhdGU6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSkgLT4gUmVzdWx0CiB7CiAgICAgRXhwcmVzc2lvblR5cGUgbG9jYWxUeXBlOwogICAgIFdB
U01fRkFJTF9JRl9IRUxQRVJfRkFJTFMoZ2V0TG9jYWwoaW5kZXgsIGxvY2FsVHlwZSkpOwotICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobG9jYWxUeXBlICE9IHZhbHVlLCAic2V0X2xvY2FsIHRv
IHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0ZWQgIiwgbG9jYWxUeXBlKTsKKyAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodmFsdWUsIGxvY2FsVHlwZSksICJzZXRfbG9jYWwgdG8g
dHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCBsb2NhbFR5cGUpOwogICAgIHJldHVybiB7IH07
CiB9CiAKQEAgLTM2Miw3ICszNzMsNyBAQCBhdXRvIFZhbGlkYXRlOjphZGRDYWxsKHVuc2lnbmVk
LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlcwogICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSAhPSBhcmdzLnNp
emUoKSwgImFyaXR5IG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmdzLnNpemUoKSwgIiBhcmd1
bWVudHMsIGV4cGVjdGVkICIsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIFdBU01fVkFM
SURBVE9SX0ZBSUxfSUYoYXJnc1tpXSAhPSBzaWduYXR1cmUuYXJndW1lbnQoaSksICJhcmd1bWVu
dCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmdzW2ldLCAiLCBleHBlY3RlZCAiLCBz
aWduYXR1cmUuYXJndW1lbnQoaSkpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFp
c1N1YnR5cGUoYXJnc1tpXSwgc2lnbmF0dXJlLmFyZ3VtZW50KGkpKSwgImFyZ3VtZW50IHR5cGUg
bWlzbWF0Y2ggaW4gY2FsbCwgZ290ICIsIGFyZ3NbaV0sICIsIGV4cGVjdGVkICIsIHNpZ25hdHVy
ZS5hcmd1bWVudChpKSk7CiAKICAgICByZXN1bHQgPSBzaWduYXR1cmUucmV0dXJuVHlwZSgpOwog
ICAgIHJldHVybiB7IH07CkBAIC0zNzUsNyArMzg2LDcgQEAgYXV0byBWYWxpZGF0ZTo6YWRkQ2Fs
bEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVz
c2kKICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgIT0gYXJncy5zaXpl
KCkgLSAxLCAiYXJpdHkgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZ3Muc2l6
ZSgpIC0gMSwgIiBhcmd1bWVudHMsIGV4cGVjdGVkICIsIGFyZ3VtZW50Q291bnQpOwogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRihhcmdzW2ldICE9IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgImFy
Z3VtZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZ3NbaV0sICIs
IGV4cGVjdGVkICIsIHNpZ25hdHVyZS5hcmd1bWVudChpKSk7CisgICAgICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoIWlzU3VidHlwZShhcmdzW2ldLCBzaWduYXR1cmUuYXJndW1lbnQoaSkpLCAi
YXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJnc1tpXSwg
IiwgZXhwZWN0ZWQgIiwgc2lnbmF0dXJlLmFyZ3VtZW50KGkpKTsKIAogICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoYXJncy5sYXN0KCkgIT0gSTMyLCAibm9uLWkzMiBjYWxsX2luZGlyZWN0IGlu
ZGV4ICIsIGFyZ3MubGFzdCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwCmluZGV4IDI2MzEzZTg0MjY5NjU3ZmVlOWI2Y2JkNzNiNTcwNThjNDQ1ZmI1Yjgu
LjY4NTI5NTc4OWUzNmI3Y2ZiNWQ2YjkwOGY0ZjUxNGM3MmNjZGQxM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwuaCIKQEAgLTgzLDYgKzg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElu
dGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQm
IGNvbXAKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFdhc206OkkzMjoK
ICAgICAgICAgY2FzZSBXYXNtOjpBbnlyZWY6CisgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoK
ICAgICAgICAgICAgIGlmIChudW1HUFJzID49IHdhc21DYWxsaW5nQ29udmVudGlvbigpLm1fZ3By
QXJncy5zaXplKCkpCiAgICAgICAgICAgICAgICAgdG90YWxGcmFtZVNpemUgKz0gc2l6ZW9mKHZv
aWQqKTsKICAgICAgICAgICAgICsrbnVtR1BSczsKQEAgLTEyMiwyMCArMTI0LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxh
dGlvbkNvbnRleHQmIGNvbXAKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjIsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zm
c2V0T2ZJbnN0YW5jZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVu
dEdQUjIsIEluc3RhbmNlOjpvZmZzZXRPZlBvaW50ZXJUb1RvcEVudHJ5RnJhbWUoKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjApLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
ICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZ3VtZW50c0luY2x1
ZGVJNjQgPyBFeGNlcHRpb25UeXBlOjpJNjRBcmd1bWVudFR5cGUgOiBFeGNlcHRpb25UeXBlOjpJ
NjRSZXR1cm5UeXBlKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0KLSAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotCi0gICAgICAg
IGppdC5qdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFn
KTsKLSAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsgLy8gV2Ugc2hvdWxkIG5vdCByZWFjaCB0aGlz
LgotCi0gICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKLSAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KHdhc21Ub0pTRXhjZXB0aW9uKSk7Ci0gICAgICAgIH0pOworICAgICAgICBlbWl0
VGhyb3dXYXNtVG9KU0V4Y2VwdGlvbihqaXQsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgYXJndW1l
bnRzSW5jbHVkZUk2NCA/IEV4Y2VwdGlvblR5cGU6Okk2NEFyZ3VtZW50VHlwZSA6IEV4Y2VwdGlv
blR5cGU6Okk2NFJldHVyblR5cGUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApA
QCAtMTY1LDYgKzE1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVh
dGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21wCiAgICAgICAgICAgICBz
d2l0Y2ggKHNpZ25hdHVyZS5hcmd1bWVudChpKSkgewogICAgICAgICAgICAgY2FzZSBXYXNtOjpJ
MzI6CiAgICAgICAgICAgICBjYXNlIFdhc206Okk2NDoKKyAgICAgICAgICAgIGNhc2UgV2FzbTo6
QW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgogICAgICAgICAgICAgICAg
IGlmIChudW1HUFJzID49IHdhc21DYWxsaW5nQ29udmVudGlvbigpLm1fZ3ByQXJncy5zaXplKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ25hdHVyZS5hcmd1bWVudChpKSA9PSBXYXNt
OjpJMzIpIHsKQEAgLTI1MCw3ICsyNDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5j
dGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAogICAg
ICAgICBqaXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKU1ZhbHVlUmVncyB7IEdQ
UkluZm86OnJldHVyblZhbHVlR1BSIH0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206
OkFueXJlZjoKLSAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMg
b25jZSB0aGV5IGFyZSBzdXBwb3J0ZWQgaGVyZS4KKyAgICBjYXNlIFdhc206OkFueWZ1bmM6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2FzbTo6STMyOgogICAgICAgICBqaXQuemVyb0V4dGVu
ZDMyVG9QdHIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKQEAgLTI2OCw3ICsyNTgsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4g
Y3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAogICAgIH0KICAg
ICBjYXNlIFdhc206Okk2NDoKICAgICBjYXNlIFdhc206OkZ1bmM6Ci0gICAgY2FzZSBXYXNtOjpB
bnlmdW5jOgogICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlIZWxwZXJzLmgKaW5kZXggZWEyOTJhMjJmNjRlMzg1Y2VkMjMzYjhmNGNiYWM1YzhjMDhj
NmUxZi4uMTNkMGEwOTQ3ZWUxZGYwZWVhMTM2MGY0NjBkMmJkNGM2NTU0NzBlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5o
CkBAIC0xMjIsNyArMTIyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIGlzV2ViQXNzZW1ibHlIb3N0
RnVuY3Rpb24oVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBXZWJBc3NlbWJseUYKIH0KIAogCi1BTFdB
WVNfSU5MSU5FIGJvb2wgaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbihWTSYgdm0sIEpTT2JqZWN0
KiBvYmplY3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbihW
TSYgdm0sIEpTVmFsdWUgb2JqZWN0KQogewogICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHVudXNl
ZDsKICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogdW51c2VkMjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3Bw
CmluZGV4IDY2NmJmNDdmMWZlMjMzMDJmYzMwZmQ0ZTFkYzczOTQ1ZWE0YjNkM2YuLjIwYjYwZmM3
MTE1YWJkMmE3NjI2NzQ3ZGVlNWMxYTk3NDkwNjcwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtOTEs
MTEgKzkxLDExIEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRoaXNPYmplY3QtPmluc3RhbmNlKCkubnVtSW1wb3J0RnVuY3Rpb25zKCk7ICsraSkK
ICAgICAgICAgdmlzaXRvci5hcHBlbmQoKnRoaXNPYmplY3QtPmluc3RhbmNlKCkuaW1wb3J0RnVu
Y3Rpb248V3JpdGVCYXJyaWVyPEpTT2JqZWN0Pj4oaSkpOyAvLyBUaGlzIGFsc28ga2VlcHMgdGhl
IGZ1bmN0aW9ucycgSlNXZWJBc3NlbWJseUluc3RhbmNlIGFsaXZlLgogCi0gICAgZm9yIChzaXpl
X3QgaSA6IHRoaXNPYmplY3QtPmluc3RhbmNlKCkuZ2xvYmFsc1RvTWFyaygpKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUgc3Vw
cG9ydGVkIGhlcmUuCi0gICAgICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4MTU3PgorICAgIGZvciAoc2l6ZV90IGkgOiB0aGlzT2JqZWN0LT5pbnN0YW5j
ZSgpLmdsb2JhbHNUb01hcmsoKSkKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChK
U1ZhbHVlOjpkZWNvZGUodGhpc09iamVjdC0+aW5zdGFuY2UoKS5sb2FkSTY0R2xvYmFsKGkpKSk7
Ci0gICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmluc3Rh
bmNlKCkubW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS5mdW5jdGlvbkluZGV4U3BhY2VTaXpl
KCk7ICsraSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCh0aGlzT2JqZWN0LT5p
bnN0YW5jZSgpLmdldEZ1bmN0aW9uV3JhcHBlcihpKSk7CiB9CiAKIHZvaWQgSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8
V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2RlQmxvY2ssIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCmlu
ZGV4IDk2M2MyODJlOGI4OGRmMjNiYTM5OTdiMWQ3ZDE1MDhjZDJjZjg4YzEuLjhhYjJmOTAzYWNh
YzE1YjEzYTFkZTM5MjQ3YzA1NTA1MmVkY2YzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCkBA
IC00OCw2ICs0OCwxMiBAQCBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogCiBjb25zdCBDbGFzc0lu
Zm8gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuUnVu
dGltZUVycm9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKSB9OwogCitKU09iamVjdCogY3JlYXRl
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CisgICAgcmV0dXJuIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCB2
bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBtZXNz
YWdlKTsKK30KICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKaW5k
ZXggNjhkM2FkMTQ2NWIxYWY4ZTZlMTE2OTM2ZmExYmM5MmY2ZWE2NTFkNS4uODYxZjQ3MmYzZGI3
NzA5N2VhM2JjYzI0YzkyNDYzYTljMTFiOGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaApAQCAtNDMs
NiArNDMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihWTSYs
IFN0cnVjdHVyZSopOwogfTsKIAorSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IoRXhlY1N0YXRlKiwgVk0mLCBjb25zdCBTdHJpbmcmKTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggNWJmZjljYzZkMDQ0MWYwZWZjZjIxYjlkY2Y5
ODgxMDdmYjU2ODhiYi4uOGU3MThlYTYwMGQ3MThhZjU1MDA5MDk0Mzc2MTlhZDE3MGVlNTQyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlv
bnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhl
bHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAt
NjUsNyArNjYsNiBAQCBzdGF0aWMgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21F
bnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiBoYW5kbGVCYQogICAgICAgICBzd2l0Y2ggKGFy
Z1R5cGUpIHsKICAgICAgICAgY2FzZSBWb2lkOgogICAgICAgICBjYXNlIEZ1bmM6Ci0gICAgICAg
IGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKICAgICAgICAgY2FzZSBJNjQ6IHsKQEAgLTE2MiwxMCArMTYyLDEwIEBAIEV4cGVjdGVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2Fz
bVRvSlMoVk0qIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKICAgICAgICAgICAg
IGNhc2UgVm9pZDoKICAgICAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAgICAgICAgIGNhc2UgQW55
ZnVuYzoKICAgICAgICAgICAgIGNhc2UgSTY0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBjYXNlIEFueXJlZjoKKyAgICAgICAgICAg
IGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgSTMyOiB7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIGdwclJlZzsKICAgICAgICAgICAgICAgICBpZiAobWFyc2hhbGxlZEdQUnMgPCB3YXNt
Q0MubV9ncHJBcmdzLnNpemUoKSkKQEAgLTIzNywxNCArMjM3LDE3IEBAIEV4cGVjdGVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRv
SlMoVk0qIHZtCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgewogICAgICAg
ICAgICAgICAgICAgICBjYXNlIFZvaWQ6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRnVuYzoK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBBbnlmdW5jOgogICAgICAgICAgICAgICAgICAgICBj
YXNlIEk2NDoKICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgSTMyOgogICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnID0ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYnVmZmVyW2FyZ051bV0p
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIEFueWZ1bmM6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRl
Y29kZShidWZmZXJbYXJnTnVtXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNX
ZWJBc3NlbWJseUhvc3RGdW5jdGlvbigqdm0sIGFyZykgfHwgYXJnLmlzTnVsbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQW55cmVmOgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBwb3J0ZWQg
aGVyZS4KICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShidWZm
ZXJbYXJnTnVtXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBGMzI6CkBAIC0yNjgsNyArMjcxLDYgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhW
TSogdm0KICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWFsUmVzdWx0OwogICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoKSkgewogICAgICAgICAgICAgICAgIGNh
c2UgRnVuYzoKLSAgICAgICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBJNjQ6CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc4LDYgKzI4MCwxMSBAQCBFeHBl
Y3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1
cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICAgICAgICAgICAgICByZWFsUmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQudG9JbnQzMihl
eGVjKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgY2FzZSBBbnlmdW5jOiB7CisgICAgICAgICAgICAgICAgICAgIHJlYWxS
ZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHJlc3VsdC5pc0Z1bmN0aW9uKCp2bSkgfHwgcmVzdWx0LmlzTnVsbCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNh
c2UgQW55cmVmOiB7CiAgICAgICAgICAgICAgICAgICAgIHJlYWxSZXN1bHQgPSBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzEsMTAgKzM3
OCwxMCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwg
QmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICAgICAgc3dpdGNoIChhcmdU
eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFZvaWQ6CiAgICAgICAgICAgICBjYXNlIEZ1bmM6Ci0g
ICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAgICBjYXNlIEk2NDoKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgog
ICAgICAgICAgICAgY2FzZSBBbnlyZWY6CisgICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAg
ICAgICAgICBjYXNlIEkzMjogewogICAgICAgICAgICAgICAgIEdQUlJlZyBncHJSZWc7CiAgICAg
ICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRHUFJzIDwgd2FzbUNDLm1fZ3ByQXJncy5zaXplKCkp
CkBAIC0zOTAsNyArMzk3LDYgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21F
bnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgICAg
ICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwclJlZywgZ3ByUmVnKTsgLy8gQ2xlYXIg
bm9uLWludDMyIGFuZCBub24tdGFnIGJpdHMuCiAgICAgICAgICAgICAgICAgICAgIGppdC5ib3hJ
bnQzMihncHJSZWcsIEpTVmFsdWVSZWdzKGdwclJlZyksIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRv
IGJveCB3YXNtIEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUgc3VwcG9ydGVkIGhlcmUuCiAgICAgICAg
ICAgICAgICAgaml0LnN0b3JlNjQoZ3ByUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KGNhbGxl
ZUZyYW1lT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKz0gc2l6
ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ0MSwxMCArNDQ3LDEw
IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5k
aW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUp
IHsKICAgICAgICAgICAgIGNhc2UgVm9pZDoKICAgICAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAg
ICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgSTY0OgogICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCiAgICAg
ICAgICAgICBjYXNlIEFueXJlZjoKKyAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAg
ICAgIGNhc2UgSTMyOgogICAgICAgICAgICAgICAgIC8vIFNraXBwZWQ6IGhhbmRsZWQgYWJvdmUu
CiAgICAgICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRHUFJzID49IHdhc21DQy5tX2dwckFyZ3Mu
c2l6ZSgpKQpAQCAtNTE5LDcgKzUyNSw2IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAg
ICAgIC8vIERpc2NhcmQuCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRnVuYzoKLSAgICBjYXNl
IEFueWZ1bmM6CiAgICAgICAgIC8vIEZvciB0aGUgSmF2YVNjcmlwdCBlbWJlZGRpbmcsIGltcG9y
dHMgd2l0aCB0aGVzZSB0eXBlcyBpbiB0aGVpciBzaWduYXR1cmUgcmV0dXJuIGFyZSBhIFdlYkFz
c2VtYmx5Lk1vZHVsZSB2YWxpZGF0aW9uIGVycm9yLgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTU1Myw2ICs1NTgsNyBAQCBFeHBlY3Rl
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+
IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICBjYXNlIEFueWZ1bmM6CiAgICAgY2FzZSBBbnlyZWY6CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRjMyOiB7CkBAIC02OTUsNiArNzAxLDI1IEBAIHZvaWQqIHdhc21Ub0pT
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlLCBJbnN0
YW5jZSogd2FzCiAgICAgcmV0dXJuIHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93OwogfQogCit2
b2lkIGVtaXRUaHJvd1dhc21Ub0pTRXhjZXB0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcg
d2FzbUluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHdh
c21JbnN0YW5jZSAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyh3YXNtSW5zdGFuY2UsIFdhc206Okluc3RhbmNlOjpvZmZzZXRP
ZlBvaW50ZXJUb1RvcEVudHJ5RnJhbWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlG
cmFtZUNhbGxlZVNhdmVzQnVmZmVyKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0Lm1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4odHlwZSkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworCisgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCisgICAgaml0Lmp1bXAoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcpOworICAgIGppdC5i
cmVha3BvaW50KCk7IC8vIFdlIHNob3VsZCBub3QgcmVhY2ggdGhpcy4KKworICAgIGppdC5hZGRM
aW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgbGlua0J1ZmZl
ci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oV2FzbTo6d2FzbVRvSlNF
eGNlcHRpb24pKTsKKyAgICB9KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XYXNtVG9KUy5oCmluZGV4IGUwYzc0YzMzODM2ZjA1MmY2MGZlODc0ZTkzYTBjNzFkNjgzZjg2
MWUuLjU0NDU4MDBiNDg3MjRjNzcyOGEzOWU2MmI3MmIwMDdjNjFiODc4YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBJ
bnN0YW5jZTsKIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+
LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExp
bmtJbmZvcywgU2lnbmF0dXJlSW5kZXgsIHVuc2lnbmVkIGltcG9ydEluZGV4KTsKIAogdm9pZCog
d2FzbVRvSlNFeGNlcHRpb24oRXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSW5zdGFu
Y2UqKTsKK3ZvaWQgZW1pdFRocm93V2FzbVRvSlNFeGNlcHRpb24oQ0NhbGxIZWxwZXJzJiwgR1BS
UmVnIHdhc21JbnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSk7CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggOTFiNWI4Mzg4NTIwYTE0MmFhZTA5YzUyZGMz
ZmM4NTM4ZTE3YmNmZi4uZDg5NzE1MDQyNjA1ZDczZTNjN2I0NTMyYjYzOTk3MDRjM2Y5MzU1OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlG
dW5jdGlvbi5jcHAKQEAgLTg0LDYgKzg0LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgY2FzZSBXYXNtOjpJMzI6CiAgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYXJn
LnRvSW50MzIoZXhlYykpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2FzbTo6
QW55ZnVuYzogeworICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZt
LCBhcmcpICYmICFhcmcuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcihleGVjLCB2bSwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1
bmN0aW9uIikpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
V2FzbTo6QW55cmVmOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6STY0
OgpAQCAtOTcsNyArMTAyLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV2FzbTo6Vm9pZDoKICAgICAgICAgY2FzZSBXYXNtOjpGdW5jOgot
ICAgICAgICBjYXNlIFdhc206OkFueWZ1bmM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjI4LDYgKzIzMiw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBv
aW50U2xvdygpCiAgICAgICAgICAgICBhcmd1bWVudHNJbmNsdWRlSTY0ID0gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OkFueXJlZjoKKyAgICAgICAgY2FzZSBX
YXNtOjpBbnlmdW5jOgogICAgICAgICBjYXNlIFdhc206OkkzMjoKICAgICAgICAgICAgIGlmIChu
dW1HUFJzID49IFdhc206Ondhc21DYWxsaW5nQ29udmVudGlvbigpLm1fZ3ByQXJncy5zaXplKCkp
CiAgICAgICAgICAgICAgICAgdG90YWxGcmFtZVNpemUgKz0gc2l6ZW9mKENQVVJlZ2lzdGVyKTsK
QEAgLTMwMyw2ICszMDgsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IFdlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAg
ICAgICAgICAgKytudW1HUFJzOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzogeworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KKyAgICAgICAgICAgICAgICBib29sICgqc2hvdWxkVGhyb3cp
KFdhc206Okluc3RhbmNlKiwgSlNWYWx1ZSkgPSBbXSAoV2FzbTo6SW5zdGFuY2UqIHdhc21JbnN0
YW5jZSwgSlNWYWx1ZSBhcmcpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gd2FzbUluc3RhbmNlLT5vd25lcjxKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U+KCk7CisgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBhcmcpICYmICFhcmcuaXNOdWxsKCk7Cisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoJmluc3RhbmNlKCktPmluc3RhbmNlKCkpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBqc09mZnNldCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CisgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHNob3Vs
ZFRocm93KT4oR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisK
KyAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KHNob3VsZFRocm93KSk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2Fs
bEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7CisKKyAgICAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgV2Fz
bTo6QW55cmVmOiB7CiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgc2NyYXRjaEdQUik7
CiAKQEAgLTQ2NiwxMyArNDkyLDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgICAg
IGlzTmFOLmxpbmsoJmppdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFdhc206
OkFueXJlZjogewotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVm
cyBvbmNlIHRoZXkgYXJlIHN1cHBvcnRlZCBoZXJlLgorICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoK
KyAgICBjYXNlIFdhc206OkFueXJlZjoKICAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2Ug
V2FzbTo6STY0OgogICAgIGNhc2UgV2FzbTo6RnVuYzoKLSAgICBjYXNlIFdhc206OkFueWZ1bmM6
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwCmluZGV4IDRmODAxZTU3NjkyN2ZmNjZlZTUwYzY1MDg5MGVmZTAyMTcw
N2I4ZjIuLjEyYjFjZWYyZGY0Njg3OWEyYzdmMWIzNzFmNGM1OTM5OWJlYzY2MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5jcHAKQEAgLTIzNSwxMCArMjM1LDE1IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2Jq
CiAgICAgICAgICAgICAvLyBpaS4gSWYgdGhlIGdsb2JhbF90eXBlIG9mIGkgaXMgaTY0IG9yIFR5
cGUodikgaXMgbm90IE51bWJlciwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAg
ICAgICAgICBpZiAobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50
eXBlID09IFdhc206Okk2NCkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0
ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9y
dCwgImltcG9ydGVkIGdsb2JhbCIsICJjYW5ub3QgYmUgYW4gaTY0IikpKTsKLSAgICAgICAgICAg
IGlmIChtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUgIT0g
V2FzbTo6QW55cmVmICYmICF2YWx1ZS5pc051bWJlcigpKQorICAgICAgICAgICAgaWYgKCFpc1N1
YnR5cGUobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlLCBX
YXNtOjpBbnlyZWYpICYmICF2YWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0
RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSBudW1iZXIi
KSkpOwogICAgICAgICAgICAgLy8gaWlpLiBBcHBlbmQgVG9XZWJBc3NlbWJseVZhbHVlKHYpIHRv
IGltcG9ydHMuCiAgICAgICAgICAgICBzd2l0Y2ggKG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNb
aW1wb3J0LmtpbmRJbmRleF0udHlwZSkgeworICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlmdW5j
OgorICAgICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgdmFs
dWUpICYmICF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVz
c2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAibXVzdCBiZSBhIHdhc20gZXhwb3J0ZWQg
ZnVuY3Rpb24gb3IgbnVsbCIpKSk7CisgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFu
Y2UoKS5zZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlyZWY6CiAgICAgICAgICAgICAgICAg
bV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzE5LDYgKzMyNCw0NyBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmpl
Y3QqIGltcG9ydE9iagogICAgICAgICB9CiAgICAgfQogCisgICAgdW5zaWduZWQgZnVuY3Rpb25J
bXBvcnRDb3VudCA9IGNvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpOworICAgIGF1dG8g
bWFrZUZ1bmN0aW9uV3JhcHBlciA9IFsmXSAoY29uc3QgU3RyaW5nJiBmaWVsZCwgdWludDMyX3Qg
aW5kZXgpIC0+IEpTVmFsdWUgeworICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IG1hZGUgYSB3cmFw
cGVyLCBkbyBub3QgbWFrZSBhIG5ldyBvbmUuCisgICAgICAgIEpTVmFsdWUgd3JhcHBlciA9IG1f
aW5zdGFuY2UtPmluc3RhbmNlKCkuZ2V0RnVuY3Rpb25XcmFwcGVyKGluZGV4KTsKKworICAgICAg
ICBpZiAoIXdyYXBwZXIuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKKwor
ICAgICAgICAvLyAxLiBJZiBlIGlzIGEgY2xvc3VyZSBjOgorICAgICAgICAvLyAgIGkuIElmIHRo
ZXJlIGlzIGFuIEV4cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3QgZnVuYyBpbiBmdW5jcyB3
aG9zZSBmdW5jLltbQ2xvc3VyZV1dIGVxdWFscyBjLCB0aGVuIHJldHVybiBmdW5jLgorICAgICAg
ICAvLyAgIGlpLiAoTm90ZTogQXQgbW9zdCBvbmUgd3JhcHBlciBpcyBjcmVhdGVkIGZvciBhbnkg
Y2xvc3VyZSwgc28gZnVuYyBpcyB1bmlxdWUsIGV2ZW4gaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9j
Y3VycmFuY2VzIGluIHRoZSBsaXN0LiBNb3Jlb3ZlciwgaWYgdGhlIGl0ZW0gd2FzIGFuIGltcG9y
dCB0aGF0IGlzIGFscmVhZHkgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCwgdGhl
biB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0IHdpbGwgYmUgZm91bmQuIEZvciBpbXBvcnRz
IHRoYXQgYXJlIHJlZ3VsYXIgSlMgZnVuY3Rpb25zLCBhIG5ldyB3cmFwcGVyIHdpbGwgYmUgY3Jl
YXRlZC4pCisgICAgICAgIGlmIChpbmRleCA8IGZ1bmN0aW9uSW1wb3J0Q291bnQpIHsKKyAgICAg
ICAgICAgIEpTT2JqZWN0KiBmdW5jdGlvbkltcG9ydCA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCku
aW1wb3J0RnVuY3Rpb248V3JpdGVCYXJyaWVyPEpTT2JqZWN0Pj4oaW5kZXgpLT5nZXQoKTsKKyAg
ICAgICAgICAgIGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBmdW5jdGlvbkltcG9y
dCkpCisgICAgICAgICAgICAgICAgd3JhcHBlciA9IGZ1bmN0aW9uSW1wb3J0OworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJl
SW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRl
eCk7CisgICAgICAgICAgICAgICAgd3JhcHBlciA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvblN0cnVjdHVyZSgpLCBmdW5jdGlvbkltcG9ydCwgaW5kZXgsIG1faW5zdGFuY2Uu
Z2V0KCksIHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vICAgaWlpLiBPdGhlcndpc2U6CisgICAgICAgICAgICAvLyAgICAgYS4g
TGV0IGZ1bmMgYmUgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCBjcmVhdGVkIGZy
b20gYy4KKyAgICAgICAgICAgIC8vICAgICBiLiBBcHBlbmQgZnVuYyB0byBmdW5jcy4KKyAgICAg
ICAgICAgIC8vICAgICBjLiBSZXR1cm4gZnVuYy4KKyAgICAgICAgICAgIFdhc206OkNhbGxlZSYg
ZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5lbWJlZGRlckVudHJ5cG9pbnRD
YWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKKyAgICAgICAgICAgIFdhc206Oldh
c21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRMb2NhdGlvbiBlbnRyeXBvaW50TG9hZExv
Y2F0aW9uID0gY29kZUJsb2NrLT5lbnRyeXBvaW50TG9hZExvY2F0aW9uRnJvbUZ1bmN0aW9uSW5k
ZXhTcGFjZShpbmRleCk7CisgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1
cmVJbmRleCA9IG1vZHVsZS0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGlu
ZGV4KTsKKyAgICAgICAgICAgIGNvbnN0IFdhc206OlNpZ25hdHVyZSYgc2lnbmF0dXJlID0gV2Fz
bTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAg
ICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgZmllbGQsIG1faW5zdGFuY2Uu
Z2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlwb2ludExvYWRMb2NhdGlvbiwg
c2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgd3JhcHBlciA9IGZ1bmN0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgQVNTRVJUKHdyYXBwZXIuaXNGdW5jdGlvbih2bSkpOworICAgICAgICBt
X2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEZ1bmN0aW9uV3JhcHBlcihpbmRleCwgd3JhcHBlcik7
CisKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRl
eCA6IG1vZHVsZUluZm9ybWF0aW9uLnJlZmVyZW5jZWRGdW5jdGlvbnMoKSkKKyAgICAgICAgbWFr
ZUZ1bmN0aW9uV3JhcHBlcigiUmVmZXJlbmNlZCBmdW5jdGlvbiIsIGluZGV4KTsKKwogICAgIC8v
IEdsb2JhbHMKICAgICB7CiAgICAgICAgIGZvciAoc2l6ZV90IGdsb2JhbEluZGV4ID0gbW9kdWxl
SW5mb3JtYXRpb24uZmlyc3RJbnRlcm5hbEdsb2JhbDsgZ2xvYmFsSW5kZXggPCBtb2R1bGVJbmZv
cm1hdGlvbi5nbG9iYWxzLnNpemUoKTsgKytnbG9iYWxJbmRleCkgewpAQCAtMzI3LDEzICszNzMs
MTYgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgICAgIGlmIChnbG9iYWwuaW5p
dGlhbGl6YXRpb25UeXBlID09IFdhc206Okdsb2JhbDo6RnJvbUdsb2JhbEltcG9ydCkgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlciA8IG1v
ZHVsZUluZm9ybWF0aW9uLmZpcnN0SW50ZXJuYWxHbG9iYWwpOwogICAgICAgICAgICAgICAgIG1f
aW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGdsb2JhbEluZGV4LCBtX2luc3RhbmNlLT5p
bnN0YW5jZSgpLmxvYWRJNjRHbG9iYWwoZ2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIp
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLmluaXRpYWxpemF0aW9uVHlwZSA9PSBX
YXNtOjpHbG9iYWw6OkZyb21SZWZGdW5jKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2Jh
bC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyIDwgbW9kdWxlSW5mb3JtYXRpb24uZnVuY3Rpb25J
bmRleFNwYWNlU2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobWFrZUZ1bmN0aW9uV3Jh
cHBlcigiR2xvYmFsIGluaXQgZXhwciIsIGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVy
KS5pc0Z1bmN0aW9uKHZtKSk7CisgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2Uo
KS5zZXRHbG9iYWwoZ2xvYmFsSW5kZXgsIEpTVmFsdWU6OmVuY29kZShtYWtlRnVuY3Rpb25XcmFw
cGVyKCJHbG9iYWwgaW5pdCBleHByIiwgZ2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIp
KSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0
YW5jZSgpLnNldEdsb2JhbChnbG9iYWxJbmRleCwgZ2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnRO
dW1iZXIpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgU3ltYm9sVGFibGUqIGV4cG9ydFN5bWJv
bFRhYmxlID0gbW9kdWxlLT5leHBvcnRTeW1ib2xUYWJsZSgpOwotICAgIHVuc2lnbmVkIGZ1bmN0
aW9uSW1wb3J0Q291bnQgPSBjb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKIAogICAg
IC8vIExldCBleHBvcnRzIGJlIGEgbGlzdCBvZiAoc3RyaW5nLCBKUyB2YWx1ZSkgcGFpcnMgdGhh
dCBpcyBtYXBwZWQgZnJvbSBlYWNoIGV4dGVybmFsIHZhbHVlIGUgaW4gaW5zdGFuY2UuZXhwb3J0
cyBhcyBmb2xsb3dzOgogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50
ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIG51bGxwdHIs
IGV4cG9ydFN5bWJvbFRhYmxlLCBKU1ZhbHVlKCksIHRoaXMpOwpAQCAtMzQxLDMwICszOTAsOSBA
QCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICBKU1ZhbHVlIGV4cG9ydGVkVmFsdWU7
CiAgICAgICAgIHN3aXRjaCAoZXhwLmtpbmQpIHsKICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5h
bEtpbmQ6OkZ1bmN0aW9uOiB7Ci0gICAgICAgICAgICAvLyAxLiBJZiBlIGlzIGEgY2xvc3VyZSBj
OgotICAgICAgICAgICAgLy8gICBpLiBJZiB0aGVyZSBpcyBhbiBFeHBvcnRlZCBGdW5jdGlvbiBF
eG90aWMgT2JqZWN0IGZ1bmMgaW4gZnVuY3Mgd2hvc2UgZnVuYy5bW0Nsb3N1cmVdXSBlcXVhbHMg
YywgdGhlbiByZXR1cm4gZnVuYy4KLSAgICAgICAgICAgIC8vICAgaWkuIChOb3RlOiBBdCBtb3N0
IG9uZSB3cmFwcGVyIGlzIGNyZWF0ZWQgZm9yIGFueSBjbG9zdXJlLCBzbyBmdW5jIGlzIHVuaXF1
ZSwgZXZlbiBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgb2NjdXJyYW5jZXMgaW4gdGhlIGxpc3QuIE1v
cmVvdmVyLCBpZiB0aGUgaXRlbSB3YXMgYW4gaW1wb3J0IHRoYXQgaXMgYWxyZWFkeSBhbiBFeHBv
cnRlZCBGdW5jdGlvbiBFeG90aWMgT2JqZWN0LCB0aGVuIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBv
YmplY3Qgd2lsbCBiZSBmb3VuZC4gRm9yIGltcG9ydHMgdGhhdCBhcmUgcmVndWxhciBKUyBmdW5j
dGlvbnMsIGEgbmV3IHdyYXBwZXIgd2lsbCBiZSBjcmVhdGVkLikKLSAgICAgICAgICAgIGlmIChl
eHAua2luZEluZGV4IDwgZnVuY3Rpb25JbXBvcnRDb3VudCkgewotICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBleHAua2luZEluZGV4OwotICAgICAgICAgICAgICAgIEpT
T2JqZWN0KiBmdW5jdGlvbkltcG9ydCA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVu
Y3Rpb248V3JpdGVCYXJyaWVyPEpTT2JqZWN0Pj4oZnVuY3Rpb25JbmRleCktPmdldCgpOwotICAg
ICAgICAgICAgICAgIGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBmdW5jdGlvbklt
cG9ydCkpCi0gICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbkltcG9y
dDsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1
bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgZXhw
b3J0ZWRWYWx1ZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblN0cnVjdHVy
ZSgpLCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rpb25JbmRleCwgbV9pbnN0YW5jZS5nZXQoKSwgc2ln
bmF0dXJlSW5kZXgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgLy8gICBpaWkuIE90aGVyd2lzZToKLSAgICAgICAgICAgICAgICAvLyAg
ICAgYS4gTGV0IGZ1bmMgYmUgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCBjcmVh
dGVkIGZyb20gYy4KLSAgICAgICAgICAgICAgICAvLyAgICAgYi4gQXBwZW5kIGZ1bmMgdG8gZnVu
Y3MuCi0gICAgICAgICAgICAgICAgLy8gICAgIGMuIFJldHVybiBmdW5jLgotICAgICAgICAgICAg
ICAgIFdhc206OkNhbGxlZSYgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5l
bWJlZGRlckVudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGV4cC5raW5kSW5k
ZXgpOwotICAgICAgICAgICAgICAgIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246
OkxvYWRMb2NhdGlvbiBlbnRyeXBvaW50TG9hZExvY2F0aW9uID0gY29kZUJsb2NrLT5lbnRyeXBv
aW50TG9hZExvY2F0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKLSAg
ICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVs
ZS0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGV4cC5raW5kSW5kZXgpOwot
ICAgICAgICAgICAgICAgIGNvbnN0IFdhc206OlNpZ25hdHVyZSYgc2lnbmF0dXJlID0gV2FzbTo6
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9u
U3RydWN0dXJlKCksIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZzo6ZnJvbVVURjgo
ZXhwLmZpZWxkKSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBl
bnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7Ci0gICAgICAgICAgICAgICAg
ZXhwb3J0ZWRWYWx1ZSA9IGZ1bmN0aW9uOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZXhw
b3J0ZWRWYWx1ZSA9IG1ha2VGdW5jdGlvbldyYXBwZXIoU3RyaW5nOjpmcm9tVVRGOChleHAuZmll
bGQpLCBleHAua2luZEluZGV4KTsKKyAgICAgICAgICAgIEFTU0VSVChleHBvcnRlZFZhbHVlLmlz
RnVuY3Rpb24odm0pKTsKKyAgICAgICAgICAgIEFTU0VSVChtYWtlRnVuY3Rpb25XcmFwcGVyKFN0
cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxkKSwgZXhwLmtpbmRJbmRleCkgPT0gZXhwb3J0ZWRWYWx1
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkV4
dGVybmFsS2luZDo6VGFibGU6IHsKQEAgLTM4OCw4ICs0MTYsNyBAQCB2b2lkIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGlt
cG9ydE9iagogICAgICAgICAgICAgLy8gUmV0dXJuIFRvSlNWYWx1ZSh2KS4KICAgICAgICAgICAg
IHN3aXRjaCAoZ2xvYmFsLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgot
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9u
Y2UgdGhleSBhcmUgc3VwcG9ydGVkIGhlcmUuCi0gICAgICAgICAgICAgICAgLy8gPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTc+CisgICAgICAgICAgICBjYXNl
IFdhc206OkFueWZ1bmM6CiAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJNjRHbG9iYWwoZXhwLmtpbmRJbmRl
eCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS93YXNtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNt
Lmpzb24KaW5kZXggMzBiYmM3NDcyMzc4MzkyMmVkYmJmNjM0OTkzNDkwZjQ4YjdiN2UwMi4uNzUy
ODVkNmZiNzAwOTAxY2E1Mjc1ZWEzZmQ3NWJiMThkMzBlNDEzYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL3dhc20uanNvbgpAQCAtMTEsMTMgKzExLDEzIEBACiAgICAgICAgICJpNjQiOiAgICAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIg
fSwKICAgICAgICAgImYzMiI6ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMs
ICJiM3R5cGUiOiAiQjM6OkZsb2F0IiB9LAogICAgICAgICAiZjY0IjogICAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6ICAtNCwgImIzdHlwZSI6ICJCMzo6RG91YmxlIiB9LAotICAgICAg
ICAiYW55ZnVuYyI6IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0xNiwgImIzdHlwZSI6
ICJCMzo6Vm9pZCIgfSwKKyAgICAgICAgImFueWZ1bmMiOiB7ICJ0eXBlIjogInZhcmludDciLCAi
dmFsdWUiOiAtMTYsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiYW55cmVmIjog
IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQi
IH0sCiAgICAgICAgICJmdW5jIjogICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTMy
LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAidm9pZCI6ICAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6IC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQogICAgIH0sCi0g
ICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJhbnlyZWYiXSwK
LSAgICAiYmxvY2tfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgInZvaWQiLCAi
YW55cmVmIl0sCisgICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIs
ICJhbnlyZWYiLCAiYW55ZnVuYyJdLAorICAgICJibG9ja190eXBlIjogWyJpMzIiLCAiaTY0Iiwg
ImYzMiIsICJmNjQiLCAidm9pZCIsICJhbnlyZWYiLCAiYW55ZnVuYyJdLAogICAgICJlbGVtX3R5
cGUiOiBbImFueWZ1bmMiLCJhbnlyZWYiXSwKICAgICAiZXh0ZXJuYWxfa2luZCI6IHsKICAgICAg
ICAgIkZ1bmN0aW9uIjogeyAidHlwZSI6ICJ1aW50OCIsICJ2YWx1ZSI6IDAgfSwKQEAgLTU5LDgg
KzU5LDkgQEAKICAgICAgICAgImk2NC5jb25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJz
cGVjaWFsIiwgICAgInZhbHVlIjogIDY2LCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1l
dGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2
YWx1ZSIsICAgICAgICAgICJ0eXBlIjogInZhcmludDY0In1dLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVl
IGludGVycHJldGVkIGFzIGk2NCIgfSwKICAgICAgICAgImY2NC5jb25zdCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDY4LCAicmV0dXJuIjogWyJmNjQi
XSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogImRvdWJsZSJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJh
IGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGY2NCIgfSwKICAgICAgICAgImYzMi5jb25z
dCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDY3LCAi
cmV0dXJuIjogWyJmMzIiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogImZs
b2F0In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGYzMiIgfSwKLSAg
ICAgICAgInJlZi5udWxsIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogMjA4LCAicmV0dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogW10sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IG51bGwgcmVmZXJlbmNlIiB9
LAorICAgICAgICAicmVmLm51bGwiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwi
LCAgICAidmFsdWUiOiAyMDgsICJyZXR1cm4iOiBbImFueWZ1bmMiXSwgICJwYXJhbWV0ZXIiOiBb
XSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgbnVsbCByZWZlcmVu
Y2UiIH0sCiAgICAgICAgICJyZWYuaXNfbnVsbCI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3Bl
Y2lhbCIsICAgICJ2YWx1ZSI6IDIwOSwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRl
ciI6IFsiYW55cmVmIl0sICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZGV0ZXJtaW5lIGlmIGEgcmVm
ZXJlbmNlIGlzIG51bGwiIH0sCisgICAgICAgICJyZWYuZnVuYyI6ICAgICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIxMCwgInJldHVybiI6IFsiYW55ZnVuYyJd
LCAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmV0dXJu
IGEgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbiBhdCB0aGUgZ2l2ZW4gaW5kZXgiIH0sCiAgICAg
ICAgICJnZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2
YWx1ZSI6ICAzMiwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmVhZCBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFt
ZXRlciIgfSwKICAgICAgICAgInNldF9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJz
cGVjaWFsIiwgICAgInZhbHVlIjogIDMzLCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1l
dGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJs
b2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZh
cmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnki
XSwgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3
cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZh
bHVlIiB9LApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNjRlZmM3MTE3MGMyYWJiNDVlZGMyYjU5YWM1YWMwYzRlMDE2ZWNiLi5kYzM1ZjU1
NDRkZWZhOTFkNmFiMzMxYjM0NzBhNDAxNjkzMDJkMDUwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA2
LTEwICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgc3VwcG9ydCBmb3IgRnVuY3JlZiBpbiBwYXJhbWV0ZXJz
IGFuZCByZXR1cm4gdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODE1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuQnVp
bGRlci5wcm90b3R5cGUuX3JlZ2lzdGVyU2VjdGlvbkJ1aWxkZXJzLmNvbnN0LnNlY3Rpb24uaW4u
V0FTTS5kZXNjcmlwdGlvbi5zZWN0aW9uLnN3aXRjaC5zZWN0aW9uLmNhc2Uuc3RyaW5nX2FwcGVh
cmVkX2hlcmUudGhpcy5zZWN0aW9uKToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvYW55cmVm
X2dsb2JhbHMuanM6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZ1bGxHQy5nYy5tYWtlRXhwb3J0ZWRGdW5jdGlvbik6CisgICAgICAgICht
YWtlRXhwb3J0ZWRJZGVudCk6CisgICAgICAgIChtYWtlQW55ZnVuY0lkZW50KToKKyAgICAgICAg
KGZ1bik6CisgICAgICAgIChhc3NlcnQuZXEuaW5zdGFuY2UuZXhwb3J0cy5maXguZnVuKToKKyAg
ICAgICAgKGFzc2VydC5lcS5pbnN0YW5jZS5leHBvcnRzLmZpeCk6CisgICAgICAgIChzdHJpbmdf
YXBwZWFyZWRfaGVyZS5FbmQuRW5kLkZ1bmN0aW9uLkVuZC5Db2RlLkVuZC5XZWJBc3NlbWJseS5p
bXAucmVmKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLkVuZC5FbmQuRnVuY3Rpb24u
RW5kLkNvZGUuRW5kLldlYkFzc2VtYmx5KToKKyAgICAgICAgKEdldExvY2FsLjAuSTMyQ29uc3Qu
MC5UYWJsZVNldC5FbmQuRW5kLldlYkFzc2VtYmx5LmZ1bik6CisgICAgICAgIChHZXRMb2NhbC4w
LkkzMkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseS5hc3NlcnQudGhyb3dzKToK
KyAgICAgICAgKEdldExvY2FsLjAuSTMyQ29uc3QuMC5UYWJsZVNldC5FbmQuRW5kLldlYkFzc2Vt
Ymx5KToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAoYXNzZXJ0LnRocm93cy5k
b1Rlc3QpOgorICAgICAgICAobGV0LmltcG9ydGVkRnVuLm9mKToKKyAgICAgICAgKG1ha2VBbnlm
dW5jSWRlbnQuZnVuKToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5qczoK
KyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAy
MDE5LTA2LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
WWFyciBieXRlY29kZSBjb21waWxhdGlvbiBmYWlsdXJlIHNob3VsZCBiZSBncmFjZWZ1bGx5IGhh
bmRsZWQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzIGIvSlNUZXN0cy93YXNt
L0J1aWxkZXIuanMKaW5kZXggN2U3YzFiN2RjMjIzYzg4M2UxMGU2ZjM3M2JjZGQzYzZjMjlkNTEx
Yi4uNjVmMWY0NzdhOThiODYyMGZjY2QyYWE4ZjhjMTEwOWUwYWY2Nzg2NiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtL0J1aWxkZXIuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKQEAg
LTUzNiw2ICs1MzYsMTAgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goeyB0eXBlLCBvcDogImdldF9nbG9iYWwi
LCBtdXRhYmlsaXR5OiBfbm9ybWFsaXplTXV0YWJpbGl0eShtdXRhYmlsaXR5KSwgaW5pdFZhbHVl
IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1By
b3h5Rm9yKGdsb2JhbEJ1aWxkZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZkZ1bmM6ICh0eXBlLCBpbml0VmFsdWUsIG11dGFiaWxpdHkp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVzaCh7IHR5cGUsIG9w
OiAicmVmLmZ1bmMiLCBtdXRhYmlsaXR5OiBfbm9ybWFsaXplTXV0YWJpbGl0eShtdXRhYmlsaXR5
KSwgaW5pdFZhbHVlIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJy
b3JIYW5kbGluZ1Byb3h5Rm9yKGdsb2JhbEJ1aWxkZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJlZk51bGw6ICh0eXBlLCBtdXRhYmlsaXR5
KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goeyB0eXBlLCBv
cDogInJlZi5udWxsIiwgbXV0YWJpbGl0eTogX25vcm1hbGl6ZU11dGFiaWxpdHkobXV0YWJpbGl0
eSkgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5n
UHJveHlGb3IoZ2xvYmFsQnVpbGRlcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy9hbnlyZWZfZ2xvYmFscy5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl9n
bG9iYWxzLmpzCmluZGV4IDE4NDQ1N2EzM2ZlY2IwYjA4YWRlMTNkZWNmY2YxOWU3ZDMzMDg5YWUu
LjJkM2NhN2JjNjA1Zjc5NzRjZmVmMjU4MTRlODlhZTU4NGIwNTMxMzAgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl9nbG9iYWxzLmpzCisrKyBiL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL2FueXJlZl9nbG9iYWxzLmpzCkBAIC01Niw3ICs1Niw5IEBAIGFzc2VydC5l
cSgkMS5leHBvcnRzLmdldF9nbG9iKCksIG51bGwpCiAKIGNvbnN0IG9iaiA9IHsgdGVzdDogImhp
IiB9CiAKLSQxLmV4cG9ydHMuc2V0X2dsb2Iob2JqKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0
X2dsb2IoKSwgb2JqKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5leHBnbG9iMiA9
IG51bGwsIFR5cGVFcnJvciwgIkF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVy
dHkuIikKKworJDEuZXhwb3J0cy5zZXRfZ2xvYihvYmopOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5n
ZXRfZ2xvYigpLCBvYmopOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5leHBnbG9iMiwgImhpIikKICQx
LmV4cG9ydHMuc2V0X2dsb2IoNSk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIDUp
CiAkMS5leHBvcnRzLnNldF9nbG9iKG51bGwpOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xv
YigpLCBudWxsKQogJDEuZXhwb3J0cy5zZXRfZ2xvYigiaGkiKTsgYXNzZXJ0LmVxKCQxLmV4cG9y
dHMuZ2V0X2dsb2IoKSwgImhpIikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2Vz
L2Z1bmNfcmVmLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzVlMDZlNDY1ODM4NzI4M2M1ODMzNWI5YjY2Zjc3ODUzZjliYjEwMgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCkBAIC0wLDAgKzEs
NDQ3IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBC
dWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitmdWxsR0MoKQorZ2MoKQorCitmdW5jdGlv
biBtYWtlRXhwb3J0ZWRGdW5jdGlvbihpKSB7CisgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVp
bGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5F
bmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImgiKQor
ICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlv
bigiaCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAgICAgICAgICAgLkkz
MkNvbnN0KGkpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCk7CisKKyAgICBj
b25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxl
ID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7CisKKyAgICByZXR1cm4gaW5zdGFuY2UuZXhw
b3J0cy5oCit9CisKK2Z1bmN0aW9uIG1ha2VFeHBvcnRlZElkZW50KCkgeworICAgIGNvbnN0IGJ1
aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAg
LkZ1bmN0aW9uKCJoIikKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAg
ICAgICAgICAuRnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9LCBb
XSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAg
ICAgICAuRW5kKCk7CisKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0
KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAg
IGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7CisKKyAg
ICByZXR1cm4gaW5zdGFuY2UuZXhwb3J0cy5oCit9CisKK2Z1bmN0aW9uIG1ha2VBbnlmdW5jSWRl
bnQoKSB7CisgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5U
eXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5FeHBv
cnQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImgiKQorICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBbImFu
eWZ1bmMiXSwgcmV0OiAiYW55ZnVuYyIgfSwgW10pCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgw
KQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpOworCisgICAgY29uc3QgYmlu
ID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShtb2R1bGUpOworCisgICAgcmV0dXJuIGluc3RhbmNlLmV4cG9ydHMuaAor
fQorCit7CisgICAgY29uc3QgbXlmdW4gPSBtYWtlRXhwb3J0ZWRGdW5jdGlvbigxMzM3KTsKKyAg
ICBmdW5jdGlvbiBmdW4oKSB7CisgICAgICAgIHJldHVybiA0MTsKKyAgICB9CisKKyAgICBjb25z
dCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAg
ICAgIC5GdW5jdGlvbigiaCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiaSIpCisgICAgICAg
ICAgICAgIC5GdW5jdGlvbigiZ2V0X2giKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImZpeCIp
CisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X25vdF9leHBvcnRlZCIpCisgICAgICAgICAg
ICAgIC5GdW5jdGlvbigibG9jYWxfcmVhZCIpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAg
LkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJd
LCByZXQ6ICJhbnlyZWYiIH0sIFsiYW55cmVmIl0pCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgw
KQorICAgICAgICAgICAgICAuU2V0TG9jYWwoMSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDEp
CisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJpIiwgeyBwYXJh
bXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJhbnlmdW5jIiB9LCBbImFueWZ1bmMiXSkKKyAgICAgICAg
ICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5TZXRMb2NhbCgxKQorICAgICAgICAg
ICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVu
Y3Rpb24oImdldF9oIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9LCBbImFueWZ1bmMi
XSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5SZWZGdW5jKDAp
CisgICAgICAgICAgICAgIC5TZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuSWYoImFueWZ1bmMi
KQorICAgICAgICAgICAgICAuQmxvY2soImFueWZ1bmMiLCAoYikgPT4KKyAgICAgICAgICAgICAg
ICBiLkdldExvY2FsKDApCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgLkVsc2UoKQor
ICAgICAgICAgICAgICAuQmxvY2soImFueWZ1bmMiLCAoYikgPT4KKyAgICAgICAgICAgICAgICBi
LkdldExvY2FsKDApCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJmaXgiLCB7IHBhcmFtczog
W10sIHJldDogImFueWZ1bmMiIH0sIFtdKQorICAgICAgICAgICAgICAuUmVmRnVuYygzKQorICAg
ICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X25vdF9leHBvcnRl
ZCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIgfSwgW10pCisgICAgICAgICAgICAgIC5S
ZWZGdW5jKDUpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJy
ZXRfNDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSwgW10pCisgICAgICAgICAgICAgIC5J
MzJDb25zdCg0MikKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24o
ImxvY2FsX3JlYWQiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSwgWyJhbnlmdW5jIl0pCisg
ICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuUmVmSXNOdWxsKCkKKyAg
ICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKTsKKworICAgIGNvbnN0IGJpbiA9IGJ1
aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlKTsKKyAgICBmdWxsR0MoKTsKKworICAgIGFzc2VydC5lcShpbnN0YW5j
ZS5leHBvcnRzLmxvY2FsX3JlYWQoKSwgMSkKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0
cy5oKG51bGwpLCBudWxsKQorCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBv
cnRzLmgoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5j
dGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQuZXEoaW5zdGFu
Y2UuZXhwb3J0cy5oKG15ZnVuKSwgbXlmdW4pCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0
YW5jZS5leHBvcnRzLmgoNSksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdh
c20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzLmgodW5kZWZpbmVkKSwgRXJyb3IsICJBbnlmdW5j
IG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5h
cmdzKScpIikKKworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmkobnVsbCksIG51bGwp
CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuaShteWZ1biksIG15ZnVuKQorICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gaW5zdGFuY2UuZXhwb3J0cy5pKGZ1biksIEVycm9yLCAiQW55ZnVu
YyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4u
YXJncyknKSIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzLmkoNSks
IEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1
YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGluc3Rh
bmNlLmV4cG9ydHMuZ2V0X2goKShmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBv
cnRlZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFz
c2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF9oKCkobnVsbCksIG51bGwpCisgICAgYXNzZXJ0
LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X2goKShteWZ1biksIG15ZnVuKQorICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gaW5zdGFuY2UuZXhwb3J0cy5nZXRfaCgpKDUpLCBFcnJvciwgIkFueWZ1bmMg
bXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFy
Z3MpJykiKQorCisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X25vdF9leHBvcnRl
ZCgpKCksIDQyKQorCisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZml4KCkoKSwgaW5z
dGFuY2UuZXhwb3J0cy5maXgoKSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZml4
KCksIGluc3RhbmNlLmV4cG9ydHMuZml4KTsKK30KKworLy8gR2xvYmFscworCit7CisgICAgY29u
c3QgbXlmdW4gPSBtYWtlRXhwb3J0ZWRGdW5jdGlvbig0Mik7CisgICAgZnVuY3Rpb24gZnVuKCkg
eworICAgICAgICByZXR1cm4gNDE7CisgICAgfQorCisgICAgY29uc3QgJDEgPSAoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVy
KCkpCisgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgLkds
b2JhbCgpLkFueWZ1bmMoImltcCIsICJyZWYiLCAiaW1tdXRhYmxlIikuRW5kKCkKKyAgICAgIC5F
bmQoKQorICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgIC5HbG9iYWwoKQorICAgICAgICAg
IC5SZWZOdWxsKCJhbnlmdW5jIiwgIm11dGFibGUiKQorICAgICAgICAgIC5SZWZOdWxsKCJhbnlm
dW5jIiwgImltbXV0YWJsZSIpCisgICAgICAgICAgLkdldEdsb2JhbCgiYW55ZnVuYyIsIDAsICJt
dXRhYmxlIikKKyAgICAgICAgICAuUmVmRnVuYygiYW55ZnVuYyIsIDIsICJpbW11dGFibGUiKQor
ICAgICAgLkVuZCgpCisgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAuRnVuY3Rpb24oInNldF9n
bG9iIikKKyAgICAgICAgICAuRnVuY3Rpb24oImdldF9nbG9iIikKKyAgICAgICAgICAuRnVuY3Rp
b24oImdsb2JfaXNfbnVsbCIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfZ2xvYl9udWxsIikK
KyAgICAgICAgICAuRnVuY3Rpb24oImdldF9pbXBvcnQiKQorICAgICAgICAgIC5HbG9iYWwoImV4
cGdsb2IiLCAyKQorICAgICAgICAgIC5HbG9iYWwoImV4cGdsb2IyIiwgMCkKKyAgICAgICAgICAu
R2xvYmFsKCJleHBfZ2xvYl9pc19udWxsIiwgNCkKKyAgICAgIC5FbmQoKQorICAgICAgLkNvZGUo
KQorICAgICAgICAuRnVuY3Rpb24oInNldF9nbG9iIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCBy
ZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgIC5TZXRHbG9i
YWwoMSkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJnZXRfZ2xvYiIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAgIC5HZXRHbG9iYWwoMSkK
KyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJnbG9iX2lzX251bGwiLCB7IHBh
cmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgIC5DYWxsKDEpCisgICAgICAgICAg
ICAuUmVmSXNOdWxsKCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJzZXRf
Z2xvYl9udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgLlJl
Zk51bGwoKQorICAgICAgICAgICAgLkNhbGwoMCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAg
LkZ1bmN0aW9uKCJnZXRfaW1wb3J0IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQor
ICAgICAgICAgICAgLkdldEdsb2JhbCgwKQorICAgICAgICAuRW5kKCkKKyAgICAgIC5FbmQoKS5X
ZWJBc3NlbWJseSgpLmdldCgpKSwgeyBpbXA6IHsgcmVmOiBtYWtlRXhwb3J0ZWRGdW5jdGlvbigx
MzM3KSB9IH0pKSgpOworCisgICAgZnVsbEdDKCk7CisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0
cy5nZXRfaW1wb3J0KCkoKSwgMTMzNykKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5leHBnbG9i
LCBudWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmV4cGdsb2IyKCksIDEzMzcpCisgICAg
YXNzZXJ0LmVxKCQxLmV4cG9ydHMuZXhwX2dsb2JfaXNfbnVsbCwgJDEuZXhwb3J0cy5nbG9iX2lz
X251bGwpOworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIG51bGwpCisKKyAg
ICAkMS5leHBvcnRzLnNldF9nbG9iKG15ZnVuKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2ds
b2IoKSwgbXlmdW4pOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpKCksIDQyKTsgYXNz
ZXJ0LmVxKCQxLmV4cG9ydHMuZXhwZ2xvYjIoKSwgMTMzNykKKyAgICAkMS5leHBvcnRzLnNldF9n
bG9iKG51bGwpOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBudWxsKQorICAgICQx
LmV4cG9ydHMuc2V0X2dsb2IobXlmdW4pOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigp
KCksIDQyKTsKKworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5zZXRfZ2xvYihm
dW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChl
dmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMu
Z2xvYl9pc19udWxsKCksIDApCisgICAgJDEuZXhwb3J0cy5zZXRfZ2xvYl9udWxsKCk7IGFzc2Vy
dC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIG51bGwpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9y
dHMuZ2xvYl9pc19udWxsKCksIDEpCit9CisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisg
IC5UeXBlKCkuRW5kKCkKKyAgLkltcG9ydCgpCisgICAgICAgLkdsb2JhbCgpLkFueWZ1bmMoImlt
cCIsICJyZWYiLCAiaW1tdXRhYmxlIikuRW5kKCkKKyAgLkVuZCgpCisgIC5GdW5jdGlvbigpLkVu
ZCgpCisgIC5Db2RlKCkuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgaW1wOiB7IHJlZjog
ZnVuY3Rpb24oKSB7IHJldHVybiAiaGkiIH0gfSB9KSwgRXJyb3IsICJpbXBvcnRlZCBnbG9iYWwg
aW1wOnJlZiBtdXN0IGJlIGEgd2FzbSBleHBvcnRlZCBmdW5jdGlvbiBvciBudWxsIChldmFsdWF0
aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UnKSIpOworCithc3NlcnQudGhyb3dzKCgpID0+
IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgIC5UeXBlKCkuRW5kKCkK
KyAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgLkNvZGUoKQorICAgIC5GdW5jdGlvbigiaCIsIHsgcGFy
YW1zOiBbImFueWZ1bmMiXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgLkdldExvY2FsKDApCisg
ICAgLkVuZCgpCisgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwgRXJyb3IsICJXZWJBc3Nl
bWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogY29udHJvbCBmbG93IHJldHVybnMgd2l0aCB1
bmV4cGVjdGVkIHR5cGUsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUnKSIpOworCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgIC5UeXBlKCkuRW5kKCkKKyAgLkZ1bmN0aW9u
KCkuRW5kKCkKKyAgLlRhYmxlKCkKKyAgICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgIC5FbmQoKQorICAuQ29kZSgpCisgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJh
bXM6IFsiaTMyIl0sIHJldDogInZvaWQiIH0pCisgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgIC5J
MzJDb25zdCgwKQorICAgICAgLlRhYmxlU2V0KCkKKyAgICAuRW5kKCkKKyAgLkVuZCgpLldlYkFz
c2VtYmx5KCkuZ2V0KCkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlk
YXRlOiB0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBJMzIgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVu
Y3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIik7
CisKKy8vIFRhYmxlcworeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAuVHlwZSgpLkVu
ZCgpCisgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAg
IC5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgIC5FbmQoKQor
ICAgICAgLkdsb2JhbCgpCisgICAgICAgICAgLlJlZk51bGwoImFueWZ1bmMiLCAibXV0YWJsZSIp
CisgICAgICAuRW5kKCkKKyAgICAgIC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0
X2dsb2IiKQorICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X2dsb2IiKQorICAgICAgICAgIC5GdW5j
dGlvbigiY2FsbF9nbG9iIikKKyAgICAgICAgICAuRnVuY3Rpb24oInJldF8yMCIpCisgICAgICAu
RW5kKCkKKyAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJzZXRfZ2xvYiIsIHsgcGFy
YW1zOiBbImFueWZ1bmMiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkK
KyAgICAgICAgICAuU2V0R2xvYmFsKDApCisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5j
dGlvbigiZ2V0X2dsb2IiLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0pCisgICAgICAg
ICAgICAuR2V0R2xvYmFsKDApCisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigi
Y2FsbF9nbG9iIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAg
IC5JMzJDb25zdCgwKQorICAgICAgICAgICAgLkdldEdsb2JhbCgwKQorICAgICAgICAgICAgLlRh
YmxlU2V0KCkKKworICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAuSTMyQ29u
c3QoMCkKKyAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMiwwKQorICAgICAgICAuRW5kKCkKKwor
ICAgICAgICAuRnVuY3Rpb24oInJldF8yMCIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIi
IH0pCisgICAgICAgICAgICAuSTMyQ29uc3QoMjApCisgICAgICAgIC5FbmQoKQorICAgICAgLkVu
ZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGNvbnN0IG15ZnVuID0gbWFrZUV4cG9y
dGVkRnVuY3Rpb24oMTMzNyk7CisgICAgZnVuY3Rpb24gZnVuKGkpIHsKKyAgICAgICAgcmV0dXJu
IDQxOworICAgIH0KKyAgICBjb25zdCBpZGVudCA9IG1ha2VFeHBvcnRlZElkZW50KCk7CisKKyAg
ICAkMS5leHBvcnRzLnNldF9nbG9iKCQxLmV4cG9ydHMucmV0XzIwKTsgYXNzZXJ0LmVxKCQxLmV4
cG9ydHMuZ2V0X2dsb2IoKSwgJDEuZXhwb3J0cy5yZXRfMjApOyBhc3NlcnQuZXEoJDEuZXhwb3J0
cy5jYWxsX2dsb2IoNDIpLCAyMCkKKyAgICAkMS5leHBvcnRzLnNldF9nbG9iKG51bGwpOyBhc3Nl
cnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBudWxsKTsgYXNzZXJ0LnRocm93cygoKSA9PiAk
MS5leHBvcnRzLmNhbGxfZ2xvYig0MiksIEVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwg
dGFibGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgJDEuZXhwb3J0
cy5zZXRfZ2xvYihpZGVudCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIGlkZW50
KTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuY2FsbF9nbG9iKDQyKSwgNDIpCisKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuc2V0X2dsb2IoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11
c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdz
KScpIikKKyAgICAkMS5leHBvcnRzLnNldF9nbG9iKG15ZnVuKTsgYXNzZXJ0LmVxKCQxLmV4cG9y
dHMuZ2V0X2dsb2IoKSwgbXlmdW4pOyBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2Fs
bF9nbG9iKDQyKSwgRXJyb3IsICJjYWxsX2luZGlyZWN0IHRvIGEgc2lnbmF0dXJlIHRoYXQgZG9l
cyBub3QgbWF0Y2ggKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisKKyAgICBmb3IgKGxl
dCBpPTA7IGk8MTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhw
b3J0cy5zZXRfZ2xvYihmdW5jdGlvbigpIHt9KSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4g
ZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7Cisg
ICAgfQorfQorCisvLyBUYWJsZSBzZXQvZ2V0CisKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQor
ICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgIC5UYWJs
ZSgpCisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0p
CisgICAgICAuRW5kKCkKKyAgICAgIC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0
IikKKyAgICAgICAgICAuRnVuY3Rpb24oImdldCIpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2Rl
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCJzZXQiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDog
InZvaWQiIH0pCisgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLkdldExvY2FsKDAp
CisgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0
aW9uKCJnZXQiLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0pCisgICAgICAgICAgICAu
STMyQ29uc3QoMCkKKyAgICAgICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgIC5FbmQoKQorICAg
ICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGZ1bmN0aW9uIGRvU2V0KCkg
eworICAgICAgICBjb25zdCBteWZ1biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDQ0NCk7CisgICAg
ICAgIGZvciAobGV0IGk9MDsgaTwxMDAwOyArK2kpIHsKKyAgICAgICAgICAgICQxLmV4cG9ydHMu
c2V0KG15ZnVuKTsKKyAgICAgICAgfQorICAgICAgICAkMS5leHBvcnRzLnNldChteWZ1bik7IGFz
c2VydC5lcSgkMS5leHBvcnRzLmdldCgpLCBteWZ1bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdl
dCgpKCksIDQ0NCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9UZXN0KGosaywgbCkgeworICAg
ICAgICBmdWxsR0MoKTsKKyAgICAgICAgbGV0IGdhcmJhZ2UgPSB7IHZhbDogImhpIiwgdmFsMjog
NSwgYXJyOiBbXSB9CisgICAgICAgIGZvciAobGV0IGk9MDsgaTwxMDA7ICsraSkgZ2FyYmFnZS5h
cnIgKz0gKHsgZmllbGQ6IGkgKyBqICsgayArIGwgfSkKKyAgICAgICAgZnVsbEdDKCk7CisKKyAg
ICAgICAgZm9yIChsZXQgaT0wOyBpPDEwMDsgKytpKSB7CisgICAgICAgICAgICBhc3NlcnQuZXEo
JDEuZXhwb3J0cy5nZXQoKSgpLCA0NDQpOworICAgICAgICAgICAgZnVsbEdDKCk7CisgICAgICAg
IH0KKyAgICB9CisKKworICAgIGRvU2V0KCkKKyAgICBkb1Rlc3QoMCwwLDApCit9CisKKy8vIFdh
c20tPkpTIENhbGxzCisKK2ZvciAobGV0IGltcG9ydGVkRnVuIG9mIFtmdW5jdGlvbihpKSB7IHJl
dHVybiBpOyB9LCBtYWtlQW55ZnVuY0lkZW50KCldKSB7CisgICAgY29uc3QgJDEgPSBuZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkK
KyAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAuRnVuY3Rp
b24oImltcCIsICJoIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJhbnlmdW5jIiB9KQor
ICAgICAgLkVuZCgpCisgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgLlRhYmxlKCkKKyAg
ICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAg
IC5FbmQoKQorICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MSIpCisg
ICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MiIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MyIp
CisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0NCIpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2Rl
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MSIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0
OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAuQ2FsbCgw
KQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oInRlc3QyIiwgeyBwYXJhbXM6
IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgIC5SZWZGdW5jKDEpCisgICAgICAgICAg
LkNhbGwoMCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MyIsIHsg
cGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAuR2V0TG9j
YWwoMCkKKyAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAuUmVmRnVuYygwKQorICAg
ICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLkNh
bGxJbmRpcmVjdCgwLCAwKQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oInRl
c3Q0IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgIC5SZWZGdW5j
KDEpCisgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLlJlZkZ1bmMoMCkKKyAgICAg
ICAgICAuVGFibGVTZXQoKQorICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgIC5DYWxs
SW5kaXJlY3QoMCwgMCkKKyAgICAgICAgLkVuZCgpCisgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSksIHsgaW1wOiB7IGg6IGltcG9ydGVkRnVuIH0gfSk7CisKKyAgICBjb25zdCBteWZ1
biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDEzMzcpOworICAgIGZ1bmN0aW9uIGZ1bihpKSB7Cisg
ICAgICAgIHJldHVybiA0MTsKKyAgICB9CisKKyAgICBmb3IgKGxldCB0ZXN0IG9mIFskMS5leHBv
cnRzLnRlc3QxLCAkMS5leHBvcnRzLnRlc3QzXSkgeworICAgICAgICBhc3NlcnQuZXEodGVzdCht
eWZ1biksIG15ZnVuKQorICAgICAgICBhc3NlcnQuZXEodGVzdChteWZ1bikoKSwgMTMzNykKKyAg
ICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0KGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0
IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncykn
KSIpCisKKyAgICAgICAgZm9yIChsZXQgaT0wOyBpPDEwMDA7ICsraSkgeworICAgICAgICAgICAg
YXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0KGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFu
IGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGxldCB0ZXN0IG9mIFskMS5leHBvcnRzLnRlc3Qy
LCAkMS5leHBvcnRzLnRlc3Q0XSkgeworICAgICAgICBhc3NlcnQuZXEodGVzdCgpLCAkMS5leHBv
cnRzLnRlc3QxKQorICAgICAgICBhc3NlcnQuZXEodGVzdCgpKG15ZnVuKSwgbXlmdW4pCisgICAg
ICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdGVzdCgpKGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0
IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncykn
KSIpCisKKyAgICAgICAgZm9yIChsZXQgaT0wOyBpPDEwMDA7ICsraSkgeworICAgICAgICAgICAg
YXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0KCkoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUg
YW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikK
KyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2Vz
L3ZhbGlkYXRpb24uanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzCmlu
ZGV4IGQzOGMyNjViZmZmNjEwYWQ0OTQ4ODRmOWE3N2E2MzczYzg0ZTUyYTMuLjhmODE2MzY5YTc0
ZTg5ZTQ5ZTY5MDlkZjQ0NTU1MGZkMGY2NmMyMTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9y
ZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFs
aWRhdGlvbi5qcwpAQCAtNjMsNyArNjMsNyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWls
ZGVyLmpzJzsKICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCk7CiAgICAgYmlu
LnRyaW0oKTsKIAotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZShiaW4uZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1
bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUg
dHlwZSBBbnlyZWYsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJv
ciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgdmFsdWUg
dG8gdHlwZSBBbnlyZWYgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAo
ZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsKIH0KIAog
ewpAQCAtODYsNyArODYsNyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsK
ICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCk7CiAgICAgYmluLnRyaW0oKTsK
IAotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0
KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24n
dCB2YWxpZGF0ZTogdGFibGUuZ2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBBbnly
ZWYsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5N
b2R1bGUoYmluLmdldCgpKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFz
c2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiBjb250cm9sIGZsb3cgcmV0dXJucyB3aXRo
IHVuZXhwZWN0ZWQgdHlwZSwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsKIH0KIAogewpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggMzBi
YmM3NDcyMzc4MzkyMmVkYmJmNjM0OTkzNDkwZjQ4YjdiN2UwMi4uNjRjYTBiNWIyMDhkOTFiMmJm
Nzg2NTU3NTcxMjQ3M2Q1YjcyNTBhMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNv
bgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC0xMSwxMyArMTEsMTMgQEAKICAgICAg
ICAgImk2NCI6ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIsICJiM3R5cGUi
OiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZjMyIjogICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtMywgImIzdHlwZSI6ICJCMzo6RmxvYXQiIH0sCiAgICAgICAgICJmNjQiOiAg
ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC00LCAiYjN0eXBlIjogIkIzOjpEb3Vi
bGUiIH0sCi0gICAgICAgICJhbnlmdW5jIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
LTE2LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAorICAgICAgICAiYW55ZnVuYyI6IHsgInR5cGUi
OiAidmFyaW50NyIsICJ2YWx1ZSI6IC0xNiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAg
ICAgICJhbnlyZWYiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTE3LCAiYjN0eXBl
IjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImZ1bmMiOiAgICB7ICJ0eXBlIjogInZhcmludDci
LCAidmFsdWUiOiAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjog
ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lk
IiB9CiAgICAgfSwKLSAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0
IiwgImFueXJlZiJdLAotICAgICJibG9ja190eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJm
NjQiLCAidm9pZCIsICJhbnlyZWYiXSwKKyAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIs
ICJmMzIiLCAiZjY0IiwgImFueXJlZiIsICJhbnlmdW5jIl0sCisgICAgImJsb2NrX3R5cGUiOiBb
ImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJ2b2lkIiwgImFueXJlZiIsICJhbnlmdW5jIl0s
CiAgICAgImVsZW1fdHlwZSI6IFsiYW55ZnVuYyIsImFueXJlZiJdLAogICAgICJleHRlcm5hbF9r
aW5kIjogewogICAgICAgICAiRnVuY3Rpb24iOiB7ICJ0eXBlIjogInVpbnQ4IiwgInZhbHVlIjog
MCB9LApAQCAtNTksOCArNTksOSBAQAogICAgICAgICAiaTY0LmNvbnN0IjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgNjYsICJyZXR1cm4iOiBbImk2NCJd
LCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAidmFyaW50NjQifV0sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEg
Y29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQgYXMgaTY0IiB9LAogICAgICAgICAiZjY0LmNvbnN0
IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgNjgsICJy
ZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAiZG91
YmxlIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQgYXMgZjY0IiB9LAogICAg
ICAgICAiZjMyLmNvbnN0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAgNjcsICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAg
ICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAg
ICAgInR5cGUiOiAiZmxvYXQifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQg
YXMgZjMyIiB9LAotICAgICAgICAicmVmLm51bGwiOiAgICAgICAgICAgIHsgImNhdGVnb3J5Ijog
InNwZWNpYWwiLCAgICAidmFsdWUiOiAyMDgsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJh
bWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgbnVs
bCByZWZlcmVuY2UiIH0sCisgICAgICAgICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIwOCwgInJldHVybiI6IFsiYW55ZnVuYyJdLCAg
InBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFu
dCBudWxsIHJlZmVyZW5jZSIgfSwKICAgICAgICAgInJlZi5pc19udWxsIjogICAgICAgICB7ICJj
YXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjA5LCAicmV0dXJuIjogWyJpMzIiXSwg
ICAgICAicGFyYW1ldGVyIjogWyJhbnlyZWYiXSwgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXRl
cm1pbmUgaWYgYSByZWZlcmVuY2UgaXMgbnVsbCIgfSwKKyAgICAgICAgInJlZi5mdW5jIjogICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjEwLCAicmV0dXJu
IjogWyJhbnlmdW5jIl0sICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJyZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uIGF0IHRoZSBnaXZlbiBp
bmRleCIgfSwKICAgICAgICAgImdldF9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJz
cGVjaWFsIiwgICAgInZhbHVlIjogIDMyLCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1l
dGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJs
b2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEgbG9jYWwgdmFy
aWFibGUgb3IgcGFyYW1ldGVyIiB9LAogICAgICAgICAic2V0X2xvY2FsIjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzMsICJyZXR1cm4iOiBbXSwgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndy
aXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIiB9LAogICAgICAgICAidGVlX2xvY2Fs
IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzQsICJy
ZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIGFuZCByZXR1
cm4gdGhlIHNhbWUgdmFsdWUiIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372256</attachid>
            <date>2019-06-17 10:39:36 -0700</date>
            <delta_ts>2019-06-17 10:59:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198157-20190617103935.patch</filename>
            <type>text/plain</type>
            <size>93651</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NzQwMzI0ODAwODJmNDNkMmY3YmIyYTk5NzdlYzk0NGIwNWY5YmIyLi45Y2VlZDM0NDhmNWE5MWQx
OTEwNDI5NTBjYTdjNWVlNzY1ZDdmZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxOS0wNi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIEZ1
bmNyZWYgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZnVuY3JlZiBpbiBw
YXJhbWV0ZXJzLCBnbG9iYWxzLCBhbmQgaW4gdGFibGUuZ2V0L3NldC4gV2hlbiBjb252ZXJ0aW5n
IGEgSlNWYWx1ZSB0byAKKyAgICAgICAgYSBmdW5jcmVmIChuZWUgYW55ZnVuYyksIHdlIGZpcnN0
IG1ha2Ugc3VyZSBpdCBpcyBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIG9yIG51bGwuIAorCisg
ICAgICAgIFdlIGFsc28gYWRkIHN1cHBvcnQgZm9yIFJlZi5mdW5jLiBBbnl3aGVyZSBhIFJlZi5m
dW5jIGlzIHVzZWQsIChzdGF0aWNhbGx5KSB3ZSBjb25zdHJ1Y3QgYSBKUyB3cmFwcGVyCisgICAg
ICAgIGZvciBpdCBzbyB0aGF0IHdlIG5ldmVyIG5lZWQgdG8gY29uc3RydWN0IEpTVmFsdWVzIHdo
ZW4gaGFuZGxpbmcgcmVmZXJlbmNlcy4gVGhpcyBzaG91bGQgbWFrZSB0aHJlYWRzCisgICAgICAg
IGVhc2llciB0byBpbXBsZW1lbnQuCisKKyAgICAgICAgRmluYWxseSwgd2UgYWRkIHNvbWUgbWlz
c2luZyBib3VuZHMgY2hlY2tzIGZvciB0YWJsZS5nZXQvc2V0LgorCisgICAgICAgICogd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6dG1wRm9yVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjptb3Zl
T3BGb3JWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWly
SVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkTG9j
YWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpB
aXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmMpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBs
YW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToK
KyAgICAgICAgKiB3YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oOgorICAgICAgICAoSlNDOjpX
YXNtOjpDYWxsaW5nQ29udmVudGlvbkFpcjo6bWFyc2hhbGxBcmd1bWVudCBjb25zdCk6CisgICAg
ICAgIChKU0M6Oldhc206OkNhbGxpbmdDb252ZW50aW9uQWlyOjpzZXR1cENhbGwgY29uc3QpOgor
ICAgICAgICAqIHdhc20vV2FzbUV4Y2VwdGlvblR5cGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21G
b3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNWYWx1ZVR5cGUpOgorICAgICAgICAoSlND
OjpXYXNtOjppc1N1YnR5cGUpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6
CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VVbnJlYWNoYWJsZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Okluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6OmdldEZ1bmN0aW9uV3JhcHBlciBjb25zdCk6CisgICAgICAgIChK
U0M6Oldhc206Okluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIpOgorICAgICAgICAqIHdhc20v
V2FzbUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OnJlZmVyZW5jZWRGdW5jdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6YWRkUmVm
ZXJlbmNlZEZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWwpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAg
ICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRl
OjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRSZWZJc051bGwpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpWYWxpZGF0ZTo6YWRkUmVmRnVuYyk6CisgICAgICAgIChKU0M6Oldhc206
OlZhbGlkYXRlOjpzZXRMb2NhbCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRD
YWxsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVy
cy5oOgorICAgICAgICAoSlNDOjppc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yLmg6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OmhhbmRsZUJhZEk2NFVzZSk6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6ZW1pdFdhc21Ub0pTRXhjZXB0aW9uKToKKyAgICAgICAgKiB3
YXNtL2pzL1dhc21Ub0pTLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdyk6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoK
KwogMjAxOS0wNi0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVuYW1lIEF0b21pY1N0cmluZyB0byBBdG9tU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBhZGIzM2Y1NDA0NzgwYjU0
ZDFhOWU4MTExMjQ5ODc4YzM3YzVhZTczLi5hYjMwNGE1NWQzNmIzNTg0MjJiMWEwN2QyYTQ0YjAw
MGRmNTIyZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKQEAgLTIzNCwxMCArMjM0LDExIEBAIHB1YmxpYzoKIAogICAgIC8vIFJl
ZmVyZW5jZXMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZJc051
bGwoRXhwcmVzc2lvblR5cGUmIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIC8vIFRhYmxlcwotICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpZHgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiB2
YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQo
RXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYg
aW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CiAKICAgICAvLyBMb2NhbHMKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0zNzAsNiArMzcxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybiBnMzIoKTsKICAgICAgICAgY2FzZSBUeXBlOjpJNjQ6CiAgICAgICAgIGNh
c2UgVHlwZTo6QW55cmVmOgorICAgICAgICBjYXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAgICAg
ICByZXR1cm4gZzY0KCk7CiAgICAgICAgIGNhc2UgVHlwZTo6RjMyOgogICAgICAgICAgICAgcmV0
dXJuIGYzMigpOwpAQCAtNTU0LDYgKzU1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gTW92ZTMyOwogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlOjpB
bnlyZWY6CisgICAgICAgIGNhc2UgVHlwZTo6QW55ZnVuYzoKICAgICAgICAgICAgIHJldHVybiBN
b3ZlOwogICAgICAgICBjYXNlIFR5cGU6OkYzMjoKICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxv
YXQ7CkBAIC03OTksNiArODAyLDcgQEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNv
bnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlOjpB
bnlyZWY6CisgICAgICAgIGNhc2UgVHlwZTo6QW55ZnVuYzoKICAgICAgICAgICAgIGFwcGVuZChN
b3ZlLCBhcmcsIG1fbG9jYWxzW2ldKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFR5cGU6OkYzMjoKQEAgLTg4NCw2ICs4ODgsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRM
b2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAg
IG1fbG9jYWxzLnVuY2hlY2tlZEFwcGVuZChsb2NhbCk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkg
ewogICAgICAgICBjYXNlIFR5cGU6OkFueXJlZjoKKyAgICAgICAgY2FzZSBUeXBlOjpBbnlmdW5j
OgogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6aW1tKEpTVmFsdWU6OmVuY29kZShqc051
bGwoKSkpLCBsb2NhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlOjpJ
MzI6CkBAIC05MTgsNiArOTIzLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQo
QmFzaWNCbG9jayogYmxvY2ssIFR5cGUgdHlwZSwgdWludDY0X3QgdmFsdWUpIC0KICAgICBjYXNl
IFR5cGU6OkkzMjoKICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICBjYXNlIFR5cGU6OkFueXJlZjoK
KyAgICBjYXNlIFR5cGU6OkFueWZ1bmM6CiAgICAgICAgIGFwcGVuZChibG9jaywgTW92ZSwgQXJn
OjpiaWdJbW0odmFsdWUpLCByZXN1bHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6
OkYzMjoKQEAgLTk1MywzNiArOTU5LDQ3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJlZklz
TnVsbChFeHByZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQoRXhwcmVz
c2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAor
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRo
aXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2
Pi4KLSAgICBBU1NFUlQoaWR4LnRtcCgpKTsKLSAgICBBU1NFUlQoaWR4LnR5cGUoKSA9PSBUeXBl
OjpJMzIpOwotICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6QW55cmVmKTsKKyAgICByZXN1
bHQgPSB0bXBGb3JUeXBlKFR5cGU6OkFueWZ1bmMpOworICAgIGVtaXRDQ2FsbCgmZG9XYXNtUmVm
RnVuYywgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0YW50KFR5cGU6OkkzMiwgaW5k
ZXgpKTsKIAotICAgIHVpbnQ2NF90ICgqZG9HZXQpKEluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAo
SW5zdGFuY2UqIGluc3RhbmNlLCBpbnQzMl90IGlkeCkgLT4gdWludDY0X3QgewotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlLT50YWJsZSgpLT5nZXQoaWR4KSk7Ci0gICAg
fTsKKyAgICByZXR1cm4geyB9OworfQogCi0gICAgZW1pdENDYWxsKGRvR2V0LCByZXN1bHQsIGlu
c3RhbmNlVmFsdWUoKSwgaWR4KTsKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4
cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJl
c3VsdAoreworICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KKyAgICBBU1NFUlQoaW5kZXgudG1wKCkp
OworICAgIEFTU0VSVChpbmRleC50eXBlKCkgPT0gVHlwZTo6STMyKTsKKyAgICByZXN1bHQgPSB0
bXBGb3JUeXBlKFR5cGU6OkFueXJlZik7CisKKyAgICBlbWl0Q0NhbGwoJmdldFdhc21UYWJsZUVs
ZW1lbnQsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgZW1pdENoZWNrKFsm
XSB7CisgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpyZXND
b25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgcmVzdWx0LCByZXN1bHQpOworICAgIH0sIFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CisgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91
dE9mQm91bmRzVGFibGVBY2Nlc3MpOworICAgIH0pOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhw
cmVzc2lvblR5cGUmIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9y
OjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1
ZSkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KLSAgICBBU1NF
UlQoaWR4LnRtcCgpKTsKLSAgICBBU1NFUlQoaWR4LnR5cGUoKSA9PSBUeXBlOjpJMzIpOworICAg
IEFTU0VSVChpbmRleC50bXAoKSk7CisgICAgQVNTRVJUKGluZGV4LnR5cGUoKSA9PSBUeXBlOjpJ
MzIpOwogICAgIEFTU0VSVCh2YWx1ZS50bXAoKSk7CiAKLSAgICB2b2lkICgqZG9TZXQpKEluc3Rh
bmNlKiwgaW50MzJfdCwgdWludDY0X3QgdmFsdWUpID0gW10gKEluc3RhbmNlKiBpbnN0YW5jZSwg
aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbHVlKSAtPiB2b2lkIHsKLSAgICAgICAgLy8gRklYTUU6
IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBwb3J0ZWQgaGVy
ZS4KLSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgxNTc+Ci0gICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5zZXQoaWR4LCBKU1ZhbHVlOjpkZWNv
ZGUodmFsdWUpKTsKLSAgICB9OworICAgIGF1dG8gc2hvdWxkVGhyb3cgPSBnMzIoKTsKKyAgICBl
bWl0Q0NhbGwoJnNldFdhc21UYWJsZUVsZW1lbnQsIHNob3VsZFRocm93LCBpbnN0YW5jZVZhbHVl
KCksIGluZGV4LCB2YWx1ZSk7CiAKLSAgICBlbWl0Q0NhbGwoZG9TZXQsIFR5cGVkVG1wKCksIGlu
c3RhbmNlVmFsdWUoKSwgaWR4LCB2YWx1ZSk7CisgICAgZW1pdENoZWNrKFsmXSB7CisgICAgICAg
IHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgc2hvdWxkVGhyb3csIHNob3VsZFRocm93KTsKKyAgICB9LCBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRP
ZkJvdW5kc1RhYmxlQWNjZXNzKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0x
MTAzLDcgKzExMjAsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwodWludDMyX3Qg
aW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFsUgogICAgICAgICBhcHBlbmQo
bW92ZU9wRm9yVmFsdWVUeXBlKHR5cGUpLCB2YWx1ZSwgQXJnOjphZGRyKHRlbXApKTsKICAgICB9
CiAKLSAgICBpZiAodHlwZSA9PSBBbnlyZWYpCisgICAgaWYgKGlzU3VidHlwZSh0eXBlLCBBbnly
ZWYpKQogICAgICAgICBlbWl0V3JpdGVCYXJyaWVyRm9ySlNXcmFwcGVyKCk7CiAKICAgICByZXR1
cm4geyB9OwpAQCAtMTYyMyw2ICsxNjQwLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0
dXJuKGNvbnN0IENvbnRyb2xEYXRhJiBkYXRhLCBjb25zdCBFeHByZXNzaW9uTGlzdCYgcmUKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2FzZSBU
eXBlOjpBbnlyZWY6CisgICAgICAgIGNhc2UgVHlwZTo6QW55ZnVuYzoKICAgICAgICAgICAgIGFw
cGVuZChNb3ZlLCByZXR1cm5WYWx1ZXNbMF0sIHJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAg
IGFwcGVuZChSZXQ2NCwgcmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXgg
NTViZDJkOGI1ZmU2NjE5NmE1ZTJkNWQyOTYyZWQxNmE5NjI2YTk0ZC4uNzc2MDk3NDg0M2VjY2Uy
ZjFlOWIxNzA1OTI1ZTk4NGFhY2NiYTI5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMTg3LDEwICsxODcsMTEgQEAgcHVibGlj
OgogCiAgICAgLy8gUmVmZXJlbmNlcwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1bmMo
dWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFibGVz
Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVz
c2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhw
cmVzc2lvblR5cGUmIHZhbHVlKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KEV4
cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExv
Y2FscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQz
Ml90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTUzOCw3ICs1MzksNyBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QgY291bnQpIC0+
IFBhcnRpYWxSZXN1bHQKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewogICAgICAgICBWYXJpYWJsZSogbG9jYWwgPSBtX3Byb2MuYWRkVmFyaWFibGUodG9CM1R5cGUo
dHlwZSkpOwogICAgICAgICBtX2xvY2Fscy51bmNoZWNrZWRBcHBlbmQobG9jYWwpOwotICAgICAg
ICBhdXRvIHZhbCA9IHR5cGUgPT0gQW55cmVmID8gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSA6
IDA7CisgICAgICAgIGF1dG8gdmFsID0gaXNTdWJ0eXBlKHR5cGUsIEFueXJlZikgPyBKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpIDogMDsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIFNldCwgT3JpZ2luKCksIGxvY2FsLCBjb25zdGFudCh0
b0IzVHlwZSh0eXBlKSwgdmFsLCBPcmlnaW4oKSkpOwogICAgIH0KICAgICByZXR1cm4geyB9OwpA
QCAtNTY1LDMyICs1NjYsNTEgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhw
cmVzc2lvblR5cGUmIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogICAgIHJldHVybiB7
IH07CiB9CiAKLWF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUm
IGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlz
IGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4u
Ci0gICAgdWludDY0X3QgKCpkb0dldCkoSW5zdGFuY2UqLCBpbnQzMl90KSA9IFtdIChJbnN0YW5j
ZSogaW5zdGFuY2UsIGludDMyX3QgaWR4KSAtPiB1aW50NjRfdCB7Ci0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UtPnRhYmxlKCktPmdldChpZHgpKTsKLSAgICB9OwotCiAg
ICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2Ms
IHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2
b2lkKj4oZG9HZXQsIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBp
ZHgpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1f
cHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJmdldFdhc21UYWJsZUVsZW1l
bnQsIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisK
KyAgICB7CisgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCBy
ZXN1bHQsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9y
aWdpbigpLCAwKSkpOworCisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9m
Qm91bmRzVGFibGVBY2Nlc3MpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICByZXR1cm4geyB9
OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBp
ZHgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBl
JiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5s
aW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KKyAg
ICBhdXRvIHNob3VsZFRocm93ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PihtX3Byb2MsIEIzOjpJbnQzMiwgb3JpZ2luKCksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRy
PHZvaWQqPigmc2V0V2FzbVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBp
bnN0YW5jZVZhbHVlKCksIGluZGV4LCB2YWx1ZSk7CisKKyAgICB7CisgICAgICAgIENoZWNrVmFs
dWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2Ms
IENoZWNrLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCBzaG91bGRUaHJvdywgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIDApKSk7CisKKyAg
ICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgdGhpcy0+ZW1pdEV4
Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KLSAgICB2b2lk
ICgqZG9TZXQpKEluc3RhbmNlKiwgaW50MzJfdCwgdWludDY0X3QgdmFsdWUpID0gW10gKEluc3Rh
bmNlKiBpbnN0YW5jZSwgaW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbHVlKSAtPiB2b2lkIHsKLSAg
ICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFy
ZSBzdXBwb3J0ZWQgaGVyZS4KLSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTgxNTc+Ci0gICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5zZXQoaWR4
LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKLSAgICB9OwogCi0gICAgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpWb2lkLCBvcmlnaW4oKSwKLSAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGRvU2V0LCBCM0NDYWxsUHRyVGFnKSksCi0gICAg
ICAgIGluc3RhbmNlVmFsdWUoKSwgaWR4LCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpJbnQ2NCwgb3JpZ2luKCks
CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9j
LCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmZG9XYXNtUmVmRnVuYywgQjNDQ2Fs
bFB0clRhZykpLAorICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0YW50KFR5cGU6Okkz
MiwgaW5kZXgpKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC02NzksNyArNjk5LDcgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjpzZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBl
IHZhbHVlKSAtPiBQYXJ0aWFsUmUKICAgICBWYWx1ZSogZ2xvYmFsc0FycmF5ID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgp
LCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6
b2Zmc2V0T2ZHbG9iYWxzKCkpKTsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIFN0b3JlLCBvcmlnaW4oKSwgdmFsdWUsIGdsb2JhbHNBcnJheSwgc2Fm
ZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAKLSAgICBpZiAobV9p
bmZvLmdsb2JhbHNbaW5kZXhdLnR5cGUgPT0gQW55cmVmKQorICAgIGlmIChpc1N1YnR5cGUobV9p
bmZvLmdsb2JhbHNbaW5kZXhdLnR5cGUsIEFueXJlZikpCiAgICAgICAgIGVtaXRXcml0ZUJhcnJp
ZXJGb3JKU1dyYXBwZXIoKTsKIAogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggMGIzOGY5ZDU5NmJmYzA3YmNiNjcyYmMyYTE3
YjcxYWFkYzFjNDlhYS4uNjVjZGU2NjJjZWFlMWM1MmFlNzYzOTg3ODE2NTQ2MGJlY2VlZTFiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMjg2LDcg
KzI4Niw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21waWxhdGlvbkVmZm9y
dCBlZmZvcnQpCiAKICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRl
eF0gPSBXVEZNb3ZlKCpwYXJzZUFuZENvbXBpbGVSZXN1bHQpOwogCi0gICAgICAgIGlmIChtX2V4
cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpKSB7CisgICAgICAg
IGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpIHx8
IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5jZWRGdW5jdGlvbnMoKS5jb250YWlucyhmdW5j
dGlvbkluZGV4KSkgewogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2sp
OwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX2VtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5j
dGlvbnMuYWRkKGZ1bmN0aW9uSW5kZXgsIG1fY3JlYXRlRW1iZWRkZXJXcmFwcGVyKG1fY29tcGls
YXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XSwgc2lnbmF0dXJlLCAmbV91bmxpbmtlZFdhc21U
b1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgbV9t
b2RlLCBmdW5jdGlvbkluZGV4KSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCAxMGViOGNkNGU3MzM2ZTBlZjI0ZGM5YmU1MDRi
NzUwN2NlODNjNzUyLi5mN2JlMzhjNjdiZWU5ZWIzNTMzMjExM2IyM2U2YjI0M2RlOTRjZGNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRp
b24uaApAQCAtMjM2LDYgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHlwZTo6STMy
OgogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlOjpBbnlyZWY6Cisg
ICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAgICAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRJ
bXBsKG1fZ3ByQXJncywgZ3BBcmd1bWVudENvdW50LCBzdGFja09mZnNldCwgcmVnRnVuYywgc3Rh
Y2tGdW5jKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGU6OkYzMjoKQEAg
LTMwMSw2ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVHlwZTo6STMyOgogICAgICAg
ICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlOjpBbnlyZWY6CisgICAgICAgIGNh
c2UgV2FzbTo6QW55ZnVuYzoKICAgICAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFp
bnQgPSBCMzo6VmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21FeGNlcHRpb25UeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRXhjZXB0aW9uVHlwZS5oCmluZGV4IGQ0NDZjMGVkMWI0ZGQ5ZjY2ZmY1OTM4MjY1
YTA2NmUwZGM5MmQ2MTEuLjkzMjg2MWNhOWRkMWU1YWI4MzczOTU2MTQzMDQ1ZDE3NTM1MDAzYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FeGNlcHRpb25UeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUV4Y2VwdGlvblR5cGUuaApA
QCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2FzbSB7CiAKICNkZWZpbmUgRk9SX0VBQ0hfRVhD
RVBUSU9OKG1hY3JvKSBcCiAgICAgbWFjcm8oT3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MsICAiT3V0
IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIikgXAorICAgIG1hY3JvKE91dE9mQm91bmRzVGFibGVB
Y2Nlc3MsICAiT3V0IG9mIGJvdW5kcyB0YWJsZSBhY2Nlc3MiKSBcCiAgICAgbWFjcm8oT3V0T2ZC
b3VuZHNDYWxsSW5kaXJlY3QsICJPdXQgb2YgYm91bmRzIGNhbGxfaW5kaXJlY3QiKSBcCiAgICAg
bWFjcm8oTnVsbFRhYmxlRW50cnksICAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50
cnkiKSBcCiAgICAgbWFjcm8oQmFkU2lnbmF0dXJlLCAiY2FsbF9pbmRpcmVjdCB0byBhIHNpZ25h
dHVyZSB0aGF0IGRvZXMgbm90IG1hdGNoIikgXApAQCAtNDIsNyArNDMsOCBAQCBuYW1lc3BhY2Ug
V2FzbSB7CiAgICAgbWFjcm8oSW50ZWdlck92ZXJmbG93LCAiSW50ZWdlciBvdmVyZmxvdyIpIFwK
ICAgICBtYWNybyhTdGFja092ZXJmbG93LCAiU3RhY2sgb3ZlcmZsb3ciKSBcCiAgICAgbWFjcm8o
STY0QXJndW1lbnRUeXBlLCAiV2ViQXNzZW1ibHkgZnVuY3Rpb24gd2l0aCBhbiBpNjQgYXJndW1l
bnQgY2FuJ3QgYmUgY2FsbGVkIGZyb20gSmF2YVNjcmlwdCIpIFwKLSAgICBtYWNybyhJNjRSZXR1
cm5UeXBlLCAiV2ViQXNzZW1ibHkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGk2NCBjYW4ndCBiZSBj
YWxsZWQgZnJvbSBKYXZhU2NyaXB0IikKKyAgICBtYWNybyhJNjRSZXR1cm5UeXBlLCAiV2ViQXNz
ZW1ibHkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGk2NCBjYW4ndCBiZSBjYWxsZWQgZnJvbSBKYXZh
U2NyaXB0IikgXAorICAgIG1hY3JvKEZ1bmNyZWZOb3RXYXNtLCAiQW55ZnVuYyBtdXN0IGJlIGFu
IGV4cG9ydGVkIHdhc20gZnVuY3Rpb24iKQogCiBlbnVtIGNsYXNzIEV4Y2VwdGlvblR5cGUgOiB1
aW50MzJfdCB7CiAjZGVmaW5lIE1BS0VfRU5VTShlbnVtTmFtZSwgZXJyb3IpIGVudW1OYW1lLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IDYyOTIyNTBmMjVlZWE5
NDkwYzQzYTRlYmQ0NmQyZTI1ZTBjMzZjOTUuLjdjMDM0NDE3YTEzZjI2MWI4NDc1YzhlZGM0Mjc0
ZmE4MDUxOGI5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
b3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAg
LTY4LDEyICs2OCwyMCBAQCBpbmxpbmUgYm9vbCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAgICAg
Y2FzZSBGNjQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQW55cmVmOgorICAgIGNh
c2UgQW55ZnVuYzoKICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJl
bmNlcygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4g
ZmFsc2U7CiB9CisKK2lubGluZSBib29sIGlzU3VidHlwZShUeXBlIHN1YiwgVHlwZSBwYXJlbnQp
Cit7CisgICAgaWYgKHN1YiA9PSBwYXJlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBzdWIgPT0gQW55ZnVuYyAmJiBwYXJlbnQgPT0gQW55cmVmOworfQogICAgIAogZW51bSBj
bGFzcyBFeHRlcm5hbEtpbmQgOiB1aW50OF90IHsKICAgICAvLyBGSVhNRSBhdXRvLWdlbmVyYXRl
IHRoaXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMzEKQEAg
LTEzOCw2ICsxNDYsNyBAQCBzdHJ1Y3QgR2xvYmFsIHsKICAgICBlbnVtIEluaXRpYWxpemF0aW9u
VHlwZSB7CiAgICAgICAgIElzSW1wb3J0LAogICAgICAgICBGcm9tR2xvYmFsSW1wb3J0LAorICAg
ICAgICBGcm9tUmVmRnVuYywKICAgICAgICAgRnJvbUV4cHJlc3Npb24KICAgICB9OwogCkBAIC0y
MzQsNiArMjQzLDcgQEAgcHVibGljOgogICAgIHVpbnQzMl90IGluaXRpYWwoKSBjb25zdCB7IHJl
dHVybiBtX2luaXRpYWw7IH0KICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWF4aW11bTsgfQogICAgIFRhYmxlRWxlbWVudFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFdhc206OlR5cGUgd2FzbVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiA/IFR5cGU6OkFueWZ1bmMg
OiBUeXBlOjpBbnlyZWY7IH0KIAogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2luaXRpYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4
IGRmYWU4ZjJjZjNhZDJkYTE4YWE4OGJiMjZiZDU1OGNjN2Q4NDc2ZGUuLjU5ZWVlMjYyMmRlMjY4
NTkzMmM1MWM0MmZiZThjMTk5M2Y4NGU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC0yODMsMjUgKzI4MywyNSBAQCBhdXRvIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0
CiAKICAgICBjYXNlIFRhYmxlR2V0OiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9w
dGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVu
YWJsZWQiKTsKLSAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0LCBpZHg7Ci0gICAgICAgIFdB
U01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaWR4LCAidGFibGUuZ2V0Iik7Ci0gICAg
ICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxlR2V0KGlkeCwgcmVzdWx0KSk7Cisg
ICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCwgaW5kZXg7CisgICAgICAgIFdBU01fVFJZX1BP
UF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5nZXQiKTsKKyAgICAgICAgV0FT
TV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaW5kZXgsIHJlc3VsdCkpOwogICAgICAg
ICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKICAgICBjYXNlIFRhYmxlU2V0OiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUg
bm90IGVuYWJsZWQiKTsKLSAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsLCBpZHg7CisgICAgICAg
IEV4cHJlc3Npb25UeXBlIHZhbCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNT
SU9OX1NUQUNLX0lOVE8odmFsLCAidGFibGUuc2V0Iik7Ci0gICAgICAgIFdBU01fVFJZX1BPUF9F
WFBSRVNTSU9OX1NUQUNLX0lOVE8oaWR4LCAidGFibGUuc2V0Iik7Ci0gICAgICAgIFdBU01fVFJZ
X0FERF9UT19DT05URVhUKGFkZFRhYmxlU2V0KGlkeCwgdmFsKSk7CisgICAgICAgIFdBU01fVFJZ
X1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5zZXQiKTsKKyAgICAgICAg
V0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVTZXQoaW5kZXgsIHZhbCkpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNhc2UgUmVmTnVsbDogewogICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJl
ZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7Ci0gICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFw
cGVuZChtX2NvbnRleHQuYWRkQ29uc3RhbnQoQW55cmVmLCBKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpKSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChtX2NvbnRleHQuYWRkQ29u
c3RhbnQoQW55ZnVuYywgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIApAQCAtMzE0LDYgKzMxNCwxNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCisgICAgY2FzZSBSZWZGdW5jOiB7CisgICAgICAgIHVpbnQzMl90
IGluZGV4OworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJl
bmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYXJVSW50MzIoaW5kZXgpLCAiY2FuJ3QgZ2V0IGluZGV4IGZvciByZWYuZnVuYyIpOworCisg
ICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFJlZkZ1bmMoaW5kZXgsIHJlc3VsdCkp
OworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisKICAgICBjYXNlIEdldExvY2FsOiB7CiAgICAgICAgIHVpbnQzMl90
IGluZGV4OwogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CkBAIC02ODEsNiArNjkyLDEz
IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNz
aW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAorICAg
IGNhc2UgUmVmRnVuYzogeworICAgICAgICB1aW50MzJfdCB1bnVzZWQ7CisgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHVudXNlZCksICJjYW4ndCBnZXQgaW1tZWRp
YXRlIGZvciAiLCBtX2N1cnJlbnRPcGNvZGUsICIgaW4gdW5yZWFjaGFibGUgY29udGV4dCIpOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVy
ZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorCiAgICAgY2FzZSBHcm93TWVtb3J5OgogICAgIGNhc2UgQ3VycmVudE1lbW9y
eTogewogICAgICAgICB1aW50OF90IHJlc2VydmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5jcHAKaW5kZXggMzcwNTk5NjhlMGI3ODU0ZDI3MzM2ZjE5MzdlYzI1
OGEzNzBiNDk2Ni4uNTJiZjBmMmIzMzEwZDhiYWRiMDJkNDM5OTUwMDFkNDNmMWJmMmM4MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNtTW9k
dWxlSW5mb3JtYXRpb24uaCIKQEAgLTU3LDcgKzU4LDcgQEAgSW5zdGFuY2U6Okluc3RhbmNlKENv
bnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogcG9pbnRl
clQKICAgICAgICAgbmV3IChpbXBvcnRGdW5jdGlvbkluZm8oaSkpIEltcG9ydEZ1bmN0aW9uSW5m
bygpOwogICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4obV9nbG9iYWxzLmdldCgpKSwgMCwg
Z2xvYmFsTWVtb3J5Qnl0ZVNpemUobV9tb2R1bGUuZ2V0KCkpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFscy5zaXplKCk7
ICsraSkgewotICAgICAgICBpZiAobV9tb2R1bGUuZ2V0KCkubW9kdWxlSW5mb3JtYXRpb24oKS5n
bG9iYWxzW2ldLnR5cGUgPT0gQW55cmVmKQorICAgICAgICBpZiAoaXNTdWJ0eXBlKG1fbW9kdWxl
LmdldCgpLm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFsc1tpXS50eXBlLCBBbnlyZWYpKQogICAg
ICAgICAgICAgbV9nbG9iYWxzVG9NYXJrLnNldChpKTsKICAgICB9CiB9CkBAIC04MCw2ICs4MSw3
NSBAQCB2b2lkIEluc3RhbmNlOjpzZXRHbG9iYWwodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkK
ICAgICBtX2dsb2JhbHMuZ2V0KClbaV0uYW55cmVmLnNldCgqb3duZXI8SlNXZWJBc3NlbWJseUlu
c3RhbmNlPigpLT52bSgpLCBvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCksIHZhbHVlKTsK
IH0KIAorSlNWYWx1ZSBJbnN0YW5jZTo6Z2V0RnVuY3Rpb25XcmFwcGVyKHVuc2lnbmVkIGkpIGNv
bnN0Cit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZnVuY3Rpb25XcmFwcGVycy5nZXQoaSkuZ2V0
KCk7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwor
ICAgIHJldHVybiB2YWx1ZTsKK30KKwordm9pZCBJbnN0YW5jZTo6c2V0RnVuY3Rpb25XcmFwcGVy
KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fb3duZXIpOworICAg
IEFTU0VSVCh2YWx1ZS5pc0Z1bmN0aW9uKCpvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCkt
PnZtKCkpKTsKKyAgICBBU1NFUlQoIW1fZnVuY3Rpb25XcmFwcGVycy5jb250YWlucyhpKSk7Cisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCkt
PmNlbGxMb2NrKCkpOworICAgIG1fZnVuY3Rpb25XcmFwcGVycy5zZXQoaSwgV3JpdGVCYXJyaWVy
PFVua25vd24+KCpvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPnZtKCksIG93bmVyPEpT
V2ViQXNzZW1ibHlJbnN0YW5jZT4oKSwgdmFsdWUpKTsKKyAgICBBU1NFUlQoZ2V0RnVuY3Rpb25X
cmFwcGVyKGkpID09IHZhbHVlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgZ2V0V2FzbVRhYmxlRWxl
bWVudChJbnN0YW5jZSogaW5zdGFuY2UsIGludDMyX3Qgc2lnbmVkSW5kZXgpCit7CisgICAgaWYg
KHNpZ25lZEluZGV4IDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB1aW50MzJfdCBpbmRl
eCA9IHNpZ25lZEluZGV4OworICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUoKS0+bGVu
Z3RoKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShp
bnN0YW5jZS0+dGFibGUoKS0+Z2V0KGluZGV4KSk7Cit9CisKK2Jvb2wgc2V0V2FzbVRhYmxlRWxl
bWVudChJbnN0YW5jZSogaW5zdGFuY2UsIGludDMyX3Qgc2lnbmVkSW5kZXgsIEVuY29kZWRKU1Zh
bHVlIGVuY1ZhbHVlKQoreworICAgIGlmIChzaWduZWRJbmRleCA8IDApCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHVpbnQzMl90IGluZGV4ID0gc2lnbmVkSW5kZXg7CisgICAgaWYgKGlu
ZGV4ID49IGluc3RhbmNlLT50YWJsZSgpLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNWYWx1ZSk7CisgICAg
aWYgKGluc3RhbmNlLT50YWJsZSgpLT50eXBlKCkgPT0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6
QW55cmVmKQorICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+c2V0KGluZGV4LCB2YWx1ZSk7Cisg
ICAgZWxzZSBpZiAoaW5zdGFuY2UtPnRhYmxlKCktPnR5cGUoKSA9PSBXYXNtOjpUYWJsZUVsZW1l
bnRUeXBlOjpGdW5jcmVmKSB7CisgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5j
dGlvbjsKKyAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVu
Y3Rpb247CisKKyAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24oKmluc3RhbmNl
LT5vd25lcjxKU09iamVjdD4oKS0+dm0oKSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBw
ZXJGdW5jdGlvbikpIHsKKyAgICAgICAgICAgIEFTU0VSVCghIXdhc21GdW5jdGlvbiB8fCAhIXdh
c21XcmFwcGVyRnVuY3Rpb24pOworICAgICAgICAgICAgaWYgKHdhc21GdW5jdGlvbikKKyAgICAg
ICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rp
b24oaW5kZXgsIGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKSwgd2FzbUZ1bmN0aW9uLT5pbXBvcnRh
YmxlRnVuY3Rpb24oKSwgJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCktPmFzRnVu
Y3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGluZGV4LCBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSks
IHdhc21XcmFwcGVyRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbVdyYXBwZXJG
dW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7CisgICAgICAgIH0gZWxzZSBpZiAodmFs
dWUuaXNOdWxsKCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+Y2xlYXIoaW5kZXgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworRW5jb2RlZEpTVmFsdWUgZG9XYXNtUmVmRnVuYyhJbnN0YW5jZSogaW5zdGFuY2UsIHVp
bnQzMl90IGluZGV4KQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBpbnN0YW5jZS0+Z2V0RnVuY3Rp
b25XcmFwcGVyKGluZGV4KTsKKyAgICBBU1NFUlQodmFsdWUuaXNGdW5jdGlvbigqaW5zdGFuY2Ut
Pm93bmVyPEpTT2JqZWN0PigpLT52bSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5o
CmluZGV4IDVkMWZjZjNmOWQzYjgyYmQwOTgxYTIwY2NjZDU0NGU3ODA3Y2U0ZDcuLjdhMjNlNTYy
ODI0ZjgxZTM1ODYwZWU3YWIwZDk4NThhZjNiM2IyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21JbnN0YW5jZS5oCkBAIC0zOSwxMCArMzksMTYgQEAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV2FzbSB7CiAKIHN0cnVjdCBDb250ZXh0OworY2xhc3MgSW5zdGFuY2U7CisK
K0VuY29kZWRKU1ZhbHVlIGdldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqLCBpbnQzMl90KTsK
K2Jvb2wgc2V0V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSosIGludDMyX3QsIEVuY29kZWRKU1Zh
bHVlIGVuY1ZhbHVlKTsKK0VuY29kZWRKU1ZhbHVlIGRvV2FzbVJlZkZ1bmMoSW5zdGFuY2UqLCB1
aW50MzJfdCk7CiAKIGNsYXNzIEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEluc3RhbmNlPiB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh2
b2lkKik+OworICAgIHVzaW5nIEZ1bmN0aW9uV3JhcHBlck1hcCA9IEhhc2hNYXA8dWludDMyX3Qs
IFdyaXRlQmFycmllcjxVbmtub3duPiwgSW50SGFzaDx1aW50MzJfdD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDMyX3Q+PjsKIAogICAgIHN0YXRpYyBSZWY8SW5zdGFu
Y2U+IGNyZWF0ZShDb250ZXh0KiwgUmVmPE1vZHVsZT4mJiwgRW50cnlGcmFtZSoqIHBvaW50ZXJU
b1RvcEVudHJ5RnJhbWUsIHZvaWQqKiBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBTdG9yZVRv
cENhbGxGcmFtZUNhbGxiYWNrJiYpOwogCkBAIC05MSw2ICs5Nyw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEdsb2JhbCh1bnNpZ25lZCBpLCBpbnQ2NF90IGJpdHMpIHsgbV9nbG9iYWxzLmdldCgp
W2ldLnByaW1pdGl2ZSA9IGJpdHM7IH0KICAgICB2b2lkIHNldEdsb2JhbCh1bnNpZ25lZCwgSlNW
YWx1ZSk7CiAgICAgY29uc3QgQml0VmVjdG9yJiBnbG9iYWxzVG9NYXJrKCkgeyByZXR1cm4gbV9n
bG9iYWxzVG9NYXJrOyB9CisgICAgSlNWYWx1ZSBnZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQp
IGNvbnN0OworICAgIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlck1hcDo6VmFsdWVzQ29uc3RJdGVy
YXRvclJhbmdlIGZ1bmN0aW9uV3JhcHBlcnMoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uV3Jh
cHBlcnMudmFsdWVzKCk7IH0KKyAgICB2b2lkIHNldEZ1bmN0aW9uV3JhcHBlcih1bnNpZ25lZCwg
SlNWYWx1ZSk7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX21lbW9yeSk7IH0KICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mR2xvYmFscygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5j
ZSwgbV9nbG9iYWxzKTsgfQpAQCAtMTU5LDYgKzE2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVp
bnQ2NF90IHByaW1pdGl2ZTsKICAgICB9OwogICAgIE1hbGxvY1B0cjxHbG9iYWxWYWx1ZT4gbV9n
bG9iYWxzOworICAgIEZ1bmN0aW9uV3JhcHBlck1hcCBtX2Z1bmN0aW9uV3JhcHBlcnM7CiAgICAg
Qml0VmVjdG9yIG1fZ2xvYmFsc1RvTWFyazsKICAgICBFbnRyeUZyYW1lKiogbV9wb2ludGVyVG9U
b3BFbnRyeUZyYW1lIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqKiBtX3BvaW50ZXJUb0FjdHVhbFN0
YWNrTGltaXQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCmluZGV4IGFkNWViOTUyNmFjN2FjM2JlNDM3ZmM2MjNk
ZjBiZDdkYzIwODA3ZDIuLjg4ZjY2Y2I2MzkxNTljMzY5ZDlkZGU2MGExZmNlNmRhNWQxNzEyODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCiAKKyNp
bmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CkBAIC02Niw2ICs2Nyw5IEBAIHN0cnVjdCBN
b2R1bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZv
cm1hdGlvbj4gewogICAgIHVpbnQzMl90IG1lbW9yeUNvdW50KCkgY29uc3QgeyByZXR1cm4gbWVt
b3J5ID8gMSA6IDA7IH0KICAgICB1aW50MzJfdCB0YWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4g
dGFibGVJbmZvcm1hdGlvbiA/IDEgOiAwOyB9CiAKKyAgICBjb25zdCBCaXRWZWN0b3ImIHJlZmVy
ZW5jZWRGdW5jdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZWRGdW5jdGlvbnM7IH0K
KyAgICB2b2lkIGFkZFJlZmVyZW5jZWRGdW5jdGlvbih1bnNpZ25lZCBpbmRleCkgY29uc3QgeyBt
X3JlZmVyZW5jZWRGdW5jdGlvbnMuc2V0KGluZGV4KTsgfQorCiAgICAgVmVjdG9yPEltcG9ydD4g
aW1wb3J0czsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGltcG9ydEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlczsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGludGVybmFsRnVuY3Rpb25T
aWduYXR1cmVJbmRpY2VzOwpAQCAtODQsNiArODgsOCBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRp
b24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAg
ICB1bnNpZ25lZCBmaXJzdEludGVybmFsR2xvYmFsIHsgMCB9OwogICAgIFZlY3RvcjxDdXN0b21T
ZWN0aW9uPiBjdXN0b21TZWN0aW9uczsKICAgICBSZWY8TmFtZVNlY3Rpb24+IG5hbWVTZWN0aW9u
OworICAgIAorICAgIG11dGFibGUgQml0VmVjdG9yIG1fcmVmZXJlbmNlZEZ1bmN0aW9uczsKIH07
CiAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0
aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmNwcAppbmRleCAzMGI2ZjNjZWQ5ZGY1NjI2MjIyNjI3MjUzYzI0Njg0YTNjOGI0OTQzLi4y
NTRlODI2YTgwMzA5NDQwY2QyNTdmM2Q3NDZiNzAyMTljZDQzNDM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0yOTEsOSArMjkx
LDExIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWwoKSAtPiBQYXJ0aWFsUmVzdWx0
CiAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbml0RXhwcihpbml0T3Bj
b2RlLCBnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlciwgdHlwZUZvckluaXRPcGNvZGUp
KTsKICAgICAgICAgaWYgKGluaXRPcGNvZGUgPT0gR2V0R2xvYmFsKQogICAgICAgICAgICAgZ2xv
YmFsLmluaXRpYWxpemF0aW9uVHlwZSA9IEdsb2JhbDo6RnJvbUdsb2JhbEltcG9ydDsKKyAgICAg
ICAgZWxzZSBpZiAoaW5pdE9wY29kZSA9PSBSZWZGdW5jKQorICAgICAgICAgICAgZ2xvYmFsLmlu
aXRpYWxpemF0aW9uVHlwZSA9IEdsb2JhbDo6RnJvbVJlZkZ1bmM7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPSBHbG9iYWw6OkZyb21FeHByZXNz
aW9uOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVGb3JJbml0T3Bjb2RlICE9IGds
b2JhbC50eXBlLCAiR2xvYmFsIGluaXRfZXhwciBvcGNvZGUgb2YgdHlwZSAiLCB0eXBlRm9ySW5p
dE9wY29kZSwgIiBkb2Vzbid0IG1hdGNoIGdsb2JhbCdzIHR5cGUgIiwgZ2xvYmFsLnR5cGUpOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFpc1N1YnR5cGUodHlwZUZvckluaXRPcGNvZGUs
IGdsb2JhbC50eXBlKSwgIkdsb2JhbCBpbml0X2V4cHIgb3Bjb2RlIG9mIHR5cGUgIiwgdHlwZUZv
ckluaXRPcGNvZGUsICIgZG9lc24ndCBtYXRjaCBnbG9iYWwncyB0eXBlICIsIGdsb2JhbC50eXBl
KTsKIAogICAgICAgICBtX2luZm8tPmdsb2JhbHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZ2xv
YmFsKSk7CiAgICAgfQpAQCAtNDc5LDExICs0ODEsMjEgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpw
YXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51bWJl
ciwKICAgICB9CiAKICAgICBjYXNlIFJlZk51bGw6IHsKLSAgICAgICAgcmVzdWx0VHlwZSA9IEFu
eXJlZjsKKyAgICAgICAgcmVzdWx0VHlwZSA9IEFueWZ1bmM7CiAgICAgICAgIGJpdHNPckltcG9y
dE51bWJlciA9IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgUmVmRnVuYzogeworICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoaW5kZXgpLCAiY2FuJ3QgZ2V0
IHJlZi5mdW5jIGluZGV4Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0g
bV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpLCAicmVmLmZ1bmMgaW5kZXgiLCBpbmRleCwgIiBleGNl
ZWRzIHRoZSBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7
CisKKyAgICAgICAgcmVzdWx0VHlwZSA9IEFueWZ1bmM7CisgICAgICAgIGJpdHNPckltcG9ydE51
bWJlciA9IGluZGV4OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUsICJ1bmtub3duIGluaXRfZXhwciBvcGNvZGUg
Iiwgb3Bjb2RlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlk
YXRlLmNwcAppbmRleCBhNGI3OGU0NThkZjQ1OThlMGNjZGE2MWZhOTRlYzkxOWEyOWFmY2Y0Li43
ZjFhYzYxZWU4YTI0Y2QxZTkxOGI4YmRlYWNjYjhkYmU0MzQ4ZTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTEwMywxMCArMTAzLDExIEBAIHB1
YmxpYzoKIAogICAgIC8vIFJlZmVyZW5jZXMKICAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpOworICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVuYyh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJsZXMKLSAgICBSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
VGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKKyAg
ICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2
YWx1ZSk7CiAKICAgICAvLyBMb2NhbHMKICAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdl
dExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTE3Nywy
MCArMTc4LDIxIEBAIGF1dG8gVmFsaWRhdGU6OmFkZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSkgLT4gUmVzdWx0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBWYWxpZGF0
ZTo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYg
aW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAogewotICAgIHJlc3VsdCA9
IFR5cGU6OkFueXJlZjsKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGU6OkkzMiAhPSBp
ZHgsICJ0YWJsZS5nZXQgaW5kZXggdG8gdHlwZSAiLCBpZHgsICIgZXhwZWN0ZWQgIiwgVHlwZTo6
STMyKTsKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFRhYmxlRWxlbWVudFR5cGU6OkFueXJl
ZiAhPSBtX21vZHVsZS50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSwgInRhYmxlLmdldCBleHBlY3Rz
IHRoZSB0YWJsZSB0byBoYXZlIHR5cGUgIiwgVHlwZTo6QW55cmVmKTsKKyAgICByZXN1bHQgPSBt
X21vZHVsZS50YWJsZUluZm9ybWF0aW9uLndhc21UeXBlKCk7CisgICAgV0FTTV9WQUxJREFUT1Jf
RkFJTF9JRihUeXBlOjpJMzIgIT0gaW5kZXgsICJ0YWJsZS5nZXQgaW5kZXggdG8gdHlwZSAiLCBp
bmRleCwgIiBleHBlY3RlZCAiLCBUeXBlOjpJMzIpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
YXV0byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lv
blR5cGUmIHZhbHVlKSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZFRhYmxlU2V0KEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBSZXN1bHQKIHsKLSAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGU6OkkzMiAhPSBpZHgsICJ0YWJsZS5zZXQgaW5k
ZXggdG8gdHlwZSAiLCBpZHgsICIgZXhwZWN0ZWQgIiwgVHlwZTo6STMyKTsKLSAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKFR5cGU6OkFueXJlZiAhPSB2YWx1ZSwgInRhYmxlLnNldCB2YWx1ZSB0
byB0eXBlICIsIHZhbHVlLCAiIGV4cGVjdGVkICIsIFR5cGU6OkFueXJlZik7Ci0gICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRihUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYgIT0gbV9tb2R1bGUudGFi
bGVJbmZvcm1hdGlvbi50eXBlKCksICJ0YWJsZS5zZXQgZXhwZWN0cyB0aGUgdGFibGUgdG8gaGF2
ZSB0eXBlICIsIFR5cGU6OkFueXJlZik7CisgICAgYXV0byB0eXBlID0gbV9tb2R1bGUudGFibGVJ
bmZvcm1hdGlvbi53YXNtVHlwZSgpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZTo6
STMyICE9IGluZGV4LCAidGFibGUuc2V0IGluZGV4IHRvIHR5cGUgIiwgaW5kZXgsICIgZXhwZWN0
ZWQgIiwgVHlwZTo6STMyKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUo
dmFsdWUsIHR5cGUpLCAidGFibGUuc2V0IHZhbHVlIHRvIHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0
ZWQgIiwgdHlwZSk7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX21vZHVsZS50YWJsZUlu
Zm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYKKyAgICAgICAgJiYg
bV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVu
Y3JlZiwgInRhYmxlLnNldCBleHBlY3RzIHRoZSB0YWJsZSB0byBoYXZlIHR5cGUgYW55cmVmIG9y
IGFueWZ1bmMiKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xOTgsNyArMjAwLDE2IEBAIGF1
dG8gVmFsaWRhdGU6OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25U
eXBlJiB2YWx1ZSkgLT4gUmVzdWx0CiBhdXRvIFZhbGlkYXRlOjphZGRSZWZJc051bGwoRXhwcmVz
c2lvblR5cGUmIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsKICAg
ICByZXN1bHQgPSBUeXBlOjpJMzI7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpB
bnlyZWYgIT0gdmFsdWUsICJyZWYuaXNfbnVsbCB0byB0eXBlICIsIHZhbHVlLCAiIGV4cGVjdGVk
ICIsIFR5cGU6OkFueXJlZik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBl
KHZhbHVlLCBUeXBlOjpBbnlyZWYpLCAicmVmLmlzX251bGwgdG8gdHlwZSAiLCB2YWx1ZSwgIiBl
eHBlY3RlZCAiLCBUeXBlOjpBbnlyZWYpOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBW
YWxpZGF0ZTo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUmVzdWx0Cit7CisgICAgcmVzdWx0ID0gVHlwZTo6QW55ZnVuYzsKKyAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKGluZGV4ID49IG1fbW9kdWxlLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUo
KSwgInJlZi5mdW5jIGluZGV4ICIsIGluZGV4LCAiIGlzIHRvbyBsYXJnZSwgbWF4IGlzICIsIG1f
bW9kdWxlLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CisgICAgbV9tb2R1bGUuYWRkUmVmZXJl
bmNlZEZ1bmN0aW9uKGluZGV4KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0yMjQsNyArMjM1
LDcgQEAgYXV0byBWYWxpZGF0ZTo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25U
eXBlIHZhbHVlKSAtPiBSZXN1bHQKIHsKICAgICBFeHByZXNzaW9uVHlwZSBsb2NhbFR5cGU7CiAg
ICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhnZXRMb2NhbChpbmRleCwgbG9jYWxUeXBlKSk7
Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihsb2NhbFR5cGUgIT0gdmFsdWUsICJzZXRfbG9j
YWwgdG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCBsb2NhbFR5cGUpOworICAgIFdBU01f
VkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZSwgbG9jYWxUeXBlKSwgInNldF9sb2Nh
bCB0byB0eXBlICIsIHZhbHVlLCAiIGV4cGVjdGVkICIsIGxvY2FsVHlwZSk7CiAgICAgcmV0dXJu
IHsgfTsKIH0KIApAQCAtMzYyLDcgKzM3Myw3IEBAIGF1dG8gVmFsaWRhdGU6OmFkZENhbGwodW5z
aWduZWQsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzCiAg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICE9IGFy
Z3Muc2l6ZSgpLCAiYXJpdHkgbWlzbWF0Y2ggaW4gY2FsbCwgZ290ICIsIGFyZ3Muc2l6ZSgpLCAi
IGFyZ3VtZW50cywgZXhwZWN0ZWQgIiwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKLSAgICAgICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRihhcmdzW2ldICE9IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgImFy
Z3VtZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbCwgZ290ICIsIGFyZ3NbaV0sICIsIGV4cGVjdGVk
ICIsIHNpZ25hdHVyZS5hcmd1bWVudChpKSk7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxf
SUYoIWlzU3VidHlwZShhcmdzW2ldLCBzaWduYXR1cmUuYXJndW1lbnQoaSkpLCAiYXJndW1lbnQg
dHlwZSBtaXNtYXRjaCBpbiBjYWxsLCBnb3QgIiwgYXJnc1tpXSwgIiwgZXhwZWN0ZWQgIiwgc2ln
bmF0dXJlLmFyZ3VtZW50KGkpKTsKIAogICAgIHJlc3VsdCA9IHNpZ25hdHVyZS5yZXR1cm5UeXBl
KCk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTM3NSw3ICszODYsNyBAQCBhdXRvIFZhbGlkYXRlOjph
ZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxF
eHByZXNzaQogICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJndW1lbnRDb3VudCAhPSBhcmdz
LnNpemUoKSAtIDEsICJhcml0eSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJn
cy5zaXplKCkgLSAxLCAiIGFyZ3VtZW50cywgZXhwZWN0ZWQgIiwgYXJndW1lbnRDb3VudCk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZ3NbaV0gIT0gc2lnbmF0dXJlLmFyZ3VtZW50KGkp
LCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJnc1tp
XSwgIiwgZXhwZWN0ZWQgIiwgc2lnbmF0dXJlLmFyZ3VtZW50KGkpKTsKKyAgICAgICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFyZ3NbaV0sIHNpZ25hdHVyZS5hcmd1bWVudChp
KSksICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmdz
W2ldLCAiLCBleHBlY3RlZCAiLCBzaWduYXR1cmUuYXJndW1lbnQoaSkpOwogCiAgICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRihhcmdzLmxhc3QoKSAhPSBJMzIsICJub24taTMyIGNhbGxfaW5kaXJl
Y3QgaW5kZXggIiwgYXJncy5sYXN0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1RvV2FzbS5jcHAKaW5kZXggMjYzMTNlODQyNjk2NTdmZWU5YjZjYmQ3M2I1NzA1OGM0NDVm
YjViOC4uNjg1Mjk1Nzg5ZTM2YjdjZmI1ZDZiOTA4ZjRmNTE0YzcyY2NkZDEzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRpc2FsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgog
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKICNpbmNsdWRlICJNYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgpAQCAtODMsNiArODQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29u
dGV4dCYgY29tcAogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgV2FzbTo6
STMyOgogICAgICAgICBjYXNlIFdhc206OkFueXJlZjoKKyAgICAgICAgY2FzZSBXYXNtOjpBbnlm
dW5jOgogICAgICAgICAgICAgaWYgKG51bUdQUnMgPj0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCku
bV9ncHJBcmdzLnNpemUoKSkKICAgICAgICAgICAgICAgICB0b3RhbEZyYW1lU2l6ZSArPSBzaXpl
b2Yodm9pZCopOwogICAgICAgICAgICAgKytudW1HUFJzOwpAQCAtMTIyLDIwICsxMjQsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENv
bXBpbGF0aW9uQ29udGV4dCYgY29tcAogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgSlNXZWJBc3NlbWJseUluc3RhbmNl
OjpvZmZzZXRPZkluc3RhbmNlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICB9
CiAKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFy
Z3VtZW50R1BSMiwgSW5zdGFuY2U6Om9mZnNldE9mUG9pbnRlclRvVG9wRW50cnlGcmFtZSgpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cihHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJndW1lbnRz
SW5jbHVkZUk2NCA/IEV4Y2VwdGlvblR5cGU6Okk2NEFyZ3VtZW50VHlwZSA6IEV4Y2VwdGlvblR5
cGU6Okk2NFJldHVyblR5cGUpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLQotICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0KLSAg
ICAgICAgaml0Lmp1bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWcpOwotICAgICAgICBqaXQuYnJlYWtwb2ludCgpOyAvLyBXZSBzaG91bGQgbm90IHJlYWNo
IHRoaXMuCi0KLSAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewotICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4od2FzbVRvSlNFeGNlcHRpb24pKTsKLSAgICAgICAgfSk7CisgICAgICAg
IGVtaXRUaHJvd1dhc21Ub0pTRXhjZXB0aW9uKGppdCwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBh
cmd1bWVudHNJbmNsdWRlSTY0ID8gRXhjZXB0aW9uVHlwZTo6STY0QXJndW1lbnRUeXBlIDogRXhj
ZXB0aW9uVHlwZTo6STY0UmV0dXJuVHlwZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCkBAIC0xNjUsNiArMTU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+
IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXAKICAgICAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpKSB7CiAgICAgICAgICAgICBjYXNlIFdh
c206OkkzMjoKICAgICAgICAgICAgIGNhc2UgV2FzbTo6STY0OgorICAgICAgICAgICAgY2FzZSBX
YXNtOjpBbnlmdW5jOgogICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlyZWY6CiAgICAgICAgICAg
ICAgICAgaWYgKG51bUdQUnMgPj0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkubV9ncHJBcmdzLnNp
emUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpID09
IFdhc206OkkzMikgewpAQCAtMjUwLDcgKzI0MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5h
bEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21w
CiAgICAgICAgIGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIEpTVmFsdWVSZWdz
IHsgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V2FzbTo6QW55cmVmOgotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5j
cmVmcyBvbmNlIHRoZXkgYXJlIHN1cHBvcnRlZCBoZXJlLgorICAgIGNhc2UgV2FzbTo6QW55ZnVu
YzoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXYXNtOjpJMzI6CiAgICAgICAgIGppdC56ZXJv
RXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOwpAQCAtMjY4LDcgKzI1OCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0
aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21wCiAgICAg
fQogICAgIGNhc2UgV2FzbTo6STY0OgogICAgIGNhc2UgV2FzbTo6RnVuYzoKLSAgICBjYXNlIFdh
c206OkFueWZ1bmM6CiAgICAgICAgIGppdC5icmVha3BvaW50KCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUhlbHBlcnMuaAppbmRleCBlYTI5MmEyMmY2NGUzODVjZWQyMzNiOGY0Y2JhYzVj
OGMwOGM2ZTFmLi4xM2QwYTA5NDdlZTFkZjBlZWExMzYwZjQ2MGQyYmQ0YzY1NTQ3MGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxw
ZXJzLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNXZWJBc3NlbWJs
eUhvc3RGdW5jdGlvbihWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIFdlYkFzc2VtYmx5RgogfQogCiAK
LUFMV0FZU19JTkxJTkUgYm9vbCBpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKFZNJiB2bSwgSlNP
YmplY3QqIG9iamVjdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0
aW9uKFZNJiB2bSwgSlNWYWx1ZSBvYmplY3QpCiB7CiAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiog
dW51c2VkOwogICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB1bnVzZWQyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHAKaW5kZXggNjY2YmY0N2YxZmUyMzMwMmZjMzBmZDRlMWRjNzM5NDVlYTRiM2QzZi4uMzIz
NDI3ZmQ4YTBhZjI0Y2UyOTM2NGZlNDA0YjE2NzBhNjgzYjU5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBA
IC05MSwxMSArOTEsMTIgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdGhpc09iamVjdC0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMoKTsg
KytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFuY2UoKS5pbXBv
cnRGdW5jdGlvbjxXcml0ZUJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRoaXMgYWxzbyBrZWVw
cyB0aGUgZnVuY3Rpb25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUuCiAKLSAgICBmb3Ig
KHNpemVfdCBpIDogdGhpc09iamVjdC0+aW5zdGFuY2UoKS5nbG9iYWxzVG9NYXJrKCkpIHsKLSAg
ICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFy
ZSBzdXBwb3J0ZWQgaGVyZS4KLSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTgxNTc+CisgICAgZm9yIChzaXplX3QgaSA6IHRoaXNPYmplY3QtPmlu
c3RhbmNlKCkuZ2xvYmFsc1RvTWFyaygpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkKEpTVmFsdWU6OmRlY29kZSh0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLmxvYWRJNjRHbG9iYWwo
aSkpKTsKLSAgICB9CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGwtPmNlbGxMb2Nr
KCkpOworICAgIGZvciAoYXV0byYgd3JhcHBlciA6IHRoaXNPYmplY3QtPmluc3RhbmNlKCkuZnVu
Y3Rpb25XcmFwcGVycygpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHdyYXBw
ZXIuZ2V0KCkpOwogfQogCiB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVh
dGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgUmVmPFdhc206OkNvZGVCbG9jaz4mJiB3YXNt
Q29kZUJsb2NrLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUgY3Jl
YXRpb25Nb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcAppbmRleCA5NjNjMjgyZThiODhkZjIzYmEz
OTk3YjFkN2QxNTA4Y2QyY2Y4OGMxLi44YWIyZjkwM2FjYWMxNWIxM2ExZGUzOTI0N2MwNTUwNTJl
ZGNmMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcjo6SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXIKIAogY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3I6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcikgfTsKIAorSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIHJldHVybiBKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7Cit9CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCmluZGV4IDY4ZDNhZDE0NjViMWFmOGU2ZTEx
NjkzNmZhMWJjOTJmNmVhNjUxZDUuLjg2MWY0NzJmM2RiNzcwOTdlYTNiY2MyNGM5MjQ2M2E5YzEx
YjhlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKQEAgLTQzLDYgKzQzLDggQEAgcHJvdGVjdGVkOgog
ICAgIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKK0pT
T2JqZWN0KiBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0ZSosIFZNJiwg
Y29uc3QgU3RyaW5nJik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2FzbVRvSlMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3Bw
CmluZGV4IDViZmY5Y2M2ZDA0NDFmMGVmY2YyMWI5ZGNmOTg4MTA3ZmI1Njg4YmIuLjhlNzE4ZWE2
MDBkNzE4YWY1NTAwOTA5NDM3NjE5YWQxNzBlZTU0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFt
ZVRyYWNlcnMuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTY1LDcgKzY2LDYgQEAgc3RhdGljIEV4
cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFp
bHVyZT4gaGFuZGxlQmEKICAgICAgICAgc3dpdGNoIChhcmdUeXBlKSB7CiAgICAgICAgIGNhc2Ug
Vm9pZDoKICAgICAgICAgY2FzZSBGdW5jOgotICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgICAgIGNhc2UgSTY0OiB7
CkBAIC0xNjIsMTAgKzE2MiwxMCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2Fz
bUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICAg
ICAgc3dpdGNoIChhcmdUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIFZvaWQ6CiAgICAgICAgICAg
ICBjYXNlIEZ1bmM6Ci0gICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAgICBjYXNl
IEk2NDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgY2FzZSBBbnlyZWY6CisgICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAg
ICAgICBjYXNlIEkzMjogewogICAgICAgICAgICAgICAgIEdQUlJlZyBncHJSZWc7CiAgICAgICAg
ICAgICAgICAgaWYgKG1hcnNoYWxsZWRHUFJzIDwgd2FzbUNDLm1fZ3ByQXJncy5zaXplKCkpCkBA
IC0yMzcsMTQgKzIzNywxNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVu
dHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBWb2lk
OgogICAgICAgICAgICAgICAgICAgICBjYXNlIEZ1bmM6Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQW55ZnVuYzoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBJNjQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEkzMjoKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KGJ1ZmZlclthcmdOdW1dKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBbnlmdW5jOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYnVmZmVyW2FyZ051bV0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24o
KnZtLCBhcmcpIHx8IGFyZy5pc051bGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIEFueXJl
ZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNt
IEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUgc3VwcG9ydGVkIGhlcmUuCiAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYnVmZmVyW2FyZ051bV0pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRjMyOgpAQCAt
MjY4LDcgKzI3MSw2IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQ
dHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAgICAgICAg
dWludDY0X3QgcmVhbFJlc3VsdDsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5y
ZXR1cm5UeXBlKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIEZ1bmM6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBBbnlmdW5jOgogICAgICAgICAgICAgICAgIGNhc2UgSTY0OgogICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTI3OCw2ICsyODAsMTEgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAg
ICAgICAgICAgICAgICAgICAgcmVhbFJlc3VsdCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0
aWNfY2FzdDx1aW50MzJfdD4ocmVzdWx0LnRvSW50MzIoZXhlYykpKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgQW55
ZnVuYzogeworICAgICAgICAgICAgICAgICAgICByZWFsUmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNGdW5jdGlvbigq
dm0pIHx8IHJlc3VsdC5pc051bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIEFueXJlZjogewogICAgICAgICAg
ICAgICAgICAgICByZWFsUmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzcxLDEwICszNzgsMTAgQEAgRXhwZWN0ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9K
UyhWTSogdm0KICAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgewogICAgICAgICAgICAgY2Fz
ZSBWb2lkOgogICAgICAgICAgICAgY2FzZSBGdW5jOgotICAgICAgICAgICAgY2FzZSBBbnlmdW5j
OgogICAgICAgICAgICAgY2FzZSBJNjQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KICAgICAgICAgICAgIGNhc2UgQW55cmVm
OgorICAgICAgICAgICAgY2FzZSBBbnlmdW5jOgogICAgICAgICAgICAgY2FzZSBJMzI6IHsKICAg
ICAgICAgICAgICAgICBHUFJSZWcgZ3ByUmVnOwogICAgICAgICAgICAgICAgIGlmIChtYXJzaGFs
bGVkR1BScyA8IHdhc21DQy5tX2dwckFyZ3Muc2l6ZSgpKQpAQCAtMzkwLDcgKzM5Nyw2IEBAIEV4
cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFp
bHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5k
MzJUb1B0cihncHJSZWcsIGdwclJlZyk7IC8vIENsZWFyIG5vbi1pbnQzMiBhbmQgbm9uLXRhZyBi
aXRzLgogICAgICAgICAgICAgICAgICAgICBqaXQuYm94SW50MzIoZ3ByUmVnLCBKU1ZhbHVlUmVn
cyhncHJSZWcpLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNl
IHRoZXkgYXJlIHN1cHBvcnRlZCBoZXJlLgogICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KGdw
clJlZywgY2FsbGVlRnJhbWUud2l0aE9mZnNldChjYWxsZWVGcmFtZU9mZnNldCkpOwogICAgICAg
ICAgICAgICAgIGNhbGxlZUZyYW1lT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC00NDEsMTAgKzQ0NywxMCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZN
KiB2bQogICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIFZv
aWQ6CiAgICAgICAgICAgICBjYXNlIEZ1bmM6Ci0gICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAg
ICAgICAgICAgICBjYXNlIEk2NDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAgY2FzZSBBbnlyZWY6Cisg
ICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAgICBjYXNlIEkzMjoKICAgICAgICAg
ICAgICAgICAvLyBTa2lwcGVkOiBoYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAgICAgIGlmICht
YXJzaGFsbGVkR1BScyA+PSB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKQEAgLTUxOSw3ICs1MjUs
NiBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmlu
ZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICAvLyBEaXNjYXJkLgogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZ1bmM6Ci0gICAgY2FzZSBBbnlmdW5jOgogICAgICAgICAvLyBG
b3IgdGhlIEphdmFTY3JpcHQgZW1iZWRkaW5nLCBpbXBvcnRzIHdpdGggdGhlc2UgdHlwZXMgaW4g
dGhlaXIgc2lnbmF0dXJlIHJldHVybiBhcmUgYSBXZWJBc3NlbWJseS5Nb2R1bGUgdmFsaWRhdGlv
biBlcnJvci4KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
YnJlYWs7CkBAIC01NTMsNiArNTU4LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBBbnlm
dW5jOgogICAgIGNhc2UgQW55cmVmOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEYzMjogewpA
QCAtNjk1LDYgKzcwMSwyNSBAQCB2b2lkKiB3YXNtVG9KU0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSW5zdGFuY2UqIHdhcwogICAgIHJldHVybiB2
bS50YXJnZXRNYWNoaW5lUENGb3JUaHJvdzsKIH0KIAordm9pZCBlbWl0VGhyb3dXYXNtVG9KU0V4
Y2VwdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHdhc21JbnN0YW5jZSwgV2FzbTo6RXhj
ZXB0aW9uVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh3YXNtSW5zdGFuY2UgIT0gR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2Fz
bUluc3RhbmNlLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1l
KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjApLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KHR5cGUpKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKworICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3Bl
cmF0aW9uUHRyVGFnKTsKKworICAgIGppdC5qdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBF
eGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKKyAgICBqaXQuYnJlYWtwb2ludCgpOyAvLyBXZSBzaG91
bGQgbm90IHJlYWNoIHRoaXMuCisKKyAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KFdhc206Ondhc21Ub0pTRXhjZXB0aW9uKSk7CisgICAgfSk7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNT
RU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuaAppbmRleCBlMGM3
NGMzMzgzNmYwNTJmNjBmZTg3NGU5M2EwYzcxZDY4M2Y4NjFlLi41NDQ1ODAwYjQ4NzI0Yzc3Mjhh
MzllNjJiNzJiMDA3YzYxYjg3OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dh
c21Ub0pTLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgSW5zdGFuY2U7CiBFeHBlY3RlZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21U
b0pTKFZNKiwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hdHVyZUluZGV4
LCB1bnNpZ25lZCBpbXBvcnRJbmRleCk7CiAKIHZvaWQqIHdhc21Ub0pTRXhjZXB0aW9uKEV4ZWNT
dGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUsIEluc3RhbmNlKik7Cit2b2lkIGVtaXRUaHJvd1dh
c21Ub0pTRXhjZXB0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZyB3YXNtSW5zdGFuY2UsIFdhc206
OkV4Y2VwdGlvblR5cGUpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CmluZGV4IDkxYjViODM4ODUyMGExNDJhYWUwOWM1MmRjM2ZjODUzOGUxN2JjZmYuLmQ4OTcxNTA0
MjYwNWQ3M2UzYzdiNDUzMmI2Mzk5NzA0YzNmOTM1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC04NCw2ICs4
NCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1i
bHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGNhc2UgV2FzbTo6STMyOgogICAg
ICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGFyZy50b0ludDMyKGV4ZWMpKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdhc206OkFueWZ1bmM6IHsKKyAgICAgICAgICAg
IGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJnKSAmJiAhYXJnLmlzTnVsbCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZXhlYywgdm0sICJB
bnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIpKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkFueXJlZjoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206Okk2NDoKQEAgLTk3LDcgKzEwMiw2IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206
OlZvaWQ6CiAgICAgICAgIGNhc2UgV2FzbTo6RnVuYzoKLSAgICAgICAgY2FzZSBXYXNtOjpBbnlm
dW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
QEAgLTIyOCw2ICsyMzIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4g
V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAgICAgICAgICAg
YXJndW1lbnRzSW5jbHVkZUk2NCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXYXNtOjpBbnlyZWY6CisgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKICAgICAgICAg
Y2FzZSBXYXNtOjpJMzI6CiAgICAgICAgICAgICBpZiAobnVtR1BScyA+PSBXYXNtOjp3YXNtQ2Fs
bGluZ0NvbnZlbnRpb24oKS5tX2dwckFyZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAgIHRvdGFs
RnJhbWVTaXplICs9IHNpemVvZihDUFVSZWdpc3Rlcik7CkBAIC0zMDMsNiArMzA4LDI3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpq
c0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgICAgICAgICAgICAgICAgICsrbnVtR1BSczsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFdhc206OkFueWZ1bmM6IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlu
bGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCisg
ICAgICAgICAgICAgICAgYm9vbCAoKnNob3VsZFRocm93KShXYXNtOjpJbnN0YW5jZSosIEpTVmFs
dWUpID0gW10gKFdhc206Okluc3RhbmNlKiB3YXNtSW5zdGFuY2UsIEpTVmFsdWUgYXJnKSAtPiBi
b29sIHsKKyAgICAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5j
ZSA9IHdhc21JbnN0YW5jZS0+b3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpOworICAgICAg
ICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmds
b2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhaXNXZWJBc3NlbWJseUhvc3RGdW5j
dGlvbih2bSwgYXJnKSAmJiAhYXJnLmlzTnVsbCgpOworICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZpbnN0YW5j
ZSgpLT5pbnN0YW5jZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgICAgICAg
ICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwganNPZmZzZXQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShzaG91bGRUaHJvdyk+KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNh
bGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCisgICAgICAgICAgICAgICAgaml0LmFk
ZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAg
ICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihz
aG91bGRUaHJvdykpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgc2xv
d1BhdGguYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUikpOworCisgICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFdhc206OkFueXJlZjogewogICAgICAgICAg
ICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBqc09mZnNldCksIHNjcmF0Y2hHUFIpOwogCkBAIC00NjYsMTMgKzQ5MiwxMSBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlv
bjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAgICAgICBpc05hTi5saW5rKCZqaXQpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBXYXNtOjpBbnlyZWY6IHsKLSAgICAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBwb3J0
ZWQgaGVyZS4KKyAgICBjYXNlIFdhc206OkFueWZ1bmM6CisgICAgY2FzZSBXYXNtOjpBbnlyZWY6
CiAgICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIFdhc206Okk2NDoKICAgICBjYXNlIFdh
c206OkZ1bmM6Ci0gICAgY2FzZSBXYXNtOjpBbnlmdW5jOgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA0
ZjgwMWU1NzY5MjdmZjY2ZWU1MGM2NTA4OTBlZmUwMjE3MDdiOGYyLi4xMmIxY2VmMmRmNDY4Nzlh
MmM3ZjFiMzcxZjRjNTkzOTliZWM2NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0yMzUsMTAg
KzIzNSwxNSBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICAgICAgLy8gaWkuIElm
IHRoZSBnbG9iYWxfdHlwZSBvZiBpIGlzIGk2NCBvciBUeXBlKHYpIGlzIG5vdCBOdW1iZXIsIHRo
cm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgogICAgICAgICAgICAgaWYgKG1vZHVsZUluZm9y
bWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSA9PSBXYXNtOjpJNjQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9y
KGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAi
Y2Fubm90IGJlIGFuIGk2NCIpKSk7Ci0gICAgICAgICAgICBpZiAobW9kdWxlSW5mb3JtYXRpb24u
Z2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlICE9IFdhc206OkFueXJlZiAmJiAhdmFsdWUu
aXNOdW1iZXIoKSkKKyAgICAgICAgICAgIGlmICghaXNTdWJ0eXBlKG1vZHVsZUluZm9ybWF0aW9u
Lmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSwgV2FzbTo6QW55cmVmKSAmJiAhdmFsdWUu
aXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2Vi
QXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImlt
cG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgbnVtYmVyIikpKTsKICAgICAgICAgICAgIC8vIGlp
aS4gQXBwZW5kIFRvV2ViQXNzZW1ibHlWYWx1ZSh2KSB0byBpbXBvcnRzLgogICAgICAgICAgICAg
c3dpdGNoIChtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUp
IHsKKyAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKKyAgICAgICAgICAgICAgICBpZiAo
IWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVlKSAmJiAhdmFsdWUuaXNOdWxsKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQg
Z2xvYmFsIiwgIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIG9yIG51bGwiKSkpOwor
ICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGltcG9ydC5r
aW5kSW5kZXgsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgV2FzbTo6QW55cmVmOgogICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCku
c2V0R2xvYmFsKGltcG9ydC5raW5kSW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTMxOSw2ICszMjQsNDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlu
ayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAg
fQogICAgIH0KIAorICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW1wb3J0Q291bnQgPSBjb2RlQmxvY2st
PmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKKyAgICBhdXRvIG1ha2VGdW5jdGlvbldyYXBwZXIgPSBb
Jl0gKGNvbnN0IFN0cmluZyYgZmllbGQsIHVpbnQzMl90IGluZGV4KSAtPiBKU1ZhbHVlIHsKKyAg
ICAgICAgLy8gSWYgd2UgYWxyZWFkeSBtYWRlIGEgd3JhcHBlciwgZG8gbm90IG1ha2UgYSBuZXcg
b25lLgorICAgICAgICBKU1ZhbHVlIHdyYXBwZXIgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmdl
dEZ1bmN0aW9uV3JhcHBlcihpbmRleCk7CisKKyAgICAgICAgaWYgKCF3cmFwcGVyLmlzTnVsbCgp
KQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICAgICAgLy8gMS4gSWYgZSBpcyBh
IGNsb3N1cmUgYzoKKyAgICAgICAgLy8gICBpLiBJZiB0aGVyZSBpcyBhbiBFeHBvcnRlZCBGdW5j
dGlvbiBFeG90aWMgT2JqZWN0IGZ1bmMgaW4gZnVuY3Mgd2hvc2UgZnVuYy5bW0Nsb3N1cmVdXSBl
cXVhbHMgYywgdGhlbiByZXR1cm4gZnVuYy4KKyAgICAgICAgLy8gICBpaS4gKE5vdGU6IEF0IG1v
c3Qgb25lIHdyYXBwZXIgaXMgY3JlYXRlZCBmb3IgYW55IGNsb3N1cmUsIHNvIGZ1bmMgaXMgdW5p
cXVlLCBldmVuIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBvY2N1cnJhbmNlcyBpbiB0aGUgbGlzdC4g
TW9yZW92ZXIsIGlmIHRoZSBpdGVtIHdhcyBhbiBpbXBvcnQgdGhhdCBpcyBhbHJlYWR5IGFuIEV4
cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3QsIHRoZW4gdGhlIG9yaWdpbmFsIGZ1bmN0aW9u
IG9iamVjdCB3aWxsIGJlIGZvdW5kLiBGb3IgaW1wb3J0cyB0aGF0IGFyZSByZWd1bGFyIEpTIGZ1
bmN0aW9ucywgYSBuZXcgd3JhcHBlciB3aWxsIGJlIGNyZWF0ZWQuKQorICAgICAgICBpZiAoaW5k
ZXggPCBmdW5jdGlvbkltcG9ydENvdW50KSB7CisgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rp
b25JbXBvcnQgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFy
cmllcjxKU09iamVjdD4+KGluZGV4KS0+Z2V0KCk7CisgICAgICAgICAgICBpZiAoaXNXZWJBc3Nl
bWJseUhvc3RGdW5jdGlvbih2bSwgZnVuY3Rpb25JbXBvcnQpKQorICAgICAgICAgICAgICAgIHdy
YXBwZXIgPSBmdW5jdGlvbkltcG9ydDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLT5zaWduYXR1
cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOworICAgICAgICAgICAgICAgIHdy
YXBwZXIgPSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
ZnVuY3Rpb25JbXBvcnQsIGluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBzaWduYXR1cmVJbmRleCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyAgIGlpaS4g
T3RoZXJ3aXNlOgorICAgICAgICAgICAgLy8gICAgIGEuIExldCBmdW5jIGJlIGFuIEV4cG9ydGVk
IEZ1bmN0aW9uIEV4b3RpYyBPYmplY3QgY3JlYXRlZCBmcm9tIGMuCisgICAgICAgICAgICAvLyAg
ICAgYi4gQXBwZW5kIGZ1bmMgdG8gZnVuY3MuCisgICAgICAgICAgICAvLyAgICAgYy4gUmV0dXJu
IGZ1bmMuCisgICAgICAgICAgICBXYXNtOjpDYWxsZWUmIGVtYmVkZGVyRW50cnlwb2ludENhbGxl
ZSA9IGNvZGVCbG9jay0+ZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZShpbmRleCk7CisgICAgICAgICAgICBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0
aW9uOjpMb2FkTG9jYXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNvZGVCbG9jay0+ZW50
cnlwb2ludExvYWRMb2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOworICAgICAg
ICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25h
dHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7CisgICAgICAgICAgICBjb25z
dCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiog
ZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCksIHNpZ25hdHVyZS5h
cmd1bWVudENvdW50KCksIGZpZWxkLCBtX2luc3RhbmNlLmdldCgpLCBlbWJlZGRlckVudHJ5cG9p
bnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKKyAgICAg
ICAgICAgIHdyYXBwZXIgPSBmdW5jdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCh3
cmFwcGVyLmlzRnVuY3Rpb24odm0pKTsKKyAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5z
ZXRGdW5jdGlvbldyYXBwZXIoaW5kZXgsIHdyYXBwZXIpOworCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBtb2R1bGVJbmZvcm1hdGlvbi5y
ZWZlcmVuY2VkRnVuY3Rpb25zKCkpCisgICAgICAgIG1ha2VGdW5jdGlvbldyYXBwZXIoIlJlZmVy
ZW5jZWQgZnVuY3Rpb24iLCBpbmRleCk7CisKICAgICAvLyBHbG9iYWxzCiAgICAgewogICAgICAg
ICBmb3IgKHNpemVfdCBnbG9iYWxJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmZpcnN0SW50ZXJu
YWxHbG9iYWw7IGdsb2JhbEluZGV4IDwgbW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFscy5zaXplKCk7
ICsrZ2xvYmFsSW5kZXgpIHsKQEAgLTMyNywxMyArMzczLDE2IEBAIHZvaWQgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1w
b3J0T2JqCiAgICAgICAgICAgICBpZiAoZ2xvYmFsLmluaXRpYWxpemF0aW9uVHlwZSA9PSBXYXNt
OjpHbG9iYWw6OkZyb21HbG9iYWxJbXBvcnQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xv
YmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIgPCBtb2R1bGVJbmZvcm1hdGlvbi5maXJzdElu
dGVybmFsR2xvYmFsKTsKICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNl
dEdsb2JhbChnbG9iYWxJbmRleCwgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTY0R2xvYmFs
KGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPT0gV2FzbTo6R2xvYmFsOjpGcm9tUmVmRnVu
YykgeworICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51
bWJlciA8IG1vZHVsZUluZm9ybWF0aW9uLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG1ha2VGdW5jdGlvbldyYXBwZXIoIkdsb2JhbCBpbml0IGV4cHIi
LCBnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlcikuaXNGdW5jdGlvbih2bSkpOworICAg
ICAgICAgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGdsb2JhbEluZGV4
LCBKU1ZhbHVlOjplbmNvZGUobWFrZUZ1bmN0aW9uV3JhcHBlcigiR2xvYmFsIGluaXQgZXhwciIs
IGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKSkpOwogICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoZ2xvYmFs
SW5kZXgsIGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKTsKICAgICAgICAgfQogICAg
IH0KIAogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9IG1vZHVsZS0+ZXhwb3J0
U3ltYm9sVGFibGUoKTsKLSAgICB1bnNpZ25lZCBmdW5jdGlvbkltcG9ydENvdW50ID0gY29kZUJs
b2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCk7CiAKICAgICAvLyBMZXQgZXhwb3J0cyBiZSBhIGxp
c3Qgb2YgKHN0cmluZywgSlMgdmFsdWUpIHBhaXJzIHRoYXQgaXMgbWFwcGVkIGZyb20gZWFjaCBl
eHRlcm5hbCB2YWx1ZSBlIGluIGluc3RhbmNlLmV4cG9ydHMgYXMgZm9sbG93czoKICAgICBKU01v
ZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBleHBvcnRTeW1ib2xUYWJsZSwgSlNW
YWx1ZSgpLCB0aGlzKTsKQEAgLTM0MSwzMCArMzkwLDkgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRP
YmoKICAgICAgICAgSlNWYWx1ZSBleHBvcnRlZFZhbHVlOwogICAgICAgICBzd2l0Y2ggKGV4cC5r
aW5kKSB7CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5jdGlvbjogewotICAg
ICAgICAgICAgLy8gMS4gSWYgZSBpcyBhIGNsb3N1cmUgYzoKLSAgICAgICAgICAgIC8vICAgaS4g
SWYgdGhlcmUgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCBmdW5jIGluIGZ1
bmNzIHdob3NlIGZ1bmMuW1tDbG9zdXJlXV0gZXF1YWxzIGMsIHRoZW4gcmV0dXJuIGZ1bmMuCi0g
ICAgICAgICAgICAvLyAgIGlpLiAoTm90ZTogQXQgbW9zdCBvbmUgd3JhcHBlciBpcyBjcmVhdGVk
IGZvciBhbnkgY2xvc3VyZSwgc28gZnVuYyBpcyB1bmlxdWUsIGV2ZW4gaWYgdGhlcmUgYXJlIG11
bHRpcGxlIG9jY3VycmFuY2VzIGluIHRoZSBsaXN0LiBNb3Jlb3ZlciwgaWYgdGhlIGl0ZW0gd2Fz
IGFuIGltcG9ydCB0aGF0IGlzIGFscmVhZHkgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9i
amVjdCwgdGhlbiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0IHdpbGwgYmUgZm91bmQuIEZv
ciBpbXBvcnRzIHRoYXQgYXJlIHJlZ3VsYXIgSlMgZnVuY3Rpb25zLCBhIG5ldyB3cmFwcGVyIHdp
bGwgYmUgY3JlYXRlZC4pCi0gICAgICAgICAgICBpZiAoZXhwLmtpbmRJbmRleCA8IGZ1bmN0aW9u
SW1wb3J0Q291bnQpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0g
ZXhwLmtpbmRJbmRleDsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQg
PSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09i
amVjdD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNXZWJB
c3NlbWJseUhvc3RGdW5jdGlvbih2bSwgZnVuY3Rpb25JbXBvcnQpKQotICAgICAgICAgICAgICAg
ICAgICBleHBvcnRlZFZhbHVlID0gZnVuY3Rpb25JbXBvcnQ7Ci0gICAgICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUlu
ZGV4ID0gbW9kdWxlLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rp
b25JbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBXZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBvcnQsIGZ1
bmN0aW9uSW5kZXgsIG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vICAgaWlp
LiBPdGhlcndpc2U6Ci0gICAgICAgICAgICAgICAgLy8gICAgIGEuIExldCBmdW5jIGJlIGFuIEV4
cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3QgY3JlYXRlZCBmcm9tIGMuCi0gICAgICAgICAg
ICAgICAgLy8gICAgIGIuIEFwcGVuZCBmdW5jIHRvIGZ1bmNzLgotICAgICAgICAgICAgICAgIC8v
ICAgICBjLiBSZXR1cm4gZnVuYy4KLSAgICAgICAgICAgICAgICBXYXNtOjpDYWxsZWUmIGVtYmVk
ZGVyRW50cnlwb2ludENhbGxlZSA9IGNvZGVCbG9jay0+ZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVl
RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKLSAgICAgICAgICAgICAgICBX
YXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gZW50cnlwb2lu
dExvYWRMb2NhdGlvbiA9IGNvZGVCbG9jay0+ZW50cnlwb2ludExvYWRMb2NhdGlvbkZyb21GdW5j
dGlvbkluZGV4U3BhY2UoZXhwLmtpbmRJbmRleCk7Ci0gICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1
bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKLSAgICAgICAgICAgICAgICBjb25zdCBX
YXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQoc2lnbmF0dXJlSW5kZXgpOwotICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24q
IGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpLCBzaWduYXR1cmUu
YXJndW1lbnRDb3VudCgpLCBTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVsZCksIG1faW5zdGFuY2Uu
Z2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlwb2ludExvYWRMb2NhdGlvbiwg
c2lnbmF0dXJlSW5kZXgpOwotICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlv
bjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBtYWtlRnVuY3Rp
b25XcmFwcGVyKFN0cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxkKSwgZXhwLmtpbmRJbmRleCk7Cisg
ICAgICAgICAgICBBU1NFUlQoZXhwb3J0ZWRWYWx1ZS5pc0Z1bmN0aW9uKHZtKSk7CisgICAgICAg
ICAgICBBU1NFUlQobWFrZUZ1bmN0aW9uV3JhcHBlcihTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVs
ZCksIGV4cC5raW5kSW5kZXgpID09IGV4cG9ydGVkVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBA
IC0zODgsOCArNDE2LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgICAgIC8v
IFJldHVybiBUb0pTVmFsdWUodikuCiAgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbC50eXBlKSB7
CiAgICAgICAgICAgICBjYXNlIFdhc206OkFueXJlZjoKLSAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJlIHN1cHBvcnRlZCBo
ZXJlLgotICAgICAgICAgICAgICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4MTU3PgorICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlmdW5jOgogICAgICAg
ICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9pbnN0YW5jZS0+aW5z
dGFuY2UoKS5sb2FkSTY0R2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDMwYmJjNzQ3MjM3
ODM5MjJlZGJiZjYzNDk5MzQ5MGY0OGI3YjdlMDIuLjc1Mjg1ZDZmYjcwMDkwMWNhNTI3NWVhM2Zk
NzViYjE4ZDMwZTQxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dh
c20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTEx
LDEzICsxMSwxMyBAQAogICAgICAgICAiaTY0IjogICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6ICAtMiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJmMzIiOiAgICAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zLCAiYjN0eXBlIjogIkIzOjpGbG9hdCIg
fSwKICAgICAgICAgImY2NCI6ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTQs
ICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKLSAgICAgICAgImFueWZ1bmMiOiB7ICJ0eXBlIjog
InZhcmludDciLCAidmFsdWUiOiAtMTYsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCisgICAgICAg
ICJhbnlmdW5jIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTE2LCAiYjN0eXBlIjog
IkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImFueXJlZiI6ICB7ICJ0eXBlIjogInZhcmludDciLCAi
dmFsdWUiOiAtMTcsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAg
IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIg
fSwKICAgICAgICAgInZvaWQiOiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtNjQs
ICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0KICAgICB9LAotICAgICJ2YWx1ZV90eXBlIjogWyJpMzIi
LCAiaTY0IiwgImYzMiIsICJmNjQiLCAiYW55cmVmIl0sCi0gICAgImJsb2NrX3R5cGUiOiBbImkz
MiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJ2b2lkIiwgImFueXJlZiJdLAorICAgICJ2YWx1ZV90
eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiYW55cmVmIiwgImFueWZ1bmMiXSwK
KyAgICAiYmxvY2tfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgInZvaWQiLCAi
YW55cmVmIiwgImFueWZ1bmMiXSwKICAgICAiZWxlbV90eXBlIjogWyJhbnlmdW5jIiwiYW55cmVm
Il0sCiAgICAgImV4dGVybmFsX2tpbmQiOiB7CiAgICAgICAgICJGdW5jdGlvbiI6IHsgInR5cGUi
OiAidWludDgiLCAidmFsdWUiOiAwIH0sCkBAIC01OSw4ICs1OSw5IEBACiAgICAgICAgICJpNjQu
Y29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICA2
NiwgInJldHVybiI6IFsiaTY0Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6
ICJ2YXJpbnQ2NCJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBpNjQiIH0s
CiAgICAgICAgICJmNjQuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICA2OCwgInJldHVybiI6IFsiZjY0Il0sICAgICAgInBhcmFtZXRlciI6IFtd
LCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAg
ICAgICAgICAidHlwZSI6ICJkb3VibGUifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnBy
ZXRlZCBhcyBmNjQiIH0sCiAgICAgICAgICJmMzIuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICA2NywgInJldHVybiI6IFsiZjMyIl0sICAgICAg
InBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJmbG9hdCJ9XSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFu
dCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmMzIiIH0sCi0gICAgICAgICJyZWYubnVsbCI6ICAgICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIwOCwgInJldHVybiI6
IFsiYW55cmVmIl0sICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiYSBjb25zdGFudCBudWxsIHJlZmVyZW5jZSIgfSwKKyAgICAgICAgInJlZi5udWxsIjog
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjA4LCAicmV0
dXJuIjogWyJhbnlmdW5jIl0sICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJhIGNvbnN0YW50IG51bGwgcmVmZXJlbmNlIiB9LAogICAgICAgICAicmVmLmlz
X251bGwiOiAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAyMDks
ICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueXJlZiJdLCAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogImRldGVybWluZSBpZiBhIHJlZmVyZW5jZSBpcyBudWxsIiB9LAorICAg
ICAgICAicmVmLmZ1bmMiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAyMTAsICJyZXR1cm4iOiBbImFueWZ1bmMiXSwgICJwYXJhbWV0ZXIiOiBbXSwgICAg
ICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4
IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgZnVu
Y3Rpb24gYXQgdGhlIGdpdmVuIGluZGV4IiB9LAogICAgICAgICAiZ2V0X2xvY2FsIjogICAgICAg
ICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzIsICJyZXR1cm4iOiBb
ImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1d
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogInJlYWQgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0sCiAgICAgICAgICJzZXRf
bG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAz
MywgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0s
CiAgICAgICAgICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFsi
YW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5k
ZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBv
ciBwYXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmZjMWNhZDViYzQyMzMz
MjM1MzljYzRjODY1YWExNTE4YTg5OTgzZi4uNmNmNDgxOTNmNDY4YjQ2ZWU4MDU2NTZmOTNhOWQ3
MjEzNTdkN2U5ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxOS0wNi0xMCAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRk
IHN1cHBvcnQgZm9yIEZ1bmNyZWYgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdhc20vQnVpbGRl
ci5qczoKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LkJ1aWxkZXIucHJvdG90eXBlLl9yZWdpc3Rl
clNlY3Rpb25CdWlsZGVycy5jb25zdC5zZWN0aW9uLmluLldBU00uZGVzY3JpcHRpb24uc2VjdGlv
bi5zd2l0Y2guc2VjdGlvbi5jYXNlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRoaXMuc2VjdGlvbik6
CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl9nbG9iYWxzLmpzOgorICAgICAgICAq
IHdhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qczogQWRkZWQuCisgICAgICAgIChmdWxsR0MuZ2Mu
bWFrZUV4cG9ydGVkRnVuY3Rpb24pOgorICAgICAgICAobWFrZUV4cG9ydGVkSWRlbnQpOgorICAg
ICAgICAobWFrZUFueWZ1bmNJZGVudCk6CisgICAgICAgIChmdW4pOgorICAgICAgICAoYXNzZXJ0
LmVxLmluc3RhbmNlLmV4cG9ydHMuZml4LmZ1bik6CisgICAgICAgIChhc3NlcnQuZXEuaW5zdGFu
Y2UuZXhwb3J0cy5maXgpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuRW5kLkVuZC5G
dW5jdGlvbi5FbmQuQ29kZS5FbmQuV2ViQXNzZW1ibHkuaW1wLnJlZik6CisgICAgICAgIChzdHJp
bmdfYXBwZWFyZWRfaGVyZS5FbmQuRW5kLkZ1bmN0aW9uLkVuZC5Db2RlLkVuZC5XZWJBc3NlbWJs
eSk6CisgICAgICAgIChHZXRMb2NhbC4wLkkzMkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJB
c3NlbWJseS5mdW4pOgorICAgICAgICAoR2V0TG9jYWwuMC5JMzJDb25zdC4wLlRhYmxlU2V0LkVu
ZC5FbmQuV2ViQXNzZW1ibHkuYXNzZXJ0LnRocm93cyk6CisgICAgICAgIChHZXRMb2NhbC4wLkkz
MkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseSk6CisgICAgICAgIChhc3NlcnQu
dGhyb3dzKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MuZG9UZXN0KToKKyAgICAgICAgKGxldC5p
bXBvcnRlZEZ1bi5vZik6CisgICAgICAgIChtYWtlQW55ZnVuY0lkZW50LmZ1bik6CisgICAgICAg
ICogd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanM6CisgICAgICAgIChhc3NlcnQudGhyb3dz
KToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0xNiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEdyb3duIHJlZ2lvbiBvZiBX
YXNtVGFibGUgc2hvdWxkIGJlIGluaXRpYWxpemVkIHdpdGggbnVsbApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwppbmRleCA3ZTdj
MWI3ZGMyMjNjODgzZTEwZTZmMzczYmNkZDNjNmMyOWQ1MTFiLi42NWYxZjQ3N2E5OGI4NjIwZmNj
ZDJhYThmOGMxMTA5ZTBhZjY3ODY2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5q
cworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpAQCAtNTM2LDYgKzUzNiwxMCBAQCBleHBv
cnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LmRhdGEucHVzaCh7IHR5cGUsIG9wOiAiZ2V0X2dsb2JhbCIsIG11dGFiaWxpdHk6IF9ub3JtYWxp
emVNdXRhYmlsaXR5KG11dGFiaWxpdHkpLCBpbml0VmFsdWUgfSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IoZ2xvYmFsQnVpbGRlcik7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgUmVm
RnVuYzogKHR5cGUsIGluaXRWYWx1ZSwgbXV0YWJpbGl0eSkgPT4geworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHsgdHlwZSwgb3A6ICJyZWYuZnVuYyIsIG11dGFiaWxp
dHk6IF9ub3JtYWxpemVNdXRhYmlsaXR5KG11dGFiaWxpdHkpLCBpbml0VmFsdWUgfSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IoZ2xv
YmFsQnVpbGRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgUmVmTnVsbDogKHR5cGUsIG11dGFiaWxpdHkpID0+IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLmRhdGEucHVzaCh7IHR5cGUsIG9wOiAicmVmLm51bGwiLCBtdXRhYmls
aXR5OiBfbm9ybWFsaXplTXV0YWJpbGl0eShtdXRhYmlsaXR5KSB9KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihnbG9iYWxCdWlsZGVy
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl9nbG9iYWxzLmpz
IGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX2dsb2JhbHMuanMKaW5kZXggMTg0NDU3
YTMzZmVjYjBiMDhhZGUxM2RlY2ZjZjE5ZTdkMzMwODlhZS4uMmQzY2E3YmM2MDVmNzk3NGNmZWYy
NTgxNGU4OWFlNTg0YjA1MzEzMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMv
YW55cmVmX2dsb2JhbHMuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX2ds
b2JhbHMuanMKQEAgLTU2LDcgKzU2LDkgQEAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2Io
KSwgbnVsbCkKIAogY29uc3Qgb2JqID0geyB0ZXN0OiAiaGkiIH0KIAotJDEuZXhwb3J0cy5zZXRf
Z2xvYihvYmopOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBvYmopOworYXNzZXJ0
LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmV4cGdsb2IyID0gbnVsbCwgVHlwZUVycm9yLCAiQXR0
ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKQorCiskMS5leHBvcnRzLnNl
dF9nbG9iKG9iaik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIG9iaik7IGFzc2Vy
dC5lcSgkMS5leHBvcnRzLmV4cGdsb2IyLCAiaGkiKQogJDEuZXhwb3J0cy5zZXRfZ2xvYig1KTsg
YXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgNSkKICQxLmV4cG9ydHMuc2V0X2dsb2Io
bnVsbCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIG51bGwpCiAkMS5leHBvcnRz
LnNldF9nbG9iKCJoaSIpOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCAiaGkiKQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMgYi9KU1Rlc3Rz
L3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWUwNmU0NjU4Mzg3Mjgz
YzU4MzM1YjliNjZmNzc4NTNmOWJiMTAyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L3JlZmVyZW5jZXMvZnVuY19yZWYuanMKQEAgLTAsMCArMSw0NDcgQEAKK2ltcG9ydCAqIGFzIGFz
c2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRl
ci5qcyc7CisKK2Z1bGxHQygpCitnYygpCisKK2Z1bmN0aW9uIG1ha2VFeHBvcnRlZEZ1bmN0aW9u
KGkpIHsKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5
cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLkV4cG9y
dCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiaCIpCisgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFtdLCBy
ZXQ6ICJpMzIiIH0sIFtdKQorICAgICAgICAgICAgICAuSTMyQ29uc3QoaSkKKyAgICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5FbmQoKTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2Vi
QXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJpbik7CisgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlKTsKKworICAgIHJldHVybiBpbnN0YW5jZS5leHBvcnRzLmgKK30KKworZnVuY3Rpb24g
bWFrZUV4cG9ydGVkSWRlbnQoKSB7CisgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigp
KQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImgiKQorICAgICAg
ICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaCIs
IHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0sIFtdKQorICAgICAgICAgICAgICAuR2V0
TG9jYWwoMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKTsKKworICAgIGNv
bnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUg
PSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKTsKKworICAgIHJldHVybiBpbnN0YW5jZS5leHBv
cnRzLmgKK30KKworZnVuY3Rpb24gbWFrZUFueWZ1bmNJZGVudCgpIHsKKyAgICBjb25zdCBidWls
ZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAg
IC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5G
dW5jdGlvbigiaCIpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJhbnlmdW5j
IiB9LCBbXSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuRW5kKCk7CisKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5
KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4p
OworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7
CisKKyAgICByZXR1cm4gaW5zdGFuY2UuZXhwb3J0cy5oCit9CisKK3sKKyAgICBjb25zdCBteWZ1
biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDEzMzcpOworICAgIGZ1bmN0aW9uIGZ1bigpIHsKKyAg
ICAgICAgcmV0dXJuIDQxOworICAgIH0KKworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxk
ZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5k
KCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJoIikKKyAg
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJpIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRf
aCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZml4IikKKyAgICAgICAgICAgICAgLkZ1bmN0
aW9uKCJnZXRfbm90X2V4cG9ydGVkIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJsb2NhbF9y
ZWFkIikKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAu
RnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDogImFueXJlZiIgfSwgWyJh
bnlyZWYiXSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5TZXRM
b2NhbCgxKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAgIC5FbmQoKQor
CisgICAgICAgICAgICAuRnVuY3Rpb24oImkiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDog
ImFueWZ1bmMiIH0sIFsiYW55ZnVuYyJdKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICAgICAgLlNldExvY2FsKDEpCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgxKQorICAg
ICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X2giLCB7IHBhcmFt
czogW10sIHJldDogImFueWZ1bmMiIH0sIFsiYW55ZnVuYyJdKQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKKyAgICAgICAgICAgICAgLlJlZkZ1bmMoMCkKKyAgICAgICAgICAgICAgLlNldExv
Y2FsKDApCisgICAgICAgICAgICAgIC5JZigiYW55ZnVuYyIpCisgICAgICAgICAgICAgIC5CbG9j
aygiYW55ZnVuYyIsIChiKSA9PgorICAgICAgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAuRWxzZSgpCisgICAgICAgICAgICAgIC5CbG9jaygi
YW55ZnVuYyIsIChiKSA9PgorICAgICAgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAg
ICAgICAgICAuRnVuY3Rpb24oImZpeCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIgfSwg
W10pCisgICAgICAgICAgICAgIC5SZWZGdW5jKDMpCisgICAgICAgICAgICAuRW5kKCkKKworICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfbm90X2V4cG9ydGVkIiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJhbnlmdW5jIiB9LCBbXSkKKyAgICAgICAgICAgICAgLlJlZkZ1bmMoNSkKKyAgICAgICAgICAg
IC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldF80MiIsIHsgcGFyYW1zOiBbXSwg
cmV0OiAiaTMyIiB9LCBbXSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAg
ICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigibG9jYWxfcmVhZCIsIHsgcGFyYW1z
OiBbXSwgcmV0OiAiaTMyIiB9LCBbImFueWZ1bmMiXSkKKyAgICAgICAgICAgICAgLkdldExvY2Fs
KDApCisgICAgICAgICAgICAgIC5SZWZJc051bGwoKQorICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkVuZCgpOworCisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdl
dCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAg
ICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUpOworICAg
IGZ1bGxHQygpOworCisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMubG9jYWxfcmVhZCgp
LCAxKQorICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmgobnVsbCksIG51bGwpCisKKyAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IGluc3RhbmNlLmV4cG9ydHMuaChmdW4pLCBFcnJvciwgIkFu
eWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5j
KC4uLmFyZ3MpJykiKQorICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmgobXlmdW4pLCBt
eWZ1bikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGluc3RhbmNlLmV4cG9ydHMuaCg1KSwgRXJy
b3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGlu
ZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGluc3RhbmNlLmV4
cG9ydHMuaCh1bmRlZmluZWQpLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3
YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorCisgICAgYXNzZXJ0
LmVxKGluc3RhbmNlLmV4cG9ydHMuaShudWxsKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEoaW5zdGFu
Y2UuZXhwb3J0cy5pKG15ZnVuKSwgbXlmdW4pCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0
YW5jZS5leHBvcnRzLmkoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQg
d2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IGluc3RhbmNlLmV4cG9ydHMuaSg1KSwgRXJyb3IsICJBbnlmdW5jIG11c3Qg
YmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScp
IikKKworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gaW5zdGFuY2UuZXhwb3J0cy5nZXRfaCgpKGZ1
biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2
YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9y
dHMuZ2V0X2goKShudWxsKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5n
ZXRfaCgpKG15ZnVuKSwgbXlmdW4pCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5l
eHBvcnRzLmdldF9oKCkoNSksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdh
c20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisKKyAgICBhc3NlcnQu
ZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfbm90X2V4cG9ydGVkKCkoKSwgNDIpCisKKyAgICBhc3Nl
cnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5maXgoKSgpLCBpbnN0YW5jZS5leHBvcnRzLmZpeCgpKTsK
KyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5maXgoKSwgaW5zdGFuY2UuZXhwb3J0cy5m
aXgpOworfQorCisvLyBHbG9iYWxzCisKK3sKKyAgICBjb25zdCBteWZ1biA9IG1ha2VFeHBvcnRl
ZEZ1bmN0aW9uKDQyKTsKKyAgICBmdW5jdGlvbiBmdW4oKSB7CisgICAgICAgIHJldHVybiA0MTsK
KyAgICB9CisKKyAgICBjb25zdCAkMSA9ICgoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAuR2xvYmFsKCkuQW55ZnVuYygiaW1wIiwg
InJlZiIsICJpbW11dGFibGUiKS5FbmQoKQorICAgICAgLkVuZCgpCisgICAgICAuRnVuY3Rpb24o
KS5FbmQoKQorICAgICAgLkdsb2JhbCgpCisgICAgICAgICAgLlJlZk51bGwoImFueWZ1bmMiLCAi
bXV0YWJsZSIpCisgICAgICAgICAgLlJlZk51bGwoImFueWZ1bmMiLCAiaW1tdXRhYmxlIikKKyAg
ICAgICAgICAuR2V0R2xvYmFsKCJhbnlmdW5jIiwgMCwgIm11dGFibGUiKQorICAgICAgICAgIC5S
ZWZGdW5jKCJhbnlmdW5jIiwgMiwgImltbXV0YWJsZSIpCisgICAgICAuRW5kKCkKKyAgICAgIC5F
eHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0X2dsb2IiKQorICAgICAgICAgIC5GdW5j
dGlvbigiZ2V0X2dsb2IiKQorICAgICAgICAgIC5GdW5jdGlvbigiZ2xvYl9pc19udWxsIikKKyAg
ICAgICAgICAuRnVuY3Rpb24oInNldF9nbG9iX251bGwiKQorICAgICAgICAgIC5GdW5jdGlvbigi
Z2V0X2ltcG9ydCIpCisgICAgICAgICAgLkdsb2JhbCgiZXhwZ2xvYiIsIDIpCisgICAgICAgICAg
Lkdsb2JhbCgiZXhwZ2xvYjIiLCAwKQorICAgICAgICAgIC5HbG9iYWwoImV4cF9nbG9iX2lzX251
bGwiLCA0KQorICAgICAgLkVuZCgpCisgICAgICAuQ29kZSgpCisgICAgICAgIC5GdW5jdGlvbigi
c2V0X2dsb2IiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDogInZvaWQiIH0pCisgICAgICAg
ICAgLkdldExvY2FsKDApCisgICAgICAgICAgLlNldEdsb2JhbCgxKQorICAgICAgICAuRW5kKCkK
KworICAgICAgICAuRnVuY3Rpb24oImdldF9nbG9iIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlm
dW5jIiB9KQorICAgICAgICAgICAgLkdldEdsb2JhbCgxKQorICAgICAgICAuRW5kKCkKKworICAg
ICAgICAuRnVuY3Rpb24oImdsb2JfaXNfbnVsbCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9
KQorICAgICAgICAgICAgLkNhbGwoMSkKKyAgICAgICAgICAgIC5SZWZJc051bGwoKQorICAgICAg
ICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oInNldF9nbG9iX251bGwiLCB7IHBhcmFtczog
W10sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAuUmVmTnVsbCgpCisgICAgICAgICAgICAu
Q2FsbCgwKQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oImdldF9pbXBvcnQi
LCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0pCisgICAgICAgICAgICAuR2V0R2xvYmFs
KDApCisgICAgICAgIC5FbmQoKQorICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7
IGltcDogeyByZWY6IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDEzMzcpIH0gfSkpKCk7CisKKyAgICBm
dWxsR0MoKTsKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9pbXBvcnQoKSgpLCAxMzM3
KQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmV4cGdsb2IsIG51bGwpCisgICAgYXNzZXJ0LmVx
KCQxLmV4cG9ydHMuZXhwZ2xvYjIoKSwgMTMzNykKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5l
eHBfZ2xvYl9pc19udWxsLCAkMS5leHBvcnRzLmdsb2JfaXNfbnVsbCk7CisgICAgYXNzZXJ0LmVx
KCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgbnVsbCkKKworICAgICQxLmV4cG9ydHMuc2V0X2dsb2Io
bXlmdW4pOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBteWZ1bik7IGFzc2VydC5l
cSgkMS5leHBvcnRzLmdldF9nbG9iKCkoKSwgNDIpOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5leHBn
bG9iMigpLCAxMzM3KQorICAgICQxLmV4cG9ydHMuc2V0X2dsb2IobnVsbCk7IGFzc2VydC5lcSgk
MS5leHBvcnRzLmdldF9nbG9iKCksIG51bGwpCisgICAgJDEuZXhwb3J0cy5zZXRfZ2xvYihteWZ1
bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCkoKSwgNDIpOworCisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnNldF9nbG9iKGZ1biksIEVycm9yLCAiQW55ZnVuYyBt
dXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJn
cyknKSIpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nbG9iX2lzX251bGwoKSwgMCkKKyAg
ICAkMS5leHBvcnRzLnNldF9nbG9iX251bGwoKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2ds
b2IoKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nbG9iX2lzX251bGwoKSwgMSkK
K30KKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgLlR5cGUoKS5FbmQoKQorICAuSW1w
b3J0KCkKKyAgICAgICAuR2xvYmFsKCkuQW55ZnVuYygiaW1wIiwgInJlZiIsICJpbW11dGFibGUi
KS5FbmQoKQorICAuRW5kKCkKKyAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgLkNvZGUoKS5FbmQoKS5X
ZWJBc3NlbWJseSgpLmdldCgpKSwgeyBpbXA6IHsgcmVmOiBmdW5jdGlvbigpIHsgcmV0dXJuICJo
aSIgfSB9IH0pLCBFcnJvciwgImltcG9ydGVkIGdsb2JhbCBpbXA6cmVmIG11c3QgYmUgYSB3YXNt
IGV4cG9ydGVkIGZ1bmN0aW9uIG9yIG51bGwgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZScpIik7CisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZSgobmV3IEJ1aWxkZXIoKSkKKyAgLlR5cGUoKS5FbmQoKQorICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAuQ29kZSgpCisgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6
ICJhbnlyZWYiIH0pCisgICAgICAuR2V0TG9jYWwoMCkKKyAgICAuRW5kKCkKKyAgLkVuZCgpLldl
YkFzc2VtYmx5KCkuZ2V0KCkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZh
bGlkYXRlOiBjb250cm9sIGZsb3cgcmV0dXJucyB3aXRoIHVuZXhwZWN0ZWQgdHlwZSwgaW4gZnVu
Y3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIik7
CisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxk
ZXIoKSkKKyAgLlR5cGUoKS5FbmQoKQorICAuRnVuY3Rpb24oKS5FbmQoKQorICAuVGFibGUoKQor
ICAgIC5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgLkVuZCgpCisg
IC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAidm9p
ZCIgfSkKKyAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgLkkzMkNvbnN0KDApCisgICAgICAuVGFi
bGVTZXQoKQorICAgIC5FbmQoKQorICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIEVycm9y
LCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLnNldCB2YWx1ZSB0
byB0eXBlIEkzMiBleHBlY3RlZCBBbnlmdW5jLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFs
dWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKTsKKworLy8gVGFibGVzCit7CisgICAg
Y29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgIC5GdW5jdGlvbigp
LkVuZCgpCisgICAgICAuVGFibGUoKQorICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAxLCBl
bGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgLkVuZCgpCisgICAgICAuR2xvYmFsKCkKKyAgICAg
ICAgICAuUmVmTnVsbCgiYW55ZnVuYyIsICJtdXRhYmxlIikKKyAgICAgIC5FbmQoKQorICAgICAg
LkV4cG9ydCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfZ2xvYiIpCisgICAgICAgICAgLkZ1
bmN0aW9uKCJnZXRfZ2xvYiIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX2dsb2IiKQorICAg
ICAgICAgIC5GdW5jdGlvbigicmV0XzIwIikKKyAgICAgIC5FbmQoKQorICAgICAgLkNvZGUoKQor
ICAgICAgICAuRnVuY3Rpb24oInNldF9nbG9iIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6
ICJ2b2lkIiB9KQorICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgIC5TZXRHbG9iYWwo
MCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJnZXRfZ2xvYiIsIHsgcGFy
YW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAgIC5HZXRHbG9iYWwoMCkKKyAg
ICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX2dsb2IiLCB7IHBhcmFtczog
WyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAg
ICAgICAuR2V0R2xvYmFsKDApCisgICAgICAgICAgICAuVGFibGVTZXQoKQorCisgICAgICAgICAg
ICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgLkNh
bGxJbmRpcmVjdCgyLDApCisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigicmV0
XzIwIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgIC5JMzJD
b25zdCgyMCkKKyAgICAgICAgLkVuZCgpCisgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQo
KSkpOworCisgICAgY29uc3QgbXlmdW4gPSBtYWtlRXhwb3J0ZWRGdW5jdGlvbigxMzM3KTsKKyAg
ICBmdW5jdGlvbiBmdW4oaSkgeworICAgICAgICByZXR1cm4gNDE7CisgICAgfQorICAgIGNvbnN0
IGlkZW50ID0gbWFrZUV4cG9ydGVkSWRlbnQoKTsKKworICAgICQxLmV4cG9ydHMuc2V0X2dsb2Io
JDEuZXhwb3J0cy5yZXRfMjApOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCAkMS5l
eHBvcnRzLnJldF8yMCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfZ2xvYig0MiksIDIwKQor
ICAgICQxLmV4cG9ydHMuc2V0X2dsb2IobnVsbCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9n
bG9iKCksIG51bGwpOyBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF9nbG9iKDQy
KSwgRXJyb3IsICJjYWxsX2luZGlyZWN0IHRvIGEgbnVsbCB0YWJsZSBlbnRyeSAoZXZhbHVhdGlu
ZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICAkMS5leHBvcnRzLnNldF9nbG9iKGlkZW50KTsgYXNz
ZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgaWRlbnQpOyBhc3NlcnQuZXEoJDEuZXhwb3J0
cy5jYWxsX2dsb2IoNDIpLCA0MikKKworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0
cy5zZXRfZ2xvYihmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNt
IGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgICQxLmV4cG9ydHMu
c2V0X2dsb2IobXlmdW4pOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBteWZ1bik7
IGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5jYWxsX2dsb2IoNDIpLCBFcnJvciwgImNh
bGxfaW5kaXJlY3QgdG8gYSBzaWduYXR1cmUgdGhhdCBkb2VzIG5vdCBtYXRjaCAoZXZhbHVhdGlu
ZyAnZnVuYyguLi5hcmdzKScpIikKKworICAgIGZvciAobGV0IGk9MDsgaTwxMDAwOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnNldF9nbG9iKGZ1bmN0aW9u
KCkge30pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9u
IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKKyAgICB9Cit9CisKKy8vIFRhYmxlIHNl
dC9nZXQKKworeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAuVHlwZSgpLkVuZCgpCisg
ICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJs
ZSh7aW5pdGlhbDogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgIC5FbmQoKQorICAgICAg
LkV4cG9ydCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCJzZXQiKQorICAgICAgICAgIC5GdW5jdGlv
bigiZ2V0IikKKyAgICAgIC5FbmQoKQorICAgICAgLkNvZGUoKQorICAgICAgICAuRnVuY3Rpb24o
InNldCIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAu
STMyQ29uc3QoMCkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAuVGFibGVTZXQo
KQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oImdldCIsIHsgcGFyYW1zOiBb
XSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAg
ICAgLlRhYmxlR2V0KCkKKyAgICAgICAgLkVuZCgpCisgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSkpOworCisgICAgZnVuY3Rpb24gZG9TZXQoKSB7CisgICAgICAgIGNvbnN0IG15ZnVu
ID0gbWFrZUV4cG9ydGVkRnVuY3Rpb24oNDQ0KTsKKyAgICAgICAgZm9yIChsZXQgaT0wOyBpPDEw
MDA7ICsraSkgeworICAgICAgICAgICAgJDEuZXhwb3J0cy5zZXQobXlmdW4pOworICAgICAgICB9
CisgICAgICAgICQxLmV4cG9ydHMuc2V0KG15ZnVuKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0
KCksIG15ZnVuKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0KCkoKSwgNDQ0KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBkb1Rlc3QoaixrLCBsKSB7CisgICAgICAgIGZ1bGxHQygpOworICAgICAg
ICBsZXQgZ2FyYmFnZSA9IHsgdmFsOiAiaGkiLCB2YWwyOiA1LCBhcnI6IFtdIH0KKyAgICAgICAg
Zm9yIChsZXQgaT0wOyBpPDEwMDsgKytpKSBnYXJiYWdlLmFyciArPSAoeyBmaWVsZDogaSArIGog
KyBrICsgbCB9KQorICAgICAgICBmdWxsR0MoKTsKKworICAgICAgICBmb3IgKGxldCBpPTA7IGk8
MTAwOyArK2kpIHsKKyAgICAgICAgICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldCgpKCksIDQ0
NCk7CisgICAgICAgICAgICBmdWxsR0MoKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgZG9T
ZXQoKQorICAgIGRvVGVzdCgwLDAsMCkKK30KKworLy8gV2FzbS0+SlMgQ2FsbHMKKworZm9yIChs
ZXQgaW1wb3J0ZWRGdW4gb2YgW2Z1bmN0aW9uKGkpIHsgcmV0dXJuIGk7IH0sIG1ha2VBbnlmdW5j
SWRlbnQoKV0pIHsKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgLlR5cGUoKS5FbmQoKQor
ICAgICAgLkltcG9ydCgpCisgICAgICAgICAgIC5GdW5jdGlvbigiaW1wIiwgImgiLCB7IHBhcmFt
czogWyJhbnlmdW5jIl0sIHJldDogImFueWZ1bmMiIH0pCisgICAgICAuRW5kKCkKKyAgICAgIC5G
dW5jdGlvbigpLkVuZCgpCisgICAgICAuVGFibGUoKQorICAgICAgICAgICAgLlRhYmxlKHtpbml0
aWFsOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgLkVuZCgpCisgICAgICAuRXhwb3J0
KCkKKyAgICAgICAgICAuRnVuY3Rpb24oInRlc3QxIikKKyAgICAgICAgICAuRnVuY3Rpb24oInRl
c3QyIikKKyAgICAgICAgICAuRnVuY3Rpb24oInRlc3QzIikKKyAgICAgICAgICAuRnVuY3Rpb24o
InRlc3Q0IikKKyAgICAgIC5FbmQoKQorICAgICAgLkNvZGUoKQorICAgICAgICAuRnVuY3Rpb24o
InRlc3QxIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAg
ICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgIC5DYWxsKDApCisgICAgICAgIC5FbmQoKQorCisg
ICAgICAgIC5GdW5jdGlvbigidGVzdDIiLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0p
CisgICAgICAgICAgLlJlZkZ1bmMoMSkKKyAgICAgICAgICAuQ2FsbCgwKQorICAgICAgICAuRW5k
KCkKKworICAgICAgICAuRnVuY3Rpb24oInRlc3QzIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCBy
ZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgIC5SZWZGdW5jKDApCisgICAgICAgICAgLlRhYmxlU2V0KCkKKyAg
ICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAsIDApCisgICAg
ICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigidGVzdDQiLCB7IHBhcmFtczogW10sIHJl
dDogImFueWZ1bmMiIH0pCisgICAgICAgICAgLlJlZkZ1bmMoMSkKKyAgICAgICAgICAuSTMyQ29u
c3QoMCkKKyAgICAgICAgICAuUmVmRnVuYygwKQorICAgICAgICAgIC5UYWJsZVNldCgpCisgICAg
ICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAwKQorICAgICAg
ICAuRW5kKCkKKyAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwgeyBpbXA6IHsgaDog
aW1wb3J0ZWRGdW4gfSB9KTsKKworICAgIGNvbnN0IG15ZnVuID0gbWFrZUV4cG9ydGVkRnVuY3Rp
b24oMTMzNyk7CisgICAgZnVuY3Rpb24gZnVuKGkpIHsKKyAgICAgICAgcmV0dXJuIDQxOworICAg
IH0KKworICAgIGZvciAobGV0IHRlc3Qgb2YgWyQxLmV4cG9ydHMudGVzdDEsICQxLmV4cG9ydHMu
dGVzdDNdKSB7CisgICAgICAgIGFzc2VydC5lcSh0ZXN0KG15ZnVuKSwgbXlmdW4pCisgICAgICAg
IGFzc2VydC5lcSh0ZXN0KG15ZnVuKSgpLCAxMzM3KQorICAgICAgICBhc3NlcnQudGhyb3dzKCgp
ID0+IHRlc3QoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBm
dW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKworICAgICAgICBmb3IgKGxl
dCBpPTA7IGk8MTAwMDsgKytpKSB7CisgICAgICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHRl
c3QoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlv
biAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZvciAobGV0IHRlc3Qgb2YgWyQxLmV4cG9ydHMudGVzdDIsICQxLmV4cG9ydHMudGVzdDRdKSB7
CisgICAgICAgIGFzc2VydC5lcSh0ZXN0KCksICQxLmV4cG9ydHMudGVzdDEpCisgICAgICAgIGFz
c2VydC5lcSh0ZXN0KCkobXlmdW4pLCBteWZ1bikKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9
PiB0ZXN0KCkoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBm
dW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKworICAgICAgICBmb3IgKGxl
dCBpPTA7IGk8MTAwMDsgKytpKSB7CisgICAgICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHRl
c3QoKShmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0
aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgICAgICB9CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5qcyBiL0pTVGVz
dHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKaW5kZXggZDM4YzI2NWJmZmY2MTBhZDQ5
NDg4NGY5YTc3YTYzNzNjODRlNTJhMy4uOGY4MTYzNjlhNzRlODllNDllNjkwOWRmNDQ1NTUwZmQw
ZjY2YzIxNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5q
cworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzCkBAIC02Myw3ICs2
Myw3IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgIGNvbnN0IGJp
biA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKTsKICAgICBiaW4udHJpbSgpOwogCi0gICAgYXNzZXJ0
LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSksIFdlYkFzc2Vt
Ymx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0
YWJsZS5zZXQgZXhwZWN0cyB0aGUgdGFibGUgdG8gaGF2ZSB0eXBlIEFueXJlZiwgaW4gZnVuY3Rp
b24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0
KCkpJykiKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YmluLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxl
IGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLnNldCB2YWx1ZSB0byB0eXBlIEFueXJlZiBleHBlY3Rl
ZCBBbnlmdW5jLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSknKSIpOwogfQogCiB7CkBAIC04Niw3ICs4Niw3IEBAIGlt
cG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgIGNvbnN0IGJpbiA9IGJ1aWxk
ZXIuV2ViQXNzZW1ibHkoKTsKICAgICBiaW4udHJpbSgpOwogCi0gICAgYXNzZXJ0LnRocm93cygo
KSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBp
bGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5nZXQg
ZXhwZWN0cyB0aGUgdGFibGUgdG8gaGF2ZSB0eXBlIEFueXJlZiwgaW4gZnVuY3Rpb24gYXQgaW5k
ZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsK
KyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgp
KSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3Qg
dmFsaWRhdGU6IGNvbnRyb2wgZmxvdyByZXR1cm5zIHdpdGggdW5leHBlY3RlZCB0eXBlLCBpbiBm
dW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJp
bi5nZXQoKSknKSIpOwogfQogCiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29u
IGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCAzMGJiYzc0NzIzNzgzOTIyZWRiYmY2MzQ5
OTM0OTBmNDhiN2I3ZTAyLi42NGNhMGI1YjIwOGQ5MWIyYmY3ODY1NTc1NzEyNDczZDViNzI1MGEz
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93
YXNtLmpzb24KQEAgLTExLDEzICsxMSwxMyBAQAogICAgICAgICAiaTY0IjogICAgIHsgInR5cGUi
OiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAg
ICAgICJmMzIiOiAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zLCAiYjN0eXBl
IjogIkIzOjpGbG9hdCIgfSwKICAgICAgICAgImY2NCI6ICAgICB7ICJ0eXBlIjogInZhcmludDci
LCAidmFsdWUiOiAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKLSAgICAgICAgImFueWZ1
bmMiOiB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtMTYsICJiM3R5cGUiOiAiQjM6OlZv
aWQiIH0sCisgICAgICAgICJhbnlmdW5jIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
LTE2LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImFueXJlZiI6ICB7ICJ0eXBl
IjogInZhcmludDciLCAidmFsdWUiOiAtMTcsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAg
ICAgICAiZnVuYyI6ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0zMiwgImIzdHlw
ZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInZvaWQiOiAgICB7ICJ0eXBlIjogInZhcmludDci
LCAidmFsdWUiOiAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0KICAgICB9LAotICAgICJ2YWx1
ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiYW55cmVmIl0sCi0gICAgImJs
b2NrX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJ2b2lkIiwgImFueXJlZiJd
LAorICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiYW55cmVm
IiwgImFueWZ1bmMiXSwKKyAgICAiYmxvY2tfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAi
ZjY0IiwgInZvaWQiLCAiYW55cmVmIiwgImFueWZ1bmMiXSwKICAgICAiZWxlbV90eXBlIjogWyJh
bnlmdW5jIiwiYW55cmVmIl0sCiAgICAgImV4dGVybmFsX2tpbmQiOiB7CiAgICAgICAgICJGdW5j
dGlvbiI6IHsgInR5cGUiOiAidWludDgiLCAidmFsdWUiOiAwIH0sCkBAIC01OSw4ICs1OSw5IEBA
CiAgICAgICAgICJpNjQuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICA2NiwgInJldHVybiI6IFsiaTY0Il0sICAgICAgInBhcmFtZXRlciI6IFtd
LCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAg
ICAgICAgICAidHlwZSI6ICJ2YXJpbnQ2NCJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnBy
ZXRlZCBhcyBpNjQiIH0sCiAgICAgICAgICJmNjQuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICA2OCwgInJldHVybiI6IFsiZjY0Il0sICAgICAg
InBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJkb3VibGUifV0sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFu
dCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmNjQiIH0sCiAgICAgICAgICJmMzIuY29uc3QiOiAgICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICA2NywgInJldHVybiI6
IFsiZjMyIl0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJmbG9hdCJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmMzIiIH0sCi0gICAgICAgICJy
ZWYubnVsbCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6
IDIwOCwgInJldHVybiI6IFsiYW55cmVmIl0sICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCBudWxsIHJlZmVyZW5jZSIgfSwKKyAgICAg
ICAgInJlZi5udWxsIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZh
bHVlIjogMjA4LCAicmV0dXJuIjogWyJhbnlmdW5jIl0sICAicGFyYW1ldGVyIjogW10sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IG51bGwgcmVmZXJlbmNlIiB9LAog
ICAgICAgICAicmVmLmlzX251bGwiOiAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAg
ICAidmFsdWUiOiAyMDksICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFu
eXJlZiJdLCAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImRldGVybWluZSBpZiBhIHJlZmVyZW5jZSBp
cyBudWxsIiB9LAorICAgICAgICAicmVmLmZ1bmMiOiAgICAgICAgICAgIHsgImNhdGVnb3J5Ijog
InNwZWNpYWwiLCAgICAidmFsdWUiOiAyMTAsICJyZXR1cm4iOiBbImFueWZ1bmMiXSwgICJwYXJh
bWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
ImZ1bmN0aW9uX2luZGV4IiwgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInJldHVybiBhIHJlZmVy
ZW5jZSB0byB0aGUgZnVuY3Rpb24gYXQgdGhlIGdpdmVuIGluZGV4IiB9LAogICAgICAgICAiZ2V0
X2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAg
MzIsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUi
OiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogInJlYWQgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0s
CiAgICAgICAgICJzZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAzMywgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsi
YW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5k
ZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBv
ciBwYXJhbWV0ZXIiIH0sCiAgICAgICAgICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAg
InBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBs
b2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372257</attachid>
            <date>2019-06-17 10:59:49 -0700</date>
            <delta_ts>2019-06-17 11:44:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198157-20190617105948.patch</filename>
            <type>text/plain</type>
            <size>93649</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NzQwMzI0ODAwODJmNDNkMmY3YmIyYTk5NzdlYzk0NGIwNWY5YmIyLi45ZmUwNjI3ODcxMmE0MTJm
MDI0YTM2YjZiYjg0NmJlMjYyZTUyNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxOS0wNi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIEZ1
bmNyZWYgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmdW5jcmVmIGluIHBh
cmFtZXRlcnMsIGdsb2JhbHMsIGFuZCBpbiB0YWJsZS5nZXQvc2V0LiBXaGVuIGNvbnZlcnRpbmcg
YSBKU1ZhbHVlIHRvIAorICAgICAgICBhIGZ1bmNyZWYgKG5lZSBhbnlmdW5jKSwgd2UgZmlyc3Qg
bWFrZSBzdXJlIGl0IGlzIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gb3IgbnVsbC4gCisKKyAg
ICAgICAgV2UgYWxzbyBhZGQgc3VwcG9ydCBmb3IgUmVmLmZ1bmMuIEFueXdoZXJlIGEgUmVmLmZ1
bmMgaXMgdXNlZCwgKHN0YXRpY2FsbHkpIHdlIGNvbnN0cnVjdCBhIEpTIHdyYXBwZXIKKyAgICAg
ICAgZm9yIGl0IHNvIHRoYXQgd2UgbmV2ZXIgbmVlZCB0byBjb25zdHJ1Y3QgSlNWYWx1ZXMgd2hl
biBoYW5kbGluZyByZWZlcmVuY2VzLiBUaGlzIHNob3VsZCBtYWtlIHRocmVhZHMKKyAgICAgICAg
ZWFzaWVyIHRvIGltcGxlbWVudC4KKworICAgICAgICBGaW5hbGx5LCB3ZSBhZGQgc29tZSBtaXNz
aW5nIGJvdW5kcyBjaGVja3MgZm9yIHRhYmxlLmdldC9zZXQuCisKKyAgICAgICAgKiB3YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
Ojp0bXBGb3JUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6Om1vdmVP
cEZvclZhbHVlVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpBaXJJ
UkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRMb2Nh
bCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDb25zdGFudCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OnNldEdsb2JhbCk6CisgICAgICAgIChKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjphZGRSZXR1cm4pOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRMb2NhbCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxh
bi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMpOgor
ICAgICAgICAqIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmg6CisgICAgICAgIChKU0M6Oldh
c206OkNhbGxpbmdDb252ZW50aW9uQWlyOjptYXJzaGFsbEFyZ3VtZW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6Q2FsbGluZ0NvbnZlbnRpb25BaXI6OnNldHVwQ2FsbCBjb25zdCk6Cisg
ICAgICAgICogd2FzbS9XYXNtRXhjZXB0aW9uVHlwZS5oOgorICAgICAgICAqIHdhc20vV2FzbUZv
cm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjppc1ZhbHVlVHlwZSk6CisgICAgICAgIChKU0M6
Oldhc206OmlzU3VidHlwZSk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJz
ZVVucmVhY2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlND
OjpXYXNtOjpJbnN0YW5jZTo6Z2V0RnVuY3Rpb25XcmFwcGVyIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6OnNldEZ1bmN0aW9uV3JhcHBlcik6CisgICAgICAgICogd2FzbS9X
YXNtSW5zdGFuY2UuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oOgor
ICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6cmVmZXJlbmNlZEZ1bmN0aW9u
cyBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9uOjphZGRSZWZl
cmVuY2VkRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUdsb2JhbCk6Cisg
ICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIpOgorICAgICAg
ICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6
OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZFRhYmxlU2V0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZFJlZklzTnVsbCk6CisgICAgICAg
IChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRSZWZGdW5jKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
VmFsaWRhdGU6OnNldExvY2FsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZENh
bGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWxpZGF0ZTo6YWRkQ2FsbEluZGlyZWN0KToKKyAg
ICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Y3JlYXRl
SlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJz
Lmg6CisgICAgICAgIChKU0M6OmlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24pOgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6aGFuZGxlQmFkSTY0VXNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgor
ICAgICAgICAoSlNDOjpXYXNtOjplbWl0V2FzbVRvSlNFeGNlcHRpb24pOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgor
CiAyMDE5LTA2LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgQXRvbWljU3RyaW5nIHRvIEF0b21TdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGFkYjMzZjU0MDQ3ODBiNTRk
MWE5ZTgxMTEyNDk4NzhjMzdjNWFlNzMuLmFiMzA0YTU1ZDM2YjM1ODQyMmIxYTA3ZDJhNDRiMDAw
ZGY1MjJkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcApAQCAtMjM0LDEwICsyMzQsMTEgQEAgcHVibGljOgogCiAgICAgLy8gUmVm
ZXJlbmNlcwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZklzTnVs
bChFeHByZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCi0gICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHZh
bHVlKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChF
eHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTM3MCw2ICszNzEsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuIGczMigpOwogICAgICAgICBjYXNlIFR5cGU6Okk2NDoKICAgICAgICAgY2Fz
ZSBUeXBlOjpBbnlyZWY6CisgICAgICAgIGNhc2UgVHlwZTo6QW55ZnVuYzoKICAgICAgICAgICAg
IHJldHVybiBnNjQoKTsKICAgICAgICAgY2FzZSBUeXBlOjpGMzI6CiAgICAgICAgICAgICByZXR1
cm4gZjMyKCk7CkBAIC01NTQsNiArNTU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
biBNb3ZlMzI7CiAgICAgICAgIGNhc2UgVHlwZTo6STY0OgogICAgICAgICBjYXNlIFR5cGU6OkFu
eXJlZjoKKyAgICAgICAgY2FzZSBUeXBlOjpBbnlmdW5jOgogICAgICAgICAgICAgcmV0dXJuIE1v
dmU7CiAgICAgICAgIGNhc2UgVHlwZTo6RjMyOgogICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9h
dDsKQEAgLTc5OSw2ICs4MDIsNyBAQCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IoY29u
c3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZTo6STY0OgogICAgICAgICBjYXNlIFR5cGU6OkFu
eXJlZjoKKyAgICAgICAgY2FzZSBUeXBlOjpBbnlmdW5jOgogICAgICAgICAgICAgYXBwZW5kKE1v
dmUsIGFyZywgbV9sb2NhbHNbaV0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VHlwZTo6RjMyOgpAQCAtODg0LDYgKzg4OCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZExv
Y2FsKFR5cGUgdHlwZSwgdWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAg
bV9sb2NhbHMudW5jaGVja2VkQXBwZW5kKGxvY2FsKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgICAgIGNhc2UgVHlwZTo6QW55cmVmOgorICAgICAgICBjYXNlIFR5cGU6OkFueWZ1bmM6
CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjppbW0oSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKSksIGxvY2FsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGU6Okkz
MjoKQEAgLTkxOCw2ICs5MjMsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDb25zdGFudChC
YXNpY0Jsb2NrKiBibG9jaywgVHlwZSB0eXBlLCB1aW50NjRfdCB2YWx1ZSkgLQogICAgIGNhc2Ug
VHlwZTo6STMyOgogICAgIGNhc2UgVHlwZTo6STY0OgogICAgIGNhc2UgVHlwZTo6QW55cmVmOgor
ICAgIGNhc2UgVHlwZTo6QW55ZnVuYzoKICAgICAgICAgYXBwZW5kKGJsb2NrLCBNb3ZlLCBBcmc6
OmJpZ0ltbSh2YWx1ZSksIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6
RjMyOgpAQCAtOTUzLDM2ICs5NTksNDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmSXNO
dWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICBy
ZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHByZXNz
aW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cith
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhp
cyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+
LgotICAgIEFTU0VSVChpZHgudG1wKCkpOwotICAgIEFTU0VSVChpZHgudHlwZSgpID09IFR5cGU6
OkkzMik7Ci0gICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlOjpBbnlyZWYpOworICAgIHJlc3Vs
dCA9IHRtcEZvclR5cGUoVHlwZTo6QW55ZnVuYyk7CisgICAgZW1pdENDYWxsKCZkb1dhc21SZWZG
dW5jLCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCBpbmRl
eCkpOwogCi0gICAgdWludDY0X3QgKCpkb0dldCkoSW5zdGFuY2UqLCBpbnQzMl90KSA9IFtdIChJ
bnN0YW5jZSogaW5zdGFuY2UsIGludDMyX3QgaWR4KSAtPiB1aW50NjRfdCB7Ci0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UtPnRhYmxlKCktPmdldChpZHgpKTsKLSAgICB9
OworICAgIHJldHVybiB7IH07Cit9CiAKLSAgICBlbWl0Q0NhbGwoZG9HZXQsIHJlc3VsdCwgaW5z
dGFuY2VWYWx1ZSgpLCBpZHgpOworYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQoRXhw
cmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0Cit7CisgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgorICAgIEFTU0VSVChpbmRleC50bXAoKSk7
CisgICAgQVNTRVJUKGluZGV4LnR5cGUoKSA9PSBUeXBlOjpJMzIpOworICAgIHJlc3VsdCA9IHRt
cEZvclR5cGUoVHlwZTo6QW55cmVmKTsKKworICAgIGVtaXRDQ2FsbCgmZ2V0V2FzbVRhYmxlRWxl
bWVudCwgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksIGluZGV4KTsKKyAgICBlbWl0Q2hlY2soWyZd
IHsKKyAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCByZXN1bHQsIHJlc3VsdCk7CisgICAgfSwgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
KyAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0
T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CisgICAgfSk7CiAKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHBy
ZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVl
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgotICAgIEFTU0VS
VChpZHgudG1wKCkpOwotICAgIEFTU0VSVChpZHgudHlwZSgpID09IFR5cGU6OkkzMik7CisgICAg
QVNTRVJUKGluZGV4LnRtcCgpKTsKKyAgICBBU1NFUlQoaW5kZXgudHlwZSgpID09IFR5cGU6Okkz
Mik7CiAgICAgQVNTRVJUKHZhbHVlLnRtcCgpKTsKIAotICAgIHZvaWQgKCpkb1NldCkoSW5zdGFu
Y2UqLCBpbnQzMl90LCB1aW50NjRfdCB2YWx1ZSkgPSBbXSAoSW5zdGFuY2UqIGluc3RhbmNlLCBp
bnQzMl90IGlkeCwgdWludDY0X3QgdmFsdWUpIC0+IHZvaWQgewotICAgICAgICAvLyBGSVhNRTog
V2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJlIHN1cHBvcnRlZCBoZXJl
LgotICAgICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODE1Nz4KLSAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCktPnNldChpZHgsIEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkpOwotICAgIH07CisgICAgYXV0byBzaG91bGRUaHJvdyA9IGczMigpOworICAgIGVt
aXRDQ2FsbCgmc2V0V2FzbVRhYmxlRWxlbWVudCwgc2hvdWxkVGhyb3csIGluc3RhbmNlVmFsdWUo
KSwgaW5kZXgsIHZhbHVlKTsKIAotICAgIGVtaXRDQ2FsbChkb1NldCwgVHlwZWRUbXAoKSwgaW5z
dGFuY2VWYWx1ZSgpLCBpZHgsIHZhbHVlKTsKKyAgICBlbWl0Q2hlY2soWyZdIHsKKyAgICAgICAg
cmV0dXJuIEluc3QoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8pLCBzaG91bGRUaHJvdywgc2hvdWxkVGhyb3cpOworICAgIH0sIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Cisg
ICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9m
Qm91bmRzVGFibGVBY2Nlc3MpOworICAgIH0pOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEx
MDMsNyArMTEyMCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OnNldEdsb2JhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSCiAgICAgICAgIGFwcGVuZCht
b3ZlT3BGb3JWYWx1ZVR5cGUodHlwZSksIHZhbHVlLCBBcmc6OmFkZHIodGVtcCkpOwogICAgIH0K
IAotICAgIGlmICh0eXBlID09IEFueXJlZikKKyAgICBpZiAoaXNTdWJ0eXBlKHR5cGUsIEFueXJl
ZikpCiAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXJGb3JKU1dyYXBwZXIoKTsKIAogICAgIHJldHVy
biB7IH07CkBAIC0xNjIzLDYgKzE2NDAsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZXR1
cm4oY29uc3QgQ29udHJvbERhdGEmIGRhdGEsIGNvbnN0IEV4cHJlc3Npb25MaXN0JiByZQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZTo6STY0OgogICAgICAgICBjYXNlIFR5
cGU6OkFueXJlZjoKKyAgICAgICAgY2FzZSBUeXBlOjpBbnlmdW5jOgogICAgICAgICAgICAgYXBw
ZW5kKE1vdmUsIHJldHVyblZhbHVlc1swXSwgcmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAg
YXBwZW5kKFJldDY0LCByZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCA1
NWJkMmQ4YjVmZTY2MTk2YTVlMmQ1ZDI5NjJlZDE2YTk2MjZhOTRkLi43NzYwOTc0ODQzZWNjZTJm
MWU5YjE3MDU5MjVlOTg0YWFjY2JhMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xODcsMTAgKzE4NywxMSBAQCBwdWJsaWM6
CiAKICAgICAvLyBSZWZlcmVuY2VzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVuYyh1
aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJsZXMK
LSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHByZXNz
aW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHBy
ZXNzaW9uVHlwZSYgdmFsdWUpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQoRXhw
cmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpOwogCiAgICAgLy8gTG9j
YWxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMy
X3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtNTM4LDcgKzUzOSw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkgLT4g
UGFydGlhbFJlc3VsdAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
CiAgICAgICAgIFZhcmlhYmxlKiBsb2NhbCA9IG1fcHJvYy5hZGRWYXJpYWJsZSh0b0IzVHlwZSh0
eXBlKSk7CiAgICAgICAgIG1fbG9jYWxzLnVuY2hlY2tlZEFwcGVuZChsb2NhbCk7Ci0gICAgICAg
IGF1dG8gdmFsID0gdHlwZSA9PSBBbnlyZWYgPyBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpIDog
MDsKKyAgICAgICAgYXV0byB2YWwgPSBpc1N1YnR5cGUodHlwZSwgQW55cmVmKSA/IEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSkgOiAwOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgU2V0LCBPcmlnaW4oKSwgbG9jYWwsIGNvbnN0YW50KHRv
QjNUeXBlKHR5cGUpLCB2YWwsIE9yaWdpbigpKSk7CiAgICAgfQogICAgIHJldHVybiB7IH07CkBA
IC01NjUsMzIgKzU2Niw1MSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFJlZklzTnVsbChFeHBy
ZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYg
aWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMg
aW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4K
LSAgICB1aW50NjRfdCAoKmRvR2V0KShJbnN0YW5jZSosIGludDMyX3QpID0gW10gKEluc3RhbmNl
KiBpbnN0YW5jZSwgaW50MzJfdCBpZHgpIC0+IHVpbnQ2NF90IHsKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShpbnN0YW5jZS0+dGFibGUoKS0+Z2V0KGlkeCkpOwotICAgIH07Ci0KICAg
ICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywg
dG9CM1R5cGUoQW55cmVmKSwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPihkb0dldCwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGlk
eCk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9w
cm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmZ2V0V2FzbVRhYmxlRWxlbWVu
dCwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGluZGV4KTsKKwor
ICAgIHsKKyAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAorICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIHJl
c3VsdCwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIDApKSk7CisKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAg
ICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZC
b3VuZHNUYWJsZUFjY2Vzcyk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIHJldHVybiB7IH07
CiB9CiAKLWF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlk
eCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEIzSVJHZW5l
cmF0b3I6OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUm
IHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxp
bmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgorICAg
IGF1dG8gc2hvdWxkVGhyb3cgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KG1fcHJvYywgQjM6OkludDMyLCBvcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8
dm9pZCo+KCZzZXRXYXNtVGFibGVFbGVtZW50LCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgIGlu
c3RhbmNlVmFsdWUoKSwgaW5kZXgsIHZhbHVlKTsKKworICAgIHsKKyAgICAgICAgQ2hlY2tWYWx1
ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywg
Q2hlY2ssIG9yaWdpbigpLAorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIHNob3VsZFRocm93LCBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgMCkpKTsKKworICAg
ICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICB0aGlzLT5lbWl0RXhj
ZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc1RhYmxlQWNjZXNzKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgotICAgIHZvaWQg
KCpkb1NldCkoSW5zdGFuY2UqLCBpbnQzMl90LCB1aW50NjRfdCB2YWx1ZSkgPSBbXSAoSW5zdGFu
Y2UqIGluc3RhbmNlLCBpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsdWUpIC0+IHZvaWQgewotICAg
ICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJl
IHN1cHBvcnRlZCBoZXJlLgotICAgICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5ODE1Nz4KLSAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCktPnNldChpZHgs
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwotICAgIH07CiAKLSAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpLAotICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZG9TZXQsIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAg
ICAgaW5zdGFuY2VWYWx1ZSgpLCBpZHgsIHZhbHVlKTsKKyAgICByZXN1bHQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDY0LCBvcmlnaW4oKSwK
KyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZkb1dhc21SZWZGdW5jLCBCM0NDYWxs
UHRyVGFnKSksCisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMy
LCBpbmRleCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTY3OSw3ICs2OTksNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUg
dmFsdWUpIC0+IFBhcnRpYWxSZQogICAgIFZhbHVlKiBnbG9iYWxzQXJyYXkgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IG9yaWdpbigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpv
ZmZzZXRPZkdsb2JhbHMoKSkpOwogICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgU3RvcmUsIG9yaWdpbigpLCB2YWx1ZSwgZ2xvYmFsc0FycmF5LCBzYWZl
Q2FzdDxpbnQzMl90PihpbmRleCAqIHNpemVvZihSZWdpc3RlcikpKTsKIAotICAgIGlmIChtX2lu
Zm8uZ2xvYmFsc1tpbmRleF0udHlwZSA9PSBBbnlyZWYpCisgICAgaWYgKGlzU3VidHlwZShtX2lu
Zm8uZ2xvYmFsc1tpbmRleF0udHlwZSwgQW55cmVmKSkKICAgICAgICAgZW1pdFdyaXRlQmFycmll
ckZvckpTV3JhcHBlcigpOwogCiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCAwYjM4ZjlkNTk2YmZjMDdiY2I2NzJiYzJhMTdi
NzFhYWRjMWM0OWFhLi42NWNkZTY2MmNlYWUxYzUyYWU3NjM5ODc4MTY1NDYwYmVjZWVlMWI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0yODYsNyAr
Mjg2LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0
IGVmZm9ydCkKIAogICAgICAgICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4
XSA9IFdURk1vdmUoKnBhcnNlQW5kQ29tcGlsZVJlc3VsdCk7CiAKLSAgICAgICAgaWYgKG1fZXhw
b3J0ZWRGdW5jdGlvbkluZGljZXMuY29udGFpbnMoZnVuY3Rpb25JbmRleCkpIHsKKyAgICAgICAg
aWYgKG1fZXhwb3J0ZWRGdW5jdGlvbkluZGljZXMuY29udGFpbnMoZnVuY3Rpb25JbmRleCkgfHwg
bV9tb2R1bGVJbmZvcm1hdGlvbi0+cmVmZXJlbmNlZEZ1bmN0aW9ucygpLmNvbnRhaW5zKGZ1bmN0
aW9uSW5kZXgpKSB7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7
CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0
aW9ucy5hZGQoZnVuY3Rpb25JbmRleCwgbV9jcmVhdGVFbWJlZGRlcldyYXBwZXIobV9jb21waWxh
dGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLCBzaWduYXR1cmUsICZtX3VubGlua2VkV2FzbVRv
V2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21v
ZGUsIGZ1bmN0aW9uSW5kZXgpKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21DYWxsaW5nQ29udmVudGlvbi5oCmluZGV4IDEwZWI4Y2Q0ZTczMzZlMGVmMjRkYzliZTUwNGI3
NTA3Y2U4M2M3NTIuLmY3YmUzOGM2N2JlZTllYjM1MzMyMTEzYjIzZTZiMjQzZGU5NGNkY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlv
bi5oCkBAIC0yMzYsNiArMjM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlOjpJMzI6
CiAgICAgICAgIGNhc2UgVHlwZTo6STY0OgogICAgICAgICBjYXNlIFR5cGU6OkFueXJlZjoKKyAg
ICAgICAgY2FzZSBXYXNtOjpBbnlmdW5jOgogICAgICAgICAgICAgbWFyc2hhbGxBcmd1bWVudElt
cGwobV9ncHJBcmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNrT2Zmc2V0LCByZWdGdW5jLCBzdGFj
a0Z1bmMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZTo6RjMyOgpAQCAt
MzAxLDYgKzMwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBUeXBlOjpJMzI6CiAgICAgICAg
IGNhc2UgVHlwZTo6STY0OgogICAgICAgICBjYXNlIFR5cGU6OkFueXJlZjoKKyAgICAgICAgY2Fz
ZSBXYXNtOjpBbnlmdW5jOgogICAgICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWlu
dCA9IEIzOjpWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUV4Y2VwdGlvblR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21FeGNlcHRpb25UeXBlLmgKaW5kZXggZDQ0NmMwZWQxYjRkZDlmNjZmZjU5MzgyNjVh
MDY2ZTBkYzkyZDYxMS4uOTMyODYxY2E5ZGQxZTVhYjgzNzM5NTYxNDMwNDVkMTc1MzUwMDNiYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUV4Y2VwdGlvblR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRXhjZXB0aW9uVHlwZS5oCkBA
IC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIAogI2RlZmluZSBGT1JfRUFDSF9FWENF
UFRJT04obWFjcm8pIFwKICAgICBtYWNybyhPdXRPZkJvdW5kc01lbW9yeUFjY2VzcywgICJPdXQg
b2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MiKSBcCisgICAgbWFjcm8oT3V0T2ZCb3VuZHNUYWJsZUFj
Y2VzcywgICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyIpIFwKICAgICBtYWNybyhPdXRPZkJv
dW5kc0NhbGxJbmRpcmVjdCwgIk91dCBvZiBib3VuZHMgY2FsbF9pbmRpcmVjdCIpIFwKICAgICBt
YWNybyhOdWxsVGFibGVFbnRyeSwgICJjYWxsX2luZGlyZWN0IHRvIGEgbnVsbCB0YWJsZSBlbnRy
eSIpIFwKICAgICBtYWNybyhCYWRTaWduYXR1cmUsICJjYWxsX2luZGlyZWN0IHRvIGEgc2lnbmF0
dXJlIHRoYXQgZG9lcyBub3QgbWF0Y2giKSBcCkBAIC00Miw3ICs0Myw4IEBAIG5hbWVzcGFjZSBX
YXNtIHsKICAgICBtYWNybyhJbnRlZ2VyT3ZlcmZsb3csICJJbnRlZ2VyIG92ZXJmbG93IikgXAog
ICAgIG1hY3JvKFN0YWNrT3ZlcmZsb3csICJTdGFjayBvdmVyZmxvdyIpIFwKICAgICBtYWNybyhJ
NjRBcmd1bWVudFR5cGUsICJXZWJBc3NlbWJseSBmdW5jdGlvbiB3aXRoIGFuIGk2NCBhcmd1bWVu
dCBjYW4ndCBiZSBjYWxsZWQgZnJvbSBKYXZhU2NyaXB0IikgXAotICAgIG1hY3JvKEk2NFJldHVy
blR5cGUsICJXZWJBc3NlbWJseSBmdW5jdGlvbiB0aGF0IHJldHVybnMgaTY0IGNhbid0IGJlIGNh
bGxlZCBmcm9tIEphdmFTY3JpcHQiKQorICAgIG1hY3JvKEk2NFJldHVyblR5cGUsICJXZWJBc3Nl
bWJseSBmdW5jdGlvbiB0aGF0IHJldHVybnMgaTY0IGNhbid0IGJlIGNhbGxlZCBmcm9tIEphdmFT
Y3JpcHQiKSBcCisgICAgbWFjcm8oRnVuY3JlZk5vdFdhc20sICJBbnlmdW5jIG11c3QgYmUgYW4g
ZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIpCiAKIGVudW0gY2xhc3MgRXhjZXB0aW9uVHlwZSA6IHVp
bnQzMl90IHsKICNkZWZpbmUgTUFLRV9FTlVNKGVudW1OYW1lLCBlcnJvcikgZW51bU5hbWUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggNjI5MjI1MGYyNWVlYTk0
OTBjNDNhNGViZDQ2ZDJlMjVlMGMzNmM5NS4uN2MwMzQ0MTdhMTNmMjYxYjg0NzVjOGVkYzQyNzRm
YTgwNTE4YjllYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZv
cm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAt
NjgsMTIgKzY4LDIwIEBAIGlubGluZSBib29sIGlzVmFsdWVUeXBlKFR5cGUgdHlwZSkKICAgICBj
YXNlIEY2NDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBBbnlyZWY6CisgICAgY2Fz
ZSBBbnlmdW5jOgogICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVu
Y2VzKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KKworaW5saW5lIGJvb2wgaXNTdWJ0eXBlKFR5cGUgc3ViLCBUeXBlIHBhcmVudCkK
K3sKKyAgICBpZiAoc3ViID09IHBhcmVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIHN1YiA9PSBBbnlmdW5jICYmIHBhcmVudCA9PSBBbnlyZWY7Cit9CiAgICAgCiBlbnVtIGNs
YXNzIEV4dGVybmFsS2luZCA6IHVpbnQ4X3QgewogICAgIC8vIEZJWE1FIGF1dG8tZ2VuZXJhdGUg
dGhpcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMQpAQCAt
MTM4LDYgKzE0Niw3IEBAIHN0cnVjdCBHbG9iYWwgewogICAgIGVudW0gSW5pdGlhbGl6YXRpb25U
eXBlIHsKICAgICAgICAgSXNJbXBvcnQsCiAgICAgICAgIEZyb21HbG9iYWxJbXBvcnQsCisgICAg
ICAgIEZyb21SZWZGdW5jLAogICAgICAgICBGcm9tRXhwcmVzc2lvbgogICAgIH07CiAKQEAgLTIz
NCw2ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgaW5pdGlhbCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5pdGlhbDsgfQogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXhpbXVtOyB9CiAgICAgVGFibGVFbGVtZW50VHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CisgICAgV2FzbTo6VHlwZSB3YXNtVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmID8gVHlwZTo6QW55ZnVuYyA6
IFR5cGU6OkFueXJlZjsgfQogCiBwcml2YXRlOgogICAgIHVpbnQzMl90IG1faW5pdGlhbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXgg
ZGZhZThmMmNmM2FkMmRhMThhYTg4YmIyNmJkNTU4Y2M3ZDg0NzZkZS4uNTllZWUyNjIyZGUyNjg1
OTMyYzUxYzQyZmJlOGMxOTkzZjg0ZTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI4MywyNSArMjgzLDI1IEBAIGF1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQK
IAogICAgIGNhc2UgVGFibGVHZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5h
YmxlZCIpOwotICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQsIGlkeDsKLSAgICAgICAgV0FT
TV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhpZHgsICJ0YWJsZS5nZXQiKTsKLSAgICAg
ICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaWR4LCByZXN1bHQpKTsKKyAg
ICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0LCBpbmRleDsKKyAgICAgICAgV0FTTV9UUllfUE9Q
X0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhpbmRleCwgInRhYmxlLmdldCIpOworICAgICAgICBXQVNN
X1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUdldChpbmRleCwgcmVzdWx0KSk7CiAgICAgICAg
IG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAogICAgIGNhc2UgVGFibGVTZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBu
b3QgZW5hYmxlZCIpOwotICAgICAgICBFeHByZXNzaW9uVHlwZSB2YWwsIGlkeDsKKyAgICAgICAg
RXhwcmVzc2lvblR5cGUgdmFsLCBpbmRleDsKICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJ
T05fU1RBQ0tfSU5UTyh2YWwsICJ0YWJsZS5zZXQiKTsKLSAgICAgICAgV0FTTV9UUllfUE9QX0VY
UFJFU1NJT05fU1RBQ0tfSU5UTyhpZHgsICJ0YWJsZS5zZXQiKTsKLSAgICAgICAgV0FTTV9UUllf
QUREX1RPX0NPTlRFWFQoYWRkVGFibGVTZXQoaWR4LCB2YWwpKTsKKyAgICAgICAgV0FTTV9UUllf
UE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhpbmRleCwgInRhYmxlLnNldCIpOworICAgICAgICBX
QVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZVNldChpbmRleCwgdmFsKSk7CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogCiAgICAgY2FzZSBSZWZOdWxsOiB7CiAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVm
ZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKLSAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBw
ZW5kKG1fY29udGV4dC5hZGRDb25zdGFudChBbnlyZWYsIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSkpKTsKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRDb25z
dGFudChBbnlmdW5jLCBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCkBAIC0zMTQsNiArMzE0LDE3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8
Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJlZkZ1bmM6IHsKKyAgICAgICAgdWludDMyX3Qg
aW5kZXg7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVu
Y2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMihpbmRleCksICJjYW4ndCBnZXQgaW5kZXggZm9yIHJlZi5mdW5jIik7CisKKyAg
ICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmVmRnVuYyhpbmRleCwgcmVzdWx0KSk7
CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKwogICAgIGNhc2UgR2V0TG9jYWw6IHsKICAgICAgICAgdWludDMyX3Qg
aW5kZXg7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKQEAgLTY4MSw2ICs2OTIsMTMg
QEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Np
b24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCisgICAg
Y2FzZSBSZWZGdW5jOiB7CisgICAgICAgIHVpbnQzMl90IHVudXNlZDsKKyAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodW51c2VkKSwgImNhbid0IGdldCBpbW1lZGlh
dGUgZm9yICIsIG1fY3VycmVudE9wY29kZSwgIiBpbiB1bnJlYWNoYWJsZSBjb250ZXh0Iik7Cisg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJl
bmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisKICAgICBjYXNlIEdyb3dNZW1vcnk6CiAgICAgY2FzZSBDdXJyZW50TWVtb3J5
OiB7CiAgICAgICAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUluc3RhbmNlLmNwcAppbmRleCAzNzA1OTk2OGUwYjc4NTRkMjczMzZmMTkzN2VjMjU4
YTM3MGI0OTY2Li41MmJmMGYyYjMzMTBkOGJhZGIwMmQ0Mzk5NTAwMWQ0M2YxYmYyYzgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldhc21Nb2R1
bGVJbmZvcm1hdGlvbi5oIgpAQCAtNTcsNyArNTgsNyBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoQ29u
dGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVy
VAogICAgICAgICBuZXcgKGltcG9ydEZ1bmN0aW9uSW5mbyhpKSkgSW1wb3J0RnVuY3Rpb25JbmZv
KCk7CiAgICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPihtX2dsb2JhbHMuZ2V0KCkpLCAwLCBn
bG9iYWxNZW1vcnlCeXRlU2l6ZShtX21vZHVsZS5nZXQoKSkpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChtX21vZHVsZS5nZXQoKS5tb2R1bGVJbmZvcm1hdGlvbigpLmds
b2JhbHNbaV0udHlwZSA9PSBBbnlyZWYpCisgICAgICAgIGlmIChpc1N1YnR5cGUobV9tb2R1bGUu
Z2V0KCkubW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxzW2ldLnR5cGUsIEFueXJlZikpCiAgICAg
ICAgICAgICBtX2dsb2JhbHNUb01hcmsuc2V0KGkpOwogICAgIH0KIH0KQEAgLTgwLDYgKzgxLDc1
IEBAIHZvaWQgSW5zdGFuY2U6OnNldEdsb2JhbCh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIG1fZ2xvYmFscy5nZXQoKVtpXS5hbnlyZWYuc2V0KCpvd25lcjxKU1dlYkFzc2VtYmx5SW5z
dGFuY2U+KCktPnZtKCksIG93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSwgdmFsdWUpOwog
fQogCitKU1ZhbHVlIEluc3RhbmNlOjpnZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQgaSkgY29u
c3QKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gbV9mdW5jdGlvbldyYXBwZXJzLmdldChpKS5nZXQo
KTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7Cisg
ICAgcmV0dXJuIHZhbHVlOworfQorCit2b2lkIEluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIo
dW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9vd25lcik7CisgICAg
QVNTRVJUKHZhbHVlLmlzRnVuY3Rpb24oKm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+
dm0oKSkpOworICAgIEFTU0VSVCghbV9mdW5jdGlvbldyYXBwZXJzLmNvbnRhaW5zKGkpKTsKKyAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+
Y2VsbExvY2soKSk7CisgICAgbV9mdW5jdGlvbldyYXBwZXJzLnNldChpLCBXcml0ZUJhcnJpZXI8
VW5rbm93bj4oKm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+dm0oKSwgb3duZXI8SlNX
ZWJBc3NlbWJseUluc3RhbmNlPigpLCB2YWx1ZSkpOworICAgIEFTU0VSVChnZXRGdW5jdGlvbldy
YXBwZXIoaSkgPT0gdmFsdWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVt
ZW50KEluc3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBzaWduZWRJbmRleCkKK3sKKyAgICBpZiAo
c2lnbmVkSW5kZXggPCAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVpbnQzMl90IGluZGV4
ID0gc2lnbmVkSW5kZXg7CisgICAgaWYgKGluZGV4ID49IGluc3RhbmNlLT50YWJsZSgpLT5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGlu
c3RhbmNlLT50YWJsZSgpLT5nZXQoaW5kZXgpKTsKK30KKworYm9vbCBzZXRXYXNtVGFibGVFbGVt
ZW50KEluc3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBzaWduZWRJbmRleCwgRW5jb2RlZEpTVmFs
dWUgZW5jVmFsdWUpCit7CisgICAgaWYgKHNpZ25lZEluZGV4IDwgMCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgdWludDMyX3QgaW5kZXggPSBzaWduZWRJbmRleDsKKyAgICBpZiAoaW5k
ZXggPj0gaW5zdGFuY2UtPnRhYmxlKCktPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY1ZhbHVlKTsKKyAgICBp
ZiAoaW5zdGFuY2UtPnRhYmxlKCktPnR5cGUoKSA9PSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpB
bnlyZWYpCisgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5zZXQoaW5kZXgsIHZhbHVlKTsKKyAg
ICBlbHNlIGlmIChpbnN0YW5jZS0+dGFibGUoKS0+dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVu
dFR5cGU6OkZ1bmNyZWYpIHsKKyAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0
aW9uOworICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5j
dGlvbjsKKworICAgICAgICBpZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbigqaW5zdGFuY2Ut
Pm93bmVyPEpTT2JqZWN0PigpLT52bSgpLCB2YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBl
ckZ1bmN0aW9uKSkgeworICAgICAgICAgICAgQVNTRVJUKCEhd2FzbUZ1bmN0aW9uIHx8ICEhd2Fz
bVdyYXBwZXJGdW5jdGlvbik7CisgICAgICAgICAgICBpZiAod2FzbUZ1bmN0aW9uKQorICAgICAg
ICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5hc0Z1bmNyZWZUYWJsZSgpLT5zZXRGdW5jdGlv
bihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLCB3YXNtRnVuY3Rpb24tPmltcG9ydGFi
bGVGdW5jdGlvbigpLCAmd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+YXNGdW5j
cmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaW5kZXgsIGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKSwg
d2FzbVdyYXBwZXJGdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3YXNtV3JhcHBlckZ1
bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmICh2YWx1
ZS5pc051bGwoKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5jbGVhcihpbmRleCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0g
ZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBkb1dhc21SZWZGdW5jKEluc3RhbmNlKiBpbnN0YW5jZSwgdWlu
dDMyX3QgaW5kZXgpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGluc3RhbmNlLT5nZXRGdW5jdGlv
bldyYXBwZXIoaW5kZXgpOworICAgIEFTU0VSVCh2YWx1ZS5pc0Z1bmN0aW9uKCppbnN0YW5jZS0+
b3duZXI8SlNPYmplY3Q+KCktPnZtKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21JbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgK
aW5kZXggNWQxZmNmM2Y5ZDNiODJiZDA5ODFhMjBjY2NkNTQ0ZTc4MDdjZTRkNy4uN2EyM2U1NjI4
MjRmODFlMzU4NjBlZTdhYjBkOTg1OGFmM2IzYjI3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUluc3RhbmNlLmgKQEAgLTM5LDEwICszOSwxNiBAQAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKIAogc3RydWN0IENvbnRleHQ7CitjbGFzcyBJbnN0YW5jZTsKKwor
RW5jb2RlZEpTVmFsdWUgZ2V0V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSosIGludDMyX3QpOwor
Ym9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgaW50MzJfdCwgRW5jb2RlZEpTVmFs
dWUgZW5jVmFsdWUpOworRW5jb2RlZEpTVmFsdWUgZG9XYXNtUmVmRnVuYyhJbnN0YW5jZSosIHVp
bnQzMl90KTsKIAogY2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SW5zdGFuY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5zdGFuY2U+IHsKIHB1YmxpYzoKICAg
ICB1c2luZyBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHZv
aWQqKT47CisgICAgdXNpbmcgRnVuY3Rpb25XcmFwcGVyTWFwID0gSGFzaE1hcDx1aW50MzJfdCwg
V3JpdGVCYXJyaWVyPFVua25vd24+LCBJbnRIYXNoPHVpbnQzMl90PiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+OwogCiAgICAgc3RhdGljIFJlZjxJbnN0YW5j
ZT4gY3JlYXRlKENvbnRleHQqLCBSZWY8TW9kdWxlPiYmLCBFbnRyeUZyYW1lKiogcG9pbnRlclRv
VG9wRW50cnlGcmFtZSwgdm9pZCoqIHBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQsIFN0b3JlVG9w
Q2FsbEZyYW1lQ2FsbGJhY2smJik7CiAKQEAgLTkxLDYgKzk3LDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0R2xvYmFsKHVuc2lnbmVkIGksIGludDY0X3QgYml0cykgeyBtX2dsb2JhbHMuZ2V0KClb
aV0ucHJpbWl0aXZlID0gYml0czsgfQogICAgIHZvaWQgc2V0R2xvYmFsKHVuc2lnbmVkLCBKU1Zh
bHVlKTsKICAgICBjb25zdCBCaXRWZWN0b3ImIGdsb2JhbHNUb01hcmsoKSB7IHJldHVybiBtX2ds
b2JhbHNUb01hcms7IH0KKyAgICBKU1ZhbHVlIGdldEZ1bmN0aW9uV3JhcHBlcih1bnNpZ25lZCkg
Y29uc3Q7CisgICAgdHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyTWFwOjpWYWx1ZXNDb25zdEl0ZXJh
dG9yUmFuZ2UgZnVuY3Rpb25XcmFwcGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25XcmFw
cGVycy52YWx1ZXMoKTsgfQorICAgIHZvaWQgc2V0RnVuY3Rpb25XcmFwcGVyKHVuc2lnbmVkLCBK
U1ZhbHVlKTsKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNl
LCBtX2dsb2JhbHMpOyB9CkBAIC0xNTksNiArMTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdWlu
dDY0X3QgcHJpbWl0aXZlOwogICAgIH07CiAgICAgTWFsbG9jUHRyPEdsb2JhbFZhbHVlPiBtX2ds
b2JhbHM7CisgICAgRnVuY3Rpb25XcmFwcGVyTWFwIG1fZnVuY3Rpb25XcmFwcGVyczsKICAgICBC
aXRWZWN0b3IgbV9nbG9iYWxzVG9NYXJrOwogICAgIEVudHJ5RnJhbWUqKiBtX3BvaW50ZXJUb1Rv
cEVudHJ5RnJhbWUgeyBudWxscHRyIH07CiAgICAgdm9pZCoqIG1fcG9pbnRlclRvQWN0dWFsU3Rh
Y2tMaW1pdCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKaW5kZXggYWQ1ZWI5NTI2YWM3YWMzYmU0MzdmYzYyM2Rm
MGJkN2RjMjA4MDdkMi4uODhmNjZjYjYzOTE1OWMzNjlkOWRkZTYwYTFmY2U2ZGE1ZDE3MTI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0
aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKIAorI2lu
Y2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKQEAgLTY2LDYgKzY3LDkgQEAgc3RydWN0IE1v
ZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9y
bWF0aW9uPiB7CiAgICAgdWludDMyX3QgbWVtb3J5Q291bnQoKSBjb25zdCB7IHJldHVybiBtZW1v
cnkgPyAxIDogMDsgfQogICAgIHVpbnQzMl90IHRhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiB0
YWJsZUluZm9ybWF0aW9uID8gMSA6IDA7IH0KIAorICAgIGNvbnN0IEJpdFZlY3RvciYgcmVmZXJl
bmNlZEZ1bmN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlZEZ1bmN0aW9uczsgfQor
ICAgIHZvaWQgYWRkUmVmZXJlbmNlZEZ1bmN0aW9uKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IG1f
cmVmZXJlbmNlZEZ1bmN0aW9ucy5zZXQoaW5kZXgpOyB9CisKICAgICBWZWN0b3I8SW1wb3J0PiBp
bXBvcnRzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW50ZXJuYWxGdW5jdGlvblNp
Z25hdHVyZUluZGljZXM7CkBAIC04NCw2ICs4OCw4IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlv
biA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAg
IHVuc2lnbmVkIGZpcnN0SW50ZXJuYWxHbG9iYWwgeyAwIH07CiAgICAgVmVjdG9yPEN1c3RvbVNl
Y3Rpb24+IGN1c3RvbVNlY3Rpb25zOwogICAgIFJlZjxOYW1lU2VjdGlvbj4gbmFtZVNlY3Rpb247
CisgICAgCisgICAgbXV0YWJsZSBCaXRWZWN0b3IgbV9yZWZlcmVuY2VkRnVuY3Rpb25zOwogfTsK
IAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJz
ZXIuY3BwCmluZGV4IDMwYjZmM2NlZDlkZjU2MjYyMjI2MjcyNTNjMjQ2ODRhM2M4YjQ5NDMuLjI1
NGU4MjZhODAzMDk0NDBjZDI1N2YzZDc0NmI3MDIxOWNkNDM0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTI5MSw5ICsyOTEs
MTEgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUdsb2JhbCgpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluaXRFeHByKGluaXRPcGNv
ZGUsIGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyLCB0eXBlRm9ySW5pdE9wY29kZSkp
OwogICAgICAgICBpZiAoaW5pdE9wY29kZSA9PSBHZXRHbG9iYWwpCiAgICAgICAgICAgICBnbG9i
YWwuaW5pdGlhbGl6YXRpb25UeXBlID0gR2xvYmFsOjpGcm9tR2xvYmFsSW1wb3J0OworICAgICAg
ICBlbHNlIGlmIChpbml0T3Bjb2RlID09IFJlZkZ1bmMpCisgICAgICAgICAgICBnbG9iYWwuaW5p
dGlhbGl6YXRpb25UeXBlID0gR2xvYmFsOjpGcm9tUmVmRnVuYzsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgZ2xvYmFsLmluaXRpYWxpemF0aW9uVHlwZSA9IEdsb2JhbDo6RnJvbUV4cHJlc3Np
b247Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZUZvckluaXRPcGNvZGUgIT0gZ2xv
YmFsLnR5cGUsICJHbG9iYWwgaW5pdF9leHByIG9wY29kZSBvZiB0eXBlICIsIHR5cGVGb3JJbml0
T3Bjb2RlLCAiIGRvZXNuJ3QgbWF0Y2ggZ2xvYmFsJ3MgdHlwZSAiLCBnbG9iYWwudHlwZSk7Cisg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzU3VidHlwZSh0eXBlRm9ySW5pdE9wY29kZSwg
Z2xvYmFsLnR5cGUpLCAiR2xvYmFsIGluaXRfZXhwciBvcGNvZGUgb2YgdHlwZSAiLCB0eXBlRm9y
SW5pdE9wY29kZSwgIiBkb2Vzbid0IG1hdGNoIGdsb2JhbCdzIHR5cGUgIiwgZ2xvYmFsLnR5cGUp
OwogCiAgICAgICAgIG1faW5mby0+Z2xvYmFscy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShnbG9i
YWwpKTsKICAgICB9CkBAIC00NzksMTEgKzQ4MSwyMSBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBh
cnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVy
LAogICAgIH0KIAogICAgIGNhc2UgUmVmTnVsbDogewotICAgICAgICByZXN1bHRUeXBlID0gQW55
cmVmOworICAgICAgICByZXN1bHRUeXBlID0gQW55ZnVuYzsKICAgICAgICAgYml0c09ySW1wb3J0
TnVtYmVyID0gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBSZWZGdW5jOiB7CisgICAgICAgIHVpbnQzMl90IGluZGV4OworICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihpbmRleCksICJjYW4ndCBnZXQg
cmVmLmZ1bmMgaW5kZXgiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbmRleCA+PSBt
X2luZm8tPmZ1bmN0aW9ucy5zaXplKCksICJyZWYuZnVuYyBpbmRleCIsIGluZGV4LCAiIGV4Y2Vl
ZHMgdGhlIG51bWJlciBvZiBmdW5jdGlvbnMgIiwgbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsK
KworICAgICAgICByZXN1bHRUeXBlID0gQW55ZnVuYzsKKyAgICAgICAgYml0c09ySW1wb3J0TnVt
YmVyID0gaW5kZXg7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgInVua25vd24gaW5pdF9leHByIG9wY29kZSAi
LCBvcGNvZGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21WYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRh
dGUuY3BwCmluZGV4IGE0Yjc4ZTQ1OGRmNDU5OGUwY2NkYTYxZmE5NGVjOTE5YTI5YWZjZjQuLjdm
MWFjNjFlZThhMjRjZDFlOTE4YjhiZGVhY2NiOGRiZTQzNDhlOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcApAQCAtMTAzLDEwICsxMDMsMTEgQEAgcHVi
bGljOgogCiAgICAgLy8gUmVmZXJlbmNlcwogICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCk7CisgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIC8vIFRhYmxlcwotICAgIFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRU
YWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpOworICAg
IFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZh
bHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0
TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMTc3LDIw
ICsxNzgsMjEgQEAgYXV0byBWYWxpZGF0ZTo6YWRkQXJndW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlKSAtPiBSZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIFZhbGlkYXRl
OjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0g
VHlwZTo6QW55cmVmOwotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZTo6STMyICE9IGlk
eCwgInRhYmxlLmdldCBpbmRleCB0byB0eXBlICIsIGlkeCwgIiBleHBlY3RlZCAiLCBUeXBlOjpJ
MzIpOwotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVGFibGVFbGVtZW50VHlwZTo6QW55cmVm
ICE9IG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpLCAidGFibGUuZ2V0IGV4cGVjdHMg
dGhlIHRhYmxlIHRvIGhhdmUgdHlwZSAiLCBUeXBlOjpBbnlyZWYpOworICAgIHJlc3VsdCA9IG1f
bW9kdWxlLnRhYmxlSW5mb3JtYXRpb24ud2FzbVR5cGUoKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9G
QUlMX0lGKFR5cGU6OkkzMiAhPSBpbmRleCwgInRhYmxlLmdldCBpbmRleCB0byB0eXBlICIsIGlu
ZGV4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7CiAKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIFZhbGlkYXRlOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9u
VHlwZSYgdmFsdWUpIC0+IFJlc3VsdAorYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVz
c2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFJlc3VsdAogewotICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZTo6STMyICE9IGlkeCwgInRhYmxlLnNldCBpbmRl
eCB0byB0eXBlICIsIGlkeCwgIiBleHBlY3RlZCAiLCBUeXBlOjpJMzIpOwotICAgIFdBU01fVkFM
SURBVE9SX0ZBSUxfSUYoVHlwZTo6QW55cmVmICE9IHZhbHVlLCAidGFibGUuc2V0IHZhbHVlIHRv
IHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0ZWQgIiwgVHlwZTo6QW55cmVmKTsKLSAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKFRhYmxlRWxlbWVudFR5cGU6OkFueXJlZiAhPSBtX21vZHVsZS50YWJs
ZUluZm9ybWF0aW9uLnR5cGUoKSwgInRhYmxlLnNldCBleHBlY3RzIHRoZSB0YWJsZSB0byBoYXZl
IHR5cGUgIiwgVHlwZTo6QW55cmVmKTsKKyAgICBhdXRvIHR5cGUgPSBtX21vZHVsZS50YWJsZUlu
Zm9ybWF0aW9uLndhc21UeXBlKCk7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJ
MzIgIT0gaW5kZXgsICJ0YWJsZS5zZXQgaW5kZXggdG8gdHlwZSAiLCBpbmRleCwgIiBleHBlY3Rl
ZCAiLCBUeXBlOjpJMzIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2
YWx1ZSwgdHlwZSksICJ0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3Rl
ZCAiLCB0eXBlKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fbW9kdWxlLnRhYmxlSW5m
b3JtYXRpb24udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkFueXJlZgorICAgICAgICAmJiBt
X21vZHVsZS50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5j
cmVmLCAidGFibGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBhbnlyZWYgb3Ig
YW55ZnVuYyIpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTE5OCw3ICsyMDAsMTYgQEAgYXV0
byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5
cGUmIHZhbHVlKSAtPiBSZXN1bHQKIGF1dG8gVmFsaWRhdGU6OmFkZFJlZklzTnVsbChFeHByZXNz
aW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAogewogICAg
IHJlc3VsdCA9IFR5cGU6OkkzMjsKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGU6OkFu
eXJlZiAhPSB2YWx1ZSwgInJlZi5pc19udWxsIHRvIHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0ZWQg
IiwgVHlwZTo6QW55cmVmKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUo
dmFsdWUsIFR5cGU6OkFueXJlZiksICJyZWYuaXNfbnVsbCB0byB0eXBlICIsIHZhbHVlLCAiIGV4
cGVjdGVkICIsIFR5cGU6OkFueXJlZik7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFZh
bGlkYXRlOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBSZXN1bHQKK3sKKyAgICByZXN1bHQgPSBUeXBlOjpBbnlmdW5jOworICAgIFdBU01fVkFM
SURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9tb2R1bGUuZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgp
LCAicmVmLmZ1bmMgaW5kZXggIiwgaW5kZXgsICIgaXMgdG9vIGxhcmdlLCBtYXggaXMgIiwgbV9t
b2R1bGUuZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICBtX21vZHVsZS5hZGRSZWZlcmVu
Y2VkRnVuY3Rpb24oaW5kZXgpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTIyNCw3ICsyMzUs
NyBAQCBhdXRvIFZhbGlkYXRlOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5
cGUgdmFsdWUpIC0+IFJlc3VsdAogewogICAgIEV4cHJlc3Npb25UeXBlIGxvY2FsVHlwZTsKICAg
ICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKGdldExvY2FsKGluZGV4LCBsb2NhbFR5cGUpKTsK
LSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGxvY2FsVHlwZSAhPSB2YWx1ZSwgInNldF9sb2Nh
bCB0byB0eXBlICIsIHZhbHVlLCAiIGV4cGVjdGVkICIsIGxvY2FsVHlwZSk7CisgICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKHZhbHVlLCBsb2NhbFR5cGUpLCAic2V0X2xvY2Fs
IHRvIHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0ZWQgIiwgbG9jYWxUeXBlKTsKICAgICByZXR1cm4g
eyB9OwogfQogCkBAIC0zNjIsNyArMzczLDcgQEAgYXV0byBWYWxpZGF0ZTo6YWRkQ2FsbCh1bnNp
Z25lZCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXMKICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgIT0gYXJn
cy5zaXplKCksICJhcml0eSBtaXNtYXRjaCBpbiBjYWxsLCBnb3QgIiwgYXJncy5zaXplKCksICIg
YXJndW1lbnRzLCBleHBlY3RlZCAiLCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQotICAgICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKGFyZ3NbaV0gIT0gc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCAiYXJn
dW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsLCBnb3QgIiwgYXJnc1tpXSwgIiwgZXhwZWN0ZWQg
Iiwgc2lnbmF0dXJlLmFyZ3VtZW50KGkpKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9J
RighaXNTdWJ0eXBlKGFyZ3NbaV0sIHNpZ25hdHVyZS5hcmd1bWVudChpKSksICJhcmd1bWVudCB0
eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmdzW2ldLCAiLCBleHBlY3RlZCAiLCBzaWdu
YXR1cmUuYXJndW1lbnQoaSkpOwogCiAgICAgcmVzdWx0ID0gc2lnbmF0dXJlLnJldHVyblR5cGUo
KTsKICAgICByZXR1cm4geyB9OwpAQCAtMzc1LDcgKzM4Niw3IEBAIGF1dG8gVmFsaWRhdGU6OmFk
ZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4
cHJlc3NpCiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmd1bWVudENvdW50ICE9IGFyZ3Mu
c2l6ZSgpIC0gMSwgImFyaXR5IG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmdz
LnNpemUoKSAtIDEsICIgYXJndW1lbnRzLCBleHBlY3RlZCAiLCBhcmd1bWVudENvdW50KTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnc1tpXSAhPSBzaWduYXR1cmUuYXJndW1lbnQoaSks
ICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmdzW2ld
LCAiLCBleHBlY3RlZCAiLCBzaWduYXR1cmUuYXJndW1lbnQoaSkpOworICAgICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUoYXJnc1tpXSwgc2lnbmF0dXJlLmFyZ3VtZW50KGkp
KSwgImFyZ3VtZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZ3Nb
aV0sICIsIGV4cGVjdGVkICIsIHNpZ25hdHVyZS5hcmd1bWVudChpKSk7CiAKICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKGFyZ3MubGFzdCgpICE9IEkzMiwgIm5vbi1pMzIgY2FsbF9pbmRpcmVj
dCBpbmRleCAiLCBhcmdzLmxhc3QoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTVG9XYXNtLmNwcAppbmRleCAyNjMxM2U4NDI2OTY1N2ZlZTliNmNiZDczYjU3MDU4YzQ0NWZi
NWI4Li42ODUyOTU3ODllMzZiN2NmYjVkNmI5MDhmNGY1MTRjNzJjY2RkMTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRGlzYWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIk1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCkBAIC04Myw2ICs4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250
ZXh0JiBjb21wCiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBXYXNtOjpJ
MzI6CiAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgorICAgICAgICBjYXNlIFdhc206OkFueWZ1
bmM6CiAgICAgICAgICAgICBpZiAobnVtR1BScyA+PSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5t
X2dwckFyZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAgIHRvdGFsRnJhbWVTaXplICs9IHNpemVv
Zih2b2lkKik7CiAgICAgICAgICAgICArK251bUdQUnM7CkBAIC0xMjIsMjAgKzEyNCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29t
cGlsYXRpb25Db250ZXh0JiBjb21wCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mSW5zdGFuY2UoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIH0K
IAotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBJbnN0YW5jZTo6b2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1lKCkpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pihhcmd1bWVudHNJ
bmNsdWRlSTY0ID8gRXhjZXB0aW9uVHlwZTo6STY0QXJndW1lbnRUeXBlIDogRXhjZXB0aW9uVHlw
ZTo6STY0UmV0dXJuVHlwZSkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotCi0gICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLQotICAg
ICAgICBqaXQuanVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRXhjZXB0aW9uSGFuZGxlclB0
clRhZyk7Ci0gICAgICAgIGppdC5icmVha3BvaW50KCk7IC8vIFdlIHNob3VsZCBub3QgcmVhY2gg
dGhpcy4KLQotICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPih3YXNtVG9KU0V4Y2VwdGlvbikpOwotICAgICAgICB9KTsKKyAgICAgICAg
ZW1pdFRocm93V2FzbVRvSlNFeGNlcHRpb24oaml0LCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIGFy
Z3VtZW50c0luY2x1ZGVJNjQgPyBFeGNlcHRpb25UeXBlOjpJNjRBcmd1bWVudFR5cGUgOiBFeGNl
cHRpb25UeXBlOjpJNjRSZXR1cm5UeXBlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKQEAgLTE2NSw2ICsxNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4g
Y3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAogICAgICAgICAg
ICAgc3dpdGNoIChzaWduYXR1cmUuYXJndW1lbnQoaSkpIHsKICAgICAgICAgICAgIGNhc2UgV2Fz
bTo6STMyOgogICAgICAgICAgICAgY2FzZSBXYXNtOjpJNjQ6CisgICAgICAgICAgICBjYXNlIFdh
c206OkFueWZ1bmM6CiAgICAgICAgICAgICBjYXNlIFdhc206OkFueXJlZjoKICAgICAgICAgICAg
ICAgICBpZiAobnVtR1BScyA+PSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2dwckFyZ3Muc2l6
ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzaWduYXR1cmUuYXJndW1lbnQoaSkgPT0g
V2FzbTo6STMyKSB7CkBAIC0yNTAsNyArMjQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFs
RnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXAK
ICAgICAgICAgaml0Lm1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgSlNWYWx1ZVJlZ3Mg
eyBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBX
YXNtOjpBbnlyZWY6Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNy
ZWZzIG9uY2UgdGhleSBhcmUgc3VwcG9ydGVkIGhlcmUuCisgICAgY2FzZSBXYXNtOjpBbnlmdW5j
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206OkkzMjoKICAgICAgICAgaml0Lnplcm9F
eHRlbmQzMlRvUHRyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CkBAIC0yNjgsNyArMjU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rp
b24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXAKICAgICB9
CiAgICAgY2FzZSBXYXNtOjpJNjQ6CiAgICAgY2FzZSBXYXNtOjpGdW5jOgotICAgIGNhc2UgV2Fz
bTo6QW55ZnVuYzoKICAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oCmluZGV4IGVhMjkyYTIyZjY0ZTM4NWNlZDIzM2I4ZjRjYmFjNWM4
YzA4YzZlMWYuLjEzZDBhMDk0N2VlMWRmMGVlYTEzNjBmNDYwZDJiZDRjNjU1NDcwZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBl
cnMuaApAQCAtMTIyLDcgKzEyMiw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc1dlYkFzc2VtYmx5
SG9zdEZ1bmN0aW9uKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSwgV2ViQXNzZW1ibHlGCiB9CiAKIAot
QUxXQVlTX0lOTElORSBib29sIGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24oVk0mIHZtLCBKU09i
amVjdCogb2JqZWN0KQorQUxXQVlTX0lOTElORSBib29sIGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rp
b24oVk0mIHZtLCBKU1ZhbHVlIG9iamVjdCkKIHsKICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB1
bnVzZWQ7CiAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHVudXNlZDI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmNwcAppbmRleCA2NjZiZjQ3ZjFmZTIzMzAyZmMzMGZkNGUxZGM3Mzk0NWVhNGIzZDNmLi4zMjM0
MjdmZDhhMGFmMjRjZTI5MzY0ZmU0MDRiMTY3MGE2ODNiNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAg
LTkxLDExICs5MSwxMiBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLm51bUltcG9ydEZ1bmN0aW9ucygpOyAr
K2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCp0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLmltcG9y
dEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGkpKTsgLy8gVGhpcyBhbHNvIGtlZXBz
IHRoZSBmdW5jdGlvbnMnIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBhbGl2ZS4KIAotICAgIGZvciAo
c2l6ZV90IGkgOiB0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLmdsb2JhbHNUb01hcmsoKSkgewotICAg
ICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJl
IHN1cHBvcnRlZCBoZXJlLgotICAgICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5ODE1Nz4KKyAgICBmb3IgKHNpemVfdCBpIDogdGhpc09iamVjdC0+aW5z
dGFuY2UoKS5nbG9iYWxzVG9NYXJrKCkpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNPYmplY3QtPmluc3RhbmNlKCkubG9hZEk2NEdsb2JhbChp
KSkpOwotICAgIH0KKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbC0+Y2VsbExvY2so
KSk7CisgICAgZm9yIChhdXRvJiB3cmFwcGVyIDogdGhpc09iamVjdC0+aW5zdGFuY2UoKS5mdW5j
dGlvbldyYXBwZXJzKCkpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQod3JhcHBl
ci5nZXQoKSk7CiB9CiAKIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0
aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21D
b2RlQmxvY2ssIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVh
dGlvbk1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCmluZGV4IDk2M2MyODJlOGI4OGRmMjNiYTM5
OTdiMWQ3ZDE1MDhjZDJjZjg4YzEuLjhhYjJmOTAzYWNhYzE1YjEzYTFkZTM5MjQ3YzA1NTA1MmVk
Y2YzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCkBAIC00OCw2ICs0OCwxMiBAQCBKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yOjpKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogCiBjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvcjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuUnVudGltZUVycm9yIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yKSB9OwogCitKU09iamVjdCogY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAg
IEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIEpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKK30KICAgICAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKaW5kZXggNjhkM2FkMTQ2NWIxYWY4ZTZlMTE2
OTM2ZmExYmM5MmY2ZWE2NTFkNS4uODYxZjQ3MmYzZGI3NzA5N2VhM2JjYzI0YzkyNDYzYTljMTFi
OGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaApAQCAtNDMsNiArNDMsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihWTSYsIFN0cnVjdHVyZSopOwogfTsKIAorSlNP
YmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoRXhlY1N0YXRlKiwgVk0mLCBj
b25zdCBTdHJpbmcmKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
YXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAK
aW5kZXggNWJmZjljYzZkMDQ0MWYwZWZjZjIxYjlkY2Y5ODgxMDdmYjU2ODhiYi4uOGU3MThlYTYw
MGQ3MThhZjU1MDA5MDk0Mzc2MTlhZDE3MGVlNTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1l
VHJhY2Vycy5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9y
LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAtNjUsNyArNjYsNiBAQCBzdGF0aWMgRXhw
ZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWls
dXJlPiBoYW5kbGVCYQogICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKICAgICAgICAgY2FzZSBW
b2lkOgogICAgICAgICBjYXNlIEZ1bmM6Ci0gICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICAgICAgY2FzZSBJNjQ6IHsK
QEAgLTE2MiwxMCArMTYyLDEwIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNt
RW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAg
ICBzd2l0Y2ggKGFyZ1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgVm9pZDoKICAgICAgICAgICAg
IGNhc2UgRnVuYzoKLSAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNhc2Ug
STY0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICBjYXNlIEFueXJlZjoKKyAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAg
ICAgIGNhc2UgSTMyOiB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGdwclJlZzsKICAgICAgICAg
ICAgICAgICBpZiAobWFyc2hhbGxlZEdQUnMgPCB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKQEAg
LTIzNywxNCArMjM3LDE3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50
cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFZvaWQ6
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBbnlmdW5jOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEk2NDoKICAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgSTMyOgogICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0ganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oYnVmZmVyW2FyZ051bV0pKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEFueWZ1bmM6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShidWZmZXJbYXJnTnVtXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbigq
dm0sIGFyZykgfHwgYXJnLmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQW55cmVm
OgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYm94IHdhc20g
RnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBwb3J0ZWQgaGVyZS4KICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShidWZmZXJbYXJnTnVtXSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBGMzI6CkBAIC0y
NjgsNyArMjcxLDYgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0
clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgICAgICAgICB1
aW50NjRfdCByZWFsUmVzdWx0OwogICAgICAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJl
dHVyblR5cGUoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAgICAgICAgICAg
ICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAgICAgICAgY2FzZSBJNjQ6CiAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjc4LDYgKzI4MCwxMSBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAg
ICAgICAgICAgICAgICAgICByZWFsUmVzdWx0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihyZXN1bHQudG9JbnQzMihleGVjKSkpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBBbnlm
dW5jOiB7CisgICAgICAgICAgICAgICAgICAgIHJlYWxSZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5pc0Z1bmN0aW9uKCp2
bSkgfHwgcmVzdWx0LmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQW55cmVmOiB7CiAgICAgICAgICAg
ICAgICAgICAgIHJlYWxSZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzEsMTAgKzM3OCwxMCBAQCBFeHBlY3RlZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pT
KFZNKiB2bQogICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlKSB7CiAgICAgICAgICAgICBjYXNl
IFZvaWQ6CiAgICAgICAgICAgICBjYXNlIEZ1bmM6Ci0gICAgICAgICAgICBjYXNlIEFueWZ1bmM6
CiAgICAgICAgICAgICBjYXNlIEk2NDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAgY2FzZSBBbnlyZWY6
CisgICAgICAgICAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgICAgICBjYXNlIEkzMjogewogICAg
ICAgICAgICAgICAgIEdQUlJlZyBncHJSZWc7CiAgICAgICAgICAgICAgICAgaWYgKG1hcnNoYWxs
ZWRHUFJzIDwgd2FzbUNDLm1fZ3ByQXJncy5zaXplKCkpCkBAIC0zOTAsNyArMzk3LDYgQEAgRXhw
ZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWls
dXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQz
MlRvUHRyKGdwclJlZywgZ3ByUmVnKTsgLy8gQ2xlYXIgbm9uLWludDMyIGFuZCBub24tdGFnIGJp
dHMuCiAgICAgICAgICAgICAgICAgICAgIGppdC5ib3hJbnQzMihncHJSZWcsIEpTVmFsdWVSZWdz
KGdwclJlZyksIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9uY2Ug
dGhleSBhcmUgc3VwcG9ydGVkIGhlcmUuCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoZ3By
UmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KGNhbGxlZUZyYW1lT2Zmc2V0KSk7CiAgICAgICAg
ICAgICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTQ0MSwxMCArNDQ3LDEwIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0q
IHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgVm9p
ZDoKICAgICAgICAgICAgIGNhc2UgRnVuYzoKLSAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAg
ICAgICAgICAgIGNhc2UgSTY0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCiAgICAgICAgICAgICBjYXNlIEFueXJlZjoKKyAg
ICAgICAgICAgIGNhc2UgQW55ZnVuYzoKICAgICAgICAgICAgIGNhc2UgSTMyOgogICAgICAgICAg
ICAgICAgIC8vIFNraXBwZWQ6IGhhbmRsZWQgYWJvdmUuCiAgICAgICAgICAgICAgICAgaWYgKG1h
cnNoYWxsZWRHUFJzID49IHdhc21DQy5tX2dwckFyZ3Muc2l6ZSgpKQpAQCAtNTE5LDcgKzUyNSw2
IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5k
aW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAgICAgIC8vIERpc2NhcmQuCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRnVuYzoKLSAgICBjYXNlIEFueWZ1bmM6CiAgICAgICAgIC8vIEZv
ciB0aGUgSmF2YVNjcmlwdCBlbWJlZGRpbmcsIGltcG9ydHMgd2l0aCB0aGVzZSB0eXBlcyBpbiB0
aGVpciBzaWduYXR1cmUgcmV0dXJuIGFyZSBhIFdlYkFzc2VtYmx5Lk1vZHVsZSB2YWxpZGF0aW9u
IGVycm9yLgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBi
cmVhazsKQEAgLTU1Myw2ICs1NTgsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAg
ICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEFueWZ1
bmM6CiAgICAgY2FzZSBBbnlyZWY6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRjMyOiB7CkBA
IC02OTUsNiArNzAxLDI1IEBAIHZvaWQqIHdhc21Ub0pTRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlLCBJbnN0YW5jZSogd2FzCiAgICAgcmV0dXJuIHZt
LnRhcmdldE1hY2hpbmVQQ0ZvclRocm93OwogfQogCit2b2lkIGVtaXRUaHJvd1dhc21Ub0pTRXhj
ZXB0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgd2FzbUluc3RhbmNlLCBXYXNtOjpFeGNl
cHRpb25UeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHdhc21JbnN0YW5jZSAhPSBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNt
SW5zdGFuY2UsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZlBvaW50ZXJUb1RvcEVudHJ5RnJhbWUo
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odHlwZSkpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOworCisgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVy
YXRpb25QdHJUYWcpOworCisgICAgaml0Lmp1bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWcpOworICAgIGppdC5icmVha3BvaW50KCk7IC8vIFdlIHNob3Vs
ZCBub3QgcmVhY2ggdGhpcy4KKworICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4oV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pKTsKKyAgICB9KTsKK30K
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
TUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5oCmluZGV4IGUwYzc0
YzMzODM2ZjA1MmY2MGZlODc0ZTkzYTBjNzFkNjgzZjg2MWUuLjU0NDU4MDBiNDg3MjRjNzcyOGEz
OWU2MmI3MmIwMDdjNjFiODc4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dhc21Ub0pTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBJbnN0YW5jZTsKIEV4cGVjdGVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRv
SlMoVk0qLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywgU2lnbmF0dXJlSW5kZXgs
IHVuc2lnbmVkIGltcG9ydEluZGV4KTsKIAogdm9pZCogd2FzbVRvSlNFeGNlcHRpb24oRXhlY1N0
YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSW5zdGFuY2UqKTsKK3ZvaWQgZW1pdFRocm93V2Fz
bVRvSlNFeGNlcHRpb24oQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIHdhc21JbnN0YW5jZSwgV2FzbTo6
RXhjZXB0aW9uVHlwZSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAK
aW5kZXggOTFiNWI4Mzg4NTIwYTE0MmFhZTA5YzUyZGMzZmM4NTM4ZTE3YmNmZi4uZDg5NzE1MDQy
NjA1ZDczZTNjN2I0NTMyYjYzOTk3MDRjM2Y5MzU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTg0LDYgKzg0
LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJs
eUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgY2FzZSBXYXNtOjpJMzI6CiAgICAg
ICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYXJnLnRvSW50MzIoZXhlYykpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2FzbTo6QW55ZnVuYzogeworICAgICAgICAgICAg
aWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBhcmcpICYmICFhcmcuaXNOdWxsKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihleGVjLCB2bSwgIkFu
eWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6STY0OgpAQCAtOTcsNyArMTAyLDYgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6
Vm9pZDoKICAgICAgICAgY2FzZSBXYXNtOjpGdW5jOgotICAgICAgICBjYXNlIFdhc206OkFueWZ1
bmM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpA
QCAtMjI4LDYgKzIzMiw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgICAgICAgICBh
cmd1bWVudHNJbmNsdWRlSTY0ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFdhc206OkFueXJlZjoKKyAgICAgICAgY2FzZSBXYXNtOjpBbnlmdW5jOgogICAgICAgICBj
YXNlIFdhc206OkkzMjoKICAgICAgICAgICAgIGlmIChudW1HUFJzID49IFdhc206Ondhc21DYWxs
aW5nQ29udmVudGlvbigpLm1fZ3ByQXJncy5zaXplKCkpCiAgICAgICAgICAgICAgICAgdG90YWxG
cmFtZVNpemUgKz0gc2l6ZW9mKENQVVJlZ2lzdGVyKTsKQEAgLTMwMyw2ICszMDgsMjcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246Ompz
Q2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgICAgICAgICAgKytudW1HUFJzOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
V2FzbTo6QW55ZnVuYzogeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5s
aW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KKyAg
ICAgICAgICAgICAgICBib29sICgqc2hvdWxkVGhyb3cpKFdhc206Okluc3RhbmNlKiwgSlNWYWx1
ZSkgPSBbXSAoV2FzbTo6SW5zdGFuY2UqIHdhc21JbnN0YW5jZSwgSlNWYWx1ZSBhcmcpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
ID0gd2FzbUluc3RhbmNlLT5vd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCk7CisgICAgICAg
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xv
YmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0
aW9uKHZtLCBhcmcpICYmICFhcmcuaXNOdWxsKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmluc3RhbmNl
KCktPmluc3RhbmNlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAgICAgICAg
IGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBqc09mZnNldCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgICAgICAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHNob3VsZFRocm93KT4oR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICAgICAgICAgIGF1dG8gY2Fs
bCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisKKyAgICAgICAgICAgICAgICBqaXQuYWRk
TGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHNo
b3VsZFRocm93KSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzbG93
UGF0aC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKSk7CisKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOiB7CiAgICAgICAgICAg
ICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIGpzT2Zmc2V0KSwgc2NyYXRjaEdQUik7CiAKQEAgLTQ2NiwxMyArNDkyLDExIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9u
Ojpqc0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgICAgIGlzTmFOLmxpbmsoJmppdCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFdhc206OkFueXJlZjogewotICAgICAgICAvLyBG
SVhNRTogV2UgbmVlZCB0byBib3ggd2FzbSBGdW5jcmVmcyBvbmNlIHRoZXkgYXJlIHN1cHBvcnRl
ZCBoZXJlLgorICAgIGNhc2UgV2FzbTo6QW55ZnVuYzoKKyAgICBjYXNlIFdhc206OkFueXJlZjoK
ICAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2UgV2FzbTo6STY0OgogICAgIGNhc2UgV2Fz
bTo6RnVuYzoKLSAgICBjYXNlIFdhc206OkFueWZ1bmM6CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDRm
ODAxZTU3NjkyN2ZmNjZlZTUwYzY1MDg5MGVmZTAyMTcwN2I4ZjIuLjEyYjFjZWYyZGY0Njg3OWEy
YzdmMWIzNzFmNGM1OTM5OWJlYzY2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTIzNSwxMCAr
MjM1LDE1IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgICAgICAvLyBpaS4gSWYg
dGhlIGdsb2JhbF90eXBlIG9mIGkgaXMgaTY0IG9yIFR5cGUodikgaXMgbm90IE51bWJlciwgdGhy
b3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAgICAgICBpZiAobW9kdWxlSW5mb3Jt
YXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlID09IFdhc206Okk2NCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3Io
ZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJj
YW5ub3QgYmUgYW4gaTY0IikpKTsKLSAgICAgICAgICAgIGlmIChtb2R1bGVJbmZvcm1hdGlvbi5n
bG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUgIT0gV2FzbTo6QW55cmVmICYmICF2YWx1ZS5p
c051bWJlcigpKQorICAgICAgICAgICAgaWYgKCFpc1N1YnR5cGUobW9kdWxlSW5mb3JtYXRpb24u
Z2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlLCBXYXNtOjpBbnlyZWYpICYmICF2YWx1ZS5p
c051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJB
c3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1w
b3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSBudW1iZXIiKSkpOwogICAgICAgICAgICAgLy8gaWlp
LiBBcHBlbmQgVG9XZWJBc3NlbWJseVZhbHVlKHYpIHRvIGltcG9ydHMuCiAgICAgICAgICAgICBz
d2l0Y2ggKG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSkg
eworICAgICAgICAgICAgY2FzZSBXYXNtOjpBbnlmdW5jOgorICAgICAgICAgICAgICAgIGlmICgh
aXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgdmFsdWUpICYmICF2YWx1ZS5pc051bGwoKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5
TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBn
bG9iYWwiLCAibXVzdCBiZSBhIHdhc20gZXhwb3J0ZWQgZnVuY3Rpb24gb3IgbnVsbCIpKSk7Cisg
ICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1wb3J0Lmtp
bmRJbmRleCwgdmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBXYXNtOjpBbnlyZWY6CiAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5z
ZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMzE5LDYgKzMyNCw0NyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5r
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICB9
CiAgICAgfQogCisgICAgdW5zaWduZWQgZnVuY3Rpb25JbXBvcnRDb3VudCA9IGNvZGVCbG9jay0+
ZnVuY3Rpb25JbXBvcnRDb3VudCgpOworICAgIGF1dG8gbWFrZUZ1bmN0aW9uV3JhcHBlciA9IFsm
XSAoY29uc3QgU3RyaW5nJiBmaWVsZCwgdWludDMyX3QgaW5kZXgpIC0+IEpTVmFsdWUgeworICAg
ICAgICAvLyBJZiB3ZSBhbHJlYWR5IG1hZGUgYSB3cmFwcGVyLCBkbyBub3QgbWFrZSBhIG5ldyBv
bmUuCisgICAgICAgIEpTVmFsdWUgd3JhcHBlciA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuZ2V0
RnVuY3Rpb25XcmFwcGVyKGluZGV4KTsKKworICAgICAgICBpZiAoIXdyYXBwZXIuaXNOdWxsKCkp
CisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgICAgICAvLyAxLiBJZiBlIGlzIGEg
Y2xvc3VyZSBjOgorICAgICAgICAvLyAgIGkuIElmIHRoZXJlIGlzIGFuIEV4cG9ydGVkIEZ1bmN0
aW9uIEV4b3RpYyBPYmplY3QgZnVuYyBpbiBmdW5jcyB3aG9zZSBmdW5jLltbQ2xvc3VyZV1dIGVx
dWFscyBjLCB0aGVuIHJldHVybiBmdW5jLgorICAgICAgICAvLyAgIGlpLiAoTm90ZTogQXQgbW9z
dCBvbmUgd3JhcHBlciBpcyBjcmVhdGVkIGZvciBhbnkgY2xvc3VyZSwgc28gZnVuYyBpcyB1bmlx
dWUsIGV2ZW4gaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9jY3VycmFuY2VzIGluIHRoZSBsaXN0LiBN
b3Jlb3ZlciwgaWYgdGhlIGl0ZW0gd2FzIGFuIGltcG9ydCB0aGF0IGlzIGFscmVhZHkgYW4gRXhw
b3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCwgdGhlbiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24g
b2JqZWN0IHdpbGwgYmUgZm91bmQuIEZvciBpbXBvcnRzIHRoYXQgYXJlIHJlZ3VsYXIgSlMgZnVu
Y3Rpb25zLCBhIG5ldyB3cmFwcGVyIHdpbGwgYmUgY3JlYXRlZC4pCisgICAgICAgIGlmIChpbmRl
eCA8IGZ1bmN0aW9uSW1wb3J0Q291bnQpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlv
bkltcG9ydCA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248V3JpdGVCYXJy
aWVyPEpTT2JqZWN0Pj4oaW5kZXgpLT5nZXQoKTsKKyAgICAgICAgICAgIGlmIChpc1dlYkFzc2Vt
Ymx5SG9zdEZ1bmN0aW9uKHZtLCBmdW5jdGlvbkltcG9ydCkpCisgICAgICAgICAgICAgICAgd3Jh
cHBlciA9IGZ1bmN0aW9uSW1wb3J0OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVy
ZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7CisgICAgICAgICAgICAgICAgd3Jh
cHBlciA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblN0cnVjdHVyZSgpLCBm
dW5jdGlvbkltcG9ydCwgaW5kZXgsIG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vICAgaWlpLiBP
dGhlcndpc2U6CisgICAgICAgICAgICAvLyAgICAgYS4gTGV0IGZ1bmMgYmUgYW4gRXhwb3J0ZWQg
RnVuY3Rpb24gRXhvdGljIE9iamVjdCBjcmVhdGVkIGZyb20gYy4KKyAgICAgICAgICAgIC8vICAg
ICBiLiBBcHBlbmQgZnVuYyB0byBmdW5jcy4KKyAgICAgICAgICAgIC8vICAgICBjLiBSZXR1cm4g
ZnVuYy4KKyAgICAgICAgICAgIFdhc206OkNhbGxlZSYgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVl
ID0gY29kZUJsb2NrLT5lbWJlZGRlckVudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNw
YWNlKGluZGV4KTsKKyAgICAgICAgICAgIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rp
b246OkxvYWRMb2NhdGlvbiBlbnRyeXBvaW50TG9hZExvY2F0aW9uID0gY29kZUJsb2NrLT5lbnRy
eXBvaW50TG9hZExvY2F0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7CisgICAgICAg
ICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZS0+c2lnbmF0
dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKKyAgICAgICAgICAgIGNvbnN0
IFdhc206OlNpZ25hdHVyZSYgc2lnbmF0dXJlID0gV2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246
OmdldChzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBm
dW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RnVuY3Rpb25TdHJ1Y3R1cmUoKSwgc2lnbmF0dXJlLmFy
Z3VtZW50Q291bnQoKSwgZmllbGQsIG1faW5zdGFuY2UuZ2V0KCksIGVtYmVkZGVyRW50cnlwb2lu
dENhbGxlZSwgZW50cnlwb2ludExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOworICAgICAg
ICAgICAgd3JhcHBlciA9IGZ1bmN0aW9uOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHdy
YXBwZXIuaXNGdW5jdGlvbih2bSkpOworICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNl
dEZ1bmN0aW9uV3JhcHBlcihpbmRleCwgd3JhcHBlcik7CisKKyAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IG1vZHVsZUluZm9ybWF0aW9uLnJl
ZmVyZW5jZWRGdW5jdGlvbnMoKSkKKyAgICAgICAgbWFrZUZ1bmN0aW9uV3JhcHBlcigiUmVmZXJl
bmNlZCBmdW5jdGlvbiIsIGluZGV4KTsKKwogICAgIC8vIEdsb2JhbHMKICAgICB7CiAgICAgICAg
IGZvciAoc2l6ZV90IGdsb2JhbEluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uZmlyc3RJbnRlcm5h
bEdsb2JhbDsgZ2xvYmFsSW5kZXggPCBtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzLnNpemUoKTsg
KytnbG9iYWxJbmRleCkgewpAQCAtMzI3LDEzICszNzMsMTYgQEAgdm9pZCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBv
cnRPYmoKICAgICAgICAgICAgIGlmIChnbG9iYWwuaW5pdGlhbGl6YXRpb25UeXBlID09IFdhc206
Okdsb2JhbDo6RnJvbUdsb2JhbEltcG9ydCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChnbG9i
YWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlciA8IG1vZHVsZUluZm9ybWF0aW9uLmZpcnN0SW50
ZXJuYWxHbG9iYWwpOwogICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0
R2xvYmFsKGdsb2JhbEluZGV4LCBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJNjRHbG9iYWwo
Z2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIpKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZ2xvYmFsLmluaXRpYWxpemF0aW9uVHlwZSA9PSBXYXNtOjpHbG9iYWw6OkZyb21SZWZGdW5j
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVt
YmVyIDwgbW9kdWxlSW5mb3JtYXRpb24uZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQobWFrZUZ1bmN0aW9uV3JhcHBlcigiR2xvYmFsIGluaXQgZXhwciIs
IGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKS5pc0Z1bmN0aW9uKHZtKSk7CisgICAg
ICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoZ2xvYmFsSW5kZXgs
IEpTVmFsdWU6OmVuY29kZShtYWtlRnVuY3Rpb25XcmFwcGVyKCJHbG9iYWwgaW5pdCBleHByIiwg
Z2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIpKSk7CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChnbG9iYWxJ
bmRleCwgZ2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgU3ltYm9sVGFibGUqIGV4cG9ydFN5bWJvbFRhYmxlID0gbW9kdWxlLT5leHBvcnRT
eW1ib2xUYWJsZSgpOwotICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW1wb3J0Q291bnQgPSBjb2RlQmxv
Y2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKIAogICAgIC8vIExldCBleHBvcnRzIGJlIGEgbGlz
dCBvZiAoc3RyaW5nLCBKUyB2YWx1ZSkgcGFpcnMgdGhhdCBpcyBtYXBwZWQgZnJvbSBlYWNoIGV4
dGVybmFsIHZhbHVlIGUgaW4gaW5zdGFuY2UuZXhwb3J0cyBhcyBmb2xsb3dzOgogICAgIEpTTW9k
dWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIG51bGxwdHIsIGV4cG9ydFN5bWJvbFRhYmxlLCBKU1Zh
bHVlKCksIHRoaXMpOwpAQCAtMzQxLDMwICszOTAsOSBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9i
agogICAgICAgICBKU1ZhbHVlIGV4cG9ydGVkVmFsdWU7CiAgICAgICAgIHN3aXRjaCAoZXhwLmtp
bmQpIHsKICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uOiB7Ci0gICAg
ICAgICAgICAvLyAxLiBJZiBlIGlzIGEgY2xvc3VyZSBjOgotICAgICAgICAgICAgLy8gICBpLiBJ
ZiB0aGVyZSBpcyBhbiBFeHBvcnRlZCBGdW5jdGlvbiBFeG90aWMgT2JqZWN0IGZ1bmMgaW4gZnVu
Y3Mgd2hvc2UgZnVuYy5bW0Nsb3N1cmVdXSBlcXVhbHMgYywgdGhlbiByZXR1cm4gZnVuYy4KLSAg
ICAgICAgICAgIC8vICAgaWkuIChOb3RlOiBBdCBtb3N0IG9uZSB3cmFwcGVyIGlzIGNyZWF0ZWQg
Zm9yIGFueSBjbG9zdXJlLCBzbyBmdW5jIGlzIHVuaXF1ZSwgZXZlbiBpZiB0aGVyZSBhcmUgbXVs
dGlwbGUgb2NjdXJyYW5jZXMgaW4gdGhlIGxpc3QuIE1vcmVvdmVyLCBpZiB0aGUgaXRlbSB3YXMg
YW4gaW1wb3J0IHRoYXQgaXMgYWxyZWFkeSBhbiBFeHBvcnRlZCBGdW5jdGlvbiBFeG90aWMgT2Jq
ZWN0LCB0aGVuIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3Qgd2lsbCBiZSBmb3VuZC4gRm9y
IGltcG9ydHMgdGhhdCBhcmUgcmVndWxhciBKUyBmdW5jdGlvbnMsIGEgbmV3IHdyYXBwZXIgd2ls
bCBiZSBjcmVhdGVkLikKLSAgICAgICAgICAgIGlmIChleHAua2luZEluZGV4IDwgZnVuY3Rpb25J
bXBvcnRDb3VudCkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBl
eHAua2luZEluZGV4OwotICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlvbkltcG9ydCA9
IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248V3JpdGVCYXJyaWVyPEpTT2Jq
ZWN0Pj4oZnVuY3Rpb25JbmRleCktPmdldCgpOwotICAgICAgICAgICAgICAgIGlmIChpc1dlYkFz
c2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBmdW5jdGlvbkltcG9ydCkpCi0gICAgICAgICAgICAgICAg
ICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbkltcG9ydDsKLSAgICAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5k
ZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlv
bkluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IFdlYkFzc2VtYmx5
V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblN0cnVjdHVyZSgpLCBmdW5jdGlvbkltcG9ydCwgZnVu
Y3Rpb25JbmRleCwgbV9pbnN0YW5jZS5nZXQoKSwgc2lnbmF0dXJlSW5kZXgpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gICBpaWku
IE90aGVyd2lzZToKLSAgICAgICAgICAgICAgICAvLyAgICAgYS4gTGV0IGZ1bmMgYmUgYW4gRXhw
b3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCBjcmVhdGVkIGZyb20gYy4KLSAgICAgICAgICAg
ICAgICAvLyAgICAgYi4gQXBwZW5kIGZ1bmMgdG8gZnVuY3MuCi0gICAgICAgICAgICAgICAgLy8g
ICAgIGMuIFJldHVybiBmdW5jLgotICAgICAgICAgICAgICAgIFdhc206OkNhbGxlZSYgZW1iZWRk
ZXJFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5lbWJlZGRlckVudHJ5cG9pbnRDYWxsZWVG
cm9tRnVuY3Rpb25JbmRleFNwYWNlKGV4cC5raW5kSW5kZXgpOwotICAgICAgICAgICAgICAgIFdh
c206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRMb2NhdGlvbiBlbnRyeXBvaW50
TG9hZExvY2F0aW9uID0gY29kZUJsb2NrLT5lbnRyeXBvaW50TG9hZExvY2F0aW9uRnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKLSAgICAgICAgICAgICAgICBXYXNtOjpTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZS0+c2lnbmF0dXJlSW5kZXhGcm9tRnVu
Y3Rpb25JbmRleFNwYWNlKGV4cC5raW5kSW5kZXgpOwotICAgICAgICAgICAgICAgIGNvbnN0IFdh
c206OlNpZ25hdHVyZSYgc2lnbmF0dXJlID0gV2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChzaWduYXR1cmVJbmRleCk7Ci0gICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiog
ZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCksIHNpZ25hdHVyZS5h
cmd1bWVudENvdW50KCksIFN0cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxkKSwgbV9pbnN0YW5jZS5n
ZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0aW9uLCBz
aWduYXR1cmVJbmRleCk7Ci0gICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IGZ1bmN0aW9u
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1ha2VGdW5jdGlv
bldyYXBwZXIoU3RyaW5nOjpmcm9tVVRGOChleHAuZmllbGQpLCBleHAua2luZEluZGV4KTsKKyAg
ICAgICAgICAgIEFTU0VSVChleHBvcnRlZFZhbHVlLmlzRnVuY3Rpb24odm0pKTsKKyAgICAgICAg
ICAgIEFTU0VSVChtYWtlRnVuY3Rpb25XcmFwcGVyKFN0cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxk
KSwgZXhwLmtpbmRJbmRleCkgPT0gZXhwb3J0ZWRWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6VGFibGU6IHsKQEAg
LTM4OCw4ICs0MTYsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICAgICAgLy8g
UmV0dXJuIFRvSlNWYWx1ZSh2KS4KICAgICAgICAgICAgIHN3aXRjaCAoZ2xvYmFsLnR5cGUpIHsK
ICAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgotICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9uY2UgdGhleSBhcmUgc3VwcG9ydGVkIGhl
cmUuCi0gICAgICAgICAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgxNTc+CisgICAgICAgICAgICBjYXNlIFdhc206OkFueWZ1bmM6CiAgICAgICAg
ICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2luc3RhbmNlLT5pbnN0
YW5jZSgpLmxvYWRJNjRHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KaW5kZXggMzBiYmM3NDcyMzc4
MzkyMmVkYmJmNjM0OTkzNDkwZjQ4YjdiN2UwMi4uNzUyODVkNmZiNzAwOTAxY2E1Mjc1ZWEzZmQ3
NWJiMThkMzBlNDEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2Fz
bS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpAQCAtMTEs
MTMgKzExLDEzIEBACiAgICAgICAgICJpNjQiOiAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogIC0yLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImYzMiI6ICAgICB7
ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMsICJiM3R5cGUiOiAiQjM6OkZsb2F0IiB9
LAogICAgICAgICAiZjY0IjogICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNCwg
ImIzdHlwZSI6ICJCMzo6RG91YmxlIiB9LAotICAgICAgICAiYW55ZnVuYyI6IHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6IC0xNiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKKyAgICAgICAg
ImFueWZ1bmMiOiB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtMTYsICJiM3R5cGUiOiAi
QjM6OkludDY0IiB9LAogICAgICAgICAiYW55cmVmIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6IC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJmdW5jIjogICAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTMyLCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9
LAogICAgICAgICAidm9pZCI6ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC02NCwg
ImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQogICAgIH0sCi0gICAgInZhbHVlX3R5cGUiOiBbImkzMiIs
ICJpNjQiLCAiZjMyIiwgImY2NCIsICJhbnlyZWYiXSwKLSAgICAiYmxvY2tfdHlwZSI6IFsiaTMy
IiwgImk2NCIsICJmMzIiLCAiZjY0IiwgInZvaWQiLCAiYW55cmVmIl0sCisgICAgInZhbHVlX3R5
cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJhbnlyZWYiLCAiYW55ZnVuYyJdLAor
ICAgICJibG9ja190eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAidm9pZCIsICJh
bnlyZWYiLCAiYW55ZnVuYyJdLAogICAgICJlbGVtX3R5cGUiOiBbImFueWZ1bmMiLCJhbnlyZWYi
XSwKICAgICAiZXh0ZXJuYWxfa2luZCI6IHsKICAgICAgICAgIkZ1bmN0aW9uIjogeyAidHlwZSI6
ICJ1aW50OCIsICJ2YWx1ZSI6IDAgfSwKQEAgLTU5LDggKzU5LDkgQEAKICAgICAgICAgImk2NC5j
b25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDY2
LCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjog
InZhcmludDY0In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGk2NCIgfSwK
ICAgICAgICAgImY2NC5jb25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwg
ICAgInZhbHVlIjogIDY4LCAicmV0dXJuIjogWyJmNjQiXSwgICAgICAicGFyYW1ldGVyIjogW10s
ICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAg
ICAgICAgICJ0eXBlIjogImRvdWJsZSJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVlIGludGVycHJl
dGVkIGFzIGY2NCIgfSwKICAgICAgICAgImYzMi5jb25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDY3LCAicmV0dXJuIjogWyJmMzIiXSwgICAgICAi
cGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogImZsb2F0In1dLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50
IHZhbHVlIGludGVycHJldGVkIGFzIGYzMiIgfSwKLSAgICAgICAgInJlZi5udWxsIjogICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjA4LCAicmV0dXJuIjog
WyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJhIGNvbnN0YW50IG51bGwgcmVmZXJlbmNlIiB9LAorICAgICAgICAicmVmLm51bGwiOiAg
ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAyMDgsICJyZXR1
cm4iOiBbImFueWZ1bmMiXSwgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogImEgY29uc3RhbnQgbnVsbCByZWZlcmVuY2UiIH0sCiAgICAgICAgICJyZWYuaXNf
bnVsbCI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIwOSwg
InJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYW55cmVmIl0sICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiZGV0ZXJtaW5lIGlmIGEgcmVmZXJlbmNlIGlzIG51bGwiIH0sCisgICAg
ICAgICJyZWYuZnVuYyI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2
YWx1ZSI6IDIxMCwgInJldHVybiI6IFsiYW55ZnVuYyJdLCAgInBhcmFtZXRlciI6IFtdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgi
LCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBmdW5j
dGlvbiBhdCB0aGUgZ2l2ZW4gaW5kZXgiIH0sCiAgICAgICAgICJnZXRfbG9jYWwiOiAgICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzMiwgInJldHVybiI6IFsi
YW55Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAicmVhZCBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInNldF9s
b2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDMz
LCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwK
ICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwg
ICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjogWyJh
bnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRl
eCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9y
IHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9LApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmZmMxY2FkNWJjNDIzMzMy
MzUzOWNjNGM4NjVhYTE1MThhODk5ODNmLi45NGY1NmFkY2NjNjY4NmVlNTVjMDY2NThlNDliNDJm
MTJhN2U0YzliIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA2LTEwICBKdXN0aW4gTWljaGF1ZCAgPGp1
c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQg
c3VwcG9ydCBmb3IgRnVuY3JlZiBpbiBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdHlwZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE1NworCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiB3YXNtL0J1aWxkZXIu
anM6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5CdWlsZGVyLnByb3RvdHlwZS5fcmVnaXN0ZXJT
ZWN0aW9uQnVpbGRlcnMuY29uc3Quc2VjdGlvbi5pbi5XQVNNLmRlc2NyaXB0aW9uLnNlY3Rpb24u
c3dpdGNoLnNlY3Rpb24uY2FzZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS50aGlzLnNlY3Rpb24pOgor
ICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9hbnlyZWZfZ2xvYmFscy5qczoKKyAgICAgICAgKiB3
YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanM6IEFkZGVkLgorICAgICAgICAoZnVsbEdDLmdjLm1h
a2VFeHBvcnRlZEZ1bmN0aW9uKToKKyAgICAgICAgKG1ha2VFeHBvcnRlZElkZW50KToKKyAgICAg
ICAgKG1ha2VBbnlmdW5jSWRlbnQpOgorICAgICAgICAoZnVuKToKKyAgICAgICAgKGFzc2VydC5l
cS5pbnN0YW5jZS5leHBvcnRzLmZpeC5mdW4pOgorICAgICAgICAoYXNzZXJ0LmVxLmluc3RhbmNl
LmV4cG9ydHMuZml4KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLkVuZC5FbmQuRnVu
Y3Rpb24uRW5kLkNvZGUuRW5kLldlYkFzc2VtYmx5LmltcC5yZWYpOgorICAgICAgICAoc3RyaW5n
X2FwcGVhcmVkX2hlcmUuRW5kLkVuZC5GdW5jdGlvbi5FbmQuQ29kZS5FbmQuV2ViQXNzZW1ibHkp
OgorICAgICAgICAoR2V0TG9jYWwuMC5JMzJDb25zdC4wLlRhYmxlU2V0LkVuZC5FbmQuV2ViQXNz
ZW1ibHkuZnVuKToKKyAgICAgICAgKEdldExvY2FsLjAuSTMyQ29uc3QuMC5UYWJsZVNldC5FbmQu
RW5kLldlYkFzc2VtYmx5LmFzc2VydC50aHJvd3MpOgorICAgICAgICAoR2V0TG9jYWwuMC5JMzJD
b25zdC4wLlRhYmxlU2V0LkVuZC5FbmQuV2ViQXNzZW1ibHkpOgorICAgICAgICAoYXNzZXJ0LnRo
cm93cyk6CisgICAgICAgIChhc3NlcnQudGhyb3dzLmRvVGVzdCk6CisgICAgICAgIChsZXQuaW1w
b3J0ZWRGdW4ub2YpOgorICAgICAgICAobWFrZUFueWZ1bmNJZGVudC5mdW4pOgorICAgICAgICAq
IHdhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzOgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6
CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMTktMDYtMTYgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBHcm93biByZWdpb24gb2YgV2Fz
bVRhYmxlIHNob3VsZCBiZSBpbml0aWFsaXplZCB3aXRoIG51bGwKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS9CdWlsZGVyLmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKaW5kZXggN2U3YzFi
N2RjMjIzYzg4M2UxMGU2ZjM3M2JjZGQzYzZjMjlkNTExYi4uNjVmMWY0NzdhOThiODYyMGZjY2Qy
YWE4ZjhjMTEwOWUwYWY2Nzg2NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMK
KysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKQEAgLTUzNiw2ICs1MzYsMTAgQEAgZXhwb3J0
IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5k
YXRhLnB1c2goeyB0eXBlLCBvcDogImdldF9nbG9iYWwiLCBtdXRhYmlsaXR5OiBfbm9ybWFsaXpl
TXV0YWJpbGl0eShtdXRhYmlsaXR5KSwgaW5pdFZhbHVlIH0pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKGdsb2JhbEJ1aWxkZXIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZkZ1
bmM6ICh0eXBlLCBpbml0VmFsdWUsIG11dGFiaWxpdHkpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLmRhdGEucHVzaCh7IHR5cGUsIG9wOiAicmVmLmZ1bmMiLCBtdXRhYmlsaXR5
OiBfbm9ybWFsaXplTXV0YWJpbGl0eShtdXRhYmlsaXR5KSwgaW5pdFZhbHVlIH0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKGdsb2Jh
bEJ1aWxkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZk51bGw6ICh0eXBlLCBtdXRhYmlsaXR5KSA9PiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy5kYXRhLnB1c2goeyB0eXBlLCBvcDogInJlZi5udWxsIiwgbXV0YWJpbGl0
eTogX25vcm1hbGl6ZU11dGFiaWxpdHkobXV0YWJpbGl0eSkgfSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IoZ2xvYmFsQnVpbGRlcik7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfZ2xvYmFscy5qcyBi
L0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl9nbG9iYWxzLmpzCmluZGV4IDE4NDQ1N2Ez
M2ZlY2IwYjA4YWRlMTNkZWNmY2YxOWU3ZDMzMDg5YWUuLjJkM2NhN2JjNjA1Zjc5NzRjZmVmMjU4
MTRlODlhZTU4NGIwNTMxMzAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Fu
eXJlZl9nbG9iYWxzLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl9nbG9i
YWxzLmpzCkBAIC01Niw3ICs1Niw5IEBAIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCks
IG51bGwpCiAKIGNvbnN0IG9iaiA9IHsgdGVzdDogImhpIiB9CiAKLSQxLmV4cG9ydHMuc2V0X2ds
b2Iob2JqKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgb2JqKTsKK2Fzc2VydC50
aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5leHBnbG9iMiA9IG51bGwsIFR5cGVFcnJvciwgIkF0dGVt
cHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIikKKworJDEuZXhwb3J0cy5zZXRf
Z2xvYihvYmopOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBvYmopOyBhc3NlcnQu
ZXEoJDEuZXhwb3J0cy5leHBnbG9iMiwgImhpIikKICQxLmV4cG9ydHMuc2V0X2dsb2IoNSk7IGFz
c2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIDUpCiAkMS5leHBvcnRzLnNldF9nbG9iKG51
bGwpOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpLCBudWxsKQogJDEuZXhwb3J0cy5z
ZXRfZ2xvYigiaGkiKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgImhpIikKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzIGIvSlNUZXN0cy93
YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVlMDZlNDY1ODM4NzI4M2M1
ODMzNWI5YjY2Zjc3ODUzZjliYjEwMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9y
ZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCkBAIC0wLDAgKzEsNDQ3IEBACitpbXBvcnQgKiBhcyBhc3Nl
cnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIu
anMnOworCitmdWxsR0MoKQorZ2MoKQorCitmdW5jdGlvbiBtYWtlRXhwb3J0ZWRGdW5jdGlvbihp
KSB7CisgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBl
KCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5FeHBvcnQo
KQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImgiKQorICAgICAgICAgIC5FbmQoKQorICAgICAg
ICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBbXSwgcmV0
OiAiaTMyIiB9LCBbXSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KGkpCisgICAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAuRW5kKCk7CisKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFz
c2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZShiaW4pOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1v
ZHVsZSk7CisKKyAgICByZXR1cm4gaW5zdGFuY2UuZXhwb3J0cy5oCit9CisKK2Z1bmN0aW9uIG1h
a2VFeHBvcnRlZElkZW50KCkgeworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkK
KyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAg
ICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJoIikKKyAgICAgICAg
ICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImgiLCB7
IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAgICAgICAgICAgLkdldExv
Y2FsKDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCk7CisKKyAgICBjb25z
dCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0g
bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7CisKKyAgICByZXR1cm4gaW5zdGFuY2UuZXhwb3J0
cy5oCit9CisKK2Z1bmN0aW9uIG1ha2VBbnlmdW5jSWRlbnQoKSB7CisgICAgY29uc3QgYnVpbGRl
ciA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAu
RnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgICAuRnVu
Y3Rpb24oImgiKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAg
ICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAiYW55ZnVuYyIg
fSwgW10pCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkVuZCgpOworCisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgp
LmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsK
KyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUpOwor
CisgICAgcmV0dXJuIGluc3RhbmNlLmV4cG9ydHMuaAorfQorCit7CisgICAgY29uc3QgbXlmdW4g
PSBtYWtlRXhwb3J0ZWRGdW5jdGlvbigxMzM3KTsKKyAgICBmdW5jdGlvbiBmdW4oKSB7CisgICAg
ICAgIHJldHVybiA0MTsKKyAgICB9CisKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVy
KCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiaCIpCisgICAg
ICAgICAgICAgIC5GdW5jdGlvbigiaSIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X2gi
KQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImZpeCIpCisgICAgICAgICAgICAgIC5GdW5jdGlv
bigiZ2V0X25vdF9leHBvcnRlZCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigibG9jYWxfcmVh
ZCIpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1
bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJhbnlyZWYiIH0sIFsiYW55
cmVmIl0pCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuU2V0TG9j
YWwoMSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDEpCisgICAgICAgICAgICAuRW5kKCkKKwor
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJpIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJh
bnlmdW5jIiB9LCBbImFueWZ1bmMiXSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgICAgICAgIC5TZXRMb2NhbCgxKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAg
ICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF9oIiwgeyBwYXJhbXM6
IFtdLCByZXQ6ICJhbnlmdW5jIiB9LCBbImFueWZ1bmMiXSkKKyAgICAgICAgICAgICAgLkkzMkNv
bnN0KDApCisgICAgICAgICAgICAgIC5SZWZGdW5jKDApCisgICAgICAgICAgICAgIC5TZXRMb2Nh
bCgwKQorICAgICAgICAgICAgICAuSWYoImFueWZ1bmMiKQorICAgICAgICAgICAgICAuQmxvY2so
ImFueWZ1bmMiLCAoYikgPT4KKyAgICAgICAgICAgICAgICBiLkdldExvY2FsKDApCisgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgLkVsc2UoKQorICAgICAgICAgICAgICAuQmxvY2soImFu
eWZ1bmMiLCAoYikgPT4KKyAgICAgICAgICAgICAgICBiLkdldExvY2FsKDApCisgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJmaXgiLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMiIH0sIFtd
KQorICAgICAgICAgICAgICAuUmVmRnVuYygzKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigiZ2V0X25vdF9leHBvcnRlZCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
YW55ZnVuYyIgfSwgW10pCisgICAgICAgICAgICAgIC5SZWZGdW5jKDUpCisgICAgICAgICAgICAu
RW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXRfNDIiLCB7IHBhcmFtczogW10sIHJl
dDogImkzMiIgfSwgW10pCisgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKKyAgICAgICAgICAg
IC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImxvY2FsX3JlYWQiLCB7IHBhcmFtczog
W10sIHJldDogImkzMiIgfSwgWyJhbnlmdW5jIl0pCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgw
KQorICAgICAgICAgICAgICAuUmVmSXNOdWxsKCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAg
ICAgIC5FbmQoKTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQo
KTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAg
Y29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKTsKKyAgICBm
dWxsR0MoKTsKKworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmxvY2FsX3JlYWQoKSwg
MSkKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5oKG51bGwpLCBudWxsKQorCisgICAg
YXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzLmgoZnVuKSwgRXJyb3IsICJBbnlm
dW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYygu
Li5hcmdzKScpIikKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5oKG15ZnVuKSwgbXlm
dW4pCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzLmgoNSksIEVycm9y
LCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcg
J2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBv
cnRzLmgodW5kZWZpbmVkKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2Fz
bSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKworICAgIGFzc2VydC5l
cShpbnN0YW5jZS5leHBvcnRzLmkobnVsbCksIG51bGwpCisgICAgYXNzZXJ0LmVxKGluc3RhbmNl
LmV4cG9ydHMuaShteWZ1biksIG15ZnVuKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gaW5zdGFu
Y2UuZXhwb3J0cy5pKGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdh
c20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzLmkoNSksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJl
IGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIp
CisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGluc3RhbmNlLmV4cG9ydHMuZ2V0X2goKShmdW4p
LCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChldmFs
dWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRz
LmdldF9oKCkobnVsbCksIG51bGwpCisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0
X2goKShteWZ1biksIG15ZnVuKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gaW5zdGFuY2UuZXhw
b3J0cy5nZXRfaCgpKDUpLCBFcnJvciwgIkFueWZ1bmMgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNt
IGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorCisgICAgYXNzZXJ0LmVx
KGluc3RhbmNlLmV4cG9ydHMuZ2V0X25vdF9leHBvcnRlZCgpKCksIDQyKQorCisgICAgYXNzZXJ0
LmVxKGluc3RhbmNlLmV4cG9ydHMuZml4KCkoKSwgaW5zdGFuY2UuZXhwb3J0cy5maXgoKSk7Cisg
ICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZml4KCksIGluc3RhbmNlLmV4cG9ydHMuZml4
KTsKK30KKworLy8gR2xvYmFscworCit7CisgICAgY29uc3QgbXlmdW4gPSBtYWtlRXhwb3J0ZWRG
dW5jdGlvbig0Mik7CisgICAgZnVuY3Rpb24gZnVuKCkgeworICAgICAgICByZXR1cm4gNDE7Cisg
ICAgfQorCisgICAgY29uc3QgJDEgPSAoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAuVHlwZSgpLkVuZCgp
CisgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgLkdsb2JhbCgpLkFueWZ1bmMoImltcCIsICJy
ZWYiLCAiaW1tdXRhYmxlIikuRW5kKCkKKyAgICAgIC5FbmQoKQorICAgICAgLkZ1bmN0aW9uKCku
RW5kKCkKKyAgICAgIC5HbG9iYWwoKQorICAgICAgICAgIC5SZWZOdWxsKCJhbnlmdW5jIiwgIm11
dGFibGUiKQorICAgICAgICAgIC5SZWZOdWxsKCJhbnlmdW5jIiwgImltbXV0YWJsZSIpCisgICAg
ICAgICAgLkdldEdsb2JhbCgiYW55ZnVuYyIsIDAsICJtdXRhYmxlIikKKyAgICAgICAgICAuUmVm
RnVuYygiYW55ZnVuYyIsIDIsICJpbW11dGFibGUiKQorICAgICAgLkVuZCgpCisgICAgICAuRXhw
b3J0KCkKKyAgICAgICAgICAuRnVuY3Rpb24oInNldF9nbG9iIikKKyAgICAgICAgICAuRnVuY3Rp
b24oImdldF9nbG9iIikKKyAgICAgICAgICAuRnVuY3Rpb24oImdsb2JfaXNfbnVsbCIpCisgICAg
ICAgICAgLkZ1bmN0aW9uKCJzZXRfZ2xvYl9udWxsIikKKyAgICAgICAgICAuRnVuY3Rpb24oImdl
dF9pbXBvcnQiKQorICAgICAgICAgIC5HbG9iYWwoImV4cGdsb2IiLCAyKQorICAgICAgICAgIC5H
bG9iYWwoImV4cGdsb2IyIiwgMCkKKyAgICAgICAgICAuR2xvYmFsKCJleHBfZ2xvYl9pc19udWxs
IiwgNCkKKyAgICAgIC5FbmQoKQorICAgICAgLkNvZGUoKQorICAgICAgICAuRnVuY3Rpb24oInNl
dF9nbG9iIiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAg
IC5HZXRMb2NhbCgwKQorICAgICAgICAgIC5TZXRHbG9iYWwoMSkKKyAgICAgICAgLkVuZCgpCisK
KyAgICAgICAgLkZ1bmN0aW9uKCJnZXRfZ2xvYiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVu
YyIgfSkKKyAgICAgICAgICAgIC5HZXRHbG9iYWwoMSkKKyAgICAgICAgLkVuZCgpCisKKyAgICAg
ICAgLkZ1bmN0aW9uKCJnbG9iX2lzX251bGwiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkK
KyAgICAgICAgICAgIC5DYWxsKDEpCisgICAgICAgICAgICAuUmVmSXNOdWxsKCkKKyAgICAgICAg
LkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJzZXRfZ2xvYl9udWxsIiwgeyBwYXJhbXM6IFtd
LCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgLlJlZk51bGwoKQorICAgICAgICAgICAgLkNh
bGwoMCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJnZXRfaW1wb3J0Iiwg
eyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgICAgICAgLkdldEdsb2JhbCgw
KQorICAgICAgICAuRW5kKCkKKyAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwgeyBp
bXA6IHsgcmVmOiBtYWtlRXhwb3J0ZWRGdW5jdGlvbigxMzM3KSB9IH0pKSgpOworCisgICAgZnVs
bEdDKCk7CisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfaW1wb3J0KCkoKSwgMTMzNykK
KyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5leHBnbG9iLCBudWxsKQorICAgIGFzc2VydC5lcSgk
MS5leHBvcnRzLmV4cGdsb2IyKCksIDEzMzcpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZXhw
X2dsb2JfaXNfbnVsbCwgJDEuZXhwb3J0cy5nbG9iX2lzX251bGwpOworICAgIGFzc2VydC5lcSgk
MS5leHBvcnRzLmdldF9nbG9iKCksIG51bGwpCisKKyAgICAkMS5leHBvcnRzLnNldF9nbG9iKG15
ZnVuKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgbXlmdW4pOyBhc3NlcnQuZXEo
JDEuZXhwb3J0cy5nZXRfZ2xvYigpKCksIDQyKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZXhwZ2xv
YjIoKSwgMTMzNykKKyAgICAkMS5leHBvcnRzLnNldF9nbG9iKG51bGwpOyBhc3NlcnQuZXEoJDEu
ZXhwb3J0cy5nZXRfZ2xvYigpLCBudWxsKQorICAgICQxLmV4cG9ydHMuc2V0X2dsb2IobXlmdW4p
OyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xvYigpKCksIDQyKTsKKworICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5zZXRfZ2xvYihmdW4pLCBFcnJvciwgIkFueWZ1bmMgbXVz
dCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3Mp
JykiKQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2xvYl9pc19udWxsKCksIDApCisgICAg
JDEuZXhwb3J0cy5zZXRfZ2xvYl9udWxsKCk7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF9nbG9i
KCksIG51bGwpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2xvYl9pc19udWxsKCksIDEpCit9
CisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgIC5UeXBlKCkuRW5kKCkKKyAgLkltcG9y
dCgpCisgICAgICAgLkdsb2JhbCgpLkFueWZ1bmMoImltcCIsICJyZWYiLCAiaW1tdXRhYmxlIiku
RW5kKCkKKyAgLkVuZCgpCisgIC5GdW5jdGlvbigpLkVuZCgpCisgIC5Db2RlKCkuRW5kKCkuV2Vi
QXNzZW1ibHkoKS5nZXQoKSksIHsgaW1wOiB7IHJlZjogZnVuY3Rpb24oKSB7IHJldHVybiAiaGki
IH0gfSB9KSwgRXJyb3IsICJpbXBvcnRlZCBnbG9iYWwgaW1wOnJlZiBtdXN0IGJlIGEgd2FzbSBl
eHBvcnRlZCBmdW5jdGlvbiBvciBudWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UnKSIpOworCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
KG5ldyBCdWlsZGVyKCkpCisgIC5UeXBlKCkuRW5kKCkKKyAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAg
LkNvZGUoKQorICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAi
YW55cmVmIiB9KQorICAgICAgLkdldExvY2FsKDApCisgICAgLkVuZCgpCisgIC5FbmQoKS5XZWJB
c3NlbWJseSgpLmdldCgpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxp
ZGF0ZTogY29udHJvbCBmbG93IHJldHVybnMgd2l0aCB1bmV4cGVjdGVkIHR5cGUsIGluIGZ1bmN0
aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpOwor
Cithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVy
KCkpCisgIC5UeXBlKCkuRW5kKCkKKyAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgLlRhYmxlKCkKKyAg
ICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgIC5FbmQoKQorICAu
Q29kZSgpCisgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogInZvaWQi
IH0pCisgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgIC5JMzJDb25zdCgwKQorICAgICAgLlRhYmxl
U2V0KCkKKyAgICAuRW5kKCkKKyAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBFcnJvciwg
IldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgdmFsdWUgdG8g
dHlwZSBJMzIgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVh
dGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIik7CisKKy8vIFRhYmxlcworeworICAgIGNv
bnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
KG5ldyBCdWlsZGVyKCkpCisgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAuRnVuY3Rpb24oKS5F
bmQoKQorICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMSwgZWxl
bWVudDogImFueWZ1bmMifSkKKyAgICAgIC5FbmQoKQorICAgICAgLkdsb2JhbCgpCisgICAgICAg
ICAgLlJlZk51bGwoImFueWZ1bmMiLCAibXV0YWJsZSIpCisgICAgICAuRW5kKCkKKyAgICAgIC5F
eHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0X2dsb2IiKQorICAgICAgICAgIC5GdW5j
dGlvbigiZ2V0X2dsb2IiKQorICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF9nbG9iIikKKyAgICAg
ICAgICAuRnVuY3Rpb24oInJldF8yMCIpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAg
ICAgICAgLkZ1bmN0aW9uKCJzZXRfZ2xvYiIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAi
dm9pZCIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAuU2V0R2xvYmFsKDAp
CisgICAgICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigiZ2V0X2dsb2IiLCB7IHBhcmFt
czogW10sIHJldDogImFueWZ1bmMiIH0pCisgICAgICAgICAgICAuR2V0R2xvYmFsKDApCisgICAg
ICAgIC5FbmQoKQorCisgICAgICAgIC5GdW5jdGlvbigiY2FsbF9nbG9iIiwgeyBwYXJhbXM6IFsi
aTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAg
ICAgLkdldEdsb2JhbCgwKQorICAgICAgICAgICAgLlRhYmxlU2V0KCkKKworICAgICAgICAgICAg
LkdldExvY2FsKDApCisgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgIC5DYWxs
SW5kaXJlY3QoMiwwKQorICAgICAgICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oInJldF8y
MCIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAuSTMyQ29u
c3QoMjApCisgICAgICAgIC5FbmQoKQorICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkp
KTsKKworICAgIGNvbnN0IG15ZnVuID0gbWFrZUV4cG9ydGVkRnVuY3Rpb24oMTMzNyk7CisgICAg
ZnVuY3Rpb24gZnVuKGkpIHsKKyAgICAgICAgcmV0dXJuIDQxOworICAgIH0KKyAgICBjb25zdCBp
ZGVudCA9IG1ha2VFeHBvcnRlZElkZW50KCk7CisKKyAgICAkMS5leHBvcnRzLnNldF9nbG9iKCQx
LmV4cG9ydHMucmV0XzIwKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgJDEuZXhw
b3J0cy5yZXRfMjApOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxsX2dsb2IoNDIpLCAyMCkKKyAg
ICAkMS5leHBvcnRzLnNldF9nbG9iKG51bGwpOyBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfZ2xv
YigpLCBudWxsKTsgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfZ2xvYig0Miks
IEVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50cnkgKGV2YWx1YXRpbmcg
J2Z1bmMoLi4uYXJncyknKSIpCisgICAgJDEuZXhwb3J0cy5zZXRfZ2xvYihpZGVudCk7IGFzc2Vy
dC5lcSgkMS5leHBvcnRzLmdldF9nbG9iKCksIGlkZW50KTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMu
Y2FsbF9nbG9iKDQyKSwgNDIpCisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMu
c2V0X2dsb2IoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBm
dW5jdGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICAkMS5leHBvcnRzLnNl
dF9nbG9iKG15ZnVuKTsgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X2dsb2IoKSwgbXlmdW4pOyBh
c3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF9nbG9iKDQyKSwgRXJyb3IsICJjYWxs
X2luZGlyZWN0IHRvIGEgc2lnbmF0dXJlIHRoYXQgZG9lcyBub3QgbWF0Y2ggKGV2YWx1YXRpbmcg
J2Z1bmMoLi4uYXJncyknKSIpCisKKyAgICBmb3IgKGxldCBpPTA7IGk8MTAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5zZXRfZ2xvYihmdW5jdGlvbigp
IHt9KSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAo
ZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgfQorfQorCisvLyBUYWJsZSBzZXQv
Z2V0CisKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAuVGFibGUo
e2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAuRW5kKCkKKyAgICAgIC5F
eHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigic2V0IikKKyAgICAgICAgICAuRnVuY3Rpb24o
ImdldCIpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJz
ZXQiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgLkkz
MkNvbnN0KDApCisgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgLlRhYmxlU2V0KCkK
KyAgICAgICAgLkVuZCgpCisKKyAgICAgICAgLkZ1bmN0aW9uKCJnZXQiLCB7IHBhcmFtczogW10s
IHJldDogImFueWZ1bmMiIH0pCisgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAg
IC5UYWJsZUdldCgpCisgICAgICAgIC5FbmQoKQorICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCku
Z2V0KCkpKTsKKworICAgIGZ1bmN0aW9uIGRvU2V0KCkgeworICAgICAgICBjb25zdCBteWZ1biA9
IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDQ0NCk7CisgICAgICAgIGZvciAobGV0IGk9MDsgaTwxMDAw
OyArK2kpIHsKKyAgICAgICAgICAgICQxLmV4cG9ydHMuc2V0KG15ZnVuKTsKKyAgICAgICAgfQor
ICAgICAgICAkMS5leHBvcnRzLnNldChteWZ1bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldCgp
LCBteWZ1bik7IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldCgpKCksIDQ0NCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZG9UZXN0KGosaywgbCkgeworICAgICAgICBmdWxsR0MoKTsKKyAgICAgICAg
bGV0IGdhcmJhZ2UgPSB7IHZhbDogImhpIiwgdmFsMjogNSwgYXJyOiBbXSB9CisgICAgICAgIGZv
ciAobGV0IGk9MDsgaTwxMDA7ICsraSkgZ2FyYmFnZS5hcnIgKz0gKHsgZmllbGQ6IGkgKyBqICsg
ayArIGwgfSkKKyAgICAgICAgZnVsbEdDKCk7CisKKyAgICAgICAgZm9yIChsZXQgaT0wOyBpPDEw
MDsgKytpKSB7CisgICAgICAgICAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXQoKSgpLCA0NDQp
OworICAgICAgICAgICAgZnVsbEdDKCk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIGRvU2V0
KCkKKyAgICBkb1Rlc3QoMCwwLDApCit9CisKKy8vIFdhc20tPkpTIENhbGxzCisKK2ZvciAobGV0
IGltcG9ydGVkRnVuIG9mIFtmdW5jdGlvbihpKSB7IHJldHVybiBpOyB9LCBtYWtlQW55ZnVuY0lk
ZW50KCldKSB7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgIC5UeXBlKCkuRW5kKCkKKyAg
ICAgIC5JbXBvcnQoKQorICAgICAgICAgICAuRnVuY3Rpb24oImltcCIsICJoIiwgeyBwYXJhbXM6
IFsiYW55ZnVuYyJdLCByZXQ6ICJhbnlmdW5jIiB9KQorICAgICAgLkVuZCgpCisgICAgICAuRnVu
Y3Rpb24oKS5FbmQoKQorICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlh
bDogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgIC5FbmQoKQorICAgICAgLkV4cG9ydCgp
CisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MSIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0
MiIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MyIpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0
ZXN0NCIpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJ0
ZXN0MSIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAiYW55ZnVuYyIgfSkKKyAgICAgICAg
ICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAuQ2FsbCgwKQorICAgICAgICAuRW5kKCkKKworICAg
ICAgICAuRnVuY3Rpb24oInRlc3QyIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQor
ICAgICAgICAgIC5SZWZGdW5jKDEpCisgICAgICAgICAgLkNhbGwoMCkKKyAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0MyIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0
OiAiYW55ZnVuYyIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAuSTMyQ29u
c3QoMCkKKyAgICAgICAgICAuUmVmRnVuYygwKQorICAgICAgICAgIC5UYWJsZVNldCgpCisgICAg
ICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAwKQorICAgICAg
ICAuRW5kKCkKKworICAgICAgICAuRnVuY3Rpb24oInRlc3Q0IiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJhbnlmdW5jIiB9KQorICAgICAgICAgIC5SZWZGdW5jKDEpCisgICAgICAgICAgLkkzMkNvbnN0
KDApCisgICAgICAgICAgLlJlZkZ1bmMoMCkKKyAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAg
ICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwgMCkKKyAgICAgICAg
LkVuZCgpCisgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgaW1wOiB7IGg6IGlt
cG9ydGVkRnVuIH0gfSk7CisKKyAgICBjb25zdCBteWZ1biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9u
KDEzMzcpOworICAgIGZ1bmN0aW9uIGZ1bihpKSB7CisgICAgICAgIHJldHVybiA0MTsKKyAgICB9
CisKKyAgICBmb3IgKGxldCB0ZXN0IG9mIFskMS5leHBvcnRzLnRlc3QxLCAkMS5leHBvcnRzLnRl
c3QzXSkgeworICAgICAgICBhc3NlcnQuZXEodGVzdChteWZ1biksIG15ZnVuKQorICAgICAgICBh
c3NlcnQuZXEodGVzdChteWZ1bikoKSwgMTMzNykKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9
PiB0ZXN0KGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVu
Y3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisKKyAgICAgICAgZm9yIChsZXQg
aT0wOyBpPDEwMDA7ICsraSkgeworICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0
KGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24g
KGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
b3IgKGxldCB0ZXN0IG9mIFskMS5leHBvcnRzLnRlc3QyLCAkMS5leHBvcnRzLnRlc3Q0XSkgewor
ICAgICAgICBhc3NlcnQuZXEodGVzdCgpLCAkMS5leHBvcnRzLnRlc3QxKQorICAgICAgICBhc3Nl
cnQuZXEodGVzdCgpKG15ZnVuKSwgbXlmdW4pCisgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4g
dGVzdCgpKGZ1biksIEVycm9yLCAiQW55ZnVuYyBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVu
Y3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisKKyAgICAgICAgZm9yIChsZXQg
aT0wOyBpPDEwMDA7ICsraSkgeworICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0
KCkoZnVuKSwgRXJyb3IsICJBbnlmdW5jIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlv
biAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICAgICAgfQorICAgIH0KK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMgYi9KU1Rlc3Rz
L3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzCmluZGV4IGQzOGMyNjViZmZmNjEwYWQ0OTQ4
ODRmOWE3N2E2MzczYzg0ZTUyYTMuLjhmODE2MzY5YTc0ZTg5ZTQ5ZTY5MDlkZjQ0NTU1MGZkMGY2
NmMyMTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMK
KysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5qcwpAQCAtNjMsNyArNjMs
NyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICBjb25zdCBiaW4g
PSBidWlsZGVyLldlYkFzc2VtYmx5KCk7CiAgICAgYmluLnRyaW0oKTsKIAotICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpLCBXZWJBc3NlbWJs
eS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFi
bGUuc2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBBbnlyZWYsIGluIGZ1bmN0aW9u
IGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgp
KScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJp
bi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBk
b2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBBbnlyZWYgZXhwZWN0ZWQg
QW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsKIH0KIAogewpAQCAtODYsNyArODYsNyBAQCBpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICBjb25zdCBiaW4gPSBidWlsZGVy
LldlYkFzc2VtYmx5KCk7CiAgICAgYmluLnRyaW0oKTsKIAotICAgIGFzc2VydC50aHJvd3MoKCkg
PT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxl
RXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuZ2V0IGV4
cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBBbnlyZWYsIGluIGZ1bmN0aW9uIGF0IGluZGV4
IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKScpIik7Cisg
ICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSks
IFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZh
bGlkYXRlOiBjb250cm9sIGZsb3cgcmV0dXJucyB3aXRoIHVuZXhwZWN0ZWQgdHlwZSwgaW4gZnVu
Y3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4u
Z2V0KCkpJykiKTsKIH0KIAogewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBi
L0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggMzBiYmM3NDcyMzc4MzkyMmVkYmJmNjM0OTkz
NDkwZjQ4YjdiN2UwMi4uNjRjYTBiNWIyMDhkOTFiMmJmNzg2NTU3NTcxMjQ3M2Q1YjcyNTBhMyAx
MDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2Fz
bS5qc29uCkBAIC0xMSwxMyArMTEsMTMgQEAKICAgICAgICAgImk2NCI6ICAgICB7ICJ0eXBlIjog
InZhcmludDciLCAidmFsdWUiOiAgLTIsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAg
ICAiZjMyIjogICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMywgImIzdHlwZSI6
ICJCMzo6RmxvYXQiIH0sCiAgICAgICAgICJmNjQiOiAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3Iiwg
InZhbHVlIjogIC00LCAiYjN0eXBlIjogIkIzOjpEb3VibGUiIH0sCi0gICAgICAgICJhbnlmdW5j
IjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTE2LCAiYjN0eXBlIjogIkIzOjpWb2lk
IiB9LAorICAgICAgICAiYW55ZnVuYyI6IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0x
NiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJhbnlyZWYiOiAgeyAidHlwZSI6
ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTE3LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAg
ICAgImZ1bmMiOiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtMzIsICJiM3R5cGUi
OiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjogICAgeyAidHlwZSI6ICJ2YXJpbnQ3Iiwg
InZhbHVlIjogLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwKLSAgICAidmFsdWVf
dHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImFueXJlZiJdLAotICAgICJibG9j
a190eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAidm9pZCIsICJhbnlyZWYiXSwK
KyAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImFueXJlZiIs
ICJhbnlmdW5jIl0sCisgICAgImJsb2NrX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2
NCIsICJ2b2lkIiwgImFueXJlZiIsICJhbnlmdW5jIl0sCiAgICAgImVsZW1fdHlwZSI6IFsiYW55
ZnVuYyIsImFueXJlZiJdLAogICAgICJleHRlcm5hbF9raW5kIjogewogICAgICAgICAiRnVuY3Rp
b24iOiB7ICJ0eXBlIjogInVpbnQ4IiwgInZhbHVlIjogMCB9LApAQCAtNTksOCArNTksOSBAQAog
ICAgICAgICAiaTY0LmNvbnN0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAg
ICAidmFsdWUiOiAgNjYsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwg
ICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAg
ICAgICAgInR5cGUiOiAidmFyaW50NjQifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0
ZWQgYXMgaTY0IiB9LAogICAgICAgICAiZjY0LmNvbnN0IjogICAgICAgICAgIHsgImNhdGVnb3J5
IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgNjgsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJw
YXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAiZG91YmxlIn1dLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQg
dmFsdWUgaW50ZXJwcmV0ZWQgYXMgZjY0IiB9LAogICAgICAgICAiZjMyLmNvbnN0IjogICAgICAg
ICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgNjcsICJyZXR1cm4iOiBb
ImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAiZmxvYXQifV0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQgYXMgZjMyIiB9LAotICAgICAgICAicmVm
Lm51bGwiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAy
MDgsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgbnVsbCByZWZlcmVuY2UiIH0sCisgICAgICAg
ICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1
ZSI6IDIwOCwgInJldHVybiI6IFsiYW55ZnVuYyJdLCAgInBhcmFtZXRlciI6IFtdLCAgICAgICAg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCBudWxsIHJlZmVyZW5jZSIgfSwKICAg
ICAgICAgInJlZi5pc19udWxsIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogMjA5LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhbnly
ZWYiXSwgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXRlcm1pbmUgaWYgYSByZWZlcmVuY2UgaXMg
bnVsbCIgfSwKKyAgICAgICAgInJlZi5mdW5jIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJz
cGVjaWFsIiwgICAgInZhbHVlIjogMjEwLCAicmV0dXJuIjogWyJhbnlmdW5jIl0sICAicGFyYW1l
dGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJm
dW5jdGlvbl9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZXR1cm4gYSByZWZlcmVu
Y2UgdG8gdGhlIGZ1bmN0aW9uIGF0IHRoZSBnaXZlbiBpbmRleCIgfSwKICAgICAgICAgImdldF9s
b2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDMy
LCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIiB9LAog
ICAgICAgICAic2V0X2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAg
ICAidmFsdWUiOiAgMzMsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFu
eSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4
IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3Ig
cGFyYW1ldGVyIiB9LAogICAgICAgICAidGVlX2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5
IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzQsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICJw
YXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgbG9j
YWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIGFuZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUiIH0sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>