<?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>214861</bug_id>
          
          <creation_ts>2020-07-27 19:36:54 -0700</creation_ts>
          <short_desc>[JSC] support op_get_private_name in DFG and FTL</short_desc>
          <delta_ts>2020-11-19 13:07:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>213545</dependson>
          <blocked>217245</blocked>
    
    <blocked>212781</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1675498</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-27 19:36:54 -0700</bug_when>
    <thetext>[JSC] support op_get_private_name in DFG</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675499</commentid>
    <comment_count>1</comment_count>
      <attachid>405337</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-27 19:42:50 -0700</bug_when>
    <thetext>Created attachment 405337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675501</commentid>
    <comment_count>2</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-27 20:06:14 -0700</bug_when>
    <thetext>I guess --no-ews doesn&apos;t work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675749</commentid>
    <comment_count>3</comment_count>
      <attachid>405337</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-28 13:00:25 -0700</bug_when>
    <thetext>Comment on attachment 405337
Patch

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

`

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6190
&gt; +                    handleGetById(bytecode.m_dst, prediction, base, identifier, identifierNumber, getByStatus, AccessType::GetPrivateName, nextOpcodeIndex());

There is a bug here when we use `AccessType::GetPrivateName`. This type won&apos;t be considered by `handleGetById` and it can generate a `GetByIdDirect` node when the call-site is too polymorphic. Since there is no info stored into `GetByIdDirect` about private field, the code there wil not handle semantics of missing private field correctly. This is a test case that fails:

```
//@ requireOptions(&quot;--allowUnsupportedTiers=true&quot;, &quot;--usePrivateClassFields=true&quot;, &quot;--maxPolymorphicAccessInliningListSize=2&quot;)
let i = 0;

class C {
    #field = this.init();

    init() {
        let arr = [&quot;p1&quot;, &quot;p2&quot;, &quot;p3&quot;];

        let key = arr[i % 3];
        this[key] = i;
        if (key === &quot;p2&quot;)
            this[&quot;p1&quot;] = i;

        if (key === &quot;p3&quot;) {
            this[&quot;p1&quot;] = i;
            this[&quot;p2&quot;] = i;
        }

        return &apos;private&apos;;
    }

    getField() {
        return this.#field;
    }
}
noInline(C.prototype.getField);

let c1 = new C;
i++;
let c2 = new C;
i++;
let c3 = new C;

let arr = [c1, c2, c3];

for (; i &lt; 10000; i++) {
    if (i &gt; 5000) {
        assert.throws(TypeError, function() {
            C.prototype.getField.call({});
        });
    } else {
        arr[i % 3].getField();
    }
}
```

This happens because the JITGetByIdGenerator used by `GetByIdDirect` will use a slow path function with `get_by_id_direct` semantics, instead of `get_private_name`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675895</commentid>
    <comment_count>4</comment_count>
      <attachid>405436</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-28 20:22:13 -0700</bug_when>
    <thetext>Created attachment 405436
Patch

This one adds a PrivateName-specific (and limited) variant of handleGetById which produces the appropriate slow path function. I am sure that could be a maintenance headache, so the idea might need to be refined a bit. But it&apos;s something</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675942</commentid>
    <comment_count>5</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-29 03:45:02 -0700</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #4)
&gt; Created attachment 405436 [details]
&gt; Patch
&gt; 
&gt; This one adds a PrivateName-specific (and limited) variant of handleGetById
&gt; which produces the appropriate slow path function. I am sure that could be a
&gt; maintenance headache, so the idea might need to be refined a bit. But it&apos;s
&gt; something

I think it is a bit of a shame we can&apos;t have benefits from emitting `GetByIdDirect`, like the current things for AI, constant folding, Fixup, and IC for generic paths. We probably want to add such things for `GetPrivateName` in the future and this discussion wouldn&apos;t make much sense anymore, but I&apos;m wondering why you decided to avoid emit `GetByIdDirect` in this patch. I&apos;m handling a similar thing into `PutPrivateName` (https://bugs.webkit.org/show_bug.cgi?id=213372) and I decided to add `PrivateFieldPutKind` into `PutByValDirect`&apos;s OpInfo instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675981</commentid>
    <comment_count>6</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-29 06:06:29 -0700</bug_when>
    <thetext>It see(In reply to Caio Lima from comment #5)
&gt; (In reply to Caitlin Potter (:caitp) from comment #4)
&gt; &gt; Created attachment 405436 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; This one adds a PrivateName-specific (and limited) variant of handleGetById
&gt; &gt; which produces the appropriate slow path function. I am sure that could be a
&gt; &gt; maintenance headache, so the idea might need to be refined a bit. But it&apos;s
&gt; &gt; something
&gt; 
&gt; I think it is a bit of a shame we can&apos;t have benefits from emitting
&gt; `GetByIdDirect`, like the current things for AI, constant folding, Fixup,
&gt; and IC for generic paths. We probably want to add such things for
&gt; `GetPrivateName` in the future and this discussion wouldn&apos;t make much sense
&gt; anymore, but I&apos;m wondering why you decided to avoid emit `GetByIdDirect` in
&gt; this patch. I&apos;m handling a similar thing into `PutPrivateName`
&gt; (https://bugs.webkit.org/show_bug.cgi?id=213372) and I decided to add
&gt; `PrivateFieldPutKind` into `PutByValDirect`&apos;s OpInfo instead.

Right now, I just want to eliminate cases where the language feature is broken. We can still add constant folding for GetPrivateName nodes, or IC in the generic case. But it&apos;s non-trivial to reuse the existing handleGetById design, it would require doing all of that work. It&apos;s not as simple as just telling it to emit GetPrivateName instead of GetByIdDirect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677551</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-03 19:37:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/66503846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679042</commentid>
    <comment_count>8</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-10 05:21:37 -0700</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #6)
&gt; It see(In reply to Caio Lima from comment #5)
&gt; &gt; (In reply to Caitlin Potter (:caitp) from comment #4)
&gt; &gt; &gt; Created attachment 405436 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; This one adds a PrivateName-specific (and limited) variant of handleGetById
&gt; &gt; &gt; which produces the appropriate slow path function. I am sure that could be a
&gt; &gt; &gt; maintenance headache, so the idea might need to be refined a bit. But it&apos;s
&gt; &gt; &gt; something
&gt; &gt; 
&gt; &gt; I think it is a bit of a shame we can&apos;t have benefits from emitting
&gt; &gt; `GetByIdDirect`, like the current things for AI, constant folding, Fixup,
&gt; &gt; and IC for generic paths. We probably want to add such things for
&gt; &gt; `GetPrivateName` in the future and this discussion wouldn&apos;t make much sense
&gt; &gt; anymore, but I&apos;m wondering why you decided to avoid emit `GetByIdDirect` in
&gt; &gt; this patch. I&apos;m handling a similar thing into `PutPrivateName`
&gt; &gt; (https://bugs.webkit.org/show_bug.cgi?id=213372) and I decided to add
&gt; &gt; `PrivateFieldPutKind` into `PutByValDirect`&apos;s OpInfo instead.
&gt; 
&gt; Right now, I just want to eliminate cases where the language feature is
&gt; broken. We can still add constant folding for GetPrivateName nodes, or IC in
&gt; the generic case. But it&apos;s non-trivial to reuse the existing handleGetById
&gt; design, it would require doing all of that work. It&apos;s not as simple as just
&gt; telling it to emit GetPrivateName instead of GetByIdDirect

This makes total sense. It makes more sense to add optimizations to `GetPrivateName` and leave `GetByIdDirect` out of the path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684229</commentid>
    <comment_count>9</comment_count>
      <attachid>407619</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-08-31 13:26:42 -0700</bug_when>
    <thetext>Created attachment 407619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684231</commentid>
    <comment_count>10</comment_count>
      <attachid>407619</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-08-31 13:30:30 -0700</bug_when>
    <thetext>Comment on attachment 407619
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        DFGConstantFoldingPhase, or a GetByID IC when lowering to B3.

I&apos;m not 100% sure the GetByID version can actually occur in real code (I sort of asked this on Slack). Without disabling (polymorphic) access inlining, I haven&apos;t been able to get the compiler to produce that path.

Perhaps, with the code visible, some smart people out there could help me figure out how to reproduce this in real world code, or otherwise suggest just not emitting the GetByID IC code in FTL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684244</commentid>
    <comment_count>11</comment_count>
      <attachid>407619</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-31 14:03:20 -0700</bug_when>
    <thetext>Comment on attachment 407619
Patch

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

Some comments below. r- because of some bugs I found and the lack of ICs for the get_by_val style GetPrivateName

&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:407
&gt; +    case AccessType::GetPrivateName:

Should we add a new enum value GetPrivateNameById?

It seems wrong we didn&apos;t handle the get_by_val style GetPrivateName here before.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4731
&gt; +void ByteCodeParser::handleGetPrivateName(

nit: maybe name this &quot;handleGetPrivateNameById&quot;?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4733
&gt; +    // Attempt to reduce the set of things in the GetByStatus.

can we make a helper for this  loop below since it&apos;s the same as the code in get by id helper?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4778
&gt; +            GetByOffsetMethod method = variant.conditionSet().isEmpty()
&gt; +                ? GetByOffsetMethod::load(variant.offset())
&gt; +                : planLoad(variant.conditionSet());

I think the conditionSet should always be empty, since we&apos;re doing a self load for get private name.

Maybe we should assert this?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4780
&gt; +            if (!method) {

this might not be needed after that change

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:2766
&gt; +        case GetPrivateName:
&gt; +        case GetPrivateNameById:

we should implement these. We want to speculate cell for the base. And maybe speculate symbol for the property in GetPrivateName

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3483
&gt; +    callOperation(operationGetPrivateName, resultRegs, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node-&gt;origin.semantic)), TrustedImmPtr(nullptr), baseGPR, propertyGPR);

Let&apos;s make this do the same IC as baseline. And let&apos;s add some microbenchmarks for it.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3931
&gt; +    void compileGetPrivateName()

ditto about making this do the same IC we do in baseline

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2281
&gt; +    if (stubInfo)
&gt; +        stubInfo-&gt;tookSlowPath = true;

we can revert this part when we start doing the IC

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2317
&gt; +EncodedJSValue JIT_OPERATION operationGetPrivateNameByIdGeneric(JSGlobalObject* globalObject, EncodedJSValue base, uintptr_t rawCacheableIdentifier)

since operationGetPrivateNameByIdOptimize can be rewatched to call here, we will end up with bad things happening because of the different function signatures.

This needs to match operationGetPrivateNameByIdOptimize signature, and to mark the StructureStubInfo&apos; &quot;takes slow path&quot; bit.

Let&apos;s add a test for this, since it the current implementation should result in a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684602</commentid>
    <comment_count>12</comment_count>
      <attachid>407619</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-09-01 13:39:16 -0700</bug_when>
    <thetext>Comment on attachment 407619
Patch

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

I&apos;ve addressed these comments, thanks for the review. I am going to let the bots work on this while I craft a microbenchmark to see if using the GetByVal ICs help anything.

&gt;&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:407
&gt;&gt; +    case AccessType::GetPrivateName:
&gt; 
&gt; Should we add a new enum value GetPrivateNameById?
&gt; 
&gt; It seems wrong we didn&apos;t handle the get_by_val style GetPrivateName here before.

this is specifically for GetById ICs, which previously, GetPrivateName has not used

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2317
&gt;&gt; +EncodedJSValue JIT_OPERATION operationGetPrivateNameByIdGeneric(JSGlobalObject* globalObject, EncodedJSValue base, uintptr_t rawCacheableIdentifier)
&gt; 
&gt; since operationGetPrivateNameByIdOptimize can be rewatched to call here, we will end up with bad things happening because of the different function signatures.
&gt; 
&gt; This needs to match operationGetPrivateNameByIdOptimize signature, and to mark the StructureStubInfo&apos; &quot;takes slow path&quot; bit.
&gt; 
&gt; Let&apos;s add a test for this, since it the current implementation should result in a crash.

I&apos;m fairly confident this is working correctly. This shares the same function signature as operationGetByIdGeneric, operationTryGetByIdGeneric, etc, and uses the same mechanisms as those to generate the slow path call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684607</commentid>
    <comment_count>13</comment_count>
      <attachid>407709</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-09-01 13:48:53 -0700</bug_when>
    <thetext>Created attachment 407709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684613</commentid>
    <comment_count>14</comment_count>
      <attachid>407711</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-09-01 14:08:04 -0700</bug_when>
    <thetext>Created attachment 407711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684865</commentid>
    <comment_count>15</comment_count>
      <attachid>407711</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-02 10:13:55 -0700</bug_when>
    <thetext>Comment on attachment 407711
Patch

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

I think we are missing a bunch of test cases here. The I can enumerate now:

1. Case where we have constant identifier and never OSR
2. Case where we OSR due to structure check
3. Case where we compile a function considering constant ID, but then OSR due to id invalidation
4. Polymprphic call that don&apos;t OSR and also takes slow path
5. Tests that causes JITGetByIdIC repatch to unoptimized version
6. Tests that causes JITGetByValIC  repatch to unoptimized version during DFG/FTL
7. Test that takes slow path on JITGetByValIC due to id check failure on DFG/FTL
8. Tests that should throw exception when we have code `GetPrivateName`
9. Tests that should throw exception when we have code `GetPrivateNameById`

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        In FTL, GetPrivateNameByID can be reduced to [Multi]GetByOffset in the

I think we can also get `GetByOffset` reduction for DFG code as well, no?

&gt; Source/JavaScriptCore/jit/JITOperations.h:279
&gt; +EncodedJSValue JIT_OPERATION operationGetPrivateNameByIdOptimize(JSGlobalObject*, StructureStubInfo*, EncodedJSValue, uintptr_t) WTF_INTERNAL;

Just for the record, `GetById` is repatching it&apos;s &quot;optimize&quot; version to `operationGetById`. Since we have `GetByKind::PrivateName` pointing to `operationGetPrivateName` we should be good there. But It would be necessary to have a test to cover that this repatch is not broken in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684867</commentid>
    <comment_count>16</comment_count>
      <attachid>407711</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-02 10:20:27 -0700</bug_when>
    <thetext>Comment on attachment 407711
Patch

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

&gt; JSTests/stress/dfg-get-private-name-by-id.js:70
&gt; +    return Object.assign({}, bases[i &amp; bases.length]);

I think you meant to have &quot;%&quot; here

&gt; JSTests/stress/dfg-get-private-name-by-id.js:94
&gt; +  optimizeNextInvocation(test);

`test` being compiled doesn&apos;t guarantee that `getPrivate` will be compiled as well, mainly because it can&apos;t be inlined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685026</commentid>
    <comment_count>17</comment_count>
      <attachid>407823</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-09-02 15:27:22 -0700</bug_when>
    <thetext>Created attachment 407823
Patch

this should fix the arm/mips failures I think, new tests and microbenchmarks are still coming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693503</commentid>
    <comment_count>18</comment_count>
      <attachid>410149</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-09-30 13:27:55 -0700</bug_when>
    <thetext>Created attachment 410149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693753</commentid>
    <comment_count>19</comment_count>
      <attachid>410149</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-01 08:39:25 -0700</bug_when>
    <thetext>Comment on attachment 410149
Patch

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

I&apos;m giving r- because I&apos;ve found a bug for 32-bits (bots are also red). Overall, patch LGTM besides 32-bits issues.

&gt; Source/JavaScriptCore/bytecode/GetByStatus.cpp:111
&gt; +    case op_get_private_name:

I think this is something we&apos;d like to add in future patches. DO you mind add a comment or even a FIXME to use IC information from LLInt to populate GetByStatus?

Also, can we double check that GetByIdStatus is doing the right thing for `get_private_name`? We have stronger requirements than common `get_by_[val|id]` because we need to throw exception when private field is not present in an object and never lookup prototype chain. Since we do Unset and Prototype load IC, it would be good to include ASSERTs on paths we don&apos;t expect to see `get_private_name` going.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1786
&gt; +                fixEdge&lt;SymbolUse&gt;(node-&gt;child2());

I think we should blindly speculate symbol here when it is `GetPrivateName`, like we are doing for PutPrivateName. I don&apos;t think we are expecting to see any other type here.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1789
&gt; +                fixEdge&lt;CellUse&gt;(node-&gt;child1());

Is there a reason we want to have UntypedUse for `base`? I don&apos;t think we have profitable paths there. We are always fixing base to cell for both `PutPrivateName` and `GetPrivateName`. This also would simplify a lot SpeculativeJIT code.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3476
&gt; +    JSValueOperand base(this, m_graph.child(node, 0), ManualOperandSpeculation);

We are missing a Cell speculation here if `node-&gt;child1().useKind() == CellUse`. But if we decide to always speculate Cell for base (as proposed on Fixup) we cna simply use `SpeculateCellOperand`. Doing so helps on register pressure for 32-bits architectures.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3505
&gt; +        resultRegs, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(codeOrigin)), gen.stubInfo(), baseRegs, propertyRegs);

I&apos;m not 100% sure if this is 32-bits friendly, since we only have payloadOnly for propertyRegs. We need to include CCallHelpers::CellValue there.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3531
&gt; +    case UntypedUse: {

If we decide to always speculate cell on base, we don&apos;t need this.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3947
&gt; +        LValue property = lowJSValue(node-&gt;child2(), ManualOperandSpeculation);

We can make base always Cell and property always symbol here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693755</commentid>
    <comment_count>20</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-01 08:43:45 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #19)
&gt; Comment on attachment 410149 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410149&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1789
&gt; &gt; +                fixEdge&lt;CellUse&gt;(node-&gt;child1());
&gt; 
&gt; Is there a reason we want to have UntypedUse for `base`? I don&apos;t think we
&gt; have profitable paths there. We are always fixing base to cell for both
&gt; `PutPrivateName` and `GetPrivateName`. This also would simplify a lot
&gt; SpeculativeJIT code.

I meant to say `PutPrivateName` and `PutPrivateNameById`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693766</commentid>
    <comment_count>21</comment_count>
      <attachid>410149</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-01 09:22:13 -0700</bug_when>
    <thetext>Comment on attachment 410149
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3476
&gt;&gt; +    JSValueOperand base(this, m_graph.child(node, 0), ManualOperandSpeculation);
&gt; 
&gt; We are missing a Cell speculation here if `node-&gt;child1().useKind() == CellUse`. But if we decide to always speculate Cell for base (as proposed on Fixup) we cna simply use `SpeculateCellOperand`. Doing so helps on register pressure for 32-bits architectures.

in the PutPrivateName case, you are just calling into operationPutPrivateNameGeneric.

Here, we need the tag register on 32bits for JITGetByValGenerator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693768</commentid>
    <comment_count>22</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-01 09:33:55 -0700</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #21)
&gt; Comment on attachment 410149 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410149&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3476
&gt; &gt;&gt; +    JSValueOperand base(this, m_graph.child(node, 0), ManualOperandSpeculation);
&gt; &gt; 
&gt; &gt; We are missing a Cell speculation here if `node-&gt;child1().useKind() == CellUse`. But if we decide to always speculate Cell for base (as proposed on Fixup) we cna simply use `SpeculateCellOperand`. Doing so helps on register pressure for 32-bits architectures.
&gt; 
&gt; in the PutPrivateName case, you are just calling into
&gt; operationPutPrivateNameGeneric.
&gt; 
&gt; Here, we need the tag register on 32bits for JITGetByValGenerator

I&apos;m not 100% sure about JITGetByValGenerator, but for JITGetByIdGenerator we don&apos;t need cell tag in some cases (see `SpeculativeJIT::compileGetById` when we speculate `CellUse` on base). Since they share a lot of code, I think we might not need base&apos;s tag for anything, since we always check/speculate before taking IC fast path, even on BaselineJIT. However, that&apos;s a different story for `property`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693769</commentid>
    <comment_count>23</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-01 09:36:30 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #22)
&gt; (In reply to Caitlin Potter (:caitp) from comment #21)
&gt; &gt; Comment on attachment 410149 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410149&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3476
&gt; &gt; &gt;&gt; +    JSValueOperand base(this, m_graph.child(node, 0), ManualOperandSpeculation);
&gt; &gt; &gt; 
&gt; &gt; &gt; We are missing a Cell speculation here if `node-&gt;child1().useKind() == CellUse`. But if we decide to always speculate Cell for base (as proposed on Fixup) we cna simply use `SpeculateCellOperand`. Doing so helps on register pressure for 32-bits architectures.
&gt; &gt; 
&gt; &gt; in the PutPrivateName case, you are just calling into
&gt; &gt; operationPutPrivateNameGeneric.
&gt; &gt; 
&gt; &gt; Here, we need the tag register on 32bits for JITGetByValGenerator
&gt; 
&gt; I&apos;m not 100% sure about JITGetByValGenerator, but for JITGetByIdGenerator we
&gt; don&apos;t need cell tag in some cases (see `SpeculativeJIT::compileGetById` when
&gt; we speculate `CellUse` on base). Since they share a lot of code, I think we
&gt; might not need base&apos;s tag for anything, since we always check/speculate
&gt; before taking IC fast path, even on BaselineJIT. However, that&apos;s a different
&gt; story for `property`.

Just checked that we do `JITGetByValGenerator gen(
            m_codeBlock, CodeOrigin(m_bytecodeIndex), CallSiteIndex(BytecodeIndex(bitwise_cast&lt;uint32_t&gt;(currentInstruction))), RegisterSet::stubUnavailableRegisters(),
            JSValueRegs::payloadOnly(regT0), JSValueRegs(regT3, regT2), JSValueRegs(regT1, regT0));` on `JIT::emit_op_get_by_val`. So it&apos;s fine to not having tag there on `get_private_name` as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694170</commentid>
    <comment_count>24</comment_count>
      <attachid>410149</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-10-02 11:48:05 -0700</bug_when>
    <thetext>Comment on attachment 410149
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1789
&gt;&gt;&gt; +                fixEdge&lt;CellUse&gt;(node-&gt;child1());
&gt;&gt; 
&gt;&gt; Is there a reason we want to have UntypedUse for `base`? I don&apos;t think we have profitable paths there. We are always fixing base to cell for both `PutPrivateName` and `GetPrivateName`. This also would simplify a lot SpeculativeJIT code.
&gt; 
&gt; I meant to say `PutPrivateName` and `PutPrivateNameById`.

the benefit of not always speculating is that throwing an exception is better than an OSR exit loop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694212</commentid>
    <comment_count>25</comment_count>
      <attachid>410149</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-02 13:44:32 -0700</bug_when>
    <thetext>Comment on attachment 410149
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1789
&gt;&gt;&gt;&gt; +                fixEdge&lt;CellUse&gt;(node-&gt;child1());
&gt;&gt;&gt; 
&gt;&gt;&gt; Is there a reason we want to have UntypedUse for `base`? I don&apos;t think we have profitable paths there. We are always fixing base to cell for both `PutPrivateName` and `GetPrivateName`. This also would simplify a lot SpeculativeJIT code.
&gt;&gt; 
&gt;&gt; I meant to say `PutPrivateName` and `PutPrivateNameById`.
&gt; 
&gt; the benefit of not always speculating is that throwing an exception is better than an OSR exit loop

would it be possible to speculate optimistically until an error case is actually reached, and then generate the slightly more pessimistic code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694891</commentid>
    <comment_count>26</comment_count>
      <attachid>410568</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-05 15:25:11 -0700</bug_when>
    <thetext>Created attachment 410568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695681</commentid>
    <comment_count>27</comment_count>
      <attachid>410782</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-07 14:37:45 -0700</bug_when>
    <thetext>Created attachment 410782
Patch

Attempt to make 32bit bots happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695947</commentid>
    <comment_count>28</comment_count>
      <attachid>410859</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-08 10:22:57 -0700</bug_when>
    <thetext>Created attachment 410859
Patch

send JSCellTag as immediate to JITGetByVal stub on 32bits (from what I can see analyzing the DFG disassembly, it looks fine. .)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696006</commentid>
    <comment_count>29</comment_count>
      <attachid>410149</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-08 13:10:01 -0700</bug_when>
    <thetext>Comment on attachment 410149
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/GetByStatus.cpp:111
&gt;&gt; +    case op_get_private_name:
&gt; 
&gt; I think this is something we&apos;d like to add in future patches. DO you mind add a comment or even a FIXME to use IC information from LLInt to populate GetByStatus?
&gt; 
&gt; Also, can we double check that GetByIdStatus is doing the right thing for `get_private_name`? We have stronger requirements than common `get_by_[val|id]` because we need to throw exception when private field is not present in an object and never lookup prototype chain. Since we do Unset and Prototype load IC, it would be good to include ASSERTs on paths we don&apos;t expect to see `get_private_name` going.

I&apos;ve added a comment and filed a bug --- however I&apos;m not sure LLInt gives us much to work with currently, but it would be simple enough to add

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1786
&gt;&gt; +                fixEdge&lt;SymbolUse&gt;(node-&gt;child2());
&gt; 
&gt; I think we should blindly speculate symbol here when it is `GetPrivateName`, like we are doing for PutPrivateName. I don&apos;t think we are expecting to see any other type here.

we are now speculating symbol 100% of the time

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1789
&gt;&gt;&gt;&gt;&gt; +                fixEdge&lt;CellUse&gt;(node-&gt;child1());
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Is there a reason we want to have UntypedUse for `base`? I don&apos;t think we have profitable paths there. We are always fixing base to cell for both `PutPrivateName` and `GetPrivateName`. This also would simplify a lot SpeculativeJIT code.
&gt;&gt;&gt; 
&gt;&gt;&gt; I meant to say `PutPrivateName` and `PutPrivateNameById`.
&gt;&gt; 
&gt;&gt; the benefit of not always speculating is that throwing an exception is better than an OSR exit loop
&gt; 
&gt; would it be possible to speculate optimistically until an error case is actually reached, and then generate the slightly more pessimistic code?

from the offline discussion, have decided not to be optimistic here, and emit a slow case for non-cells

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3476
&gt;&gt;&gt;&gt;&gt; +    JSValueOperand base(this, m_graph.child(node, 0), ManualOperandSpeculation);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; We are missing a Cell speculation here if `node-&gt;child1().useKind() == CellUse`. But if we decide to always speculate Cell for base (as proposed on Fixup) we cna simply use `SpeculateCellOperand`. Doing so helps on register pressure for 32-bits architectures.
&gt;&gt;&gt; 
&gt;&gt;&gt; in the PutPrivateName case, you are just calling into operationPutPrivateNameGeneric.
&gt;&gt;&gt; 
&gt;&gt;&gt; Here, we need the tag register on 32bits for JITGetByValGenerator
&gt;&gt; 
&gt;&gt; I&apos;m not 100% sure about JITGetByValGenerator, but for JITGetByIdGenerator we don&apos;t need cell tag in some cases (see `SpeculativeJIT::compileGetById` when we speculate `CellUse` on base). Since they share a lot of code, I think we might not need base&apos;s tag for anything, since we always check/speculate before taking IC fast path, even on BaselineJIT. However, that&apos;s a different story for `property`.
&gt; 
&gt; Just checked that we do `JITGetByValGenerator gen(
&gt;             m_codeBlock, CodeOrigin(m_bytecodeIndex), CallSiteIndex(BytecodeIndex(bitwise_cast&lt;uint32_t&gt;(currentInstruction))), RegisterSet::stubUnavailableRegisters(),
&gt;             JSValueRegs::payloadOnly(regT0), JSValueRegs(regT3, regT2), JSValueRegs(regT1, regT0));` on `JIT::emit_op_get_by_val`. So it&apos;s fine to not having tag there on `get_private_name` as well.

per the long discussion offline, it&apos;s going to be messy to avoid allocating a tag register here, and will require some fixes to JSValueOperand. I prefer to leave this alone for now, to keep the patch as minimal as possible. We can revisit this later.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3498
&gt; +        baseRegs, propertyRegs, resultRegs);

specifying payloadOnly for baseRegs is possible, but it won&apos;t be helpful due to the issue mentioned above as discussed offline. Tabling that for now. I have updated propertyRegs to use only the payload, and verified that this is doing the right thing in the DFG disassembly on 32 bits.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3531
&gt;&gt; +    case UntypedUse: {
&gt; 
&gt; If we decide to always speculate cell on base, we don&apos;t need this.

as discussed offline with Saam, we&apos;re going to prefer emitting a branch+slow case when Cell is not guaranteed, rather than OSRing.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3947
&gt;&gt; +        LValue property = lowJSValue(node-&gt;child2(), ManualOperandSpeculation);
&gt; 
&gt; We can make base always Cell and property always symbol here.

My understanding of this part of the pipeline is even more limited than my understanding of DFG, so I&apos;m not 100% sure I&apos;ve done the work here adequately, but please take a look at the changes that were made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698148</commentid>
    <comment_count>30</comment_count>
      <attachid>410859</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-10-15 09:59:21 -0700</bug_when>
    <thetext>Comment on attachment 410859
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4756
&gt; +        // 1) Emit prototype structure checks for all chains. This could sort of maybe not be
&gt; +        //    optimal, if there is some rarely executed case in the chain that requires a lot
&gt; +        //    of checks and those checks are not watchpointable.

This comment doesn&apos;t seem to match what the code is doing.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4757
&gt; +        for (const GetByIdVariant&amp; variant : getByStatus.variants()) {

Do we want to assert the variant is a self load?
(Similar assert in Constant Folding too?)

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4795
&gt; +    if (!variant.callLinkStatus() &amp;&amp; variant.intrinsic() == NoIntrinsic)

should we assert there is no callLinkSatus? Why would a private name access ever have a call?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6460
&gt; +                    m_graph.m_slowGetByVal.add(node);

You add to this hashset, but never read from it in DFGSpeculatiiveJIT/FTLLower

We should either not do this if we don&apos;t think it&apos;s profitable, or we should read from the hash set in DFGSpeculativeJIT/FTLLower to emit different code

&gt; Source/JavaScriptCore/runtime/OptionsList.h:574
&gt; +    v(usePrivateClassFields, SupportsFTL | SupportsDFG, &quot;https://bugs.webkit.org/show_bug.cgi?id=212781&quot;, &quot;https://bugs.webkit.org/show_bug.cgi?id=212784&quot;)

Do we support Put?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698167</commentid>
    <comment_count>31</comment_count>
      <attachid>410859</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-15 10:26:39 -0700</bug_when>
    <thetext>Comment on attachment 410859
Patch

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

I&apos;ve taken care of these comments while rebasing today

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4757
&gt;&gt; +        for (const GetByIdVariant&amp; variant : getByStatus.variants()) {
&gt; 
&gt; Do we want to assert the variant is a self load?
&gt; (Similar assert in Constant Folding too?)

is that not what is happening on line 4759 below already?

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4795
&gt;&gt; +    if (!variant.callLinkStatus() &amp;&amp; variant.intrinsic() == NoIntrinsic)
&gt; 
&gt; should we assert there is no callLinkSatus? Why would a private name access ever have a call?

I have no idea here --- I think I left this open for private accessors, but since I&apos;m not positive if it&apos;s actually needed for that feature or not, it may be fine to remove it.

I&apos;ve done that for now, and I guess we can re-add it if it does end up being needed.

AFAIK there&apos;s no chance of this being an intrinsic either, at the moment, either, but it&apos;s such a minor thing I don&apos;t think it matters much

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6460
&gt;&gt; +                    m_graph.m_slowGetByVal.add(node);
&gt; 
&gt; You add to this hashset, but never read from it in DFGSpeculatiiveJIT/FTLLower
&gt; 
&gt; We should either not do this if we don&apos;t think it&apos;s profitable, or we should read from the hash set in DFGSpeculativeJIT/FTLLower to emit different code

looking at it, I don&apos;t expect this to be worth using (I think the sorts of cases making use of it for GetByVal are mostly things which will never be optimized here)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698168</commentid>
    <comment_count>32</comment_count>
      <attachid>410859</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-15 10:26:40 -0700</bug_when>
    <thetext>Comment on attachment 410859
Patch

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

I&apos;ve taken care of these comments while rebasing today

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4757
&gt;&gt; +        for (const GetByIdVariant&amp; variant : getByStatus.variants()) {
&gt; 
&gt; Do we want to assert the variant is a self load?
&gt; (Similar assert in Constant Folding too?)

is that not what is happening on line 4759 below already?

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4795
&gt;&gt; +    if (!variant.callLinkStatus() &amp;&amp; variant.intrinsic() == NoIntrinsic)
&gt; 
&gt; should we assert there is no callLinkSatus? Why would a private name access ever have a call?

I have no idea here --- I think I left this open for private accessors, but since I&apos;m not positive if it&apos;s actually needed for that feature or not, it may be fine to remove it.

I&apos;ve done that for now, and I guess we can re-add it if it does end up being needed.

AFAIK there&apos;s no chance of this being an intrinsic either, at the moment, either, but it&apos;s such a minor thing I don&apos;t think it matters much

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6460
&gt;&gt; +                    m_graph.m_slowGetByVal.add(node);
&gt; 
&gt; You add to this hashset, but never read from it in DFGSpeculatiiveJIT/FTLLower
&gt; 
&gt; We should either not do this if we don&apos;t think it&apos;s profitable, or we should read from the hash set in DFGSpeculativeJIT/FTLLower to emit different code

looking at it, I don&apos;t expect this to be worth using (I think the sorts of cases making use of it for GetByVal are mostly things which will never be optimized here)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698171</commentid>
    <comment_count>33</comment_count>
      <attachid>411457</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-15 10:35:04 -0700</bug_when>
    <thetext>Created attachment 411457
Patch

I&apos;ve addressed these comments as mentioned in the comments, if that&apos;s everything I think this should be okay</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698335</commentid>
    <comment_count>34</comment_count>
      <attachid>410859</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2020-10-15 16:04:31 -0700</bug_when>
    <thetext>Comment on attachment 410859
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4728
&gt; +void ByteCodeParser::handleGetPrivateNameById(

Why isn’t this a mode of handleGetById?  It has some of the same logic, like how it parses GetByIdStatus. Could just make handleGetById know about what this function does as just a mode, triggered by an enum arg for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698344</commentid>
    <comment_count>35</comment_count>
      <attachid>411457</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2020-10-15 16:09:12 -0700</bug_when>
    <thetext>Comment on attachment 411457
Patch

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

This looks pretty reasonable. I think the only thing I’d change is to use handleGetById instead of adding a new function. Just give that thing an enum arg or whatever to tell it to do private mode, and gate a bunch of stuff in there on that. That keeps you from duplicating logic that I think is a bit gnarly. R=me with that comment.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3477
&gt; +    speculate(node, node-&gt;child1());

This is weird. Can’t imagine this doing smart codegen. Why aren’t we doing SpeculateCellOperand?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698345</commentid>
    <comment_count>36</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2020-10-15 16:10:16 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #35)
&gt; Comment on attachment 411457 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411457&amp;action=review
&gt; 
&gt; This looks pretty reasonable. I think the only thing I’d change is to use
&gt; handleGetById instead of adding a new function. Just give that thing an enum
&gt; arg or whatever to tell it to do private mode, and gate a bunch of stuff in
&gt; there on that. That keeps you from duplicating logic that I think is a bit
&gt; gnarly. R=me with that comment.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3477
&gt; &gt; +    speculate(node, node-&gt;child1());
&gt; 
&gt; This is weird. Can’t imagine this doing smart codegen. Why aren’t we doing
&gt; SpeculateCellOperand?

I mean, R=me with two comments. Gotta do something better than speculate() there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698366</commentid>
    <comment_count>37</comment_count>
      <attachid>411457</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-10-15 16:45:46 -0700</bug_when>
    <thetext>Comment on attachment 411457
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3476
&gt; +    JSValueOperand base(this, m_graph.child(node, 0), ManualOperandSpeculation);

nit: A bit weird to use graph to access the child here, but differently below

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3477
&gt;&gt;&gt; +    speculate(node, node-&gt;child1());
&gt;&gt; 
&gt;&gt; This is weird. Can’t imagine this doing smart codegen. Why aren’t we doing SpeculateCellOperand?
&gt; 
&gt; I mean, R=me with two comments. Gotta do something better than speculate() there.

I think this codegen should actually be sensible. It should just use the register if it&apos;s already allocated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698380</commentid>
    <comment_count>38</comment_count>
      <attachid>410859</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-10-15 16:54:53 -0700</bug_when>
    <thetext>Comment on attachment 410859
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4795
&gt;&gt;&gt;&gt; +    if (!variant.callLinkStatus() &amp;&amp; variant.intrinsic() == NoIntrinsic)
&gt;&gt;&gt; 
&gt;&gt;&gt; should we assert there is no callLinkSatus? Why would a private name access ever have a call?
&gt;&gt; 
&gt;&gt; I have no idea here --- I think I left this open for private accessors, but since I&apos;m not positive if it&apos;s actually needed for that feature or not, it may be fine to remove it.
&gt;&gt; 
&gt;&gt; I&apos;ve done that for now, and I guess we can re-add it if it does end up being needed.
&gt;&gt; 
&gt;&gt; AFAIK there&apos;s no chance of this being an intrinsic either, at the moment, either, but it&apos;s such a minor thing I don&apos;t think it matters much
&gt; 
&gt; I have no idea here --- I think I left this open for private accessors, but since I&apos;m not positive if it&apos;s actually needed for that feature or not, it may be fine to remove it.
&gt; 
&gt; I&apos;ve done that for now, and I guess we can re-add it if it does end up being needed.
&gt; 
&gt; AFAIK there&apos;s no chance of this being an intrinsic either, at the moment, either, but it&apos;s such a minor thing I don&apos;t think it matters much

Right, but there isn&apos;t the any code that&apos;d actually handle the getter if one existed. I agree it&apos;d probably be used in the future. Sounds like Phil&apos;s suggestion to integrate into GetById handling code might just work and be a bit future proofed for private accessors as well

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6460
&gt;&gt;&gt;&gt; +                    m_graph.m_slowGetByVal.add(node);
&gt;&gt;&gt; 
&gt;&gt;&gt; You add to this hashset, but never read from it in DFGSpeculatiiveJIT/FTLLower
&gt;&gt;&gt; 
&gt;&gt;&gt; We should either not do this if we don&apos;t think it&apos;s profitable, or we should read from the hash set in DFGSpeculativeJIT/FTLLower to emit different code
&gt;&gt; 
&gt;&gt; looking at it, I don&apos;t expect this to be worth using (I think the sorts of cases making use of it for GetByVal are mostly things which will never be optimized here)
&gt; 
&gt; looking at it, I don&apos;t expect this to be worth using (I think the sorts of cases making use of it for GetByVal are mostly things which will never be optimized here)

I agree. Let&apos;s skip adding to the hashset</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699272</commentid>
    <comment_count>39</comment_count>
      <attachid>411457</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-19 09:32:56 -0700</bug_when>
    <thetext>Comment on attachment 411457
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3477
&gt;&gt;&gt;&gt; +    speculate(node, node-&gt;child1());
&gt;&gt;&gt; 
&gt;&gt;&gt; This is weird. Can’t imagine this doing smart codegen. Why aren’t we doing SpeculateCellOperand?
&gt;&gt; 
&gt;&gt; I mean, R=me with two comments. Gotta do something better than speculate() there.
&gt; 
&gt; I think this codegen should actually be sensible. It should just use the register if it&apos;s already allocated.

I generally agree that this isn&apos;t quite right, but I also don&apos;t think it&apos;s likely to do anything super problematic.

I&apos;m weighing a few different options, and I&apos;d appreciate some feedback on what is preferred

1) generate the CellUse and UntypedUse cases separately (as is done in GetPrivateNameById), which would let us get away with using SpeculateCellOperand for CellUses, but would be bigger/messier.

2) leave it as-is (just maybe make some changes to get edges more consistently everywhere in the function), a mix of what the two of you are saying. The register allocation is probably not perfect on 32bit (in the cases I&apos;ve looked at, it does allocate a tag, although I can&apos;t guarantee it will in all other cases). There is potentially a chance to produce speculation checks for unwanted types, but I&apos;m not 100% sure that this can actually happen (if it can, it&apos;s the kind of thing that would lead to the DFG_ASSERT in compileGetPrivateNameById) --- if it is possible, it could be fixed in the DFGFixupPhase easy enough.

3) get rid of the CellUse specialization entirely --- just assume UntypedUse. We get a tag register, whatever. This is simple, and produces similar register allocation on 32bit, and removes any chance of an OSRExit (which would make some test names weird)

So there are sort of tradeoffs for all of that. My personal preference, since we don&apos;t have real world usage data to justify putting effort in, would be to keep it simple --- I think we probably still do just as well on the benchmarks we have only handling the UntypedUse case, and we can keep the bit which tries to eliminate a redundant type check if we know the incoming value is a Cell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699283</commentid>
    <comment_count>40</comment_count>
      <attachid>411457</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-19 09:42:03 -0700</bug_when>
    <thetext>Comment on attachment 411457
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3477
&gt;&gt;&gt;&gt;&gt; +    speculate(node, node-&gt;child1());
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; This is weird. Can’t imagine this doing smart codegen. Why aren’t we doing SpeculateCellOperand?
&gt;&gt;&gt; 
&gt;&gt;&gt; I mean, R=me with two comments. Gotta do something better than speculate() there.
&gt;&gt; 
&gt;&gt; I think this codegen should actually be sensible. It should just use the register if it&apos;s already allocated.
&gt; 
&gt; I generally agree that this isn&apos;t quite right, but I also don&apos;t think it&apos;s likely to do anything super problematic.
&gt; 
&gt; I&apos;m weighing a few different options, and I&apos;d appreciate some feedback on what is preferred
&gt; 
&gt; 1) generate the CellUse and UntypedUse cases separately (as is done in GetPrivateNameById), which would let us get away with using SpeculateCellOperand for CellUses, but would be bigger/messier.
&gt; 
&gt; 2) leave it as-is (just maybe make some changes to get edges more consistently everywhere in the function), a mix of what the two of you are saying. The register allocation is probably not perfect on 32bit (in the cases I&apos;ve looked at, it does allocate a tag, although I can&apos;t guarantee it will in all other cases). There is potentially a chance to produce speculation checks for unwanted types, but I&apos;m not 100% sure that this can actually happen (if it can, it&apos;s the kind of thing that would lead to the DFG_ASSERT in compileGetPrivateNameById) --- if it is possible, it could be fixed in the DFGFixupPhase easy enough.
&gt; 
&gt; 3) get rid of the CellUse specialization entirely --- just assume UntypedUse. We get a tag register, whatever. This is simple, and produces similar register allocation on 32bit, and removes any chance of an OSRExit (which would make some test names weird)
&gt; 
&gt; So there are sort of tradeoffs for all of that. My personal preference, since we don&apos;t have real world usage data to justify putting effort in, would be to keep it simple --- I think we probably still do just as well on the benchmarks we have only handling the UntypedUse case, and we can keep the bit which tries to eliminate a redundant type check if we know the incoming value is a Cell.

By &quot;keep it simple&quot;, I&apos;m referring to option 3, and only handle the UntypedUse case here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699884</commentid>
    <comment_count>41</comment_count>
      <attachid>411901</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-20 12:59:08 -0700</bug_when>
    <thetext>Created attachment 411901
Patch

This accesses the child edges in a consistent way everywhere --- and adds a little bit of complexity by using a SpeculateCellOperand when we have a CellUse. Cleans some other things up a bit, adds some asserts, and is verified to not allocate a long-lasting tag operand on 32bit when speculate Cell for base</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699887</commentid>
    <comment_count>42</comment_count>
      <attachid>411457</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-20 13:04:49 -0700</bug_when>
    <thetext>Comment on attachment 411457
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3477
&gt;&gt;&gt;&gt;&gt;&gt; +    speculate(node, node-&gt;child1());
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; This is weird. Can’t imagine this doing smart codegen. Why aren’t we doing SpeculateCellOperand?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I mean, R=me with two comments. Gotta do something better than speculate() there.
&gt;&gt;&gt; 
&gt;&gt;&gt; I think this codegen should actually be sensible. It should just use the register if it&apos;s already allocated.
&gt;&gt; 
&gt;&gt; I generally agree that this isn&apos;t quite right, but I also don&apos;t think it&apos;s likely to do anything super problematic.
&gt;&gt; 
&gt;&gt; I&apos;m weighing a few different options, and I&apos;d appreciate some feedback on what is preferred
&gt;&gt; 
&gt;&gt; 1) generate the CellUse and UntypedUse cases separately (as is done in GetPrivateNameById), which would let us get away with using SpeculateCellOperand for CellUses, but would be bigger/messier.
&gt;&gt; 
&gt;&gt; 2) leave it as-is (just maybe make some changes to get edges more consistently everywhere in the function), a mix of what the two of you are saying. The register allocation is probably not perfect on 32bit (in the cases I&apos;ve looked at, it does allocate a tag, although I can&apos;t guarantee it will in all other cases). There is potentially a chance to produce speculation checks for unwanted types, but I&apos;m not 100% sure that this can actually happen (if it can, it&apos;s the kind of thing that would lead to the DFG_ASSERT in compileGetPrivateNameById) --- if it is possible, it could be fixed in the DFGFixupPhase easy enough.
&gt;&gt; 
&gt;&gt; 3) get rid of the CellUse specialization entirely --- just assume UntypedUse. We get a tag register, whatever. This is simple, and produces similar register allocation on 32bit, and removes any chance of an OSRExit (which would make some test names weird)
&gt;&gt; 
&gt;&gt; So there are sort of tradeoffs for all of that. My personal preference, since we don&apos;t have real world usage data to justify putting effort in, would be to keep it simple --- I think we probably still do just as well on the benchmarks we have only handling the UntypedUse case, and we can keep the bit which tries to eliminate a redundant type check if we know the incoming value is a Cell.
&gt; 
&gt; By &quot;keep it simple&quot;, I&apos;m referring to option 3, and only handle the UntypedUse case here.

The changes/interdiff from the latest patch (for landing) are in https://gist.github.com/caitp/96f175a31b7da1b763438b741933fe96</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700159</commentid>
    <comment_count>43</comment_count>
      <attachid>411977</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-21 06:14:00 -0700</bug_when>
    <thetext>Created attachment 411977
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700168</commentid>
    <comment_count>44</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-21 07:06:07 -0700</bug_when>
    <thetext>Committed r268794: &lt;https://trac.webkit.org/changeset/268794&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411977.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700178</commentid>
    <comment_count>45</comment_count>
      <attachid>411977</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-10-21 08:02:22 -0700</bug_when>
    <thetext>Comment on attachment 411977
Patch for landing

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Adds DFG/FTL support for op_get_private_name.

What’s the speed up on your microbenchmarks?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3508
&gt; +    const bool baseIsKnownCell = m_state.forNode(m_graph.child(node, 0)).isType(SpecCell);

The better way to do this is to check the use kind of the base edge

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3539
&gt; +    switch (m_graph.child(node, 0).useKind()) {

Nit: you use m_graph.node in various places here. I’d use the child1/child2 accessor on node itself, since you know the node type and you know that it’s not varargs

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2378
&gt; +        return JSValue::encode(slot.getValue(globalObject, fieldName));

I think you want to release the exception scope before calling getValhe here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700199</commentid>
    <comment_count>46</comment_count>
      <attachid>411977</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-21 08:44:30 -0700</bug_when>
    <thetext>Comment on attachment 411977
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Adds DFG/FTL support for op_get_private_name.
&gt; 
&gt; What’s the speed up on your microbenchmarks?

I can see how it&apos;s helpful to include exact figures in the changelog, but I knew the figures were at least 1.5x to 2x faster based on earlier runs, and have improved since then.

Here&apos;s a run on a fairly busy i9-9900K, I&apos;ll do some runs on an ARM devices as well shortly.

```
                                       GPN_NoDFG                 GPN_YesDFG

get-private-name                   689.4523+-7.9868     ^    117.3869+-3.7813        ^ definitely 5.8733x faster
monomorphic-get-private-field       69.1436+-1.3581     ^     19.5125+-2.4176        ^ definitely 3.5436x faster
polymorphic-get-private-field      189.1932+-2.8165     ^     50.2354+-2.1225        ^ definitely 3.7661x faster
polymorphic-put-private-field      138.4540+-3.1889     ^     34.8745+-1.8817        ^ definitely 3.9701x faster
put-private-field                   49.8130+-6.8268     ^     20.3215+-1.2123        ^ definitely 2.4512x faster

&lt;geometric&gt;                        144.0651+-4.4416     ^     38.1988+-1.3225        ^ definitely 3.7715x faster
```

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3508
&gt;&gt; +    const bool baseIsKnownCell = m_state.forNode(m_graph.child(node, 0)).isType(SpecCell);
&gt; 
&gt; The better way to do this is to check the use kind of the base edge

Does it really make a huge difference? I assume the abstract value is also informed by DFGFixupPhase, isn&apos;t it? I think the way you&apos;re suggesting is more obvious and I&apos;m happy to change it, but I&apos;ve used this one for consistency with other code, which similarly relies on it instead of the use kind for whatever reason.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3539
&gt;&gt; +    switch (m_graph.child(node, 0).useKind()) {
&gt; 
&gt; Nit: you use m_graph.node in various places here. I’d use the child1/child2 accessor on node itself, since you know the node type and you know that it’s not varargs

My thinking is it doesn&apos;t really matter, and one is a bit looser than the other in terms of requirements, and is also the one which seems to be preferred in this file. 🤷‍♀️

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2378
&gt;&gt; +        return JSValue::encode(slot.getValue(globalObject, fieldName));
&gt; 
&gt; I think you want to release the exception scope before calling getValhe here

I agree, I&apos;ll fix up in a followup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700244</commentid>
    <comment_count>47</comment_count>
      <attachid>411977</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-21 09:50:23 -0700</bug_when>
    <thetext>Comment on attachment 411977
Patch for landing

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt;&gt; +        Adds DFG/FTL support for op_get_private_name.
&gt;&gt; 
&gt;&gt; What’s the speed up on your microbenchmarks?
&gt; 
&gt; I can see how it&apos;s helpful to include exact figures in the changelog, but I knew the figures were at least 1.5x to 2x faster based on earlier runs, and have improved since then.
&gt; 
&gt; Here&apos;s a run on a fairly busy i9-9900K, I&apos;ll do some runs on an ARM devices as well shortly.
&gt; 
&gt; ```
&gt;                                        GPN_NoDFG                 GPN_YesDFG
&gt; 
&gt; get-private-name                   689.4523+-7.9868     ^    117.3869+-3.7813        ^ definitely 5.8733x faster
&gt; monomorphic-get-private-field       69.1436+-1.3581     ^     19.5125+-2.4176        ^ definitely 3.5436x faster
&gt; polymorphic-get-private-field      189.1932+-2.8165     ^     50.2354+-2.1225        ^ definitely 3.7661x faster
&gt; polymorphic-put-private-field      138.4540+-3.1889     ^     34.8745+-1.8817        ^ definitely 3.9701x faster
&gt; put-private-field                   49.8130+-6.8268     ^     20.3215+-1.2123        ^ definitely 2.4512x faster
&gt; 
&gt; &lt;geometric&gt;                        144.0651+-4.4416     ^     38.1988+-1.3225        ^ definitely 3.7715x faster
&gt; ```

ARMv7 build:
ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=27ac4fa3b95eabeedff9423161aec226fa8ee5ed, not stripped
Linux bbox-10-armhf 5.6.0-0.bpo.2-arm64 #1 SMP Debian 5.6.14-2~bpo10+1 (2020-06-09) armv8l GNU/Linux (X-gene 2 w/ max 3300hz)

```
                                       GPN_NoDFG                 GPN_YesDFG

polymorphic-get-private-field     2342.5698+-67.0495    ^   1174.6169+-1.1972        ^ definitely 1.9943x faster
get-private-name                  4085.7298+-126.2157   ^    437.1069+-0.8109        ^ definitely 9.3472x faster
monomorphic-get-private-field      449.7250+-23.7829    ^     64.5152+-0.7488        ^ definitely 6.9708x faster
polymorphic-put-private-field     1397.2725+-55.7635    ^    653.0471+-33.7018       ^ definitely 2.1396x faster
put-private-field                  290.6740+-14.2945    ^     59.0010+-0.6738        ^ definitely 4.9266x faster

&lt;geometric&gt;                       1118.0396+-30.2615    ^    263.7305+-2.8495        ^ definitely 4.2393x faster
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700265</commentid>
    <comment_count>48</comment_count>
      <attachid>411977</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-10-21 10:26:08 -0700</bug_when>
    <thetext>Comment on attachment 411977
Patch for landing

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt;&gt;&gt; +        Adds DFG/FTL support for op_get_private_name.
&gt;&gt;&gt; 
&gt;&gt;&gt; What’s the speed up on your microbenchmarks?
&gt;&gt; 
&gt;&gt; I can see how it&apos;s helpful to include exact figures in the changelog, but I knew the figures were at least 1.5x to 2x faster based on earlier runs, and have improved since then.
&gt;&gt; 
&gt;&gt; Here&apos;s a run on a fairly busy i9-9900K, I&apos;ll do some runs on an ARM devices as well shortly.
&gt;&gt; 
&gt;&gt; ```
&gt;&gt;                                        GPN_NoDFG                 GPN_YesDFG
&gt;&gt; 
&gt;&gt; get-private-name                   689.4523+-7.9868     ^    117.3869+-3.7813        ^ definitely 5.8733x faster
&gt;&gt; monomorphic-get-private-field       69.1436+-1.3581     ^     19.5125+-2.4176        ^ definitely 3.5436x faster
&gt;&gt; polymorphic-get-private-field      189.1932+-2.8165     ^     50.2354+-2.1225        ^ definitely 3.7661x faster
&gt;&gt; polymorphic-put-private-field      138.4540+-3.1889     ^     34.8745+-1.8817        ^ definitely 3.9701x faster
&gt;&gt; put-private-field                   49.8130+-6.8268     ^     20.3215+-1.2123        ^ definitely 2.4512x faster
&gt;&gt; 
&gt;&gt; &lt;geometric&gt;                        144.0651+-4.4416     ^     38.1988+-1.3225        ^ definitely 3.7715x faster
&gt;&gt; ```
&gt; 
&gt; ARMv7 build:
&gt; ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=27ac4fa3b95eabeedff9423161aec226fa8ee5ed, not stripped
&gt; Linux bbox-10-armhf 5.6.0-0.bpo.2-arm64 #1 SMP Debian 5.6.14-2~bpo10+1 (2020-06-09) armv8l GNU/Linux (X-gene 2 w/ max 3300hz)
&gt; 
&gt; ```
&gt;                                        GPN_NoDFG                 GPN_YesDFG
&gt; 
&gt; polymorphic-get-private-field     2342.5698+-67.0495    ^   1174.6169+-1.1972        ^ definitely 1.9943x faster
&gt; get-private-name                  4085.7298+-126.2157   ^    437.1069+-0.8109        ^ definitely 9.3472x faster
&gt; monomorphic-get-private-field      449.7250+-23.7829    ^     64.5152+-0.7488        ^ definitely 6.9708x faster
&gt; polymorphic-put-private-field     1397.2725+-55.7635    ^    653.0471+-33.7018       ^ definitely 2.1396x faster
&gt; put-private-field                  290.6740+-14.2945    ^     59.0010+-0.6738        ^ definitely 4.9266x faster
&gt; 
&gt; &lt;geometric&gt;                       1118.0396+-30.2615    ^    263.7305+-2.8495        ^ definitely 4.2393x faster
&gt; ```

Nice!!

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3508
&gt;&gt;&gt; +    const bool baseIsKnownCell = m_state.forNode(m_graph.child(node, 0)).isType(SpecCell);
&gt;&gt; 
&gt;&gt; The better way to do this is to check the use kind of the base edge
&gt; 
&gt; Does it really make a huge difference? I assume the abstract value is also informed by DFGFixupPhase, isn&apos;t it? I think the way you&apos;re suggesting is more obvious and I&apos;m happy to change it, but I&apos;ve used this one for consistency with other code, which similarly relies on it instead of the use kind for whatever reason.

Not a huge difference, but it does make a difference. That other code could be made better too. My reasoning here is as such (and could actually result in bugs on 32-bit):
- AI is conservative. It might not always have the type proof you want it to. If you have external info that&apos;s guaranteed to be at least as specific as AI, then that info is better to use
- Since you only provide the payload for 32-bit code with CellUse, you&apos;d be SOL if you tried to do the branch below on a CellUse edge. Better to check the same thing in both places, then two different things in both places.
- This should really be checking SpecCellCheck, not SpecCell, since that&apos;s what branchIfCell/branchIfNotCell is checking, and is also what CellUse guarantees you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709254</commentid>
    <comment_count>49</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-19 13:07:36 -0800</bug_when>
    <thetext>*** Bug 212781 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405337</attachid>
            <date>2020-07-27 19:42:50 -0700</date>
            <delta_ts>2020-07-28 20:22:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20200727224249.patch</filename>
            <type>text/plain</type>
            <size>17041</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZjRhODI3
ODkyZWU3ODlhNmIxNGJjMGU0ZDVjMDY4YWUzNTI1ZDllMy4uM2UxZWE3ZGZmMTk3ZGQ4OWJlNmUx
YjAzYjE2N2QzOWQ4NDBmYWFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzM3MSw2ICszMzcx
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBHZXRQcml2YXRlTmFtZToKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAg
Y2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhYzQ3NzU4
NGI0ODcwNWU3MzExNDdmOGRjZjBkZjc3NDE4NGFkYjMxLi5kNWRlYWY2Nzg4ZjlkYzAwZDkzNDIw
OGNiZTYyMGZjOTJiMDQ2ZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjE2Nyw2ICs2MTY3LDQxIEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfc2V0dGVyX2J5X3ZhbCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dl
dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgICAgICAgICBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KCk7CisgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2Rl
KiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAgIGJvb2wg
ZGlkQ29tcGlsZUFzR2V0QnlJZCA9IGZhbHNlOworCisgICAgICAgICAgICBHZXRCeVN0YXR1cyBn
ZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRl
eHRTdGFjaywgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAg
ICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENv
bnN0YW50VmFsdWUpKSB7CisKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gZ2V0QnlTdGF0
dXMuc2luZ2xlSWRlbnRpZmllcigpOworICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyKSB7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBo
LmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVy
LmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50
LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGVH
ZXRCeUlkKGJ5dGVjb2RlLm1fZHN0LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyLCBpZGVu
dGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIG5l
eHRPcGNvZGVJbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGlkQ29tcGlsZUFzR2V0QnlJ
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIWRpZENvbXBpbGVBc0dldEJ5SWQpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYWRkVG9HcmFwaChHZXRQcml2YXRlTmFtZSwgT3BJbmZvKCksIE9wSW5mbyhwcmVkaWN0aW9u
KSwgYmFzZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBub2RlKTsKKyAgICAgICAgICAgICAg
ICBpZiAoZ2V0QnlTdGF0dXMub2JzZXJ2ZWRTdHJ1Y3R1cmVTdHViSW5mb1Nsb3dQYXRoKCkpCisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zbG93R2V0QnlWYWwuYWRkKG5vZGUpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3ByaXZhdGVfbmFtZSk7
CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlbF9ieV9pZDogewogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAg
ICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NTIwMGQ1ZGFmMWRlZThlOTBmZTgx
NDFkYmIxY2NiZDliNTMzN2VlLi5iMjQwYzRkZjE1ODQ4MjJiNGFjZGI0NjA5NTE1MzNjYjJmMTVk
ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjY2
LDYgKzY2Niw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJT
ZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJC
eVZhbDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3Bl
cnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5
SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzNjNzhlMzc1
Yjk4OWVlZGUxZmJjYmZkMTNmZDQ2ZDdlZDBmMmUyMC4uMDg5NzE2ZGNkYWJlOWY5MjZlNDE4NTg3
MDEwOWVlMDZiMTJlY2MxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cApAQCAtMzIxLDYgKzMyMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlk
OgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKICAg
ICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBSZWdF
eHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5k
ZXggOTBlOWIxMzRlZWEwMjE4OTc0M2NmMTQxYTdkOWE2ZjJlNzE2YjA0My4uYWU5OTUwMjliMjJk
MWE0MmNjNjgzMDBkOTk0MjM2NGQ4NjU3ZGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNzQ3LDYgKzI3NDcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgY2Fz
ZSBUeXBlT2Y6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgUHV0
QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNh
c2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXgg
ZGQwZDEyZGFmOGQ5YTE5YzQxOGEwZGMzZDQ5MWNjYjcwMDQ0YWVmNy4uOWMyYzIxY2ZlYjUwZTUz
NGQ2MDlhOTcyYzNkOTlmNzQ0MDM4MDFlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKQEAgLTE3NjYsNiArMTc2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBUcnlHZXRCeUlk
OgogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6
CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAg
ICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBlMmM0OGFlZTVmMGRh
OTI4YmE5NDA1OGUxNDFjM2U1ZWQ3Y2U0NTZmLi4wNTQ1OWRjY2VmZTg0NzlmMDhkNWJhMWRlZWQy
OTJhNGVjYjEwYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0yMzksNiArMjM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhDaGVja0FycmF5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tB
cnJheU9yRW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRQcml2YXRlTmFt
ZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFRoaXMgY2hlY2tz
IGlmIHRoZSBlZGdlIGlzIGEgdHlwZWQgYXJyYXkgYW5kIGlmIGl0IGlzIG5ldXRlcmVkLiAqLyBc
CiAgICAgbWFjcm8oQ2hlY2tOZXV0ZXJlZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KEFycmF5aWZ5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4
IDcxMDNmOWRiOTBiZGI3ZjM1MDVmZGMxMjM0OWQyYmZkNzZkNGYyZjEuLmRiYmFmMTk1MzAwMGU3
N2NhMDcxMWY1OTA2YzlhMTM3YjY4ZGE5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC04
NzUsNiArODc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6CisgICAg
ICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoK
ICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICAgICAgY2FzZSBDYWxsOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAwNDBkM2YzY2M4
ZDRiNDE5NzcyYzlhMWFkNjhiNmU0YmQ5MjM3OTFmLi41Mjk1MzBlMmJiMmMwZWViYjFjYmY4OWNl
YjA3ZWUwYTA1MGVkYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaApAQCAtNTI1LDYgKzUyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAg
ICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAg
ICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNh
c2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToK
ICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCA2ZWM5ZTA0NzZkZTFiMWY1MmNiZWNmOGU1MzkwZDA0NjA4
ZDMyZWM5Li44ZWJhYzAyZTc5NWRjZDZmNmYxZTE2YzU4MWRjNDViYjU0YTFhN2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzQ2
NSw2ICszNDY1LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbEZvck9i
amVjdFdpdGhTeW1ib2woTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWUo
Tm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hp
bGQobm9kZSwgMCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgu
Y2hpbGQobm9kZSwgMSkpOworICAgIGF1dG8gYmFzZUdQUiA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
KyAgICBhdXRvIHByb3BlcnR5R1BSID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKKworICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CisgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcml2YXRlTmFtZSwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLCBFZGdl
JiBjaGlsZDIsIEVkZ2UmIGNoaWxkMykKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmcx
KHRoaXMsIGNoaWxkMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggNjYyNWQ2Mzk2YTVlZWRlYWZlZDU2YzY0MGZhODc5ZmM0ZTExY2NhNy4u
ODdmNjhiZDBiNmRiZDJhODcyMmRiN2NkNzFmYjEzOWIxZWQ4M2VkZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI4Miw3ICsxMjgyLDkg
QEAgcHVibGljOgogCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkRpcmVjdEFyZ3VtZW50cyhO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50cyhOb2RlKik7
Ci0gICAgCisKKyAgICB2b2lkIGNvbXBpbGVHZXRQcml2YXRlTmFtZShOb2RlKik7CisKICAgICB2
b2lkIGNvbXBpbGVHZXRTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2tpcFNjb3BlKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxPYmplY3QoTm9kZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5k
ZXggYTFmMzFhYjQ0OTFlMWMxNDc2OGU3MGI5YjY1YWRmMmQwYzNiN2ZlMi4uODA5NjRkMDMxYzZh
YWVkNDg4ZjM5MWIxYmRmZDU4MmY0OGFiYzY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMjQ3LDYgKzIyNDcs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBp
bGVHZXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBHZXRCeVZhbDogewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkg
ewogICAgICAgICBjYXNlIEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMDZh
MDgxY2FkY2UyYWY0OGFhNWVmMDM1YjljMjE4NGIxN2RhNjYzMi4uZWJkMTA2YjdlNTQ4MjNmOWFl
YzhiNjRkMWE0NGRhNTQzMzcxMjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yNjIzLDYgKzI2MjMsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVHZXRQcml2YXRl
TmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRCeVZhbDog
ewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBj
YXNlIEFycmF5OjpBbnlUeXBlZEFycmF5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDk2YTdmMTY0MTQ2MGE1MmU4MjZlNWM5MzdjZmNkODU0
ZDM5YmQ0MmUuLmViODBjZTkxNTQ5OWQzOTE5OTJiMjQ0NmUzNGQyOTVhMWFlNDQ2MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5Myw2
ICszOTMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKICAgICBjYXNl
IE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDFmYmFjZTA4MTAzZjg3YWY2NWUwZGVkYmZhZTAwNWYyZmUzNDU0Zjgu
LjdiZjQ5MDY3ZmFhZWVmMGUzYmYyZDRjZWI0NGI2ZDIyMzVmODhkNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjI2Miw3ICsyMjYyLDggQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkRmllbGROYW1lKTsKIAotICAgIHN0dWJJbmZvLT50b29rU2xvd1Bh
dGggPSB0cnVlOworICAgIGlmIChzdHViSW5mbykKKyAgICAgICAgc3R1YkluZm8tPnRvb2tTbG93
UGF0aCA9IHRydWU7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBm
aWVsZE5hbWVWYWx1ZSkpKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2
YXRlLW5hbWUtZGZnLW11bHRpLWlubGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRl
LW5hbWUtZGZnLW11bHRpLWlubGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWE0Mjg2ZWVlNGMxZGVhYzNl
NGYxZjFmODE4MTBiM2M0ZmFiNmI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
Z2V0LXByaXZhdGUtbmFtZS1kZmctbXVsdGktaW5saW5lLmpzCkBAIC0wLDAgKzEsNjEgQEAKKy8v
QHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkg
eworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAk
e21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQg
JHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVy
cm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQo
ZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5h
bWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChm
YWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7
CisgIH0KK30pOworCisKK2Z1bmN0aW9uIGZhY3RvcnkodmFsdWUpIHsKKyAgcmV0dXJuIGNsYXNz
IHsKKyAgICAjcHJpdmF0ZSA9IHZhbHVlOworCisgICAgZ2V0UHJpdmF0ZSgpIHsKKyAgICAgIHJl
dHVybiB0aGlzLiNwcml2YXRlOworICAgIH0KKyAgfTsKK30KKworbGV0IEMxID0gZmFjdG9yeSgi
cHJpdmF0ZSIpOworbGV0IEMyID0gZmFjdG9yeSgxMjMpOworbm9JbmxpbmUoQzEuY29uc3RydWN0
b3IpOworbm9ERkcoQzEuY29uc3RydWN0b3IpOworbm9GVEwoQzEuY29uc3RydWN0b3IpOworbm9G
VEwoQzEucHJvdG90eXBlLmdldFByaXZhdGUpOworbm9JbmxpbmUoQzEucHJvdG90eXBlLmdldFBy
aXZhdGUpOworbm9JbmxpbmUoQzIuY29uc3RydWN0b3IpOworbm9ERkcoQzIuY29uc3RydWN0b3Ip
Oworbm9GVEwoQzIuY29uc3RydWN0b3IpOworbm9GVEwoQzIucHJvdG90eXBlLmdldFByaXZhdGUp
Oworbm9JbmxpbmUoQzIucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgYSA9IG5ldyBDMTsK
K2xldCBiID0gbmV3IEMyOworbGV0IGFGdW5jID0gYS5nZXRQcml2YXRlOworbGV0IGJGdW5jID0g
Yi5nZXRQcml2YXRlOworZnVuY3Rpb24gdGVzdChzaG91bGRUaHJvdykgeworICBhc3NlcnQuZXF1
YWxzKGEuZ2V0UHJpdmF0ZSgpLCAicHJpdmF0ZSIpOworICBhc3NlcnQuZXF1YWxzKGIuZ2V0UHJp
dmF0ZSgpLCAxMjMpOworfQorbm9JbmxpbmUodGVzdCk7CitsZXQgbWF4VHJ5Q291bnQgPSA4MDAw
Oword2hpbGUgKG51bWJlck9mREZHQ29tcGlsZXMoYUZ1bmMpIDwgMSAmJiBudW1iZXJPZkRGR0Nv
bXBpbGVzKGJGdW5jKSA8IDEgJiYgbWF4VHJ5Q291bnQtLSkgeworICAgIHRlc3QoKTsKKyAgICBv
cHRpbWl6ZU5leHRJbnZvY2F0aW9uKGFGdW5jKTsKK30KK2Fzc2VydChtYXhUcnlDb3VudCA+IDAs
ICJzaG91bGQgaGF2ZSB0cmlnZ2VyZWQgb3B0aW1pemF0aW9uIik7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWRmZy1tdWx0aS5qcyBiL0pTVGVzdHMvc3RyZXNz
L2dldC1wcml2YXRlLW5hbWUtZGZnLW11bHRpLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNmJiNzQzMWMzZWEw
YjhlN2Y3NTdjMGVmZDNmMDRhMmZhYmQ1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWRmZy1tdWx0aS5qcwpAQCAtMCwwICsxLDYzIEBACisvL0By
ZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsK
KyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHtt
ZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7
ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJv
clR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUg
aW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1l
fSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFs
c2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOwor
ICB9Cit9KTsKKworZnVuY3Rpb24gZmFjdG9yeSh2YWx1ZSkgeworICByZXR1cm4gY2xhc3Mgewor
ICAgICNwcml2YXRlID0gdmFsdWU7CisKKyAgICBnZXRQcml2YXRlKCkgeworICAgICAgcmV0dXJu
IHRoaXMuI3ByaXZhdGU7CisgICAgfQorICB9OworfQorCitsZXQgQzEgPSBmYWN0b3J5KCJwcml2
YXRlIik7CitsZXQgQzIgPSBmYWN0b3J5KDEyMyk7Citub0lubGluZShDMS5jb25zdHJ1Y3Rvcik7
Citub0RGRyhDMS5jb25zdHJ1Y3Rvcik7Citub0ZUTChDMS5jb25zdHJ1Y3Rvcik7Citub0ZUTChD
MS5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7Citub0lubGluZShDMi5jb25zdHJ1Y3Rvcik7Citub0RG
RyhDMi5jb25zdHJ1Y3Rvcik7Citub0ZUTChDMi5jb25zdHJ1Y3Rvcik7Citub0ZUTChDMi5wcm90
b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBhID0gbmV3IEMxOworbGV0IGIgPSBuZXcgQzI7Citm
dW5jdGlvbiB0ZXN0KHNob3VsZFRocm93KSB7CisgIGFzc2VydC5lcXVhbHMoYS5nZXRQcml2YXRl
KCksICJwcml2YXRlIik7CisgIGFzc2VydC5lcXVhbHMoYi5nZXRQcml2YXRlKCksIDEyMyk7Cisg
IGlmIChzaG91bGRUaHJvdykKKyAgICByZXR1cm4gYS5nZXRQcml2YXRlLmNhbGwoe30pOworfQor
bm9JbmxpbmUodGVzdCk7CitsZXQgbWF4VHJ5Q291bnQgPSA4MDAwOword2hpbGUgKG51bWJlck9m
REZHQ29tcGlsZXModGVzdCkgPCAxICYmIG1heFRyeUNvdW50LS0pIHsKKyAgICB0ZXN0KCk7Cisg
ICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30KK2Fzc2VydChtYXhUcnlDb3VudCA+
IDAsICJzaG91bGQgaGF2ZSBvcHRpbWl6ZWQiKTsKKworbWF4VHJ5Q291bnQgPSA1MDA7Cit3aGls
ZSAoIXJlb3B0aW1pemF0aW9uUmV0cnlDb3VudCh0ZXN0KSAmJiBtYXhUcnlDb3VudC0tKQorICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gdGVzdCh0cnVlKSwgVHlwZUVycm9yKTsKK2Fzc2VydChtYXhU
cnlDb3VudCA+IDAsICJzaG91bGQgaGF2ZSByZW9wdGltaXplZCIpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1kZmctc2luZ2xlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvZ2V0LXByaXZhdGUtbmFtZS1kZmctc2luZ2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxYzI0NWMwYTQz
MGVjMDlhZTlhMGRiMzhlMzAzZDNlMjFiOThhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWRmZy1zaW5nbGUuanMKQEAgLTAsMCArMSw1MiBAQAor
Ly9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdl
KSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6
ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3Rl
ZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwg
ZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2Vy
dChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUu
bmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0
KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5g
KTsKKyAgfQorfSk7CisKKworY2xhc3MgQyB7CisgICAgI3ByaXZhdGUgPSAicHJpdmF0ZSIKKwor
ICAgIGdldFByaXZhdGUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNwcml2YXRlOworICAgIH0K
K307CisKK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citu
b0ZUTChDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworbm9J
bmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBjID0gbmV3IEM7CisKK3doaWxl
IChudW1iZXJPZkRGR0NvbXBpbGVzKGMuZ2V0UHJpdmF0ZSkgPCAxKSB7CisgICAgYXNzZXJ0LmVx
dWFscyhjLmdldFByaXZhdGUoKSwgInByaXZhdGUiKTsKKyAgICBvcHRpbWl6ZU5leHRJbnZvY2F0
aW9uKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworfQorCisvLyBDaGVjayB0aGF0IEdldEJ5SWQg
cmVkdWN0aW9uIGJhaWxzIG91dAord2hpbGUgKCFyZW9wdGltaXphdGlvblJldHJ5Q291bnQoYy5n
ZXRQcml2YXRlKSkKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGMuZ2V0UHJpdmF0ZS5jYWxsKHt9
KSwgVHlwZUVycm9yKTsKKword2hpbGUgKG51bWJlck9mREZHQ29tcGlsZXMoYy5nZXRQcml2YXRl
KSA8IDIpIHsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0UHJpdmF0ZSgpLCAicHJpdmF0ZSIpOwor
ICAgIG9wdGltaXplTmV4dEludm9jYXRpb24oQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405436</attachid>
            <date>2020-07-28 20:22:13 -0700</date>
            <delta_ts>2020-08-31 13:26:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20200728232212.patch</filename>
            <type>text/plain</type>
            <size>26374</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjQxOTA1ZjhiYWE0ODE3NGNhZTI5YmM0NWQ0MGQwNjYxYTI3YzZkLi5jMGMzNzJlZDlmZDNjMzVk
ODllOWMyMTI3NzFkMjhlN2MxODlmZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMC0wNy0yOCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDg2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBydWRp
bWVudGFyeSBERkcgaW1wbGVtZW50YXRpb24sIHdpdGggc29tZSB0ZXN0cy4gVGhlIERGRworICAg
ICAgICBpbXBsZW1lbnRhdGlvbiB3aWxsLCB3aGVuIG9ubHkgb25lIHZlcnNpb24gb2YgdGhlIHN5
bWJvbCBpcyB1c2VkIGZvciBhCisgICAgICAgIGNvZGVibG9jaywgYXR0ZW1wdCB0byBnZW5lcmF0
ZSBbTXVsdGldR2V0QnlPZmZzZXQgb3BlcmF0aW9ucywgc2ltaWxhciB0bworICAgICAgICBHZXRC
eVZhbC4gSWYgdGhpcyBvcHRpbWl6YXRpb24gaXMgbm90IHBvc3NpYmxlLCB0aGUgcmVzdWx0aW5n
IGNvZGUgc2ltcGx5CisgICAgICAgIGNhbGxzIHRoZSBiYXNlbGluZSBKSVQgZ2VuZXJpYyBvcGVy
YXRpb24uCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnRyeUhhbmRsZUdldFByaXZhdGVO
YW1lKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVy
aXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpk
b2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0
ZU5hbWUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxl
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisKIDIwMjAtMDctMjggIENhaXRs
aW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBhZGQgSUMgc3Vw
cG9ydCBmb3Igb3BfZ2V0X3ByaXZhdGVfbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGY0YTgy
Nzg5MmVlNzg5YTZiMTRiYzBlNGQ1YzA2OGFlMzUyNWQ5ZTMuLjNlMWVhN2RmZjE5N2RkODliZTZl
MWIwM2IxNjdkMzlkODQwZmFhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMzNzEsNiArMzM3
MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAg
IGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYWM0Nzc1
ODRiNDg3MDVlNzMxMTQ3ZjhkY2YwZGY3NzQxODRhZGIzMS4uMTUwZWZhMDE3NzdjYjBkMzQ4YTcz
MGU1Yzc2Yjk0N2JiNmJhZjJiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI0Niw2ICsyNDYsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGFyc2VHZXRCeUlkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgdm9pZCBoYW5kbGVHZXRC
eUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBl
LCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBHZXRCeVN0YXR1cywgQWNjZXNzVHlwZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgp
OworICAgIGJvb2wgdHJ5SGFuZGxlR2V0UHJpdmF0ZU5hbWUoCisgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMpOwogICAgIHZvaWQgZW1pdFB1
dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZh
bHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlKTsKICAg
ICB2b2lkIGhhbmRsZVB1dEJ5SWQoCkBAIC00NzEzLDYgKzQ3MTUsOTEgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRl
cnMgLSAxLCByZWdpc3Rlck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGlj
dGlvbik7CiB9CiAKKy8vIEEgdmFyaWFudCBvbiBoYW5kbGVHZXRCeUlkIHdoaWNoIGlzIG1vcmUg
bGltaXRlZCBpbiBzY29wZQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6dHJ5SGFuZGxlR2V0UHJpdmF0
ZU5hbWUoCisgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0
YXR1cyBnZXRCeVN0YXR1cykgeworICAgIC8vIEF0dGVtcHQgdG8gcmVkdWNlIHRoZSBzZXQgb2Yg
dGhpbmdzIGluIHRoZSBHZXRCeVN0YXR1cy4KKyAgICBpZiAoYmFzZS0+b3AoKSA9PSBOZXdPYmpl
Y3QpIHsKKyAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fY3VycmVudEJsb2NrLT5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CisgICAgICAgICAgICBpZiAobm9kZSA9PSBiYXNlKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJsYXAobV9n
cmFwaCwgbm9kZSwgSlNDZWxsX3N0cnVjdHVyZUlEKSkgeworICAgICAgICAgICAgICAgIG9rID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG9rKQorICAgICAgICAgICAgZ2V0QnlTdGF0dXMuZmlsdGVyKGJhc2UtPnN0
cnVjdHVyZSgpLmdldCgpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoIWdldEJ5U3RhdHVzLmlzQ3Vz
dG9tKCkpOworICAgIEFTU0VSVCghZ2V0QnlTdGF0dXMubWFrZXNDYWxscygpKTsKKyAgICBpZiAo
IWdldEJ5U3RhdHVzLmlzU2ltcGxlKCkgfHwgIWdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgfHwg
IU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgeworICAgICAgICBpZiAoIW1f
Z3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5U3RhdHVzLm51bVZhcmlh
bnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckdl
dEJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEdl
dEJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5U3RhdHVzKSksIGJhc2UpOworCisg
ICAgICAgIFZlY3RvcjxNdWx0aUdldEJ5T2Zmc2V0Q2FzZSwgMj4gY2FzZXM7CisKKyAgICAgICAg
Ly8gMSkgRW1pdCBwcm90b3R5cGUgc3RydWN0dXJlIGNoZWNrcyBmb3IgYWxsIGNoYWlucy4gVGhp
cyBjb3VsZCBzb3J0IG9mIG1heWJlIG5vdCBiZQorICAgICAgICAvLyAgICBvcHRpbWFsLCBpZiB0
aGVyZSBpcyBzb21lIHJhcmVseSBleGVjdXRlZCBjYXNlIGluIHRoZSBjaGFpbiB0aGF0IHJlcXVp
cmVzIGEgbG90CisgICAgICAgIC8vICAgIG9mIGNoZWNrcyBhbmQgdGhvc2UgY2hlY2tzIGFyZSBu
b3Qgd2F0Y2hwb2ludGFibGUuCisgICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBnZXRCeVN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAgICBBU1NFUlQodmFy
aWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYyk7CisKKyAgICAgICAgICAgIEdldEJ5T2Zm
c2V0TWV0aG9kIG1ldGhvZCA9IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgpCisgICAg
ICAgICAgICAgICAgPyBHZXRCeU9mZnNldE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKQor
ICAgICAgICAgICAgICAgIDogcGxhbkxvYWQodmFyaWFudC5jb25kaXRpb25TZXQoKSk7CisKKyAg
ICAgICAgICAgIGlmICghbWV0aG9kKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAgICAgY2FzZXMuYXBwZW5kKE11bHRpR2V0QnlPZmZzZXRDYXNlKCptX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgbWV0aG9kKSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAg
ICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKwor
ICAgICAgICAvLyAyKSBFbWl0IGEgTXVsdGlHZXRCeU9mZnNldAorICAgICAgICBNdWx0aUdldEJ5
T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aUdldEJ5T2Zmc2V0RGF0YS5hZGQoKTsK
KyAgICAgICAgZGF0YS0+Y2FzZXMgPSBjYXNlczsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51
bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcEluZm8o
cHJlZGljdGlvbiksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
Ly8gRklYTUU6IElmIHdlIHVzZSB0aGUgR2V0QnlTdGF0dXMgZm9yIGFueXRoaW5nIHRoZW4gd2Ug
c2hvdWxkIHJlY29yZCBpdCBhbmQgaW5zZXJ0IGEgbm9kZQorICAgIC8vIGFmdGVyIGV2ZXJ5dGhp
bmcgZWxzZSAobGlrZSB0aGUgR2V0QnlPZmZzZXQgb3Igd2hhdGV2ZXIpIHRoYXQgd2lsbCBmaWx0
ZXIgdGhlIHJlY29yZGVkCisgICAgLy8gR2V0QnlTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUg
Y29uc3RhbnQgZm9sZGVyIGFsc28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgYWRkVG9HcmFw
aChGaWx0ZXJHZXRCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMoKS5hZGRHZXRCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBi
YXNlKTsKKworICAgIEFTU0VSVChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAg
IEdldEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsKKworICAgIE5vZGUqIGxv
YWRlZFZhbHVlID0gbG9hZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJp
YW50KTsKKyAgICBpZiAoIWxvYWRlZFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgbV9ncmFwaC5j
b21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgaWYgKCF2YXJpYW50
LmNhbGxMaW5rU3RhdHVzKCkgJiYgdmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYykg
eworICAgICAgICBzZXQoZGVzdGluYXRpb24sIGxvYWRlZFZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwg
Tm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9k
ZSBlY21hTW9kZSkKQEAgLTYxNjcsNiArNjI1NCw0MSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0
X3NldHRlcl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9nZXRfcHJpdmF0
ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOworICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVy
dHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29sIGRpZENvbXBp
bGVBc0dldEJ5SWQgPSBmYWxzZTsKKworICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0
dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
IGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAg
ICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZh
bHVlKSkgeworCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3RhdHVzLnNpbmds
ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikgeworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlm
aWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96
ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkp
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZv
KGZyb3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUhhbmRsZUdl
dFByaXZhdGVOYW1lKGJ5dGVjb2RlLm1fZHN0LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCBnZXRCeVN0YXR1cykpCisgICAgICAgICAgICAgICAgICAgICAgICBkaWRDb21waWxl
QXNHZXRCeUlkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghZGlkQ29tcGlsZUFzR2V0QnlJZCkgeworICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJbmZvKHBy
ZWRpY3Rpb24pLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIG5vZGUpOworICAgICAg
ICAgICAgICAgIGlmIChnZXRCeVN0YXR1cy5vYnNlcnZlZFN0cnVjdHVyZVN0dWJJbmZvU2xvd1Bh
dGgoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Nsb3dHZXRCeVZhbC5hZGQobm9k
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfcHJpdmF0
ZV9uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5X2lkOiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+
KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDg1MjAwZDVkYWYxZGVl
OGU5MGZlODE0MWRiYjFjY2JkOWI1MzM3ZWUuLmIyNDBjNGRmMTU4NDgyMmI0YWNkYjQ2MDk1MTUz
M2NiMmYxNWQ4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC02NjYsNiArNjY2LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFB1
dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1
dFNldHRlckJ5VmFsOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBEZWZpbmVE
YXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2Ug
RGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA3
M2M3OGUzNzViOTg5ZWVkZTFmYmNiZmQxM2ZkNDZkN2VkMGYyZTIwLi4wODk3MTZkY2RhYmU5Zjky
NmU0MTg1ODcwMTA5ZWUwNmIxMmVjYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNl
dHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIEdldFByaXZhdGVO
YW1lOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBj
YXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCA5MGU5YjEzNGVlYTAyMTg5NzQzY2YxNDFhN2Q5YTZmMmU3MTZiMDQzLi5hZTk5
NTAyOWIyMmQxYTQyY2M2ODMwMGQ5OTQyMzY0ZDg2NTdkZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI3NDcsNiArMjc0Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAg
ICAgICBjYXNlIFR5cGVPZjoKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKICAgICAgICAg
Y2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAg
ICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAppbmRleCBkZDBkMTJkYWY4ZDlhMTljNDE4YTBkYzNkNDkxY2NiNzAwNDRhZWY3Li45YzJjMjFj
ZmViNTBlNTM0ZDYwOWE5NzJjM2Q5OWY3NDQwMzgwMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaApAQCAtMTc2Niw2ICsxNzY2LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFRy
eUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxX
aXRoVGhpczoKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKICAgICAgICAgY2FzZSBDYWxs
OgogICAgICAgICBjYXNlIERpcmVjdENhbGw6CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVk
Q2FsbGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGUyYzQ4
YWVlNWYwZGE5MjhiYTk0MDU4ZTE0MWMzZTVlZDdjZTQ1NmYuLjA1NDU5ZGNjZWZlODQ3OWYwOGQ1
YmExZGVlZDI5MmE0ZWNiMTBiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTIzOSw2ICsyMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKENoZWNrQXJyYXksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhDaGVja0FycmF5T3JFbXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldFBy
aXZhdGVOYW1lLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgLyogVGhp
cyBjaGVja3MgaWYgdGhlIGVkZ2UgaXMgYSB0eXBlZCBhcnJheSBhbmQgaWYgaXQgaXMgbmV1dGVy
ZWQuICovIFwKICAgICBtYWNybyhDaGVja05ldXRlcmVkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oQXJyYXlpZnksIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKaW5kZXggNzEwM2Y5ZGI5MGJkYjdmMzUwNWZkYzEyMzQ5ZDJiZmQ3NmQ0ZjJmMS4uZGJiYWYx
OTUzMDAwZTc3Y2EwNzExZjU5MDZjOWExMzdiNjhkYTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTg3NSw2ICs4NzUsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6
CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeU9mZnNl
dDoKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKICAgICAgICAgY2FzZSBNdWx0aUdldEJ5
T2Zmc2V0OgogICAgICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgogICAgICAgICBjYXNlIENhbGw6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDA0
MGQzZjNjYzhkNGI0MTk3NzJjOWExYWQ2OGI2ZTRiZDkyMzc5MWYuLjUyOTUzMGUyYmIyYzBlZWJi
MWNiZjg5Y2ViMDdlZTBhMDUwZWRhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjUsNiArNTI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29s
IGlnbm8KICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJC
eVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6
CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclBy
b3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDZlYzllMDQ3NmRlMWIxZjUyY2JlY2Y4ZTUz
OTBkMDQ2MDhkMzJlYzkuLjhlYmFjMDJlNzk1ZGNkNmY2ZjFlMTZjNTgxZGM0NWJiNTRhMWE3ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0zNDY1LDYgKzM0NjUsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsRm9yT2JqZWN0V2l0aFN5bWJvbChOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2
YXRlTmFtZShOb2RlKiBub2RlKQoreworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9n
cmFwaC5jaGlsZChub2RlLCAwKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywg
bV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CisgICAgYXV0byBiYXNlR1BSID0gYmFzZS5qc1ZhbHVl
UmVncygpOworICAgIGF1dG8gcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOwor
CisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiBub2RlLCBFZGdlJiBjaGls
ZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGFyZzEodGhpcywgY2hpbGQxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAppbmRleCA2NjI1ZDYzOTZhNWVlZGVhZmVkNTZjNjQwZmE4NzlmYzRl
MTFjY2E3Li44N2Y2OGJkMGI2ZGJkMmE4NzIyZGI3Y2Q3MWZiMTM5YjFlZDgzZWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMjgyLDcg
KzEyODIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRGlyZWN0QXJn
dW1lbnRzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRz
KE5vZGUqKTsKLSAgICAKKworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqKTsK
KwogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTa2lw
U2NvcGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbE9iamVjdChOb2RlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCA4YTk1ZGY1NTI4NDZhYTY0ZGJmZTNhNjRjNmMzNzUzNGFiODQ5MTQwLi4yMjI0
NTdmNzBiYWI3NzAwMGVhYjRhY2FjZWU1NWViMDEyMGE4Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIyNDcs
NiArMjI0NywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6IHsKKyAgICAg
ICAgY29tcGlsZUdldFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBjYXNlIEdldEJ5VmFsOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCku
dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCA1MGYyY2QwZjNkY2EwNmNmYjVlYTZjZGZhOWQ3YTk4YmVjZTgxMjlmLi5kNTM4YjE2NmVl
Mzc0NDE1ZGZkYWVkYjQ5Njc5ZTk0ZTI5YTc3NTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI2MjMsNiArMjYyMywxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgY29tcGlsZUdl
dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdl
dEJ5VmFsOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgQXJyYXk6OkFueVR5cGVkQXJyYXk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggOTZhN2YxNjQxNDYwYTUyZTgyNmU1Yzkz
N2NmY2Q4NTRkMzliZDQyZS4uZWI4MGNlOTE1NDk5ZDM5MTk5MmIyNDQ2ZTM0ZDI5NWExYWU0NDYy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMzkzLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0
OgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgog
ICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoK
ICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMWZhNjliYTJiMjY0MGRhMDk5YWE4N2U3NmQ3MDk4NjVl
MDIyYmY0NC4uMzAyNjdjZDJjNzkxMTI5MWQ3MGJhNjVkMzM5ZDhiZDBkMDUyMGRlMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMjYwLDcgKzIy
NjAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRGaWVsZE5hbWUpOwogCi0gICAgc3R1YkluZm8tPnRv
b2tTbG93UGF0aCA9IHRydWU7CisgICAgaWYgKHN0dWJJbmZvKQorICAgICAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJp
dmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lVmFs
dWUpKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZWU2NmQ4Y2Q0ODc5ZmIwZTM3OGY4ZjI0NDQzZGU5OGVhYTk3NmI4MC4uYTFjZDY1
YWVlY2E4ZTU2ZGMzYzA2MmQwMTBkYmU4NjdiNTQ4NTBjNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMTMgKzEsMTcgQEAKIDIwMjAt
MDctMjggIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAotICAgICAgICBbSlND
XSBhZGQgSUMgc3VwcG9ydCBmb3Igb3BfZ2V0X3ByaXZhdGVfbmFtZQotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ1CisgICAgICAgIFtKU0NdIHN1
cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDg2MQogCi0gICAgICAgIFJldmlld2VkIGJ5IFNh
YW0gQmFyYXRpLgorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAotICAgICAg
ICBBZGQgYSBjcmFzaHRlc3QgZm9yIGEgY3Jhc2ggaW4gYW4gZWFybGllciBlZGl0aW9uIG9mIHRo
ZSBHUE4gSUMgcGF0Y2guCisgICAgICAgIEFkZCBhIGNyYXNodGVzdCBmb3IgYSBjcmFzaCBpbiBh
biBlYXJsaWVyIGVkaXRpb24gb2YgdGhlIEdQTiBJQyBwYXRjaCwgYW5kCisgICAgICAgIGEgcmVn
cmVzc2lvbiB0ZXN0IGZvciBhIGJ1ZyBmb3VuZCBieSBDYWlvLgogCi0gICAgICAgICogc3RyZXNz
L2dldC1wcml2YXRlLW5hbWUtY2FjaGUtZmFpbHVyZS5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL2dldC1wcml2YXRlLW5hbWUtZGZnLW11bHRpLWlubGluZS5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtZGZnLW11bHRpLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1kZmctc2luZ2xlLXN0cnVjdHVyZXMuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWRmZy1zaW5nbGUuanM6IEFkZGVk
LgogCiAyMDIwLTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtZGZnLW11bHRpLWlubGlu
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtZGZnLW11bHRpLWlubGluZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MWE0Mjg2ZWVlNGMxZGVhYzNlNGYxZjFmODE4MTBiM2M0ZmFiNmI5Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1kZmctbXVs
dGktaW5saW5lLmpzCkBAIC0wLDAgKzEsNjEgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQor
CitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhy
b3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3Qu
YXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2Vy
dChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7
YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7Cisg
ICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBl
ID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwg
YGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7Cisg
ICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93
LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCisKK2Z1bmN0aW9u
IGZhY3RvcnkodmFsdWUpIHsKKyAgcmV0dXJuIGNsYXNzIHsKKyAgICAjcHJpdmF0ZSA9IHZhbHVl
OworCisgICAgZ2V0UHJpdmF0ZSgpIHsKKyAgICAgIHJldHVybiB0aGlzLiNwcml2YXRlOworICAg
IH0KKyAgfTsKK30KKworbGV0IEMxID0gZmFjdG9yeSgicHJpdmF0ZSIpOworbGV0IEMyID0gZmFj
dG9yeSgxMjMpOworbm9JbmxpbmUoQzEuY29uc3RydWN0b3IpOworbm9ERkcoQzEuY29uc3RydWN0
b3IpOworbm9GVEwoQzEuY29uc3RydWN0b3IpOworbm9GVEwoQzEucHJvdG90eXBlLmdldFByaXZh
dGUpOworbm9JbmxpbmUoQzEucHJvdG90eXBlLmdldFByaXZhdGUpOworbm9JbmxpbmUoQzIuY29u
c3RydWN0b3IpOworbm9ERkcoQzIuY29uc3RydWN0b3IpOworbm9GVEwoQzIuY29uc3RydWN0b3Ip
Oworbm9GVEwoQzIucHJvdG90eXBlLmdldFByaXZhdGUpOworbm9JbmxpbmUoQzIucHJvdG90eXBl
LmdldFByaXZhdGUpOworCitsZXQgYSA9IG5ldyBDMTsKK2xldCBiID0gbmV3IEMyOworbGV0IGFG
dW5jID0gYS5nZXRQcml2YXRlOworbGV0IGJGdW5jID0gYi5nZXRQcml2YXRlOworZnVuY3Rpb24g
dGVzdChzaG91bGRUaHJvdykgeworICBhc3NlcnQuZXF1YWxzKGEuZ2V0UHJpdmF0ZSgpLCAicHJp
dmF0ZSIpOworICBhc3NlcnQuZXF1YWxzKGIuZ2V0UHJpdmF0ZSgpLCAxMjMpOworfQorbm9Jbmxp
bmUodGVzdCk7CitsZXQgbWF4VHJ5Q291bnQgPSA4MDAwOword2hpbGUgKG51bWJlck9mREZHQ29t
cGlsZXMoYUZ1bmMpIDwgMSAmJiBudW1iZXJPZkRGR0NvbXBpbGVzKGJGdW5jKSA8IDEgJiYgbWF4
VHJ5Q291bnQtLSkgeworICAgIHRlc3QoKTsKKyAgICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKGFG
dW5jKTsKK30KK2Fzc2VydChtYXhUcnlDb3VudCA+IDAsICJzaG91bGQgaGF2ZSB0cmlnZ2VyZWQg
b3B0aW1pemF0aW9uIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1u
YW1lLWRmZy1tdWx0aS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtZGZnLW11
bHRpLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIxNmJiNzQzMWMzZWEwYjhlN2Y3NTdjMGVmZDNmMDRhMmZhYmQ1
ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWRm
Zy1tdWx0aS5qcwpAQCAtMCwwICsxLDYzIEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vu
c3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKwor
ZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93
IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFz
c2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQo
YWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2Fj
dHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAg
ICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBl
eHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywg
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworZnVuY3Rpb24gZmFj
dG9yeSh2YWx1ZSkgeworICByZXR1cm4gY2xhc3MgeworICAgICNwcml2YXRlID0gdmFsdWU7CisK
KyAgICBnZXRQcml2YXRlKCkgeworICAgICAgcmV0dXJuIHRoaXMuI3ByaXZhdGU7CisgICAgfQor
ICB9OworfQorCitsZXQgQzEgPSBmYWN0b3J5KCJwcml2YXRlIik7CitsZXQgQzIgPSBmYWN0b3J5
KDEyMyk7Citub0lubGluZShDMS5jb25zdHJ1Y3Rvcik7Citub0RGRyhDMS5jb25zdHJ1Y3Rvcik7
Citub0ZUTChDMS5jb25zdHJ1Y3Rvcik7Citub0ZUTChDMS5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7
Citub0lubGluZShDMi5jb25zdHJ1Y3Rvcik7Citub0RGRyhDMi5jb25zdHJ1Y3Rvcik7Citub0ZU
TChDMi5jb25zdHJ1Y3Rvcik7Citub0ZUTChDMi5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xl
dCBhID0gbmV3IEMxOworbGV0IGIgPSBuZXcgQzI7CitmdW5jdGlvbiB0ZXN0KHNob3VsZFRocm93
KSB7CisgIGFzc2VydC5lcXVhbHMoYS5nZXRQcml2YXRlKCksICJwcml2YXRlIik7CisgIGFzc2Vy
dC5lcXVhbHMoYi5nZXRQcml2YXRlKCksIDEyMyk7CisgIGlmIChzaG91bGRUaHJvdykKKyAgICBy
ZXR1cm4gYS5nZXRQcml2YXRlLmNhbGwoe30pOworfQorbm9JbmxpbmUodGVzdCk7CitsZXQgbWF4
VHJ5Q291bnQgPSA4MDAwOword2hpbGUgKG51bWJlck9mREZHQ29tcGlsZXModGVzdCkgPCAxICYm
IG1heFRyeUNvdW50LS0pIHsKKyAgICB0ZXN0KCk7CisgICAgb3B0aW1pemVOZXh0SW52b2NhdGlv
bih0ZXN0KTsKK30KK2Fzc2VydChtYXhUcnlDb3VudCA+IDAsICJzaG91bGQgaGF2ZSBvcHRpbWl6
ZWQiKTsKKworbWF4VHJ5Q291bnQgPSA1MDA7Cit3aGlsZSAoIXJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudCh0ZXN0KSAmJiBtYXhUcnlDb3VudC0tKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdGVz
dCh0cnVlKSwgVHlwZUVycm9yKTsKK2Fzc2VydChtYXhUcnlDb3VudCA+IDAsICJzaG91bGQgaGF2
ZSByZW9wdGltaXplZCIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUt
bmFtZS1kZmctc2luZ2xlLXN0cnVjdHVyZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0
ZS1uYW1lLWRmZy1zaW5nbGUtc3RydWN0dXJlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTI1YzQwZTUyYWFm
NGNjNjBkNTgzODMyZTA4MzUwNmNhMWU5N2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1kZmctc2luZ2xlLXN0cnVjdHVyZXMuanMKQEAgLTAsMCAr
MSw1NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nTGlzdFNpemU9MiIpCisKKy8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgcHJvYmxlbSBm
b3VuZCBieSBDYWlvIExpbWEgaW4gcmV2aWV3IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0ODYxI2MzKQorZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsK
KyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHtt
ZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7
ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJv
clR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUg
aW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1l
fSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFs
c2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOwor
ICB9Cit9KTsKKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgI2ZpZWxkID0gdGhpcy5pbml0
KCk7CisgIGluaXQoKSB7CisgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKyAgICBs
ZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICB0aGlzW2tleV0gPSBpOworICAgIGlmIChrZXkgPT09
ICJwMiIpCisgICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICBpZiAoa2V5ID09PSAicDMiKSB7Cisg
ICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICAgIHRoaXNbInAyIl0gPSBpOworICAgIH0KKyAgICBy
ZXR1cm4gJ3ByaXZhdGUnOworICB9CisgIGdldEZpZWxkKCkgeyByZXR1cm4gdGhpcy4jZmllbGQ7
IH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKK2xldCBjMSA9IG5ldyBDOworaSsrOworbGV0IGMyID0gbmV3IEM7CitpKys7
CitsZXQgYzMgPSBuZXcgQzsKKworbGV0IGFyciA9IFtjMSwgYzIsIGMzXTsKKworZm9yICg7IGkg
PCAxMDAwMDsgaSsrKSB7CisgIGlmIChpID4gNTAwMCkKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+
IEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwoe30pLCBUeXBlRXJyb3IpOworICBlbHNlCisgICAg
YXJyW2kgJSAzXS5nZXRGaWVsZCgpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0
LXByaXZhdGUtbmFtZS1kZmctc2luZ2xlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUt
bmFtZS1kZmctc2luZ2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxYzI0NWMwYTQzMGVjMDlhZTlhMGRiMzhl
MzAzZDNlMjFiOThhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJp
dmF0ZS1uYW1lLWRmZy1zaW5nbGUuanMKQEAgLTAsMCArMSw1MiBAQAorLy9AcmVxdWlyZU9wdGlv
bnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhw
cikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsK
K30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7Cisg
ICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVv
ZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2Yg
ZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3
ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0
ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisK
KworY2xhc3MgQyB7CisgICAgI3ByaXZhdGUgPSAicHJpdmF0ZSIKKworICAgIGdldFByaXZhdGUo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNwcml2YXRlOworICAgIH0KK307CisKK25vSW5saW5l
KEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNvbnN0cnVj
dG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworbm9JbmxpbmUoQy5wcm90b3R5
cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBjID0gbmV3IEM7CisKK3doaWxlIChudW1iZXJPZkRGR0Nv
bXBpbGVzKGMuZ2V0UHJpdmF0ZSkgPCAxKSB7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldFByaXZh
dGUoKSwgInByaXZhdGUiKTsKKyAgICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKEMucHJvdG90eXBl
LmdldFByaXZhdGUpOworfQorCisvLyBDaGVjayB0aGF0IEdldEJ5SWQgcmVkdWN0aW9uIGJhaWxz
IG91dAord2hpbGUgKCFyZW9wdGltaXphdGlvblJldHJ5Q291bnQoYy5nZXRQcml2YXRlKSkKKyAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IGMuZ2V0UHJpdmF0ZS5jYWxsKHt9KSwgVHlwZUVycm9yKTsK
Kword2hpbGUgKG51bWJlck9mREZHQ29tcGlsZXMoYy5nZXRQcml2YXRlKSA8IDIpIHsKKyAgICBh
c3NlcnQuZXF1YWxzKGMuZ2V0UHJpdmF0ZSgpLCAicHJpdmF0ZSIpOworICAgIG9wdGltaXplTmV4
dEludm9jYXRpb24oQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407619</attachid>
            <date>2020-08-31 13:26:42 -0700</date>
            <delta_ts>2020-09-01 13:48:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20200831162642.patch</filename>
            <type>text/plain</type>
            <size>43638</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWMyYjZkMGJmMDY0NTNkNjRiZjQ1M2M5MTUyYjZiZWUyMTdiOWZiLi40YjE2ZWUwOTViODZkYjk5
ZTQzMGJiNzk3YjYwNmI0OWE0MzY0N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMC0wOC0zMSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDg2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgREZHL0ZU
TCBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1lLgorCisgICAgICAgIER1cmluZyBERkcg
Ynl0ZWNvZGUgcGFyc2luZywgd2Ugd2lsbCBhdHRlbXB0LCBpZiBkZWVtZWQgcG9zc2libGUgYnkK
KyAgICAgICAgdGhlIGluZm9ybWF0aW9uIGF2YWlsYWJsZSwgdG8gb3V0cHV0IGEgR2V0QnlPZmZz
ZXQgb3BlcmF0aW9uLiBJZiBhCisgICAgICAgIHNpbmdsZSBwcml2YXRlIGZpZWxkIGlkZW50aWZp
ZXIgaXMgdXNlZCBpbiBhbGwgY2FzZXMgKHRoZSBjb21tb24gY2FzZSksCisgICAgICAgIGJ1dCB0
aGVyZSBhcmUgdG9vIG1hbnkgc3RydWN0dXJlIHZhcmlhbnRzLCBhIEdldFByaXZhdGVOYW1lQnlJ
ZAorICAgICAgICBvcGVyYXRpb24gaXMgZW1pdHRlZCBpbnN0ZWFkLiBGYWlsaW5nIHRoYXQsIHRo
ZSBHZXRQcml2YXRlTmFtZQorICAgICAgICBvcGVyYXRpb24gaXMgcHJvZHVjZWQgKHdoaWNoIGlu
IGFsbCB0aWVycyByZXN1bHRzIGluIGEgY2FsbCB0byBhIEMKKyAgICAgICAgZnVuY3Rpb24gdG8g
cGVyZm9ybSB0aGUgb3BlcmF0aW9uKS4KKworICAgICAgICBJbiBGVEwsIEdldFByaXZhdGVOYW1l
QnlJRCBjYW4gYmUgcmVkdWNlZCB0byBbTXVsdGldR2V0QnlPZmZzZXQgaW4gdGhlCisgICAgICAg
IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLCBvciBhIEdldEJ5SUQgSUMgd2hlbiBsb3dlcmluZyB0
byBCMy4KKworICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ0dl
dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRG
dW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFt
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6
ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
ICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmNvbnZlcnRUb0dldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojpjb252ZXJ0VG9NdWx0aUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNDYWNoZWFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFw
UHJlZGljdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKiBqaXQvSUNTdGF0cy5oOgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0UHJpdmF0ZU5h
bWUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisKIDIwMjAtMDgtMzEgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBTdHJ1Y3R1cmVT
dHViSW5mbyAvIENhbGxMaW5rSW5mbyAvIEJ5VmFsSW5mbyBzaG91bGQgc2V0IENvZGVPcmlnaW4g
b3IgQnl0ZWNvZGVJbmRleCBhdCBjb25zdHJ1Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IDE1ODAyMWYzOTkyM2YyYzAyNTliY2I4
ZmVkYzg1NGJlNmIzNzVlYzIuLjQyNDg2YzE2NWNiODdkYzIzZWRjNTlmYjZiMjg3MDA2ZmI1NGJm
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNw
cApAQCAtMTA4LDYgKzEwOCw5IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRlRnJv
bUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJbmRlCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFtZToKKyAgICAgICAgcmV0
dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKwogICAgIGRlZmF1bHQ6IHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1
cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDYwNDhjZDA0MjhlOTM3ZDRkMzM0MDM5
NjMwMzQ3YzlkOWI3MmUxNjUuLjg5ZGY0ZDdiMTI4Y2NiYzA0OTZkMTVlZGQ2MjY2Y2ZlN2QyMjhj
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCkBAIC00MDQsNiArNDA0LDggQEAgaW5saW5lIGF1dG8gYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlJZEZ1bmN0aW9uKEFjY2Vzc1R5cGUgdHlwZSkgLT4gZGVjbHR5cGUoJm8KICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKICAgICBjYXNlIEFjY2Vz
c1R5cGU6OkdldEJ5SWREaXJlY3Q6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkRGly
ZWN0T3B0aW1pemU7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToKKyAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplOwogICAgIGNhc2Ug
QWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDIwLDYgKzQyMiw4IEBAIGlubGluZSBhdXRvIGFwcHJvcHJp
YXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbihBY2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZv
cGVyCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYzsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Q6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRC
eUlkRGlyZWN0R2VuZXJpYzsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgor
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYzsKICAgICBj
YXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBkOTAyZjIwNzJiNjE2
MzZkYWFmY2NkZDZjNDM0ZTQxYTNiMTUzZmVkLi4zYzBmNzIxMTJjZWI1ZGQ4NTYwMGQ3NTM0Yjg5
MjI4NDJlZjc4YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMzQ4LDYgKzMzNDgsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2Fz
ZSBHZXRCeUlkRGlyZWN0OgogICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgogICAgIGNhc2Ug
R2V0QnlJZDoKQEAgLTMzODMsNiArMzM4NCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgY2Fz
ZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBj
bG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggMjEyMmFhNDk1ZGE3NDNjZGQ1ZWZjMmQ0YWNhYjc2MDQzYmYzM2Ni
OS4uYTQ5ODg1NWI3OTllNDU3YWZhYzU4ZmZlM2NjOGIxYWZjZDgyZDNlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI0Niw2ICsy
NDYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VHZXRCeUlkKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVz
dGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVy
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cywgQWNjZXNzVHlwZSwgQnl0
ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpOworICAgIHZvaWQgaGFuZGxlR2V0UHJpdmF0ZU5hbWUo
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgR2V0QnlTdGF0dXMpOwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCiAgICAgICAg
IE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0
QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlKTsKICAgICB2b2lkIGhhbmRsZVB1
dEJ5SWQoCkBAIC00NzI1LDYgKzQ3MjcsOTkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
R2V0QnlJZCgKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCByZWdpc3Rl
ck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlvbik7CiB9CiAKKy8v
IEEgdmFyaWFudCBvbiBoYW5kbGVHZXRCeUlkIHdoaWNoIGlzIG1vcmUgbGltaXRlZCBpbiBzY29w
ZQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWUoCisgICAgVmlydHVh
bFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBi
YXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzKSB7CisgICAgLy8gQXR0ZW1wdCB0byByZWR1
Y2UgdGhlIHNldCBvZiB0aGluZ3MgaW4gdGhlIEdldEJ5U3RhdHVzLgorICAgIGlmIChiYXNlLT5v
cCgpID09IE5ld09iamVjdCkgeworICAgICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9jdXJyZW50QmxvY2stPnNpemUoKTsgaS0tOykgeworICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKKyAgICAgICAgICAgIGlmIChu
b2RlID09IGJhc2UpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAod3Jp
dGVzT3ZlcmxhcChtX2dyYXBoLCBub2RlLCBKU0NlbGxfc3RydWN0dXJlSUQpKSB7CisgICAgICAg
ICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBpZiAob2spCisgICAgICAgICAgICBnZXRCeVN0YXR1cy5m
aWx0ZXIoYmFzZS0+c3RydWN0dXJlKCkuZ2V0KCkpOworICAgIH0KKworICAgIEFTU0VSVCghZ2V0
QnlTdGF0dXMuaXNDdXN0b20oKSk7CisgICAgQVNTRVJUKCFnZXRCeVN0YXR1cy5tYWtlc0NhbGxz
KCkpOworICAgIGlmICghZ2V0QnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVt
VmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBz
ZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJ
ZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChnZXRCeVN0YXR1cy5udW1WYXJp
YW50cygpID4gMSkgeworICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAg
ICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAg
ICAgICAgIHx8IGdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgc2V0KGRlc3RpbmF0
aW9uLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcElu
Zm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJH
ZXRCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRH
ZXRCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKwor
ICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOworCisgICAgICAg
IC8vIDEpIEVtaXQgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRo
aXMgY291bGQgc29ydCBvZiBtYXliZSBub3QgYmUKKyAgICAgICAgLy8gICAgb3B0aW1hbCwgaWYg
dGhlcmUgaXMgc29tZSByYXJlbHkgZXhlY3V0ZWQgY2FzZSBpbiB0aGUgY2hhaW4gdGhhdCByZXF1
aXJlcyBhIGxvdAorICAgICAgICAvLyAgICBvZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBhcmUg
bm90IHdhdGNocG9pbnRhYmxlLgorICAgICAgICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2
YXJpYW50IDogZ2V0QnlTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKHZh
cmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpOworCisgICAgICAgICAgICBHZXRCeU9m
ZnNldE1ldGhvZCBtZXRob2QgPSB2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKQorICAg
ICAgICAgICAgICAgID8gR2V0QnlPZmZzZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZzZXQoKSkK
KyAgICAgICAgICAgICAgICA6IHBsYW5Mb2FkKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpOworCisg
ICAgICAgICAgICBpZiAoIW1ldGhvZCkgeworICAgICAgICAgICAgICAgIHNldChkZXN0aW5hdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2YXRlTmFtZUJ5SWQsIE9w
SW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBudWxscHRyKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNl
cy5hcHBlbmQoTXVsdGlHZXRCeU9mZnNldENhc2UoKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZh
cmlhbnQuc3RydWN0dXJlU2V0KCkpLCBtZXRob2QpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5j
b21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgICAgIC8vIDIpIEVt
aXQgYSBNdWx0aUdldEJ5T2Zmc2V0CisgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRh
ID0gbV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRhLT5j
YXNlcyA9IGNhc2VzOworICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmll
ck51bWJlcjsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFw
aChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFz
ZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0
aGUgR2V0QnlTdGF0dXMgZm9yIGFueXRoaW5nIHRoZW4gd2Ugc2hvdWxkIHJlY29yZCBpdCBhbmQg
aW5zZXJ0IGEgbm9kZQorICAgIC8vIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSAobGlrZSB0aGUgR2V0
QnlPZmZzZXQgb3Igd2hhdGV2ZXIpIHRoYXQgd2lsbCBmaWx0ZXIgdGhlIHJlY29yZGVkCisgICAg
Ly8gR2V0QnlTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29uc3RhbnQgZm9sZGVyIGFsc28g
bmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeVN0YXR1cywg
T3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRCeVN0YXR1cyhj
dXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAgIEFTU0VSVChn
ZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgIEdldEJ5SWRWYXJpYW50IHZhcmlh
bnQgPSBnZXRCeVN0YXR1c1swXTsKKworICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChwcmVk
aWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKKyAgICBpZiAoIWxvYWRl
ZFZhbHVlKSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0
aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgIG1fZ3JhcGguY29tcGls
YXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKworICAgIGlmICghdmFyaWFudC5jYWxs
TGlua1N0YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpCisgICAg
ICAgIHNldChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwg
Tm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9k
ZSBlY21hTW9kZSkKQEAgLTYxODQsNiArNjI3OSw0MyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0
X3NldHRlcl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9nZXRfcHJpdmF0
ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOworICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVy
dHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29sIGNvbXBpbGVT
aW5nbGVJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5
U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0
YWNrLCBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IDA7CisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgewor
CisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3RhdHVzLnNpbmdsZUlkZW50aWZp
ZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVu
dGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNT
eW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0g
bV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5
KTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZVNpbmdsZUlkZW50aWZpZXIgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbXBp
bGVTaW5nbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGhhbmRsZUdldFByaXZhdGVOYW1l
KGJ5dGVjb2RlLm1fZHN0LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVy
TnVtYmVyLCBnZXRCeVN0YXR1cyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChHZXRQcml2YXRlTmFtZSwgT3BJbmZvKCksIE9wSW5m
byhwcmVkaWN0aW9uKSwgYmFzZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBub2RlKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZ2V0QnlTdGF0dXMub2JzZXJ2ZWRTdHJ1Y3R1cmVTdHViSW5mb1Ns
b3dQYXRoKCkpCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zbG93R2V0QnlWYWwuYWRk
KG5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3By
aXZhdGVfbmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlbF9ieV9pZDogewog
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxC
eUlkPigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NWM2MDk2ODAz
ZDViMTcxYTI0NTI3NDdkYzg4MDQ3NTVjNDEzOWNhLi5hYmNiMGJhMjE0ZjFhYjQ1MjBlODc1ZGYy
ZTg3ZjUyYmYwN2I1MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaApAQCAtNjcwLDYgKzY3MCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2Fz
ZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2Fz
ZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2Ug
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmlu
ZGV4IDVlMmJkOWM5NWUwODJiMjgwM2NmYjlkOTAzYjk1NjI3M2Q4ZmUzMjkuLjMyMmVmMzIzNmJi
MTk0YzNjZGU1YWVkMTk2NWMzZGVmNzg3MTIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC01OTksNyArNTk5
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdDoKICAgICAgICAg
ICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgogICAgICAgICAgICAgY2FzZSBHZXRCeUlkOgot
ICAgICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKKyAgICAgICAgICAgIGNhc2UgR2V0QnlJ
ZEZsdXNoOgorICAgICAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6IHsKICAgICAgICAg
ICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgICAg
IE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUoKTsKICAgICAgICAgICAgICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDE4Yjg4Mzk2OWI2OTBmMTNm
NmZmYmZiN2Q3NTZiYjNjYTIyMDhjNzkuLjM4YzU3M2IyNjNkZjE4ZmMwNGZkNTg4NzA0Yjc2YzZj
YjFlYWRlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMy
MSw2ICszMjEsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKICAgICBj
YXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBH
ZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNlIFB1dFRvQXJn
dW1lbnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGI2YzBiYjhiYTk5MGZmZjM1YzAwM2M4NjAxN2VlMDY3
MzQxMGUwMzguLmNjNjczZTVjMTNmYjkwOWY4NTc4YmU2MGZjM2JkOTNlYjA5MTI1ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjc2Miw2ICsy
NzYyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGNhc2UgQm90
dG9tVmFsdWU6CiAgICAgICAgIGNhc2UgVHlwZU9mOgorICAgICAgICBjYXNlIEdldFByaXZhdGVO
YW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBQdXRC
eUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2Fz
ZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBh
NWNkZjFhYTZmM2QyZDliMWU4NmVkNWJkMjMxOGI2MmQ2YWM4ZWU5Li4xNmRlMzczMzA0MDlhMGEw
NjRlOTZjM2E3MGUwYzcxMWE1YjFiMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aApAQCAtNTk2LDcgKzU5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0dl
dEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFz
ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRC
eUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVj
dEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CisgICAgICAgIEFTU0VSVChtX29w
ID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGly
ZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0gR2V0UHJpdmF0ZU5h
bWVCeUlkIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CiAgICAgICAgIG1fb3BJbmZvID0g
JmRhdGE7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShzdG9yYWdlKTsKICAgICAgICAgY2hp
bGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQoTXVsdGlHZXRCeU9mZnNldERhdGEq
IGRhdGEpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX29wID09IEdldEJ5SWQgfHwg
bV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0g
R2V0QnlJZERpcmVjdEZsdXNoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcCA9PSBHZXRC
eUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdCB8fCBt
X29wID09IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29wID09IEdldFByaXZhdGVOYW1lQnlJZCk7
CiAgICAgICAgIG1fb3BJbmZvID0gZGF0YTsKICAgICAgICAgY2hpbGQxKCkuc2V0VXNlS2luZChD
ZWxsVXNlKTsKICAgICAgICAgbV9vcCA9IE11bHRpR2V0QnlPZmZzZXQ7CkBAIC0xMDgxLDYgKzEw
ODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBj
YXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgorICAg
ICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgog
ICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpAQCAtMTc2NCw2ICsx
NzY1LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIGNhc2Ug
R2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBH
ZXRQcml2YXRlTmFtZToKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAg
IGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIFRhaWxD
YWxsSW5saW5lZENhbGxlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApp
bmRleCBkNjg4MTVkMzFlMzYwMDM0NDNmMTM1ZDViMzlkY2I1MmNkOTAyMjBlLi5lYzA0MDQxMTcw
ZWY0MDZkYzdlMDRjOTIyNWE2ZjdlYThhOTBiMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCkBAIC0yMzgsNiArMjM4LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHksIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0FycmF5LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQ2hlY2tBcnJheU9yRW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhHZXRQcml2YXRlTmFtZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKEdldFByaXZhdGVOYW1lQnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIC8qIFRoaXMgY2hlY2tzIGlmIHRoZSBlZGdlIGlzIGEgdHlwZWQgYXJyYXkg
YW5kIGlmIGl0IGlzIG5ldXRlcmVkLiAqLyBcCiAgICAgbWFjcm8oQ2hlY2tOZXV0ZXJlZCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFycmF5aWZ5LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDlkM2Y4OWU2NmVhZTY4YzZjZDE1NDNjNzdjNTdm
NTkwZDk3ODc0NzguLmYxZWMzNzJkMTBkMGYyNzYwNjYxMGJmM2Y2YTgyNGJiODA3ZTYxOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC04NzUsNiArODc1LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAg
ICAgIGNhc2UgR2V0QnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAg
ICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZz
ZXQ6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgICAgIGNhc2UgQ2FsbDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYjA3Y2Jh
NzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3ZDFmMWNmNS4uNmE0OGMzODljOTk0MjM2NTU3ZTUx
NTFmNzBmY2JiMWQ4NDVlNzJlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdu
bwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFs
OgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAg
ICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToK
ICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
ZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJiYzFkZTVlZDE1NWFjMC4uYzEyMTNiOWFhODg2ZjY5
MDhmM2I3YjVmNWIwZGU3YjM3M2EyNjQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM0NjgsNiArMzQ2OCw2NSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3ltYm9sKE5vZGUqIG5v
ZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KG5vZGUtPmhhc0NhY2hlYWJsZUlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVH
ZXRQcml2YXRlTmFtZUJ5SWQobm9kZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBt
X2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKyAgICBhdXRvIGJhc2VHUFIgPSBiYXNlLmpzVmFs
dWVSZWdzKCk7CisgICAgYXV0byBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7
CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKworICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNl
LmdwcigpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CisKKyAgICAgICAgYmFzZS51c2UoKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUs
IERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBiYXNlLnVzZSgpOworCisgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3Mp
OworCisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVn
cywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVk
VG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworCisgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAg
ICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZh
bEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQy
LCBFZGdlJiBjaGlsZDMpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJnMSh0aGlzLCBj
aGlsZDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IDFiNjMyMTdlMzZjNzFlYjFlZjBhMzZkODkyYzBlNjFkMjBmZTNlNTIuLjQ2NzllNjU2
Nzk4NjRjODgxZmM3MDQzODNlNjRmM2YwY2M2YTM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEyODIsNyArMTI4MiwxMCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRGlyZWN0QXJndW1lbnRzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKE5vZGUqKTsKLSAgICAK
KworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSopOworCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNraXBTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlR2V0R2xvYmFsT2JqZWN0KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDk3NGU3YTk2YThhYTJlZDI3
MDgxMjVhZjRlMGExYzM2OGY4ZjRkNWEuLjBkMDI3ZDdmMmQzZjQ5NDViYzUwMWY4ZmM5NzM3YTIw
MjU5OTQyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjI0MSw2ICsyMjQxLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDogeworICAg
ICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUo
KS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDI3NzQ4MzJiY2YzNTM4N2MzYjVjMDdkMTNkOGY5ZGY3Y2Q1MGNhZDEuLjM1MmQxYjgz
NGE0NTY1ZWI4YzhhMzQwZTE0NTM4YjE0Zjc5MmU0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjYxNyw2ICsyNjE3LDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZh
dGVOYW1lQnlJZDogeworICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNo
IChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6QW55VHlw
ZWRBcnJheToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCBjODBiMTY4NDRhYWJhY2Q4NTY2OTZkODQ1ZjgxYzNjNmY5NzczOTdhLi4zNzZmOGQ3
OTM0MDE2YTNiZWNlNTVmNDFiYTkyOTYwMGU4Mjk1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTQsNiArMzk0LDggQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhU
aGlzOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5
SWQ6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZWZkY2JiNGViNDZkN2M3NDdmM2Y2Nzlm
ZWFmYjZmZTcxNDIzOGU2Yy4uNGYxYzlmODYzOWFlMTU4MDZkMmM4ODgyOWVlZjM1YTlhNDM4ZDZm
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApA
QCAtOTM4LDYgKzkzOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RG
bHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJl
Y3QpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6Cisg
ICAgICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRQ
cml2YXRlTmFtZUJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluQnlJ
ZDoKICAgICAgICAgICAgIGNvbXBpbGVJbkJ5SWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzkyMiw2ICszOTI4LDQ3IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
ICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVHZXRQcml2YXRlTmFtZSgpCisgICAgeworICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQs
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291
dC5jb25zdEludFB0cigwKSwgYmFzZSwgcHJvcGVydHkpKTsKKyAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxV
c2UpCisgICAgICAgICAgICBzZXRKU1ZhbHVlKGdldEJ5SWQobG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGJhc2VDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgaXNDZWxsKGJhc2Us
IHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoYmFzZUNlbGxDYXNlKSwgdW5z
dXJlKG5vdENlbGxDYXNlKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oYmFzZUNlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CisKKyAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGNlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoZ2V0QnlJZChiYXNlLCBB
Y2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwgY29u
dGludWF0aW9uKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBt
X291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZUJ5SWRHZW5lcmljLAorICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIGJhc2UsCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKSkpOworICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0
LCBjZWxsUmVzdWx0LCBub3RDZWxsUmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2
b2lkIGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggYzhkNDEyOThiOTcwODhi
NjJjN2U3ZTM1ZDI2MGU4ZWUwMmZkNjM0NC4uOTM2OWU5ZDk0NDZkN2ViZjdmZjI2MGJlNDRlNjYz
MzgyNmQyZDIwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTc1LDcgKzc1
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCiAgICAg
bWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRo
R2VuZXJpYykgXAotICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpCisg
ICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSkgXAorICAgIG1hY3JvKE9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0ZjQ1MjRk
YzcyYjRkOTFiNzI5ZWE5NWVjOGQyNjBlYzE4NTY0MmY0Li40Yjk2ZjZiZDhkY2NmNzA5OWNkYTdm
ZTA5OTNhYjg4OGMxMGQzYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTIyMTMsNiArMjIxMywyNCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBK
U1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cgogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKTsKIH0K
IAorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFs
dWUsIElkZW50aWZpZXIgZmllbGROYW1lKQoreworICAgIEFTU0VSVChmaWVsZE5hbWUuaXNQcml2
YXRlTmFtZSgpKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgSlNP
YmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0
T3duUHJvcGVydHkpOworICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZp
ZWxkTmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKKworICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKTsK
K30KKwogZXh0ZXJuICJDIiB7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKQpAQCAtMjIzNCw3ICsyMjUyLDYgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgQVNTRVJUKGZpZWxkTmFtZS5pc1N5bWJvbCgp
KTsKIAogICAgICAgICBKU09iamVjdCogYmFzZSA9IGpzQ2FzdDxKU09iamVjdCo+KGJhc2VWYWx1
ZS5hc0NlbGwoKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAgICAgICAgIGJhc2UtPmdl
dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CkBAIC0yMjYwLDEx
ICsyMjc3LDYyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgZmllbGROYW1l
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CiAKLSAgICBzdHViSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICBpZiAoc3R1YkluZm8pCisgICAgICAgIHN0dWJJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShn
ZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5h
bWVWYWx1ZSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90
IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgYXV0byBmaWVsZE5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKKworICAgIGlmIChiYXNlVmFsdWUuaXNP
YmplY3QoKSkgeworICAgICAgICBKU09iamVjdCogYmFzZSA9IGpzQ2FzdDxKU09iamVjdCo+KGJh
c2VWYWx1ZS5hc0NlbGwoKSk7CisKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICAgICAg
YmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBi
YXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAg
ICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1
ZS5zdHJ1Y3R1cmVPck51bGwodm0pLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hH
ZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90
LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZSkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90
IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBJZGVudGlmaWVyIGZp
ZWxkTmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworCisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpOworCisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRp
b25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZt
KSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJ
bmZvKiBieVZhbEluZm8pCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2NWU3MTI1OTU2ODMw
YTg4M2U4MzMzMDc5NTM5ZTIwNDQyYzA1ZDk0Li5lZDk4ZjgzMDViMzMyNjA4NDI3YTQ2Y2MwNDlm
ZmViODhjMWYyM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aApAQCAtMjc2LDYgKzI3Niw4IEBAIENhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
ZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosCiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0
cl90KSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlKFZNKiwgRW5jb2Rl
ZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5ODVlMTM2MDYw
NDViNGNkYzRiYzY1MmJmMDAwMzMwZTBkYTEwZDVhLi5kMDVlNzQ3OTc5ZGI4YWVjZjJkODdiMmM2
YjdkNWFjMWIwYWUwODhmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTMxICBDYWl0bGluIFBvdHRl
ciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gc3VwcG9ydCBvcF9nZXRfcHJp
dmF0ZV9uYW1lIGluIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1tdWx0aS5q
czogQWRkZWQuCisKIDIwMjAtMDgtMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBAZGVmYXVsdFByb21pc2VUaGVuIGZhc3QgcGF0aCBzaG91bGQg
Y2hlY2sgc3BlY2llcyBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZn
LWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZh
dGUtbmFtZS1ieS1pZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmY1ODBiOWE3ZDVlMWZlYzk1YjMyMzYwNWNi
ZWRhM2I4NGEwMWNiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1w
cml2YXRlLW5hbWUtYnktaWQuanMKQEAgLTAsMCArMSw5OCBAQAorLy9AcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKKy8vIFdpdGggbWFueSBpbmNvbXBhdGlibGUgc3RydWN0dXJlIHZhcmlhbnRzLCB0
aGlzIHRlc3QgY2hlY2tzIHRoZSBHZXRQcml2YXRlTmFtZSBsb3dlcmluZyBpbiBERkcgd2hlbgor
Ly8gcmVkdWNpbmcgdG8gR2V0QnlPZmZzZXQgaXMgbm90IHBvc3NpYmxlLgorCitmdW5jdGlvbiBh
c3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9y
KGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2Vy
dCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09
IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOwor
ICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rp
b24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRv
IHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47
CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCisKK2xldCBiYXNlcyA9IFsKKyAgewor
ICB9LAorICB7CisgICAgYTogMSwKKyAgfSwKKyAgeworICAgIGI6IDEsCisgICAgYTogMiwKKyAg
fSwKKyAgeworICAgIGM6IDEsCisgICAgZDogMiwKKyAgICBhOiAzLAorICB9LAorICB7CisgIH0s
CisgIHsKKyAgICB6OiAxLAorICAgIGE6IDIsCisgICAgYjogMywKKyAgICBxOiA0LAorICB9LAor
ICB7CisgICAgYTogMSwKKyAgICBkOiAyLAorICAgIHo6IDMsCisgICAgeDogNCwKKyAgICBmOiA1
LAorICB9LAorICB7CisgICAgZzogMSwKKyAgICBiOiAyLAorICAgIGQ6IDMsCisgICAgcTogNCwK
KyAgICB4OiA1LAorICAgIGQ6IDYsCisgIH0KK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0
b3IoaSkgeworICAgIGlmIChpIDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30s
IGJhc2VzW2kgJiAzXSk7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJiBi
YXNlcy5sZW5ndGhdKTsKKyAgfQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0
ZSA9ICJwcml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0K
K30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZU
TChDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworbm9Jbmxp
bmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5
cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7CisgIGFzc2VydC5lcXVhbHMoZ2V0
UHJpdmF0ZS5jYWxsKG8pLCAicHJpdmF0ZSIpOworfQorCit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rl
c3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7Citmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICB0ZXN0KG5ldyBDKGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlv
bih0ZXN0KTsKK30KK2Fzc2VydC50aHJvd3MoKCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDM4ZTNkNzJiNWYzMjNkMWFiZTBiNzJjOGE3N2ExOGRiZjE4MjQwMAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5q
cwpAQCAtMCwwICsxLDYzIEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVk
VGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gV2l0aCBu
byBpbmNvbXBhdGlibGUgc3RydWN0dXJlIHZhcmlhbnRzLCBHZXRQcml2YXRlTmFtZSBpcyBjb252
ZXJ0ZWQgdG8gR2V0QnlPZmZzZXQKKy8vIGR1cmluZyBieXRlY29kZSBwYXJzaW5nLiBXZSB0ZXN0
IHRoYXQgaXQncyBzdGlsbCBzZW1hbnRpY2FsbHkgdmFsaWQuCisKK2Z1bmN0aW9uIGFzc2VydChl
eHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2Vy
dGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7Cisg
IGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0
ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisg
IHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisg
ICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cg
JHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2NsYXNzIEMgeworICAjcHJpdmF0ZSA9ICJwcml2
YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KKyAgY29uc3Ry
dWN0b3IoaSkgeworICAgIGlmIChpID09PSA5OTUpCisgICAgICByZXR1cm4ge307CisgIH0KK30K
K25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChD
LmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworbm9JbmxpbmUo
Qy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5cGUu
Z2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7CisgIHJldHVybiBnZXRQcml2YXRlLmNh
bGwobyk7Cit9CituZXZlcklubGluZUZ1bmN0aW9uKHRlc3QpOworCisvLyBXYXJtdXAKK3Rlc3Qo
bmV3IEMsIDApOwordGVzdChuZXcgQywgMCk7Cit0ZXN0KG5ldyBDLCAwKTsKKwordmFyIGk7Citm
b3IgKHZhciBqID0gMDsgaiA8IDI7ICsraikgeworICBhc3NlcnQudGhyb3dzKCgpID0+IHsKKyAg
ICBmb3IgKGkgPSAwOyBpIDwgMjAwMDsgKytpKSB7CisgICAgICBhc3NlcnQuZXF1YWxzKHRlc3Qo
bmV3IEMoaSkpLCAicHJpdmF0ZSIpOworICAgICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0
KTsKKyAgICB9CisgIH0sIFR5cGVFcnJvcik7CisKKyAgLy8gV2Ugc2hvdWxkIHRocm93IG9uIGl0
ZXJhdGlvbiA5OTUsIGJlY2F1c2UgdGhpcyB3aWxsIHJlc3VsdCBpbiBhbiBpbnZhbGlkIGxvYWQu
CisgIGFzc2VydC5lcXVhbHMoaSwgOTk1KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvZnRsLWdldC1w
cml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdjMTc4OTgzZmRlNjQyNjUyZGYzMzgz
YmFhMTY4NzFjM2Y4OTVkMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsMTA3IEBACisvL0ByZXF1aXJlT3B0
aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCisvLyBXaXRoIG1hbnkg
aW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0ZXN0IGNoZWNrcyB0aGUgR2V0
UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJlZHVjaW5nIHRvIEdldEJ5T2Zm
c2V0IGlzIG5vdCBwb3NzaWJsZS4KKy8vIFRoaXMgdGVzdCBkaXNhYmxlcyBpbmxpbmluZyBsb2Fk
cyB0byBHZXRCeU9mZnNldCBpbiBvcmRlciB0byBwcmV2ZW50IHJlZHVjaW5nIHRoZSBHZXRQcml2
YXRlTmFtZUJ5SWQgdG8gTXVsdGlHZXRCeU9mZnNldCBpbiB0aGUKKy8vIERGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLiBJdCBpcyBjb25jZWl2YWJseSBwb3NzaWJsZSBmb3IgdGhpcyBzY2VuYXJpbyB0
byBiZSBlbmNvdW50ZXJlZCB3aXRob3V0IGRpc2FibGluZyBpbmxpbmUgYWNjZXNzLgorCitmdW5j
dGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3
IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWdu
KGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1
YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFs
fWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBm
bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAi
ZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVj
dGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQg
bm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitsZXQgYmFzZXMgPSBbCisg
IHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAgICBiOiAxLAorICAgIGE6IDIs
CisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAgYTogMywKKyAgfSwKKyAgewor
ICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6IDMsCisgICAgcTogNCwKKyAg
fSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAzLAorICAgIHg6IDQsCisgICAg
ZjogNSwKKyAgfSwKKyAgeworICAgIGc6IDEsCisgICAgYjogMiwKKyAgICBkOiAzLAorICAgIHE6
IDQsCisgICAgeDogNSwKKyAgICBkOiA2LAorICB9LAorICB7CisgICAgejogMSwKKyAgICBxOiAy
LAorICAgIGY6IDMsCisgICAgeTogNCwKKyAgICBhOiA1LAorICAgIDA6IDYsCisgICAgazogNywK
KyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoaSkgeworICAgIGlmIChpIDwg
MTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJiAzXSk7CisgICAg
cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJSBiYXNlcy5sZW5ndGhdKTsKKyAgfQor
fQorY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0ZSA9ICJwcml2YXRlIjsKKyAgZ2V0
UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KK30KK25vSW5saW5lKEMuY29uc3Ry
dWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNvbnN0cnVjdG9yKTsKK25v
SW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJv
dG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1YWxz
KGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30KKwordGVzdChuZXcgQygwKSwgMCk7
Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9IDA7
ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwgMTAwMDA7ICsraSkgeworICB0ZXN0KG5ldyBDKGkp
KTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30KK2Fzc2VydC50aHJvd3MoKCkg
PT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0
LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0
LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU3ZDM2NGU1OGNh
MjVlNDVjNjQxYTJjZTVhYmI3YWVhMTU5YzgwNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1tdWx0aS5qcwpAQCAtMCwwICsx
LDg3IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIs
ICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gV2l0aCBtYW55IGluY29tcGF0
aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCB3aWxsIGZhaWwgdG8gZ2VuZXJhdGUg
R2V0QnlPZmZzZXQgZHd1cmluZyBERkdCeXRlQ29kZVBhcnNpbmcuCisvLyBEdXJpbmcgRlRMIGNv
bXBpbGF0aW9uLCBpdCB3aWxsIHRyeSBhZ2FpbiBpbiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS4K
K2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJv
dyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5h
c3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0
KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHth
Y3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAg
ICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUg
PT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBg
ZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3cs
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2xldCBiYXNlcyA9
IFsKKyAgeworICB9LAorICB7CisgICAgYTogMSwKKyAgfSwKKyAgeworICAgIGI6IDEsCisgICAg
YTogMiwKKyAgfSwKKyAgeworICAgIGM6IDEsCisgICAgZDogMiwKKyAgICBhOiAzLAorICB9LAor
ICB7CisgIH0sCisgIHsKKyAgICB6OiAxLAorICAgIGE6IDIsCisgICAgYjogMywKKyAgICBxOiA0
LAorICB9LAorICB7CisgICAgYTogMSwKKyAgICBkOiAyLAorICAgIHo6IDMsCisgICAgeDogNCwK
KyAgICBmOiA1LAorICB9LAorXTsKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcihpKSB7Cisg
ICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAm
IDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAlIGJhc2VzLmxlbmd0
aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICNwcml2YXRlID0gInByaXZh
dGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJpdmF0ZTsgfQorfQorbm9Jbmxp
bmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMuY29uc3Ry
dWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBnZXRQcml2
YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7CisgIGFz
c2VydC5lcXVhbHMoZ2V0UHJpdmF0ZS5jYWxsKG8pLCAicHJpdmF0ZSIpOworfQorCit0ZXN0KG5l
dyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7Citmb3Ig
KHZhciBpID0gMDsgIWlzRmluYWxUaWVyKHRlc3QpICYmIGkgPCAxMDAwMDsgKytpKSB7CisgIHRl
c3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRlc3QpOworfQorYXNzZXJ0
LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407709</attachid>
            <date>2020-09-01 13:48:53 -0700</date>
            <delta_ts>2020-09-01 14:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20200901164853.patch</filename>
            <type>text/plain</type>
            <size>48430</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NGE4MThkNDRiNjM5OTA3NGM4Y2I5MTU5ZWRkZWEyOTI2N2U1MDc5Li4zMWZmMDMxZGJjYWFmYzJl
MTA0MmE3ODQxZWVkMGM5NjJiMTU2ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAyMC0wOS0wMSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDg2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgREZHL0ZU
TCBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1lLgorCisgICAgICAgIER1cmluZyBERkcg
Ynl0ZWNvZGUgcGFyc2luZywgd2Ugd2lsbCBhdHRlbXB0LCBpZiBkZWVtZWQgcG9zc2libGUgYnkK
KyAgICAgICAgdGhlIGluZm9ybWF0aW9uIGF2YWlsYWJsZSwgdG8gb3V0cHV0IGEgR2V0QnlPZmZz
ZXQgb3BlcmF0aW9uLiBJZiBhCisgICAgICAgIHNpbmdsZSBwcml2YXRlIGZpZWxkIGlkZW50aWZp
ZXIgaXMgdXNlZCBpbiBhbGwgY2FzZXMgKHRoZSBjb21tb24gY2FzZSksCisgICAgICAgIGJ1dCB0
aGVyZSBhcmUgdG9vIG1hbnkgc3RydWN0dXJlIHZhcmlhbnRzLCBhIEdldFByaXZhdGVOYW1lQnlJ
ZAorICAgICAgICBvcGVyYXRpb24gaXMgZW1pdHRlZCBpbnN0ZWFkLiBGYWlsaW5nIHRoYXQsIHRo
ZSBHZXRQcml2YXRlTmFtZQorICAgICAgICBvcGVyYXRpb24gaXMgcHJvZHVjZWQsIHdoaWNoIHBy
b2R1Y2VzIGEgR2V0QnlWYWwgSUMgbGlrZSBpbiB0aGUKKyAgICAgICAgYmFzZWxpbmUgSklULgor
CisgICAgICAgIEluIEZUTCwgR2V0UHJpdmF0ZU5hbWVCeUlEIGNhbiBiZSByZWR1Y2VkIHRvIFtN
dWx0aV1HZXRCeU9mZnNldCBpbiB0aGUKKyAgICAgICAgREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Us
IG9yIGEgR2V0QnlJRCBJQyB3aGVuIGxvd2VyaW5nIHRvIEIzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZy
b21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAg
ICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGlu
Z1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvR2V0QnlP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpR2V0QnlPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZh
dGVOYW1lKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
aXZhdGVOYW1lQnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQp
OgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKwogMjAyMC0wOC0zMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgUHRyVGFnIGRlYnVnZ2luZyBjb2RlIGZyb20gcmVsZWFz
ZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVz
LmNwcAppbmRleCAxNTgwMjFmMzk5MjNmMmMwMjU5YmNiOGZlZGM4NTRiZTZiMzc1ZWMyLi40MjQ4
NmMxNjVjYjg3ZGMyM2VkYzU5ZmI2YjI4NzAwNmZiNTRiZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTEwOCw2ICsxMDgsOSBAQCBH
ZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIEJ5dGVjb2RlSW5kZQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9y
bWF0aW9uLCBmYWxzZSk7CisKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAppbmRleCA2MDQ4Y2QwNDI4ZTkzN2Q0ZDMzNDAzOTYzMDM0N2M5ZDliNzJlMTY1Li44OWRm
NGQ3YjEyOGNjYmMwNDk2ZDE1ZWRkNjI2NmNmZTdkMjI4Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNDA0LDYgKzQw
NCw4IEBAIGlubGluZSBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbihB
Y2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZvCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemU7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0Ogog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplOworICAgIGNhc2Ug
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRo
VGhpczoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQy
MCw2ICs0MjIsOCBAQCBpbmxpbmUgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rp
b24oQWNjZXNzVHlwZSB0eXBlKSAtPiBkZWNsdHlwZSgmb3BlcgogICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWM7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGly
ZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERpcmVjdEdlbmVyaWM7CisgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWM7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlk
V2l0aFRoaXM6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkwMmYyMDcyYjYxNjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1
M2ZlZC4uM2MwZjcyMTEyY2ViNWRkODU2MDBkNzUzNGI4OTIyODQyZWY3OGMwNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaApAQCAtMzM0OCw2ICszMzQ4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAg
IGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgR2V0QnlJZERpcmVjdDoKICAgICBj
YXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICBjYXNlIEdldEJ5SWQ6CkBAIC0zMzgzLDYgKzMz
ODQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKICAg
ICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2xvYmJlcldvcmxkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDIxMjJh
YTQ5NWRhNzQzY2RkNWVmYzJkNGFjYWI3NjA0M2JmMzNjYjkuLjBkZTk2Nzc0NWNhNTZjNTc4ZDc3
ZTM3MmVkMjE3YmZiMmNlOTEzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDQsOCArMjQ0LDExIEBAIHByaXZhdGU6CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICB2b2lkIHBhcnNlR2V0QnlJZChjb25zdCBJbnN0
cnVjdGlvbiopOworICAgIHZvaWQgc2ltcGxpZnlHZXRCeVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRC
eVN0YXR1cyYpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5
cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKKyAgICB2b2lkIGhhbmRsZUdldFByaXZh
dGVOYW1lQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cyk7CiAgICAgdm9pZCBlbWl0UHV0QnlJ
ZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgTm9kZSogdmFsdWUs
ICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUpOwogICAgIHZv
aWQgaGFuZGxlUHV0QnlJZCgKQEAgLTQ1MzksOSArNDU0Miw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFy
c2VyOjpzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBQdXRCeUlk
VmFyaWFuCiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZh
cmlhbnQub2Zmc2V0KCksIHZhbHVlKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
R2V0QnlJZCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cywg
QWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkKK3ZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMoTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMmIGdl
dEJ5U3RhdHVzKQogewogICAgIC8vIEF0dGVtcHQgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdGhpbmdz
IGluIHRoZSBHZXRCeVN0YXR1cy4KICAgICBpZiAoYmFzZS0+b3AoKSA9PSBOZXdPYmplY3QpIHsK
QEAgLTQ1NTgsNiArNDU1OSwxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KAogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICBnZXRCeVN0YXR1cy5maWx0ZXIoYmFzZS0+
c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIH0KK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCgKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1
cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkKK3sKKyAgICBz
aW1wbGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3RhdHVzKTsKICAgICAKICAgICBOb2RlVHlw
ZSBnZXRCeUlkOwogICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQpCkBAIC00NzI1
LDYgKzQ3MzMsNzggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAg
ICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCByZWdpc3Rlck9mZnNldCwgKnZhcmlh
bnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlvbik7CiB9CiAKKy8vIEEgdmFyaWFudCBvbiBo
YW5kbGVHZXRCeUlkIHdoaWNoIGlzIG1vcmUgbGltaXRlZCBpbiBzY29wZQordm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBk
ZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRC
eVN0YXR1cyBnZXRCeVN0YXR1cykKK3sKKyAgICBzaW1wbGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdl
dEJ5U3RhdHVzKTsKKworICAgIEFTU0VSVCghZ2V0QnlTdGF0dXMuaXNDdXN0b20oKSk7CisgICAg
QVNTRVJUKCFnZXRCeVN0YXR1cy5tYWtlc0NhbGxzKCkpOworICAgIGlmICghZ2V0QnlTdGF0dXMu
aXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNl
QWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAg
ICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcElu
Zm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgeworICAgICAgICBpZiAo
IW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5
bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5U3RhdHVzLm51bVZh
cmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUo
KSkgeworICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdp
bigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9m
ZnNldENhc2UsIDI+IGNhc2VzOworCisgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90eXBlIHN0cnVj
dHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBtYXliZSBub3Qg
YmUKKyAgICAgICAgLy8gICAgb3B0aW1hbCwgaWYgdGhlcmUgaXMgc29tZSByYXJlbHkgZXhlY3V0
ZWQgY2FzZSBpbiB0aGUgY2hhaW4gdGhhdCByZXF1aXJlcyBhIGxvdAorICAgICAgICAvLyAgICBv
ZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBhcmUgbm90IHdhdGNocG9pbnRhYmxlLgorICAgICAg
ICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogZ2V0QnlTdGF0dXMudmFyaWFu
dHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRy
aW5zaWMpOworICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0
eSgpKTsKKworICAgICAgICAgICAgR2V0QnlPZmZzZXRNZXRob2QgbWV0aG9kID0gR2V0QnlPZmZz
ZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZzZXQoKSk7CisgICAgICAgICAgICBjYXNlcy5hcHBl
bmQoTXVsdGlHZXRCeU9mZnNldENhc2UoKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQu
c3RydWN0dXJlU2V0KCkpLCBtZXRob2QpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChVTkxJ
S0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxh
dGlvbigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgICAgIC8vIDIpIEVtaXQgYSBN
dWx0aUdldEJ5T2Zmc2V0CisgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9n
cmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRhLT5jYXNlcyA9
IGNhc2VzOworICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJl
cjsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0
aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0aGUgR2V0
QnlTdGF0dXMgZm9yIGFueXRoaW5nIHRoZW4gd2Ugc2hvdWxkIHJlY29yZCBpdCBhbmQgaW5zZXJ0
IGEgbm9kZQorICAgIC8vIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSAobGlrZSB0aGUgR2V0QnlPZmZz
ZXQgb3Igd2hhdGV2ZXIpIHRoYXQgd2lsbCBmaWx0ZXIgdGhlIHJlY29yZGVkCisgICAgLy8gR2V0
QnlTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29uc3RhbnQgZm9sZGVyIGFsc28gbmVlZHMg
dG8gZG8gdGhlIHNhbWUhCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeVN0YXR1cywgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRCeVN0YXR1cyhjdXJyZW50
Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAgIEFTU0VSVChnZXRCeVN0
YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgIEdldEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBn
ZXRCeVN0YXR1c1swXTsKKworICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChwcmVkaWN0aW9u
LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKKyAgICBpZiAoIWxvYWRlZFZhbHVl
KSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0
UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwg
YmFzZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFVOTElL
RUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24o
KS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKworICAgIGlmICghdmFyaWFudC5jYWxsTGlua1N0
YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpCisgICAgICAgIHNl
dChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSog
YmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSBlY21h
TW9kZSkKQEAgLTYxODQsNiArNjI2NCw0MyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3NldHRl
cl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1l
OiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOworICAgICAgICAgICAgTm9kZSogYmFz
ZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBn
ZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29sIGNvbXBpbGVTaW5nbGVJ
ZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVz
ID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLCBj
dXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IDA7Cisg
ICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRU
eXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworCisgICAg
ICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKTsK
KyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVy
LnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xD
ZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFw
aC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgY29tcGlsZVNpbmdsZUlkZW50aWZpZXIgPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbXBpbGVTaW5n
bGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZChi
eXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51
bWJlciwgZ2V0QnlTdGF0dXMpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8o
cHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9
IGZhbHNlOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgbm9kZSk7CisgICAg
ICAgICAgICAgICAgaWYgKGdldEJ5U3RhdHVzLm9ic2VydmVkU3RydWN0dXJlU3R1YkluZm9TbG93
UGF0aCgpKQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc2xvd0dldEJ5VmFsLmFkZChu
b2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9wcml2
YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJ
ZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODVjNjA5NjgwM2Q1
YjE3MWEyNDUyNzQ3ZGM4ODA0NzU1YzQxMzljYS4uYWJjYjBiYTIxNGYxYWI0NTIwZTg3NWRmMmU4
N2Y1MmJmMDdiNTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTY3MCw2ICs2NzAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2Ug
UHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFBy
aXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERl
ZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRl
eCA1ZTJiZDljOTVlMDgyYjI4MDNjZmI5ZDkwM2I5NTYyNzNkOGZlMzI5Li4zMjJlZjMyMzZiYjE5
NGMzY2RlNWFlZDE5NjVjM2RlZjc4NzEyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNTk5LDcgKzU5OSw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgICAgICAg
ICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoKLSAg
ICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CisgICAgICAgICAgICBjYXNlIEdldEJ5SWRG
bHVzaDoKKyAgICAgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CiAgICAgICAgICAg
ICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICBO
b2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAxOGI4ODM5NjliNjkwZjEzZjZm
ZmJmYjdkNzU2YmIzY2EyMjA4Yzc5Li4zOGM1NzNiMjYzZGYxOGZjMDRmZDU4ODcwNGI3NmM2Y2Ix
ZWFkZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEs
NiArMzIxLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2Fz
ZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0FyZ3Vt
ZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAppbmRleCBiNmMwYmI4YmE5OTBmZmYzNWMwMDNjODYwMTdlZTA2NzM0
MTBlMDM4Li43MTdjNjgzYWFkNThkZTdiNTM0ZTVjNWQxODgyNjkzZjMyZDVlNjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3ODAsNiArMTc4
MCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAg
ICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDog
eworICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNDYWNoZWFibGVJZGVudGlmaWVyKCkgJiYgbm9k
ZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAgICAgICAgIGZp
eEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOiB7CiAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkgewogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAppbmRleCBhNWNkZjFhYTZmM2QyZDliMWU4NmVkNWJkMjMxOGI2MmQ2YWM4ZWU5Li4xNmRlMzcz
MzA0MDlhMGEwNjRlOTZjM2E3MGUwYzcxMWE1YjFiMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaApAQCAtNTk2LDcgKzU5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNv
bnZlcnRUb0dldEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2Us
IEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9v
cCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0
QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CisgICAgICAgIEFT
U0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBH
ZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0gR2V0
UHJpdmF0ZU5hbWVCeUlkIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CiAgICAgICAgIG1f
b3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShzdG9yYWdlKTsKICAg
ICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQoTXVsdGlHZXRCeU9m
ZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX29wID09IEdl
dEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8
IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9v
cCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gR2V0QnlJZERp
cmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29wID09IEdldFByaXZhdGVO
YW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gZGF0YTsKICAgICAgICAgY2hpbGQxKCkuc2V0
VXNlS2luZChDZWxsVXNlKTsKICAgICAgICAgbV9vcCA9IE11bHRpR2V0QnlPZmZzZXQ7CkBAIC0x
MDgxLDYgKzEwODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgog
ICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdEZs
dXNoOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBEZWxl
dGVCeUlkOgogICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpAQCAt
MTc2NCw2ICsxNzY1LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAg
ICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6
CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBj
YXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAppbmRleCBkNjg4MTVkMzFlMzYwMDM0NDNmMTM1ZDViMzlkY2I1MmNkOTAyMjBlLi5l
YzA0MDQxMTcwZWY0MDZkYzdlMDRjOTIyNWE2ZjdlYThhOTBiMmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMzgsNiArMjM4LDggQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJm
bHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0FycmF5LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tBcnJheU9yRW1wdHksIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhHZXRQcml2YXRlTmFtZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKEdldFByaXZhdGVOYW1lQnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFRoaXMgY2hlY2tzIGlmIHRoZSBlZGdlIGlzIGEgdHlw
ZWQgYXJyYXkgYW5kIGlmIGl0IGlzIG5ldXRlcmVkLiAqLyBcCiAgICAgbWFjcm8oQ2hlY2tOZXV0
ZXJlZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFycmF5aWZ5LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDlkM2Y4OWU2NmVhZTY4YzZjZDE1
NDNjNzdjNTdmNTkwZDk3ODc0NzguLmYxZWMzNzJkMTBkMGYyNzYwNjYxMGJmM2Y2YTgyNGJiODA3
ZTYxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC04NzUsNiArODc1LDggQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5h
bWU6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIE11bHRp
R2V0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgICAgIGNhc2Ug
Q2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5k
ZXggYjA3Y2JhNzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3ZDFmMWNmNS4uNmE0OGMzODljOTk0
MjM2NTU3ZTUxNTFmNzBmY2JiMWQ4NDVlNzJlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYsOCBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdl
dHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBHZXRQcml2YXRl
TmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQ
cm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBBcnJh
eWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJiYzFkZTVlZDE1NWFjMC4uNDQ4YTI1
YzI4Yjg5MjY3OWFiZDE5YjJiMjIwOWE4Y2QzNjgzNzRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM0NjgsNiArMzQ2OCw4NyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3ltYm9s
KE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7
CisgICAgaWYgKG5vZGUtPmhhc0NhY2hlYWJsZUlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJu
IGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQobm9kZSk7CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHBy
b3BlcnR5KHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBhdXRvIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVn
cygpOworICAgIGF1dG8gcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKKyAg
ICBhdXRvIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgYmFzZS51c2UoKTsKKyAg
ICBwcm9wZXJ0eS51c2UoKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3Jk
Q2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVP
cmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2VzOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGguY2hpbGQobm9kZSwgMCkp
LmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOb3RDZWxsKGJhc2VSZWdzKSk7CisKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBwcm9w
ZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsK
KyAgICAKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emUsCisgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MpOworCisgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOworCisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKworICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdw
cigpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisK
KyAgICAgICAgYmFzZS51c2UoKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERh
dGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFy
eSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VS
ZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBiYXNlLnVzZSgpOworCisgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwor
CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywg
cmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9T
cGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworCisgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBE
RkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckNlbGxXaXRoU3RyaW5nKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBF
ZGdlJiBjaGlsZDMpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJnMSh0aGlzLCBjaGls
ZDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDFiNjMyMTdlMzZjNzFlYjFlZjBhMzZkODkyYzBlNjFkMjBmZTNlNTIuLjQ2NzllNjU2Nzk4
NjRjODgxZmM3MDQzODNlNjRmM2YwY2M2YTM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEyODIsNyArMTI4MiwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRGlyZWN0QXJndW1lbnRzKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKE5vZGUqKTsKLSAgICAKKwor
ICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVH
ZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSopOworCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZVNraXBTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
R2V0R2xvYmFsT2JqZWN0KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDk3NGU3YTk2YThhYTJlZDI3MDgx
MjVhZjRlMGExYzM2OGY4ZjRkNWEuLjBkMDI3ZDdmMmQzZjQ5NDViYzUwMWY4ZmM5NzM3YTIwMjU5
OTQyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtMjI0MSw2ICsyMjQxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDogeworICAgICAg
ICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IDI3NzQ4MzJiY2YzNTM4N2MzYjVjMDdkMTNkOGY5ZGY3Y2Q1MGNhZDEuLjM1MmQxYjgzNGE0
NTY1ZWI4YzhhMzQwZTE0NTM4YjE0Zjc5MmU0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjYxNyw2ICsyNjE3LDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVO
YW1lQnlJZDogeworICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNoIChu
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6QW55VHlwZWRB
cnJheToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCBjODBiMTY4NDRhYWJhY2Q4NTY2OTZkODQ1ZjgxYzNjNmY5NzczOTdhLi4zNzZmOGQ3OTM0
MDE2YTNiZWNlNTVmNDFiYTkyOTYwMGU4Mjk1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTQsNiArMzk0LDggQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlz
OgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6
CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZWZkY2JiNGViNDZkN2M3NDdmM2Y2NzlmZWFm
YjZmZTcxNDIzOGU2Yy4uOTlkNzY0OTIyODI4MzQyOTBiNTMxZWRjOTgwOTcyM2YwZWEzZTA4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
OTM4LDYgKzkzOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVz
aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Qp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAg
ICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRQcml2
YXRlTmFtZUJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluQnlJZDoK
ICAgICAgICAgICAgIGNvbXBpbGVJbkJ5SWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzky
Miw2ICszOTI4LDExMyBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAg
ICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dKU1ZhbHVlKG5v
ZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgICAgIHNwZWN1
bGF0ZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgIGJvb2wgYmFzZUlzQ2VsbCA9IGFic3RyYWN0VmFsdWUobm9kZS0+Y2hpbGQxKCkp
LmlzVHlwZShTcGVjQ2VsbCk7CisgICAgCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoYmFzZSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdp
c3Rlcihwcm9wZXJ0eSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNr
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworCisgICAgICAgIFJlZlB0cjxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0g
Jm1fZnRsU3RhdGU7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKKworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9
IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5k
ZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
dGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgorICAgICAgICAgICAg
ICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFu
ZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOworCisgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZXhpdCBmb3IgY2FsbCBJQydzIGNyZWF0ZWQgYnkgdGhl
IElDIGZvciBnZXR0ZXJzLiBXZSBkb24ndCBoYXZlCisgICAgICAgICAgICAgICAgLy8gdG8gZG8g
YW55dGhpbmcgd2VpcmQgb3RoZXIgdGhhbiBjYWxsIHRoaXMsIHNpbmNlIGl0IHdpbGwgYXNzb2Np
YXRlIHRoZSBleGl0IHdpdGgKKyAgICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXgu
CisgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZv
clVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOworCisgICAgICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlH
UFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHBy
b3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisKKyAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKKyAgICAgICAgICAgICAgICBpZiAoIWJhc2VJc0Nl
bGwpCisgICAgICAgICAgICAgICAgICAgIG5vdENlbGwgPSBqaXQuYnJhbmNoSWZOb3RDZWxsKGJh
c2VHUFIpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGpp
dCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVs
KCk7CisKKyAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vdENl
bGwuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQp
OworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4g
PSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdp
biwgc2xvd1BhdGhDYWxsKTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2so
Wz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZmZXIsIGxpbmtCdWZmZXIpOworICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOworICAgIH0KKworICAgIHZvaWQgY29tcGls
ZUdldFByaXZhdGVOYW1lQnlJZCgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkK
KyAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgYmFzZUNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICBpc0NlbGwoYmFzZSwgcHJv
dmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShiYXNlQ2VsbENhc2UpLCB1bnN1cmUo
bm90Q2VsbENhc2UpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhiYXNlQ2VsbENhc2UsIG5vdENlbGxDYXNlKTsKKworICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihnZXRCeUlkKGJhc2UsIEFjY2Vz
c1R5cGU6OkdldFByaXZhdGVOYW1lKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51
YXRpb24pOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0
LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lQnlJZEdlbmVyaWMsCisgICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgYmFzZSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpKSk7CisgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGNl
bGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQg
Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCBjOGQ0MTI5OGI5NzA4OGI2MmM3
ZTdlMzVkMjYwZThlZTAyZmQ2MzQ0Li45MzY5ZTlkOTQ0NmQ3ZWJmN2ZmMjYwYmU0NGU2NjMzODI2
ZDJkMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNzUsNyArNzUsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpIFwKICAgICBtYWNy
byhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5l
cmljKSBcCi0gICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSkKKyAgICBt
YWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKSBcCisgICAgbWFjcm8oT3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVCeUlkT3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRpb25HZXRQ
cml2YXRlTmFtZUJ5SWRHZW5lcmljKQogCiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDRmNDUyNGRjNzJi
NGQ5MWI3MjllYTk1ZWM4ZDI2MGVjMTg1NjQyZjQuLmJlOTQxMTdiODBiMjRlYzAzMGI5ZDNlNGYz
M2FiMjRmZmFiYWFjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMjIxMyw2ICsyMjEzLDI0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFs
dWUgZ2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAg
ICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpOwogfQogCitB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
SWRlbnRpZmllciBmaWVsZE5hbWUpCit7CisgICAgQVNTRVJUKGZpZWxkTmFtZS5pc1ByaXZhdGVO
YW1lKCkpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBKU09iamVj
dCogYmFzZSA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFByb3BlcnR5
U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Q
cm9wZXJ0eSk7CisgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmllbGRO
YW1lLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwor
CisgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpOworfQor
CiBleHRlcm4gIkMiIHsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpCkBAIC0yMjM0LDcgKzIyNTIsNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqIGdsbwogICAgICAgICBBU1NFUlQoZmllbGROYW1lLmlzU3ltYm9sKCkpOwog
CiAgICAgICAgIEpTT2JqZWN0KiBiYXNlID0ganNDYXN0PEpTT2JqZWN0Kj4oYmFzZVZhbHVlLmFz
Q2VsbCgpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICAgICAgYmFzZS0+Z2V0UHJp
dmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKQEAgLTIyNjUsNiArMjI4
Miw1NiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmll
bGROYW1lVmFsdWUpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRw
dHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAgIGF1dG8gZmllbGROYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVl
LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIGJhc2UgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihiYXNlVmFsdWUuYXNDZWxsKCkpOworCisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2Us
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAg
ICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
CisgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwgdHJ1ZSkpOworCisg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAg
ICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNl
VmFsdWUuc3RydWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBh
dGNoR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwg
c2xvdCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKSk7
CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRw
dHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Cisg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSWRlbnRpZmll
ciBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsK
KworICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKTsKKworICAgIExPR19JQygoSUNFdmVudDo6T3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVs
bCh2bSksIGZpZWxkTmFtZSwgdHJ1ZSkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjVlNzEyNTk1
NjgzMGE4ODNlODMzMzA3OTUzOWUyMDQ0MmMwNWQ5NC4uZWQ5OGY4MzA1YjMzMjYwODQyN2E0NmNj
MDQ5ZmZlYjg4YzFmMjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTI3Niw2ICsyNzYsOCBAQCBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLAogCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVp
bnRwdHJfdCkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZShWTSosIEVu
Y29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpIFdURl9JTlRFUk5BTDsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTg1ZTEz
NjA2MDQ1YjRjZGM0YmM2NTJiZjAwMDMzMGUwZGExMGQ1YS4uZmIxNTgzNjU4YjJiMWRkMGEwNjYz
YTVkMDBiY2Y1Y2M1ZDQ3YTMwYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOS0wMSAgQ2FpdGxpbiBQ
b3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0
X3ByaXZhdGVfbmFtZSBpbiBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVs
dGkuanM6IEFkZGVkLgorCiAyMDIwLTA4LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gQGRlZmF1bHRQcm9taXNlVGhlbiBmYXN0IHBhdGggc2hv
dWxkIGNoZWNrIHNwZWNpZXMgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1w
cml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJmNTgwYjlhN2Q1ZTFmZWM5NWIzMjM2
MDVjYmVkYTNiODRhMDFjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsOTggQEAKKy8vQHJlcXVpcmVPcHRp
b25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiKQorCisvLyBXaXRoIG1hbnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50
cywgdGhpcyB0ZXN0IGNoZWNrcyB0aGUgR2V0UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdo
ZW4KKy8vIHJlZHVjaW5nIHRvIEdldEJ5T2Zmc2V0IGlzIG5vdCBwb3NzaWJsZS4KKworZnVuY3Rp
b24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBF
cnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihh
c3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFs
ID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1g
KTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4o
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1
bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3Rl
ZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworCitsZXQgYmFzZXMgPSBbCisg
IHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAgICBiOiAxLAorICAgIGE6IDIs
CisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAgYTogMywKKyAgfSwKKyAgewor
ICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6IDMsCisgICAgcTogNCwKKyAg
fSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAzLAorICAgIHg6IDQsCisgICAg
ZjogNSwKKyAgfSwKKyAgeworICAgIGc6IDEsCisgICAgYjogMiwKKyAgICBkOiAzLAorICAgIHE6
IDQsCisgICAgeDogNSwKKyAgICBkOiA2LAorICB9CitdOworY2xhc3MgQmFzZSB7CisgIGNvbnN0
cnVjdG9yKGkpIHsKKyAgICBpZiAoaSA8IDEwMCkKKyAgICAgIHJldHVybiBPYmplY3QuYXNzaWdu
KHt9LCBiYXNlc1tpICYgM10pOworICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tp
ICYgYmFzZXMubGVuZ3RoXSk7CisgIH0KK30KK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3By
aXZhdGUgPSAicHJpdmF0ZSI7CisgIGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRl
OyB9Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOwor
bm9GVEwoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKK25v
SW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJv
dG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1YWxz
KGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30KKwordGVzdChuZXcgQygwKSwgMCk7
Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgdGVzdChuZXcgQyhpKSk7CisgIG9wdGltaXplTmV4dEludm9j
YXRpb24odGVzdCk7Cit9Cithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgdGVzdCh7fSkKK30pOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQzOGUzZDcyYjVmMzIzZDFhYmUwYjcyYzhhNzdhMThkYmYxODI0MDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZz
ZXQuanMKQEAgLTAsMCArMSw2MyBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdp
dGggbm8gaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgR2V0UHJpdmF0ZU5hbWUgaXMg
Y29udmVydGVkIHRvIEdldEJ5T2Zmc2V0CisvLyBkdXJpbmcgYnl0ZWNvZGUgcGFyc2luZy4gV2Ug
dGVzdCB0aGF0IGl0J3Mgc3RpbGwgc2VtYW50aWNhbGx5IHZhbGlkLgorCitmdW5jdGlvbiBhc3Nl
cnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBB
c3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwg
eworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4
cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9
LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24i
KQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRo
cm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0
aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitjbGFzcyBDIHsKKyAgI3ByaXZhdGUgPSAi
cHJpdmF0ZSI7CisgIGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9CisgIGNv
bnN0cnVjdG9yKGkpIHsKKyAgICBpZiAoaSA9PT0gOTk1KQorICAgICAgcmV0dXJuIHt9OworICB9
Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOworbm9G
VEwoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKK25vSW5s
aW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90
eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICByZXR1cm4gZ2V0UHJpdmF0
ZS5jYWxsKG8pOworfQorbmV2ZXJJbmxpbmVGdW5jdGlvbih0ZXN0KTsKKworLy8gV2FybXVwCit0
ZXN0KG5ldyBDLCAwKTsKK3Rlc3QobmV3IEMsIDApOwordGVzdChuZXcgQywgMCk7CisKK3ZhciBp
OworZm9yICh2YXIgaiA9IDA7IGogPCAyOyArK2opIHsKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB7
CisgICAgZm9yIChpID0gMDsgaSA8IDIwMDA7ICsraSkgeworICAgICAgYXNzZXJ0LmVxdWFscyh0
ZXN0KG5ldyBDKGkpKSwgInByaXZhdGUiKTsKKyAgICAgIG9wdGltaXplTmV4dEludm9jYXRpb24o
dGVzdCk7CisgICAgfQorICB9LCBUeXBlRXJyb3IpOworCisgIC8vIFdlIHNob3VsZCB0aHJvdyBv
biBpdGVyYXRpb24gOTk1LCBiZWNhdXNlIHRoaXMgd2lsbCByZXN1bHQgaW4gYW4gaW52YWxpZCBs
b2FkLgorICBhc3NlcnQuZXF1YWxzKGksIDk5NSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YzE3ODk4M2ZkZTY0MjY1MmRm
MzM4M2JhYTE2ODcxYzNmODk1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9m
dGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpAQCAtMCwwICsxLDEwNyBAQAorLy9AcmVxdWly
ZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9dHJ1ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKworLy8gV2l0aCBt
YW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCBjaGVja3MgdGhl
IEdldFByaXZhdGVOYW1lIGxvd2VyaW5nIGluIERGRyB3aGVuCisvLyByZWR1Y2luZyB0byBHZXRC
eU9mZnNldCBpcyBub3QgcG9zc2libGUuCisvLyBUaGlzIHRlc3QgZGlzYWJsZXMgaW5saW5pbmcg
bG9hZHMgdG8gR2V0QnlPZmZzZXQgaW4gb3JkZXIgdG8gcHJldmVudCByZWR1Y2luZyB0aGUgR2V0
UHJpdmF0ZU5hbWVCeUlkIHRvIE11bHRpR2V0QnlPZmZzZXQgaW4gdGhlCisvLyBERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS4gSXQgaXMgY29uY2VpdmFibHkgcG9zc2libGUgZm9yIHRoaXMgc2NlbmFy
aW8gdG8gYmUgZW5jb3VudGVyZWQgd2l0aG91dCBkaXNhYmxpbmcgaW5saW5lIGFjY2Vzcy4KKwor
ZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93
IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFz
c2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQo
YWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2Fj
dHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAg
ICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBl
eHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywg
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworbGV0IGJhc2VzID0g
WworICB7CisgIH0sCisgIHsKKyAgICBhOiAxLAorICB9LAorICB7CisgICAgYjogMSwKKyAgICBh
OiAyLAorICB9LAorICB7CisgICAgYzogMSwKKyAgICBkOiAyLAorICAgIGE6IDMsCisgIH0sCisg
IHsKKyAgfSwKKyAgeworICAgIHo6IDEsCisgICAgYTogMiwKKyAgICBiOiAzLAorICAgIHE6IDQs
CisgIH0sCisgIHsKKyAgICBhOiAxLAorICAgIGQ6IDIsCisgICAgejogMywKKyAgICB4OiA0LAor
ICAgIGY6IDUsCisgIH0sCisgIHsKKyAgICBnOiAxLAorICAgIGI6IDIsCisgICAgZDogMywKKyAg
ICBxOiA0LAorICAgIHg6IDUsCisgICAgZDogNiwKKyAgfSwKKyAgeworICAgIHo6IDEsCisgICAg
cTogMiwKKyAgICBmOiAzLAorICAgIHk6IDQsCisgICAgYTogNSwKKyAgICAwOiA2LAorICAgIGs6
IDcsCisgIH0sCitdOworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICBpZiAo
aSA8IDEwMCkKKyAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICYgM10pOwor
ICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICUgYmFzZXMubGVuZ3RoXSk7Cisg
IH0KK30KK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZhdGUgPSAicHJpdmF0ZSI7Cisg
IGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9Cit9Citub0lubGluZShDLmNv
bnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5jb25zdHJ1Y3Rvcik7
Citub0lubGluZShDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKKworbGV0IGdldFByaXZhdGUgPSBD
LnByb3RvdHlwZS5nZXRQcml2YXRlOworCitmdW5jdGlvbiB0ZXN0KG8pIHsKKyAgYXNzZXJ0LmVx
dWFscyhnZXRQcml2YXRlLmNhbGwobyksICJwcml2YXRlIik7Cit9CisKK3Rlc3QobmV3IEMoMCks
IDApOwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK2ZvciAodmFyIGkg
PSAwOyAhaXNGaW5hbFRpZXIodGVzdCkgJiYgaSA8IDEwMDAwOyArK2kpIHsKKyAgdGVzdChuZXcg
QyhpKSk7CisgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7Cit9Cithc3NlcnQudGhyb3dz
KCgpID0+IHsKKyAgdGVzdCh7fSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnRs
LWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzIGIvSlNUZXN0cy9zdHJlc3MvZnRs
LWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1N2QzNjRl
NThjYTI1ZTQ1YzY0MWEyY2U1YWJiN2FlYTE1OWM4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMKQEAgLTAs
MCArMSw4NyBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdpdGggbWFueSBpbmNv
bXBhdGlibGUgc3RydWN0dXJlIHZhcmlhbnRzLCB0aGlzIHRlc3Qgd2lsbCBmYWlsIHRvIGdlbmVy
YXRlIEdldEJ5T2Zmc2V0IGR3dXJpbmcgREZHQnl0ZUNvZGVQYXJzaW5nLgorLy8gRHVyaW5nIEZU
TCBjb21waWxhdGlvbiwgaXQgd2lsbCB0cnkgYWdhaW4gaW4gREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAg
dGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmpl
Y3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFz
c2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5k
ICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7
CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JU
eXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlw
ZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7
CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRo
cm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitsZXQgYmFz
ZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAgICBiOiAxLAor
ICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAgYTogMywKKyAg
fSwKKyAgeworICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6IDMsCisgICAg
cTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAzLAorICAgIHg6
IDQsCisgICAgZjogNSwKKyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoaSkg
eworICAgIGlmIChpIDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2Vz
W2kgJiAzXSk7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJSBiYXNlcy5s
ZW5ndGhdKTsKKyAgfQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0ZSA9ICJw
cml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KK30KK25v
SW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNv
bnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0
UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3Qobykgewor
ICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30KKwordGVz
dChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwor
Zm9yICh2YXIgaSA9IDA7ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwgMTAwMDA7ICsraSkgewor
ICB0ZXN0KG5ldyBDKGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30KK2Fz
c2VydC50aHJvd3MoKCkgPT4geworICB0ZXN0KHt9KQorfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407711</attachid>
            <date>2020-09-01 14:08:04 -0700</date>
            <delta_ts>2020-09-02 15:27:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20200901170804.patch</filename>
            <type>text/plain</type>
            <size>48342</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NGE4MThkNDRiNjM5OTA3NGM4Y2I5MTU5ZWRkZWEyOTI2N2U1MDc5Li4zMWZmMDMxZGJjYWFmYzJl
MTA0MmE3ODQxZWVkMGM5NjJiMTU2ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAyMC0wOS0wMSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDg2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgREZHL0ZU
TCBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1lLgorCisgICAgICAgIER1cmluZyBERkcg
Ynl0ZWNvZGUgcGFyc2luZywgd2Ugd2lsbCBhdHRlbXB0LCBpZiBkZWVtZWQgcG9zc2libGUgYnkK
KyAgICAgICAgdGhlIGluZm9ybWF0aW9uIGF2YWlsYWJsZSwgdG8gb3V0cHV0IGEgR2V0QnlPZmZz
ZXQgb3BlcmF0aW9uLiBJZiBhCisgICAgICAgIHNpbmdsZSBwcml2YXRlIGZpZWxkIGlkZW50aWZp
ZXIgaXMgdXNlZCBpbiBhbGwgY2FzZXMgKHRoZSBjb21tb24gY2FzZSksCisgICAgICAgIGJ1dCB0
aGVyZSBhcmUgdG9vIG1hbnkgc3RydWN0dXJlIHZhcmlhbnRzLCBhIEdldFByaXZhdGVOYW1lQnlJ
ZAorICAgICAgICBvcGVyYXRpb24gaXMgZW1pdHRlZCBpbnN0ZWFkLiBGYWlsaW5nIHRoYXQsIHRo
ZSBHZXRQcml2YXRlTmFtZQorICAgICAgICBvcGVyYXRpb24gaXMgcHJvZHVjZWQsIHdoaWNoIHBy
b2R1Y2VzIGEgR2V0QnlWYWwgSUMgbGlrZSBpbiB0aGUKKyAgICAgICAgYmFzZWxpbmUgSklULgor
CisgICAgICAgIEluIEZUTCwgR2V0UHJpdmF0ZU5hbWVCeUlEIGNhbiBiZSByZWR1Y2VkIHRvIFtN
dWx0aV1HZXRCeU9mZnNldCBpbiB0aGUKKyAgICAgICAgREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Us
IG9yIGEgR2V0QnlJRCBJQyB3aGVuIGxvd2VyaW5nIHRvIEIzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZy
b21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAg
ICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGlu
Z1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvR2V0QnlP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpR2V0QnlPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZh
dGVOYW1lKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
aXZhdGVOYW1lQnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQp
OgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKwogMjAyMC0wOC0zMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgUHRyVGFnIGRlYnVnZ2luZyBjb2RlIGZyb20gcmVsZWFz
ZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVz
LmNwcAppbmRleCAxNTgwMjFmMzk5MjNmMmMwMjU5YmNiOGZlZGM4NTRiZTZiMzc1ZWMyLi40MjQ4
NmMxNjVjYjg3ZGMyM2VkYzU5ZmI2YjI4NzAwNmZiNTRiZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTEwOCw2ICsxMDgsOSBAQCBH
ZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIEJ5dGVjb2RlSW5kZQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9y
bWF0aW9uLCBmYWxzZSk7CisKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAppbmRleCA2MDQ4Y2QwNDI4ZTkzN2Q0ZDMzNDAzOTYzMDM0N2M5ZDliNzJlMTY1Li44OWRm
NGQ3YjEyOGNjYmMwNDk2ZDE1ZWRkNjI2NmNmZTdkMjI4Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNDA0LDYgKzQw
NCw4IEBAIGlubGluZSBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbihB
Y2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZvCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemU7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0Ogog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplOworICAgIGNhc2Ug
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRo
VGhpczoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQy
MCw2ICs0MjIsOCBAQCBpbmxpbmUgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rp
b24oQWNjZXNzVHlwZSB0eXBlKSAtPiBkZWNsdHlwZSgmb3BlcgogICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWM7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGly
ZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERpcmVjdEdlbmVyaWM7CisgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWM7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlk
V2l0aFRoaXM6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkwMmYyMDcyYjYxNjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1
M2ZlZC4uM2MwZjcyMTEyY2ViNWRkODU2MDBkNzUzNGI4OTIyODQyZWY3OGMwNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaApAQCAtMzM0OCw2ICszMzQ4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAg
IGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgR2V0QnlJZERpcmVjdDoKICAgICBj
YXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICBjYXNlIEdldEJ5SWQ6CkBAIC0zMzgzLDYgKzMz
ODQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKICAg
ICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2xvYmJlcldvcmxkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDIxMjJh
YTQ5NWRhNzQzY2RkNWVmYzJkNGFjYWI3NjA0M2JmMzNjYjkuLjBkZTk2Nzc0NWNhNTZjNTc4ZDc3
ZTM3MmVkMjE3YmZiMmNlOTEzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDQsOCArMjQ0LDExIEBAIHByaXZhdGU6CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICB2b2lkIHBhcnNlR2V0QnlJZChjb25zdCBJbnN0
cnVjdGlvbiopOworICAgIHZvaWQgc2ltcGxpZnlHZXRCeVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRC
eVN0YXR1cyYpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5
cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKKyAgICB2b2lkIGhhbmRsZUdldFByaXZh
dGVOYW1lQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cyk7CiAgICAgdm9pZCBlbWl0UHV0QnlJ
ZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgTm9kZSogdmFsdWUs
ICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUpOwogICAgIHZv
aWQgaGFuZGxlUHV0QnlJZCgKQEAgLTQ1MzksOSArNDU0Miw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFy
c2VyOjpzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBQdXRCeUlk
VmFyaWFuCiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZh
cmlhbnQub2Zmc2V0KCksIHZhbHVlKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
R2V0QnlJZCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cywg
QWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkKK3ZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMoTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMmIGdl
dEJ5U3RhdHVzKQogewogICAgIC8vIEF0dGVtcHQgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdGhpbmdz
IGluIHRoZSBHZXRCeVN0YXR1cy4KICAgICBpZiAoYmFzZS0+b3AoKSA9PSBOZXdPYmplY3QpIHsK
QEAgLTQ1NTgsNiArNDU1OSwxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KAogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICBnZXRCeVN0YXR1cy5maWx0ZXIoYmFzZS0+
c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIH0KK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCgKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1
cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkKK3sKKyAgICBz
aW1wbGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3RhdHVzKTsKICAgICAKICAgICBOb2RlVHlw
ZSBnZXRCeUlkOwogICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQpCkBAIC00NzI1
LDYgKzQ3MzMsNzggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAg
ICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCByZWdpc3Rlck9mZnNldCwgKnZhcmlh
bnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlvbik7CiB9CiAKKy8vIEEgdmFyaWFudCBvbiBo
YW5kbGVHZXRCeUlkIHdoaWNoIGlzIG1vcmUgbGltaXRlZCBpbiBzY29wZQordm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBk
ZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRC
eVN0YXR1cyBnZXRCeVN0YXR1cykKK3sKKyAgICBzaW1wbGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdl
dEJ5U3RhdHVzKTsKKworICAgIEFTU0VSVCghZ2V0QnlTdGF0dXMuaXNDdXN0b20oKSk7CisgICAg
QVNTRVJUKCFnZXRCeVN0YXR1cy5tYWtlc0NhbGxzKCkpOworICAgIGlmICghZ2V0QnlTdGF0dXMu
aXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNl
QWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAg
ICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcElu
Zm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgeworICAgICAgICBpZiAo
IW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5
bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5U3RhdHVzLm51bVZh
cmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUo
KSkgeworICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdp
bigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9m
ZnNldENhc2UsIDI+IGNhc2VzOworCisgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90eXBlIHN0cnVj
dHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBtYXliZSBub3Qg
YmUKKyAgICAgICAgLy8gICAgb3B0aW1hbCwgaWYgdGhlcmUgaXMgc29tZSByYXJlbHkgZXhlY3V0
ZWQgY2FzZSBpbiB0aGUgY2hhaW4gdGhhdCByZXF1aXJlcyBhIGxvdAorICAgICAgICAvLyAgICBv
ZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBhcmUgbm90IHdhdGNocG9pbnRhYmxlLgorICAgICAg
ICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogZ2V0QnlTdGF0dXMudmFyaWFu
dHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRy
aW5zaWMpOworICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0
eSgpKTsKKworICAgICAgICAgICAgR2V0QnlPZmZzZXRNZXRob2QgbWV0aG9kID0gR2V0QnlPZmZz
ZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZzZXQoKSk7CisgICAgICAgICAgICBjYXNlcy5hcHBl
bmQoTXVsdGlHZXRCeU9mZnNldENhc2UoKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQu
c3RydWN0dXJlU2V0KCkpLCBtZXRob2QpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChVTkxJ
S0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxh
dGlvbigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgICAgIC8vIDIpIEVtaXQgYSBN
dWx0aUdldEJ5T2Zmc2V0CisgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9n
cmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRhLT5jYXNlcyA9
IGNhc2VzOworICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJl
cjsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0
aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0aGUgR2V0
QnlTdGF0dXMgZm9yIGFueXRoaW5nIHRoZW4gd2Ugc2hvdWxkIHJlY29yZCBpdCBhbmQgaW5zZXJ0
IGEgbm9kZQorICAgIC8vIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSAobGlrZSB0aGUgR2V0QnlPZmZz
ZXQgb3Igd2hhdGV2ZXIpIHRoYXQgd2lsbCBmaWx0ZXIgdGhlIHJlY29yZGVkCisgICAgLy8gR2V0
QnlTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29uc3RhbnQgZm9sZGVyIGFsc28gbmVlZHMg
dG8gZG8gdGhlIHNhbWUhCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeVN0YXR1cywgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRCeVN0YXR1cyhjdXJyZW50
Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAgIEFTU0VSVChnZXRCeVN0
YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgIEdldEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBn
ZXRCeVN0YXR1c1swXTsKKworICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChwcmVkaWN0aW9u
LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKKyAgICBpZiAoIWxvYWRlZFZhbHVl
KSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0
UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwg
YmFzZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFVOTElL
RUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24o
KS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKworICAgIGlmICghdmFyaWFudC5jYWxsTGlua1N0
YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpCisgICAgICAgIHNl
dChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSog
YmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSBlY21h
TW9kZSkKQEAgLTYxODQsNiArNjI2NCw0MyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3NldHRl
cl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1l
OiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOworICAgICAgICAgICAgTm9kZSogYmFz
ZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBn
ZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29sIGNvbXBpbGVTaW5nbGVJ
ZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVz
ID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLCBj
dXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IDA7Cisg
ICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRU
eXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworCisgICAg
ICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKTsK
KyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVy
LnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xD
ZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFw
aC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgY29tcGlsZVNpbmdsZUlkZW50aWZpZXIgPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbXBpbGVTaW5n
bGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZChi
eXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51
bWJlciwgZ2V0QnlTdGF0dXMpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8o
cHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9
IGZhbHNlOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgbm9kZSk7CisgICAg
ICAgICAgICAgICAgaWYgKGdldEJ5U3RhdHVzLm9ic2VydmVkU3RydWN0dXJlU3R1YkluZm9TbG93
UGF0aCgpKQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc2xvd0dldEJ5VmFsLmFkZChu
b2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9wcml2
YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJ
ZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODVjNjA5NjgwM2Q1
YjE3MWEyNDUyNzQ3ZGM4ODA0NzU1YzQxMzljYS4uYWJjYjBiYTIxNGYxYWI0NTIwZTg3NWRmMmU4
N2Y1MmJmMDdiNTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTY3MCw2ICs2NzAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2Ug
UHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFBy
aXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERl
ZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRl
eCA1ZTJiZDljOTVlMDgyYjI4MDNjZmI5ZDkwM2I5NTYyNzNkOGZlMzI5Li4zMjJlZjMyMzZiYjE5
NGMzY2RlNWFlZDE5NjVjM2RlZjc4NzEyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNTk5LDcgKzU5OSw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgICAgICAg
ICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoKLSAg
ICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CisgICAgICAgICAgICBjYXNlIEdldEJ5SWRG
bHVzaDoKKyAgICAgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CiAgICAgICAgICAg
ICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICBO
b2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAxOGI4ODM5NjliNjkwZjEzZjZm
ZmJmYjdkNzU2YmIzY2EyMjA4Yzc5Li4zOGM1NzNiMjYzZGYxOGZjMDRmZDU4ODcwNGI3NmM2Y2Ix
ZWFkZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEs
NiArMzIxLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2Fz
ZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0FyZ3Vt
ZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAppbmRleCBiNmMwYmI4YmE5OTBmZmYzNWMwMDNjODYwMTdlZTA2NzM0
MTBlMDM4Li43MTdjNjgzYWFkNThkZTdiNTM0ZTVjNWQxODgyNjkzZjMyZDVlNjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3ODAsNiArMTc4
MCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAg
ICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDog
eworICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNDYWNoZWFibGVJZGVudGlmaWVyKCkgJiYgbm9k
ZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAgICAgICAgIGZp
eEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOiB7CiAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkgewogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAppbmRleCBhNWNkZjFhYTZmM2QyZDliMWU4NmVkNWJkMjMxOGI2MmQ2YWM4ZWU5Li4xNmRlMzcz
MzA0MDlhMGEwNjRlOTZjM2E3MGUwYzcxMWE1YjFiMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaApAQCAtNTk2LDcgKzU5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNv
bnZlcnRUb0dldEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2Us
IEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9v
cCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0
QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CisgICAgICAgIEFT
U0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBH
ZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0gR2V0
UHJpdmF0ZU5hbWVCeUlkIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CiAgICAgICAgIG1f
b3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShzdG9yYWdlKTsKICAg
ICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQoTXVsdGlHZXRCeU9m
ZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX29wID09IEdl
dEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8
IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9v
cCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gR2V0QnlJZERp
cmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29wID09IEdldFByaXZhdGVO
YW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gZGF0YTsKICAgICAgICAgY2hpbGQxKCkuc2V0
VXNlS2luZChDZWxsVXNlKTsKICAgICAgICAgbV9vcCA9IE11bHRpR2V0QnlPZmZzZXQ7CkBAIC0x
MDgxLDYgKzEwODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgog
ICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdEZs
dXNoOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBEZWxl
dGVCeUlkOgogICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpAQCAt
MTc2NCw2ICsxNzY1LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAg
ICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6
CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBj
YXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAppbmRleCBkNjg4MTVkMzFlMzYwMDM0NDNmMTM1ZDViMzlkY2I1MmNkOTAyMjBlLi5l
YzA0MDQxMTcwZWY0MDZkYzdlMDRjOTIyNWE2ZjdlYThhOTBiMmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMzgsNiArMjM4LDggQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJm
bHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0FycmF5LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tBcnJheU9yRW1wdHksIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhHZXRQcml2YXRlTmFtZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKEdldFByaXZhdGVOYW1lQnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFRoaXMgY2hlY2tzIGlmIHRoZSBlZGdlIGlzIGEgdHlw
ZWQgYXJyYXkgYW5kIGlmIGl0IGlzIG5ldXRlcmVkLiAqLyBcCiAgICAgbWFjcm8oQ2hlY2tOZXV0
ZXJlZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFycmF5aWZ5LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDlkM2Y4OWU2NmVhZTY4YzZjZDE1
NDNjNzdjNTdmNTkwZDk3ODc0NzguLmYxZWMzNzJkMTBkMGYyNzYwNjYxMGJmM2Y2YTgyNGJiODA3
ZTYxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC04NzUsNiArODc1LDggQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5h
bWU6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIE11bHRp
R2V0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgICAgIGNhc2Ug
Q2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5k
ZXggYjA3Y2JhNzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3ZDFmMWNmNS4uNmE0OGMzODljOTk0
MjM2NTU3ZTUxNTFmNzBmY2JiMWQ4NDVlNzJlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYsOCBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdl
dHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBHZXRQcml2YXRl
TmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQ
cm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBBcnJh
eWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJiYzFkZTVlZDE1NWFjMC4uNDQ4YTI1
YzI4Yjg5MjY3OWFiZDE5YjJiMjIwOWE4Y2QzNjgzNzRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM0NjgsNiArMzQ2OCw4NyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3ltYm9s
KE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7
CisgICAgaWYgKG5vZGUtPmhhc0NhY2hlYWJsZUlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJu
IGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQobm9kZSk7CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHBy
b3BlcnR5KHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBhdXRvIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVn
cygpOworICAgIGF1dG8gcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKKyAg
ICBhdXRvIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgYmFzZS51c2UoKTsKKyAg
ICBwcm9wZXJ0eS51c2UoKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3Jk
Q2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVP
cmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2VzOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGguY2hpbGQobm9kZSwgMCkp
LmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOb3RDZWxsKGJhc2VSZWdzKSk7CisKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBwcm9w
ZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsK
KyAgICAKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emUsCisgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MpOworCisgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOworCisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKworICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdw
cigpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisK
KyAgICAgICAgYmFzZS51c2UoKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERh
dGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFy
eSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VS
ZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBiYXNlLnVzZSgpOworCisgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwor
CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywg
cmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9T
cGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworCisgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBE
RkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckNlbGxXaXRoU3RyaW5nKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBF
ZGdlJiBjaGlsZDMpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJnMSh0aGlzLCBjaGls
ZDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDFiNjMyMTdlMzZjNzFlYjFlZjBhMzZkODkyYzBlNjFkMjBmZTNlNTIuLjQ2NzllNjU2Nzk4
NjRjODgxZmM3MDQzODNlNjRmM2YwY2M2YTM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEyODIsNyArMTI4MiwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRGlyZWN0QXJndW1lbnRzKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKE5vZGUqKTsKLSAgICAKKwor
ICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVH
ZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSopOworCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZVNraXBTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
R2V0R2xvYmFsT2JqZWN0KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDk3NGU3YTk2YThhYTJlZDI3MDgx
MjVhZjRlMGExYzM2OGY4ZjRkNWEuLjBkMDI3ZDdmMmQzZjQ5NDViYzUwMWY4ZmM5NzM3YTIwMjU5
OTQyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtMjI0MSw2ICsyMjQxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDogeworICAgICAg
ICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IDI3NzQ4MzJiY2YzNTM4N2MzYjVjMDdkMTNkOGY5ZGY3Y2Q1MGNhZDEuLjM1MmQxYjgzNGE0
NTY1ZWI4YzhhMzQwZTE0NTM4YjE0Zjc5MmU0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjYxNyw2ICsyNjE3LDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVO
YW1lQnlJZDogeworICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNoIChu
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6QW55VHlwZWRB
cnJheToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCBjODBiMTY4NDRhYWJhY2Q4NTY2OTZkODQ1ZjgxYzNjNmY5NzczOTdhLi4zNzZmOGQ3OTM0
MDE2YTNiZWNlNTVmNDFiYTkyOTYwMGU4Mjk1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTQsNiArMzk0LDggQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlz
OgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6
CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZWZkY2JiNGViNDZkN2M3NDdmM2Y2NzlmZWFm
YjZmZTcxNDIzOGU2Yy4uYmU2NjIzNjhlNzc1NDgyZWIxZGU1N2M2OGI0NThlODU4N2Q1NDc4OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
OTM4LDYgKzkzOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVz
aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Qp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAg
ICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRQcml2
YXRlTmFtZUJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluQnlJZDoK
ICAgICAgICAgICAgIGNvbXBpbGVJbkJ5SWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzky
Miw2ICszOTI4LDExMiBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKKworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUo
bm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1
ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
c3BlY3VsYXRlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgYm9vbCBiYXNlSXNDZWxsID0gYWJz
dHJhY3RWYWx1ZShub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAgICAKKyAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3BlcnR5KTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVy
VGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2Vw
dGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsK
KworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3Jp
Z2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVy
YXRpb24gY2FsbHMuCisgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+
IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFt
cyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBleGl0IGZv
ciBjYWxsIElDJ3MgY3JlYXRlZCBieSB0aGUgSUMgZm9yIGdldHRlcnMuIFdlIGRvbid0IGhhdmUK
KyAgICAgICAgICAgICAgICAvLyB0byBkbyBhbnl0aGluZyB3ZWlyZCBvdGhlciB0aGFuIGNhbGwg
dGhpcywgc2luY2UgaXQgd2lsbCBhc3NvY2lhdGUgdGhlIGV4aXQgd2l0aAorICAgICAgICAgICAg
ICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KKyAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7
CisKKyAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwor
ICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOworICAgICAg
ICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKworICAgICAg
ICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3Jl
YXRlKAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRH
UFIpKTsKKworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOworICAg
ICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKKyAgICAgICAgICAgICAgICAgICAgbm90Q2Vs
bCA9IGppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUik7CisKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAgICAgICAgICAgICAgIHBhcmFtcy5h
ZGRMYXRlUGF0aChbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAg
ICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0
R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKKworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9y
dFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisgICAgICAgICAg
ICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwg
bGlua0J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHNldEpTVmFsdWUocGF0Y2hwb2ludCk7
CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKCkKKyAgICB7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQorICAgICAgICAgICAgc2V0SlNWYWx1ZShnZXRCeUlk
KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBiYXNlQ2VsbENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAg
ICAgICAgICAgIGlzQ2VsbChiYXNlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5z
dXJlKGJhc2VDZWxsQ2FzZSksIHVuc3VyZShub3RDZWxsQ2FzZSkpOworCisgICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGJhc2VDZWxsQ2FzZSwgbm90Q2Vs
bENhc2UpOworCisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQu
YW5jaG9yKGdldEJ5SWQoYmFzZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpKTsKKyAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obm90Q2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAgICAgICAgICAg
ICBJbnQ2NCwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywKKyAgICAgICAgICAg
ICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLAorICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSkp
KTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICBzZXRK
U1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgY2VsbFJlc3VsdCwgbm90Q2VsbFJlc3VsdCkpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCkKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5o
CmluZGV4IGM4ZDQxMjk4Yjk3MDg4YjYyYzdlN2UzNWQyNjBlOGVlMDJmZDYzNDQuLjkzNjllOWQ5
NDQ2ZDdlYmY3ZmYyNjBiZTQ0ZTY2MzM4MjZkMmQyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SUNTdGF0cy5oCkBAIC03NSw3ICs3NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKElu
QnlJZFNlbGZQYXRjaCkgXAogICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhKdW1wKSBcCiAgICAg
bWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpIFwKLSAgICBtYWNybyhPcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplKQorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0
aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSkg
XAorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMpCiAKIGNsYXNz
IElDRXZlbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggNGY0NTI0ZGM3MmI0ZDkxYjcyOWVhOTVlYzhkMjYwZWMxODU2NDJmNC4u
YmU5NDExN2I4MGIyNGVjMDMwYjlkM2U0ZjMzYWIyNGZmYWJhYWNmMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMjEzLDYgKzIyMTMsMjQgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShnbG9iYWxP
YmplY3QsIGZpZWxkTmFtZSk7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0
UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBJZGVudGlmaWVyIGZpZWxkTmFtZSkKK3sKKyAgICBB
U1NFUlQoZmllbGROYW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0
Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNWYWx1ZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBiYXNlLT5nZXRQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShnbG9i
YWxPYmplY3QsIGZpZWxkTmFtZSk7Cit9CisKIGV4dGVybiAiQyIgewogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkKQEAg
LTIyMzQsNyArMjI1Miw2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIEFTU0VS
VChmaWVsZE5hbWUuaXNTeW1ib2woKSk7CiAKICAgICAgICAgSlNPYmplY3QqIGJhc2UgPSBqc0Nh
c3Q8SlNPYmplY3QqPihiYXNlVmFsdWUuYXNDZWxsKCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVy
dHkpOwogICAgICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5h
bWUsIHNsb3QpOwpAQCAtMjI2NSw2ICsyMjgyLDU2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWVWYWx1ZSkpOwogfQogCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7
CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2Fj
aGVhYmxlSWRlbnRpZmllcik7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Cisg
ICAgYXV0byBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVp
ZCgpKTsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBKU09iamVj
dCogYmFzZSA9IGpzQ2FzdDxKU09iamVjdCo+KGJhc2VWYWx1ZS5hc0NlbGwoKSk7CisKKyAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldE93blByb3BlcnR5KTsKKyAgICAgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVy
YXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZt
KSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2Fj
aGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0pLCBpZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUo
Z2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUs
IGZpZWxkTmFtZSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7
CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJ
ZGVudGlmaWVyKTsKKyAgICBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IElkZW50aWZpZXI6OmZyb21V
aWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBnZXRQcml2
YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpOwor
CisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmlj
LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCA2NWU3MTI1OTU2ODMwYTg4M2U4MzMzMDc5NTM5ZTIwNDQyYzA1ZDk0
Li5lZDk4ZjgzMDViMzMyNjA4NDI3YTQ2Y2MwNDlmZmViODhjMWYyM2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjc2LDYgKzI3Niw4IEBAIENhbGxG
cmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSosCiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1l
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGRO
YW1lKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7
CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5
VHlwZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5k
ZXgpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoSW1t
V2l0aFVua25vd25LZXlUeXBlKFZNKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJ
bmRleCkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCA5ODVlMTM2MDYwNDViNGNkYzRiYzY1MmJmMDAwMzMwZTBkYTEw
ZDVhLi5mYjE1ODM2NThiMmIxZGQwYTA2NjNhNWQwMGJjZjVjYzVkNDdhMzBiIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA5LTAxICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0pTQ10gc3VwcG9ydCBvcF9nZXRfcHJpdmF0ZV9uYW1lIGluIERGRworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0ODYxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1w
cml2YXRlLW5hbWUtYnktaWQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctZ2V0LXBy
aXZhdGUtbmFtZS1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0
LXByaXZhdGUtbmFtZS1ieS1pZC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2Z0bC1nZXQt
cHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1tdWx0aS5qczogQWRkZWQuCisKIDIwMjAtMDgtMzAgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBAZGVmYXVs
dFByb21pc2VUaGVuIGZhc3QgcGF0aCBzaG91bGQgY2hlY2sgc3BlY2llcyBjb25zdHJ1Y3Rvcgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MmY1ODBiOWE3ZDVlMWZlYzk1YjMyMzYwNWNiZWRhM2I4NGEwMWNiCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMKQEAgLTAs
MCArMSw5OCBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdpdGggbWFueSBpbmNv
bXBhdGlibGUgc3RydWN0dXJlIHZhcmlhbnRzLCB0aGlzIHRlc3QgY2hlY2tzIHRoZSBHZXRQcml2
YXRlTmFtZSBsb3dlcmluZyBpbiBERkcgd2hlbgorLy8gcmVkdWNpbmcgdG8gR2V0QnlPZmZzZXQg
aXMgbm90IHBvc3NpYmxlLgorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBp
ZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3Nh
Z2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBl
Y3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlw
ZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlm
ICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0
YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1
dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwg
YGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0K
K30pOworCisKK2xldCBiYXNlcyA9IFsKKyAgeworICB9LAorICB7CisgICAgYTogMSwKKyAgfSwK
KyAgeworICAgIGI6IDEsCisgICAgYTogMiwKKyAgfSwKKyAgeworICAgIGM6IDEsCisgICAgZDog
MiwKKyAgICBhOiAzLAorICB9LAorICB7CisgIH0sCisgIHsKKyAgICB6OiAxLAorICAgIGE6IDIs
CisgICAgYjogMywKKyAgICBxOiA0LAorICB9LAorICB7CisgICAgYTogMSwKKyAgICBkOiAyLAor
ICAgIHo6IDMsCisgICAgeDogNCwKKyAgICBmOiA1LAorICB9LAorICB7CisgICAgZzogMSwKKyAg
ICBiOiAyLAorICAgIGQ6IDMsCisgICAgcTogNCwKKyAgICB4OiA1LAorICAgIGQ6IDYsCisgIH0K
K107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoaSkgeworICAgIGlmIChpIDwgMTAwKQor
ICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJiAzXSk7CisgICAgcmV0dXJu
IE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJiBiYXNlcy5sZW5ndGhdKTsKKyAgfQorfQorY2xh
c3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0ZSA9ICJwcml2YXRlIjsKKyAgZ2V0UHJpdmF0
ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3Ip
Oworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMu
cHJvdG90eXBlLmdldFByaXZhdGUpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7
CisKK2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24g
dGVzdChvKSB7CisgIGFzc2VydC5lcXVhbHMoZ2V0UHJpdmF0ZS5jYWxsKG8pLCAicHJpdmF0ZSIp
OworfQorCit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcg
QygwKSwgMCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICB0ZXN0KG5ldyBD
KGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30KK2Fzc2VydC50aHJvd3Mo
KCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmct
Z2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXBy
aXZhdGUtbmFtZS1ieS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4ZTNkNzJiNWYzMjNkMWFiZTBi
NzJjOGE3N2ExOGRiZjE4MjQwMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Rm
Zy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qcwpAQCAtMCwwICsxLDYzIEBACisvL0ByZXF1
aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz10cnVlIikKKworLy8gV2l0aCBubyBpbmNvbXBhdGlibGUgc3RydWN0dXJlIHZh
cmlhbnRzLCBHZXRQcml2YXRlTmFtZSBpcyBjb252ZXJ0ZWQgdG8gR2V0QnlPZmZzZXQKKy8vIGR1
cmluZyBieXRlY29kZSBwYXJzaW5nLiBXZSB0ZXN0IHRoYXQgaXQncyBzdGlsbCBzZW1hbnRpY2Fs
bHkgdmFsaWQuCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhw
cikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsK
K30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7Cisg
ICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVv
ZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2Yg
ZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3
ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0
ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisK
K2NsYXNzIEMgeworICAjcHJpdmF0ZSA9ICJwcml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0
dXJuIHRoaXMuI3ByaXZhdGU7IH0KKyAgY29uc3RydWN0b3IoaSkgeworICAgIGlmIChpID09PSA5
OTUpCisgICAgICByZXR1cm4ge307CisgIH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOwor
bm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJv
dG90eXBlLmdldFByaXZhdGUpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisK
K2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVz
dChvKSB7CisgIHJldHVybiBnZXRQcml2YXRlLmNhbGwobyk7Cit9CituZXZlcklubGluZUZ1bmN0
aW9uKHRlc3QpOworCisvLyBXYXJtdXAKK3Rlc3QobmV3IEMsIDApOwordGVzdChuZXcgQywgMCk7
Cit0ZXN0KG5ldyBDLCAwKTsKKwordmFyIGk7Citmb3IgKHZhciBqID0gMDsgaiA8IDI7ICsraikg
eworICBhc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgMjAwMDsgKytp
KSB7CisgICAgICBhc3NlcnQuZXF1YWxzKHRlc3QobmV3IEMoaSkpLCAicHJpdmF0ZSIpOworICAg
ICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKKyAgICB9CisgIH0sIFR5cGVFcnJvcik7
CisKKyAgLy8gV2Ugc2hvdWxkIHRocm93IG9uIGl0ZXJhdGlvbiA5OTUsIGJlY2F1c2UgdGhpcyB3
aWxsIHJlc3VsdCBpbiBhbiBpbnZhbGlkIGxvYWQuCisgIGFzc2VydC5lcXVhbHMoaSwgOTk1KTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlk
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTdjMTc4OTgzZmRlNjQyNjUyZGYzMzgzYmFhMTY4NzFjM2Y4OTVkMAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBA
IC0wLDAgKzEsMTA3IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGll
cnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5s
aW5pbmc9ZmFsc2UiKQorCisvLyBXaXRoIG1hbnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJp
YW50cywgdGhpcyB0ZXN0IGNoZWNrcyB0aGUgR2V0UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZH
IHdoZW4KKy8vIHJlZHVjaW5nIHRvIEdldEJ5T2Zmc2V0IGlzIG5vdCBwb3NzaWJsZS4KKy8vIFRo
aXMgdGVzdCBkaXNhYmxlcyBpbmxpbmluZyBsb2FkcyB0byBHZXRCeU9mZnNldCBpbiBvcmRlciB0
byBwcmV2ZW50IHJlZHVjaW5nIHRoZSBHZXRQcml2YXRlTmFtZUJ5SWQgdG8gTXVsdGlHZXRCeU9m
ZnNldCBpbiB0aGUKKy8vIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLiBJdCBpcyBjb25jZWl2YWJs
eSBwb3NzaWJsZSBmb3IgdGhpcyBzY2VuYXJpbyB0byBiZSBlbmNvdW50ZXJlZCB3aXRob3V0IGRp
c2FibGluZyBpbmxpbmUgYWNjZXNzLgorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkg
eworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAk
e21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQg
JHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVy
cm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQo
ZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5h
bWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChm
YWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7
CisgIH0KK30pOworCitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisg
IH0sCisgIHsKKyAgICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBjOiAxLAorICAg
IGQ6IDIsCisgICAgYTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAgejogMSwKKyAgICBh
OiAyLAorICAgIGI6IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEsCisgICAgZDog
MiwKKyAgICB6OiAzLAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKKyAgeworICAgIGc6IDEs
CisgICAgYjogMiwKKyAgICBkOiAzLAorICAgIHE6IDQsCisgICAgeDogNSwKKyAgICBkOiA2LAor
ICB9LAorICB7CisgICAgejogMSwKKyAgICBxOiAyLAorICAgIGY6IDMsCisgICAgeTogNCwKKyAg
ICBhOiA1LAorICAgIDA6IDYsCisgICAgazogNywKKyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAg
Y29uc3RydWN0b3IoaSkgeworICAgIGlmIChpIDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5h
c3NpZ24oe30sIGJhc2VzW2kgJiAzXSk7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJh
c2VzW2kgJSBiYXNlcy5sZW5ndGhdKTsKKyAgfQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2Ugewor
ICAjcHJpdmF0ZSA9ICJwcml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3By
aXZhdGU7IH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rv
cik7Citub0ZUTChDLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZh
dGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0
aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZh
dGUiKTsKK30KKwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3Qo
bmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9IDA7ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwg
MTAwMDA7ICsraSkgeworICB0ZXN0KG5ldyBDKGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlv
bih0ZXN0KTsKK30KK2Fzc2VydC50aHJvd3MoKCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVs
dGkuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVs
dGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzU3ZDM2NGU1OGNhMjVlNDVjNjQxYTJjZTVhYmI3YWVhMTU5Yzgw
NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1l
LWJ5LW9mZnNldC1tdWx0aS5qcwpAQCAtMCwwICsxLDg3IEBACisvL0ByZXF1aXJlT3B0aW9ucygi
LS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10
cnVlIikKKworLy8gV2l0aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRo
aXMgdGVzdCB3aWxsIGZhaWwgdG8gZ2VuZXJhdGUgR2V0QnlPZmZzZXQgZHd1cmluZyBERkdCeXRl
Q29kZVBhcnNpbmcuCisvLyBEdXJpbmcgRlRMIGNvbXBpbGF0aW9uLCBpdCB3aWxsIHRyeSBhZ2Fp
biBpbiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS4KK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNz
YWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWls
ZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBl
Y3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhm
biwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFz
c2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5
cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNz
ZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
bi5gKTsKKyAgfQorfSk7CisKK2xldCBiYXNlcyA9IFsKKyAgeworICB9LAorICB7CisgICAgYTog
MSwKKyAgfSwKKyAgeworICAgIGI6IDEsCisgICAgYTogMiwKKyAgfSwKKyAgeworICAgIGM6IDEs
CisgICAgZDogMiwKKyAgICBhOiAzLAorICB9LAorICB7CisgIH0sCisgIHsKKyAgICB6OiAxLAor
ICAgIGE6IDIsCisgICAgYjogMywKKyAgICBxOiA0LAorICB9LAorICB7CisgICAgYTogMSwKKyAg
ICBkOiAyLAorICAgIHo6IDMsCisgICAgeDogNCwKKyAgICBmOiA1LAorICB9LAorXTsKK2NsYXNz
IEJhc2UgeworICBjb25zdHJ1Y3RvcihpKSB7CisgICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1
cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAmIDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFz
c2lnbih7fSwgYmFzZXNbaSAlIGJhc2VzLmxlbmd0aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVu
ZHMgQmFzZSB7CisgICNwcml2YXRlID0gInByaXZhdGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1
cm4gdGhpcy4jcHJpdmF0ZTsgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhD
LmNvbnN0cnVjdG9yKTsKK25vRlRMKEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5
cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0
ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7CisgIGFzc2VydC5lcXVhbHMoZ2V0UHJpdmF0ZS5jYWxs
KG8pLCAicHJpdmF0ZSIpOworfQorCit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCks
IDApOwordGVzdChuZXcgQygwKSwgMCk7Citmb3IgKHZhciBpID0gMDsgIWlzRmluYWxUaWVyKHRl
c3QpICYmIGkgPCAxMDAwMDsgKytpKSB7CisgIHRlc3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5l
eHRJbnZvY2F0aW9uKHRlc3QpOworfQorYXNzZXJ0LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30p
Cit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407823</attachid>
            <date>2020-09-02 15:27:22 -0700</date>
            <delta_ts>2020-09-30 13:27:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20200902182721.patch</filename>
            <type>text/plain</type>
            <size>50375</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzgxMGU4MGU4NzEyYWRhODkxMjEyZjgzMmRmMGNmYzI0NTJmODMzLi5hZDQ3NDcxZjNkN2MyYzhj
M2M1YzlkZWFjMDY1YjVmZTkzNTM1OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAyMC0wOS0wMiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5k
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUuCisKKyAgICAgICAgRHVy
aW5nIERGRyBieXRlY29kZSBwYXJzaW5nLCB3ZSB3aWxsIGF0dGVtcHQsIGlmIGRlZW1lZCBwb3Nz
aWJsZSBieQorICAgICAgICB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCB0byBvdXRwdXQgYSBH
ZXRCeU9mZnNldCBvcGVyYXRpb24uIElmIGEKKyAgICAgICAgc2luZ2xlIHByaXZhdGUgZmllbGQg
aWRlbnRpZmllciBpcyB1c2VkIGluIGFsbCBjYXNlcyAodGhlIGNvbW1vbiBjYXNlKSwKKyAgICAg
ICAgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBzdHJ1Y3R1cmUgdmFyaWFudHMsIGEgR2V0UHJpdmF0
ZU5hbWVCeUlkCisgICAgICAgIG9wZXJhdGlvbiBpcyBlbWl0dGVkIGluc3RlYWQuIEZhaWxpbmcg
dGhhdCwgdGhlIEdldFByaXZhdGVOYW1lCisgICAgICAgIG9wZXJhdGlvbiBpcyBwcm9kdWNlZCwg
d2hpY2ggcHJvZHVjZXMgYSBHZXRCeVZhbCBJQyBsaWtlIGluIHRoZQorICAgICAgICBiYXNlbGlu
ZSBKSVQuCisKKyAgICAgICAgSW4gRlRMLCBHZXRQcml2YXRlTmFtZUJ5SUQgY2FuIGJlIHJlZHVj
ZWQgdG8gW011bHRpXUdldEJ5T2Zmc2V0IGluIHRoZQorICAgICAgICBERkdDb25zdGFudEZvbGRp
bmdQaGFzZSwgb3IgYSBHZXRCeUlEIElDIHdoZW4gbG93ZXJpbmcgdG8gQjMuCisKKyAgICAgICAg
KiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
OgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24pOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlHZXRCeVN0YXR1cyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0
VG9HZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlH
ZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FjaGVhYmxlSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFByaXZhdGVOYW1lKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OmFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0Qnkp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisKIDIwMjAtMDktMDEgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwIGZhc3QvY3NzLWN1c3RvbS1wYWlu
dC9vdXQtb2YtbWVtb3J5LXdoaWxlLWFkZGluZy13b3JrbGV0LW1vZHVsZS5odG1sIGlmIEdpZ2Fj
YWdlIGlzIG5vdCBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5U3RhdHVzLmNwcAppbmRleCAxNTgwMjFmMzk5MjNmMmMwMjU5YmNiOGZlZGM4NTRiZTZiMzc1
ZWMyLi40MjQ4NmMxNjVjYjg3ZGMyM2VkYzU5ZmI2YjI4NzAwNmZiNTRiZmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTEwOCw2ICsx
MDgsOSBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5kZQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgICAgIHJldHVybiBHZXRCeVN0YXR1
cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaAppbmRleCA2MDQ4Y2QwNDI4ZTkzN2Q0ZDMzNDAzOTYzMDM0N2M5ZDliNzJl
MTY1Li44OWRmNGQ3YjEyOGNjYmMwNDk2ZDE1ZWRkNjI2NmNmZTdkMjI4Y2QyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAt
NDA0LDYgKzQwNCw4IEBAIGlubGluZSBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRG
dW5jdGlvbihBY2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZvCiAgICAgICAgIHJldHVybiBv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlk
RGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplOwor
ICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVy
YXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dEJ5SWRXaXRoVGhpczoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTQyMCw2ICs0MjIsOCBAQCBpbmxpbmUgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNHZXRC
eUlkRnVuY3Rpb24oQWNjZXNzVHlwZSB0eXBlKSAtPiBkZWNsdHlwZSgmb3BlcgogICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWM7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpH
ZXRCeUlkRGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERpcmVjdEdlbmVy
aWM7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJu
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWM7CiAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkwMmYyMDcyYjYxNjM2ZGFhZmNjZGQ2YzQz
NGU0MWEzYjE1M2ZlZC4uM2MwZjcyMTEyY2ViNWRkODU2MDBkNzUzNGI4OTIyODQyZWY3OGMwNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMzM0OCw2ICszMzQ4LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUpOwogICAgICAgICBicmVh
azsKIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgR2V0QnlJZERpcmVj
dDoKICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICBjYXNlIEdldEJ5SWQ6CkBAIC0z
MzgzLDYgKzMzODQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNhc2UgR2V0QnlWYWxXaXRo
VGhpczoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2xvYmJlcldvcmxkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IDIxMjJhYTQ5NWRhNzQzY2RkNWVmYzJkNGFjYWI3NjA0M2JmMzNjYjkuLjBkZTk2Nzc0NWNh
NTZjNTc4ZDc3ZTM3MmVkMjE3YmZiMmNlOTEzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDQsOCArMjQ0LDExIEBAIHByaXZh
dGU6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICB2b2lkIHBhcnNlR2V0QnlJZChj
b25zdCBJbnN0cnVjdGlvbiopOworICAgIHZvaWQgc2ltcGxpZnlHZXRCeVN0YXR1cyhOb2RlKiBi
YXNlLCBHZXRCeVN0YXR1cyYpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMs
IEFjY2Vzc1R5cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKKyAgICB2b2lkIGhhbmRs
ZUdldFByaXZhdGVOYW1lQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9u
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cyk7CiAgICAgdm9pZCBl
bWl0UHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgTm9k
ZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUp
OwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKQEAgLTQ1MzksOSArNDU0Miw3IEBAIE5vZGUqIEJ5
dGVDb2RlUGFyc2VyOjpzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25z
dCBQdXRCeUlkVmFyaWFuCiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJhc2UsIGlkZW50
aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhbHVlKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlJZCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBHZXRCeVN0YXR1cyBnZXRC
eVN0YXR1cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkKK3Zv
aWQgQnl0ZUNvZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMoTm9kZSogYmFzZSwgR2V0QnlT
dGF0dXMmIGdldEJ5U3RhdHVzKQogewogICAgIC8vIEF0dGVtcHQgdG8gcmVkdWNlIHRoZSBzZXQg
b2YgdGhpbmdzIGluIHRoZSBHZXRCeVN0YXR1cy4KICAgICBpZiAoYmFzZS0+b3AoKSA9PSBOZXdP
YmplY3QpIHsKQEAgLTQ1NTgsNiArNDU1OSwxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVHZXRCeUlkKAogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICBnZXRCeVN0YXR1cy5maWx0
ZXIoYmFzZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIH0KK30KKwordm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlR2V0QnlJZCgKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBHZXRCeVN0YXR1cyBn
ZXRCeVN0YXR1cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkK
K3sKKyAgICBzaW1wbGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3RhdHVzKTsKICAgICAKICAg
ICBOb2RlVHlwZSBnZXRCeUlkOwogICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQp
CkBAIC00NzI1LDYgKzQ3MzMsNzggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJ
ZCgKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCByZWdpc3Rlck9mZnNl
dCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlvbik7CiB9CiAKKy8vIEEgdmFy
aWFudCBvbiBoYW5kbGVHZXRCeUlkIHdoaWNoIGlzIG1vcmUgbGltaXRlZCBpbiBzY29wZQordm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAorICAgIFZpcnR1YWxS
ZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cykKK3sKKyAgICBzaW1wbGlmeUdldEJ5U3RhdHVz
KGJhc2UsIGdldEJ5U3RhdHVzKTsKKworICAgIEFTU0VSVCghZ2V0QnlTdGF0dXMuaXNDdXN0b20o
KSk7CisgICAgQVNTRVJUKCFnZXRCeVN0YXR1cy5tYWtlc0NhbGxzKCkpOworICAgIGlmICghZ2V0
QnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0
aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBzZXQoZGVzdGluYXRpb24sCisg
ICAgICAgICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZp
ZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgeworICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAgICAgIHx8ICFPcHRpb25z
Ojp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5U3Rh
dHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5n
TGlzdFNpemUoKSkgeworICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9w
SW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeVN0YXR1cywgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRCeVN0YXR1cyhjdXJyZW50
Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAgICAgICBWZWN0b3I8TXVs
dGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOworCisgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90
eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBt
YXliZSBub3QgYmUKKyAgICAgICAgLy8gICAgb3B0aW1hbCwgaWYgdGhlcmUgaXMgc29tZSByYXJl
bHkgZXhlY3V0ZWQgY2FzZSBpbiB0aGUgY2hhaW4gdGhhdCByZXF1aXJlcyBhIGxvdAorICAgICAg
ICAvLyAgICBvZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBhcmUgbm90IHdhdGNocG9pbnRhYmxl
LgorICAgICAgICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogZ2V0QnlTdGF0
dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQuaW50cmluc2ljKCkg
PT0gTm9JbnRyaW5zaWMpOworICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQuY29uZGl0aW9uU2V0
KCkuaXNFbXB0eSgpKTsKKworICAgICAgICAgICAgR2V0QnlPZmZzZXRNZXRob2QgbWV0aG9kID0g
R2V0QnlPZmZzZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZzZXQoKSk7CisgICAgICAgICAgICBj
YXNlcy5hcHBlbmQoTXVsdGlHZXRCeU9mZnNldENhc2UoKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpLCBtZXRob2QpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFw
aC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgICAgIC8vIDIp
IEVtaXQgYSBNdWx0aUdldEJ5T2Zmc2V0CisgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBk
YXRhID0gbV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRh
LT5jYXNlcyA9IGNhc2VzOworICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRp
Zmllck51bWJlcjsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9H
cmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwg
YmFzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IElmIHdlIHVz
ZSB0aGUgR2V0QnlTdGF0dXMgZm9yIGFueXRoaW5nIHRoZW4gd2Ugc2hvdWxkIHJlY29yZCBpdCBh
bmQgaW5zZXJ0IGEgbm9kZQorICAgIC8vIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSAobGlrZSB0aGUg
R2V0QnlPZmZzZXQgb3Igd2hhdGV2ZXIpIHRoYXQgd2lsbCBmaWx0ZXIgdGhlIHJlY29yZGVkCisg
ICAgLy8gR2V0QnlTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29uc3RhbnQgZm9sZGVyIGFs
c28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeVN0YXR1
cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRCeVN0YXR1
cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAgIEFTU0VS
VChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgIEdldEJ5SWRWYXJpYW50IHZh
cmlhbnQgPSBnZXRCeVN0YXR1c1swXTsKKworICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChw
cmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKKyAgICBpZiAoIWxv
YWRlZFZhbHVlKSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgIG1fZ3JhcGguY29t
cGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKworICAgIGlmICghdmFyaWFudC5j
YWxsTGlua1N0YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpCisg
ICAgICAgIHNldChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOworfQorCiB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlv
biwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzLCBFQ01B
TW9kZSBlY21hTW9kZSkKQEAgLTYxODQsNiArNjI2NCw0MyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X3NldHRlcl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9nZXRfcHJp
dmF0ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOworICAgICAgICAgICAg
Tm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogcHJv
cGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29sIGNvbXBp
bGVTaW5nbGVJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdl
dEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4
dFN0YWNrLCBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IDA7CisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYm
ICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkg
eworCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3RhdHVzLnNpbmdsZUlkZW50
aWZpZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikgeworICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShp
ZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIu
aXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVu
ID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZVNpbmdsZUlkZW50aWZpZXIgPSB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNv
bXBpbGVTaW5nbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGhhbmRsZUdldFByaXZhdGVO
YW1lQnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwgaWRl
bnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWUsIE9wSW5mbygp
LCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBt
X2V4aXRPSyA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgbm9k
ZSk7CisgICAgICAgICAgICAgICAgaWYgKGdldEJ5U3RhdHVzLm9ic2VydmVkU3RydWN0dXJlU3R1
YkluZm9TbG93UGF0aCgpKQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc2xvd0dldEJ5
VmFsLmFkZChub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2dldF9wcml2YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9kZWxfYnlf
aWQ6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9i
YXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODVj
NjA5NjgwM2Q1YjE3MWEyNDUyNzQ3ZGM4ODA0NzU1YzQxMzljYS4uYWJjYjBiYTIxNGYxYWI0NTIw
ZTg3NWRmMmU4N2Y1MmJmMDdiNTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKQEAgLTY3MCw2ICs2NzAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgog
ICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBj
YXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAg
ICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAppbmRleCA1ZTJiZDljOTVlMDgyYjI4MDNjZmI5ZDkwM2I5NTYyNzNkOGZlMzI5Li4zMjJl
ZjMyMzZiYjE5NGMzY2RlNWFlZDE5NjVjM2RlZjc4NzEyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNTk5
LDcgKzU5OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAg
ICAgICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNhc2UgR2V0
QnlJZDoKLSAgICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CisgICAgICAgICAgICBjYXNl
IEdldEJ5SWRGbHVzaDoKKyAgICAgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CiAg
ICAgICAgICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAg
ICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAxOGI4ODM5Njli
NjkwZjEzZjZmZmJmYjdkNzU2YmIzY2EyMjA4Yzc5Li4zOGM1NzNiMjYzZGYxOGZjMDRmZDU4ODcw
NGI3NmM2Y2IxZWFkZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CkBAIC0zMjEsNiArMzIxLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6
CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAg
IGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQ
dXRUb0FyZ3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBiNmMwYmI4YmE5OTBmZmYzNWMwMDNjODYw
MTdlZTA2NzM0MTBlMDM4Li43MTdjNjgzYWFkNThkZTdiNTM0ZTVjNWQxODgyNjkzZjMyZDVlNjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3
ODAsNiArMTc4MCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVO
YW1lQnlJZDogeworICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNDYWNoZWFibGVJZGVudGlmaWVy
KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOiB7CiAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkgewogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAppbmRleCBhNWNkZjFhYTZmM2QyZDliMWU4NmVkNWJkMjMxOGI2MmQ2YWM4ZWU5
Li4xNmRlMzczMzA0MDlhMGEwNjRlOTZjM2E3MGUwYzcxMWE1YjFiMmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTk2LDcgKzU5Niw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIGNvbnZlcnRUb0dldEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdl
IHN0b3JhZ2UsIEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5
SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1f
b3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7Cisg
ICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwg
bV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoIHx8IG1f
b3AgPT0gR2V0UHJpdmF0ZU5hbWVCeUlkIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CiAg
ICAgICAgIG1fb3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShzdG9y
YWdlKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpAQCAtNjA2LDcgKzYwNiw3
IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQoTXVs
dGlHZXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlk
RGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0g
R2V0QnlJZERpcmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29wID09IEdl
dFByaXZhdGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gZGF0YTsKICAgICAgICAgY2hp
bGQxKCkuc2V0VXNlS2luZChDZWxsVXNlKTsKICAgICAgICAgbV9vcCA9IE11bHRpR2V0QnlPZmZz
ZXQ7CkBAIC0xMDgxLDYgKzEwODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdp
dGhUaGlzOgogICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgICAgIGNhc2UgR2V0QnlJ
ZERpcmVjdEZsdXNoOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAg
Y2FzZSBEZWxldGVCeUlkOgogICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgY2FzZSBQdXRC
eUlkOgpAQCAtMTc2NCw2ICsxNzY1LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIFRyeUdldEJ5
SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhp
czoKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICAgICAgY2FzZSBHZXRQcml2YXRl
TmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgog
ICAgICAgICBjYXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNjg4MTVkMzFlMzYwMDM0NDNmMTM1ZDViMzlkY2I1MmNk
OTAyMjBlLi5lYzA0MDQxMTcwZWY0MDZkYzdlMDRjOTIyNWE2ZjdlYThhOTBiMmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMzgsNiArMjM4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE51a2VTdHJ1Y3R1cmVBbmRT
ZXRCdXR0ZXJmbHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0FycmF5LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tBcnJheU9yRW1wdHksIE5vZGVNdXN0
R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRQcml2YXRlTmFtZSwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldFByaXZhdGVOYW1lQnlJZCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFRoaXMgY2hlY2tzIGlmIHRoZSBlZGdl
IGlzIGEgdHlwZWQgYXJyYXkgYW5kIGlmIGl0IGlzIG5ldXRlcmVkLiAqLyBcCiAgICAgbWFjcm8o
Q2hlY2tOZXV0ZXJlZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFycmF5aWZ5LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDlkM2Y4OWU2NmVh
ZTY4YzZjZDE1NDNjNzdjNTdmNTkwZDk3ODc0NzguLmYxZWMzNzJkMTBkMGYyNzYwNjYxMGJmM2Y2
YTgyNGJiODA3ZTYxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC04NzUsNiArODc1LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5
VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWU6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAg
ICAgIGNhc2UgQ2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKaW5kZXggYjA3Y2JhNzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3ZDFmMWNmNS4uNmE0
OGMzODljOTk0MjM2NTU3ZTUxNTFmNzBmY2JiMWQ4NDVlNzJlZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYsOCBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBj
YXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBH
ZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERl
ZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAg
Y2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJiYzFkZTVlZDE1NWFj
MC4uNDQ4YTI1YzI4Yjg5MjY3OWFiZDE5YjJiMjIwOWE4Y2QzNjgzNzRmZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM0NjgsNiAr
MzQ2OCw4NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RX
aXRoU3ltYm9sKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUq
IG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmhhc0NhY2hlYWJsZUlkZW50aWZpZXIoKSkKKyAgICAg
ICAgcmV0dXJuIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQobm9kZSk7CisKKyAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOworICAgIEpTVmFsdWVP
cGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworICAgIEpTVmFs
dWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBhdXRvIGJhc2VSZWdzID0gYmFzZS5q
c1ZhbHVlUmVncygpOworICAgIGF1dG8gcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJl
Z3MoKTsKKyAgICBhdXRvIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgYmFzZS51
c2UoKTsKKyAgICBwcm9wZXJ0eS51c2UoKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9q
aXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVl
ZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRS
ZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0Nhc2VzOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGguY2hpbGQo
bm9kZSwgMCkpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRv
ciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KG1faml0KTsKKyAgICAKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUsCisgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MpOworCisgICAgbV9qaXQuYWRkR2V0QnlW
YWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92
ZShzbG93UGF0aCkpOworCisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRh
Rm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgQ2VsbFVzZTogewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
KworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlLmdwcigpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7CisKKyAgICAgICAgYmFzZS51c2UoKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5
cGU6OkdldFByaXZhdGVOYW1lKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAgIEpTVmFsdWVS
ZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBiYXNlLnVzZSgpOworCisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFz
ZVJlZ3MpOworCisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxs
LCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCB1c2Uga2luZCIpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwgRWRnZSYg
Y2hpbGQyLCBFZGdlJiBjaGlsZDMpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJnMSh0
aGlzLCBjaGlsZDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IDFiNjMyMTdlMzZjNzFlYjFlZjBhMzZkODkyYzBlNjFkMjBmZTNlNTIuLjQ2
NzllNjU2Nzk4NjRjODgxZmM3MDQzODNlNjRmM2YwY2M2YTM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEyODIsNyArMTI4MiwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRGlyZWN0QXJndW1lbnRzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKE5vZGUqKTsK
LSAgICAKKworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSopOworCiAgICAgdm9pZCBjb21waWxlR2V0
U2NvcGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNraXBTY29wZShOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlR2V0R2xvYmFsT2JqZWN0KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDk3NGU3YTk2YThh
YTJlZDI3MDgxMjVhZjRlMGExYzM2OGY4ZjRkNWEuLjBkMDI3ZDdmMmQzZjQ5NDViYzUwMWY4ZmM5
NzM3YTIwMjU5OTQyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjI0MSw2ICsyMjQxLDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDog
eworICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJh
eU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0
aW9uczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDI3NzQ4MzJiY2YzNTM4N2MzYjVjMDdkMTNkOGY5ZGY3Y2Q1MGNhZDEuLjM1
MmQxYjgzNGE0NTY1ZWI4YzhhMzQwZTE0NTM4YjE0Zjc5MmU0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjYxNyw2ICsy
NjE3LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdl
dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAg
c3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6
QW55VHlwZWRBcnJheToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBjODBiMTY4NDRhYWJhY2Q4NTY2OTZkODQ1ZjgxYzNjNmY5NzczOTdhLi4z
NzZmOGQ3OTM0MDE2YTNiZWNlNTVmNDFiYTkyOTYwMGU4Mjk1YmYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTQsNiArMzk0LDggQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZh
bFdpdGhUaGlzOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRl
TmFtZUJ5SWQ6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxM
aW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZWZkY2JiNGViNDZkN2M3NDdm
M2Y2NzlmZWFmYjZmZTcxNDIzOGU2Yy4uYmU2NjIzNjhlNzc1NDgyZWIxZGU1N2M2OGI0NThlODU4
N2Q1NDc4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtOTM4LDYgKzkzOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWRE
aXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldEJ5
SWREaXJlY3QpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5h
bWU6CisgICAgICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEluQnlJZDoKICAgICAgICAgICAgIGNvbXBpbGVJbkJ5SWQoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMzkyMiw2ICszOTI4LDExMiBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKQorICAgIHsK
KyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKworICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgYm9vbCBiYXNlSXND
ZWxsID0gYWJzdHJhY3RWYWx1ZShub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAg
ICAKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2lu
dChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3BlcnR5KTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
cikpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0
Y2hSZWdpc3RlcnMoKSk7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKKworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1v
bi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworCisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0
IGZvciBvcGVyYXRpb24gY2FsbHMuCisgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6
SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0
aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBleGl0IGZvciBjYWxsIElDJ3MgY3JlYXRlZCBieSB0aGUgSUMgZm9yIGdldHRlcnMuIFdlIGRv
bid0IGhhdmUKKyAgICAgICAgICAgICAgICAvLyB0byBkbyBhbnl0aGluZyB3ZWlyZCBvdGhlciB0
aGFuIGNhbGwgdGhpcywgc2luY2UgaXQgd2lsbCBhc3NvY2lhdGUgdGhlIGV4aXQgd2l0aAorICAg
ICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KKyAgICAgICAgICAgICAgICBleGNl
cHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNp
dGVJbmRleCk7CisKKyAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBd
LmdwcigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigp
OworICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsK
KworICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJh
dG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5h
bWUsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVn
cyhyZXN1bHRHUFIpKTsKKworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RD
ZWxsOworICAgICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKKyAgICAgICAgICAgICAgICAg
ICAgbm90Q2VsbCA9IGppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUik7CisKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAgICAgICAgICAgICAg
IHBhcmFtcy5hZGRMYXRlUGF0aChbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICBqaXQu
anVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKKworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlu
a0J1ZmZlciwgbGlua0J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHNldEpTVmFsdWUocGF0
Y2hwb2ludCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKCkK
KyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGlmIChtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQorICAgICAgICAgICAgc2V0SlNWYWx1
ZShnZXRCeUlkKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBiYXNl
Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90
Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAorICAgICAgICAgICAgICAgIGlzQ2VsbChiYXNlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQx
KCkpKSwgdW5zdXJlKGJhc2VDZWxsQ2FzZSksIHVuc3VyZShub3RDZWxsQ2FzZSkpOworCisgICAg
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGJhc2VDZWxsQ2Fz
ZSwgbm90Q2VsbENhc2UpOworCisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKGdldEJ5SWQoYmFzZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUp
KTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm90Q2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAg
ICAgICAgICAgICBJbnQ2NCwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywKKyAg
ICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLAorICAgICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJh
d0JpdHMoKSkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgY2VsbFJlc3VsdCwgbm90Q2VsbFJlc3Vs
dCkpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZFdpdGhUaGlz
KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SUNTdGF0cy5oCmluZGV4IGM4ZDQxMjk4Yjk3MDg4YjYyYzdlN2UzNWQyNjBlOGVlMDJmZDYzNDQu
LjkzNjllOWQ5NDQ2ZDdlYmY3ZmYyNjBiZTQ0ZTY2MzM4MjZkMmQyMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03NSw3ICs3NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IG1hY3JvKEluQnlJZFNlbGZQYXRjaCkgXAogICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhKdW1w
KSBcCiAgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpIFwKLSAgICBtYWNybyhPcGVy
YXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKQorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZh
dGVOYW1lT3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRP
cHRpbWl6ZSkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMp
CiAKIGNsYXNzIElDRXZlbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNGY0NTI0ZGM3MmI0ZDkxYjcyOWVhOTVlYzhkMjYwZWMx
ODU2NDJmNC4uMjQ0ZTliZjc0NzBlZDg4NzBkYjY4MGQyYzZmODRiZmZkZjcyZGUxZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMjEzLDYgKzIy
MTMsMjQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICByZXR1cm4gc2xvdC5nZXRWYWx1
ZShnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSk7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpT
VmFsdWUgZ2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBJZGVudGlmaWVyIGZpZWxkTmFtZSkK
K3sKKyAgICBBU1NFUlQoZmllbGROYW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGJhc2VWYWx1ZS5yZXF1
aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBiYXNlLT5n
ZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICByZXR1cm4gc2xvdC5nZXRW
YWx1ZShnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSk7Cit9CisKIGV4dGVybiAiQyIgewogCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxk
TmFtZSkKQEAgLTIyMzQsNyArMjI1Miw2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAg
ICAgIEFTU0VSVChmaWVsZE5hbWUuaXNTeW1ib2woKSk7CiAKICAgICAgICAgSlNPYmplY3QqIGJh
c2UgPSBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFsdWUuYXNDZWxsKCkpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0
T3duUHJvcGVydHkpOwogICAgICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0
LCBmaWVsZE5hbWUsIHNsb3QpOwpAQCAtMjI2NSw2ICsyMjgyLDU2IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWVWYWx1ZSkpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0Jp
dHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
YmFzZSk7CisgICAgYXV0byBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVu
dGlmaWVyLnVpZCgpKTsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAg
ICBKU09iamVjdCogYmFzZSA9IGpzQ2FzdDxKU09iamVjdCo+KGJhc2VWYWx1ZS5hc0NlbGwoKSk7
CisKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICAgICAgYmFzZS0+Z2V0UHJpdmF0ZUZp
ZWxkKGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBiYXNlVmFsdWUuY2xhc3NJbmZv
T3JOdWxsKHZtKSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNv
bnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
dm0pLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5
S2luZDo6UHJpdmF0ZU5hbWVCeUlkKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
bG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKSk7CisgICAgfQorCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJ
ZGVudGlmaWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMo
cmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSWRlbnRpZmllciBmaWVsZE5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKKworICAgIEpTVmFsdWUgcmVz
dWx0ID0gZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwg
ZmllbGROYW1lKTsKKworICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVCeUlkR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwg
dHJ1ZSkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1
bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjVlNzEyNTk1NjgzMGE4ODNlODMzMzA3OTUz
OWUyMDQ0MmMwNWQ5NC4uZWQ5OGY4MzA1YjMzMjYwODQyN2E0NmNjMDQ5ZmZlYjg4YzFmMjNmYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI3Niw2ICsy
NzYsOCBAQCBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJh
bWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLAogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaENoYXJX
aXRoVW5rbm93bktleVR5cGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNp
emVfdCB0YWJsZUluZGV4KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZShWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwg
c2l6ZV90IHRhYmxlSW5kZXgpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCmluZGV4IDZhYTI2MDZhYTlkYjVjYmI5ZDY3MjgzMjlhOTFlY2FhNGZmNDQzMTgu
LmVkYzI3YWUxNmE4MjNjMjI3NTE1ZjRmMzM4M2I5YmM1YmRlMTRiOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTY0LDYgKzE2NCw4IEBAIGlubGluZSBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24o
R2V0QnlLaW5kCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOwogICAg
IGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJ
ZDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplOwog
ICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTgzLDYgKzE4
NSw4IEBAIGlubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2V0
QnlGdW5jdGlvbihHZXRCeUtpbmQga2luZCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5
VmFsR2VuZXJpYzsKICAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZTsKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0
ZU5hbWVCeUlkOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2Vu
ZXJpYzsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTIw
Miw3ICsyMDYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgIGlmICghYmFzZVZh
bHVlLmlzQ2VsbCgpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAg
IEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgIGNvbnN0IGJv
b2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOworICAgICAgICBj
b25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZSB8fCBr
aW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CmluZGV4IDA4M2EzZDVkNjg0Y2FiZGZiMTRjY2FlYjc0NWZlYzc2M2RmYmNhMjEuLjVkZDIwYzYz
NmEwNTE2ODdkOTE2ZTgwYWI3ODNiMGU5ZTY2ZDMxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBX
aXRoVGhpcywKICAgICBEaXJlY3QsCiAgICAgUHJpdmF0ZU5hbWUsCisgICAgUHJpdmF0ZU5hbWVC
eUlkLAogfTsKIAogZW51bSBjbGFzcyBEZWxCeUtpbmQgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5ODVlMTM2MDYwNDViNGNkYzRiYzY1
MmJmMDAwMzMwZTBkYTEwZDVhLi4xZGRiNWQ5NDhkNTRkYTUyMDdmNzlhYmVhNmMxOWUzMmJlYmZk
NmRmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA5LTAyICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gc3VwcG9ydCBvcF9nZXRfcHJpdmF0ZV9uYW1lIGlu
IERGRyBhbmQgRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQ4NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzOiBB
ZGRlZC4KKwogMjAyMC0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIEBkZWZhdWx0UHJvbWlzZVRoZW4gZmFzdCBwYXRoIHNob3VsZCBjaGVj
ayBzcGVjaWVzIGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0
LXByaXZhdGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1u
YW1lLWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZGM0YjliMmZmYmQ5ZTYwOWE2ODQwYmE3M2MyMmQ0
MGYwNmFmODEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZh
dGUtbmFtZS1ieS1pZC5qcwpAQCAtMCwwICsxLDk4IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1h
bGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVl
IikKKworLy8gV2l0aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMg
dGVzdCBjaGVja3MgdGhlIEdldFByaXZhdGVOYW1lIGxvd2VyaW5nIGluIERGRyB3aGVuCisvLyBy
ZWR1Y2luZyB0byBHZXRCeU9mZnNldCBpcyBub3QgcG9zc2libGUuCisKK2Z1bmN0aW9uIGFzc2Vy
dChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFz
c2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7
CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhw
ZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0s
CisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIp
CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhy
b3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRp
b24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKKworbGV0IGJhc2VzID0gWworICB7CisgIH0s
CisgIHsKKyAgICBhOiAxLAorICB9LAorICB7CisgICAgYjogMSwKKyAgICBhOiAyLAorICB9LAor
ICB7CisgICAgYzogMSwKKyAgICBkOiAyLAorICAgIGE6IDMsCisgIH0sCisgIHsKKyAgfSwKKyAg
eworICAgIHo6IDEsCisgICAgYTogMiwKKyAgICBiOiAzLAorICAgIHE6IDQsCisgIH0sCisgIHsK
KyAgICBhOiAxLAorICAgIGQ6IDIsCisgICAgejogMywKKyAgICB4OiA0LAorICAgIGY6IDUsCisg
IH0sCisgIHsKKyAgICBnOiAxLAorICAgIGI6IDIsCisgICAgZDogMywKKyAgICBxOiA0LAorICAg
IHg6IDUsCisgICAgZDogNiwKKyAgfQorXTsKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3Rvcihp
KSB7CisgICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFz
ZXNbaSAmIDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAlIGJhc2Vz
Lmxlbmd0aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICNwcml2YXRlID0g
InByaXZhdGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJpdmF0ZTsgfQorfQor
bm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMu
Y29uc3RydWN0b3IpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7Citub0lubGluZShD
LnByb3RvdHlwZS5nZXRQcml2YXRlKTsKKworbGV0IGdldFByaXZhdGUgPSBDLnByb3RvdHlwZS5n
ZXRQcml2YXRlOworCitmdW5jdGlvbiB0ZXN0KG8pIHsKKyAgYXNzZXJ0LmVxdWFscyhnZXRQcml2
YXRlLmNhbGwobyksICJwcml2YXRlIik7Cit9CisKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChu
ZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7CisgIHRlc3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRl
c3QpOworfQorYXNzZXJ0LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qcyBiL0pT
VGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMWJhNDJkYWM1NmZkNTFjZmMwMmUyMGU0ZWJkNjk5MmQ5NGJlZjRlCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzCkBA
IC0wLDAgKzEsNjIgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVy
cz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBXaXRoIG5vIGlu
Y29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIEdldFByaXZhdGVOYW1lIGlzIGNvbnZlcnRl
ZCB0byBHZXRCeU9mZnNldAorLy8gZHVyaW5nIGJ5dGVjb2RlIHBhcnNpbmcuIFdlIHRlc3QgdGhh
dCBpdCdzIHN0aWxsIHNlbWFudGljYWxseSB2YWxpZC4KKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIs
IG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9u
IEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1
YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwg
YGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhy
b3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vy
cm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMg
dGhyb3duLmApOworICB9Cit9KTsKKworY2xhc3MgQyB7CisgICNwcml2YXRlID0gInByaXZhdGUi
OworICBnZXRQcml2YXRlKG8pIHsgcmV0dXJuIG8uI3ByaXZhdGU7IH0KKyAgY29uc3RydWN0b3Io
aSkgeworICAgIGlmIChpID09PSA5OTUpCisgICAgICByZXR1cm4ge307CisgIH0KK30KK25vSW5s
aW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNvbnN0
cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0
ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICByZXR1
cm4gZ2V0UHJpdmF0ZShvKTsKK30KK25ldmVySW5saW5lRnVuY3Rpb24odGVzdCk7CisKKy8vIFdh
cm11cAordGVzdChuZXcgQywgMCk7Cit0ZXN0KG5ldyBDLCAwKTsKK3Rlc3QobmV3IEMsIDApOwor
Cit2YXIgaTsKK2ZvciAodmFyIGogPSAwOyBqIDwgMjsgKytqKSB7CisgIGFzc2VydC50aHJvd3Mo
KCkgPT4geworICAgIGZvciAoaSA9IDA7IGkgPCAyMDAwOyArK2kpIHsKKyAgICAgIGFzc2VydC5l
cXVhbHModGVzdChuZXcgQyhpKSksICJwcml2YXRlIik7CisgICAgICBvcHRpbWl6ZU5leHRJbnZv
Y2F0aW9uKHRlc3QpOworICAgIH0KKyAgfSwgVHlwZUVycm9yKTsKKworICAvLyBXZSBzaG91bGQg
dGhyb3cgb24gaXRlcmF0aW9uIDk5NSwgYmVjYXVzZSB0aGlzIHdpbGwgcmVzdWx0IGluIGFuIGlu
dmFsaWQgbG9hZC4KKyAgYXNzZXJ0LmVxdWFscyhpLCA5OTUpOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMgYi9KU1Rlc3RzL3N0cmVz
cy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2MxNzg5ODNmZGU2
NDI2NTJkZjMzODNiYWExNjg3MWMzZjg5NWQwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMKQEAgLTAsMCArMSwxMDcgQEAKKy8v
QHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKKy8v
IFdpdGggbWFueSBpbmNvbXBhdGlibGUgc3RydWN0dXJlIHZhcmlhbnRzLCB0aGlzIHRlc3QgY2hl
Y2tzIHRoZSBHZXRQcml2YXRlTmFtZSBsb3dlcmluZyBpbiBERkcgd2hlbgorLy8gcmVkdWNpbmcg
dG8gR2V0QnlPZmZzZXQgaXMgbm90IHBvc3NpYmxlLgorLy8gVGhpcyB0ZXN0IGRpc2FibGVzIGlu
bGluaW5nIGxvYWRzIHRvIEdldEJ5T2Zmc2V0IGluIG9yZGVyIHRvIHByZXZlbnQgcmVkdWNpbmcg
dGhlIEdldFByaXZhdGVOYW1lQnlJZCB0byBNdWx0aUdldEJ5T2Zmc2V0IGluIHRoZQorLy8gREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuIEl0IGlzIGNvbmNlaXZhYmx5IHBvc3NpYmxlIGZvciB0aGlz
IHNjZW5hcmlvIHRvIGJlIGVuY291bnRlcmVkIHdpdGhvdXQgZGlzYWJsaW5nIGlubGluZSBhY2Nl
c3MuCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09i
amVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
YXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91
bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5
IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJv
clR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JU
eXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1g
KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8g
dGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2xldCBi
YXNlcyA9IFsKKyAgeworICB9LAorICB7CisgICAgYTogMSwKKyAgfSwKKyAgeworICAgIGI6IDEs
CisgICAgYTogMiwKKyAgfSwKKyAgeworICAgIGM6IDEsCisgICAgZDogMiwKKyAgICBhOiAzLAor
ICB9LAorICB7CisgIH0sCisgIHsKKyAgICB6OiAxLAorICAgIGE6IDIsCisgICAgYjogMywKKyAg
ICBxOiA0LAorICB9LAorICB7CisgICAgYTogMSwKKyAgICBkOiAyLAorICAgIHo6IDMsCisgICAg
eDogNCwKKyAgICBmOiA1LAorICB9LAorICB7CisgICAgZzogMSwKKyAgICBiOiAyLAorICAgIGQ6
IDMsCisgICAgcTogNCwKKyAgICB4OiA1LAorICAgIGQ6IDYsCisgIH0sCisgIHsKKyAgICB6OiAx
LAorICAgIHE6IDIsCisgICAgZjogMywKKyAgICB5OiA0LAorICAgIGE6IDUsCisgICAgMDogNiwK
KyAgICBrOiA3LAorICB9LAorXTsKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcihpKSB7Cisg
ICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAm
IDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAlIGJhc2VzLmxlbmd0
aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICNwcml2YXRlID0gInByaXZh
dGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJpdmF0ZTsgfQorfQorbm9Jbmxp
bmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMuY29uc3Ry
dWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBnZXRQcml2
YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7CisgIGFz
c2VydC5lcXVhbHMoZ2V0UHJpdmF0ZS5jYWxsKG8pLCAicHJpdmF0ZSIpOworfQorCit0ZXN0KG5l
dyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7Citmb3Ig
KHZhciBpID0gMDsgIWlzRmluYWxUaWVyKHRlc3QpICYmIGkgPCAxMDAwMDsgKytpKSB7CisgIHRl
c3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRlc3QpOworfQorYXNzZXJ0
LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1tdWx0aS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1tdWx0aS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NTdkMzY0ZTU4Y2EyNWU0NWM2NDFhMmNlNWFiYjdhZWExNTljODA2Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpz
CkBAIC0wLDAgKzEsODcgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRU
aWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBXaXRoIG1h
bnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0ZXN0IHdpbGwgZmFpbCB0
byBnZW5lcmF0ZSBHZXRCeU9mZnNldCBkd3VyaW5nIERGR0J5dGVDb2RlUGFyc2luZy4KKy8vIER1
cmluZyBGVEwgY29tcGlsYXRpb24sIGl0IHdpbGwgdHJ5IGFnYWluIGluIERGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLgorZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHBy
KQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOwor
fQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1
dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAg
ICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9m
IGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBl
cnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcg
JHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3Rl
ZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKwor
bGV0IGJhc2VzID0gWworICB7CisgIH0sCisgIHsKKyAgICBhOiAxLAorICB9LAorICB7CisgICAg
YjogMSwKKyAgICBhOiAyLAorICB9LAorICB7CisgICAgYzogMSwKKyAgICBkOiAyLAorICAgIGE6
IDMsCisgIH0sCisgIHsKKyAgfSwKKyAgeworICAgIHo6IDEsCisgICAgYTogMiwKKyAgICBiOiAz
LAorICAgIHE6IDQsCisgIH0sCisgIHsKKyAgICBhOiAxLAorICAgIGQ6IDIsCisgICAgejogMywK
KyAgICB4OiA0LAorICAgIGY6IDUsCisgIH0sCitdOworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVj
dG9yKGkpIHsKKyAgICBpZiAoaSA8IDEwMCkKKyAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9
LCBiYXNlc1tpICYgM10pOworICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICUg
YmFzZXMubGVuZ3RoXSk7CisgIH0KK30KK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZh
dGUgPSAicHJpdmF0ZSI7CisgIGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9
Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOworbm9G
VEwoQy5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKKwor
bGV0IGdldFByaXZhdGUgPSBDLnByb3RvdHlwZS5nZXRQcml2YXRlOworCitmdW5jdGlvbiB0ZXN0
KG8pIHsKKyAgYXNzZXJ0LmVxdWFscyhnZXRQcml2YXRlLmNhbGwobyksICJwcml2YXRlIik7Cit9
CisKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDAp
LCAwKTsKK2ZvciAodmFyIGkgPSAwOyAhaXNGaW5hbFRpZXIodGVzdCkgJiYgaSA8IDEwMDAwOyAr
K2kpIHsKKyAgdGVzdChuZXcgQyhpKSk7CisgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7
Cit9Cithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgdGVzdCh7fSkKK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410149</attachid>
            <date>2020-09-30 13:27:55 -0700</date>
            <delta_ts>2020-10-05 15:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20200930162753.patch</filename>
            <type>text/plain</type>
            <size>71540</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NDAxYmRhNjgwZTNjZjlmZGFhMTM2ZTBkNjYxY2VlNmQxMjFhMDJmLi5jODU2NTgwMzEyNDRiOGVk
MDY0NDgwYjI3YzBhNzkzMjE4ZjViYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMC0wOS0zMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5k
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUuCisKKyAgICAgICAgRHVy
aW5nIERGRyBieXRlY29kZSBwYXJzaW5nLCB3ZSB3aWxsIGF0dGVtcHQsIGlmIGRlZW1lZCBwb3Nz
aWJsZSBieQorICAgICAgICB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCB0byBvdXRwdXQgYSBH
ZXRCeU9mZnNldCBvcGVyYXRpb24uIElmIGEKKyAgICAgICAgc2luZ2xlIHByaXZhdGUgZmllbGQg
aWRlbnRpZmllciBpcyB1c2VkIGluIGFsbCBjYXNlcyAodGhlIGNvbW1vbiBjYXNlKSwKKyAgICAg
ICAgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBzdHJ1Y3R1cmUgdmFyaWFudHMsIGEgR2V0UHJpdmF0
ZU5hbWVCeUlkCisgICAgICAgIG9wZXJhdGlvbiBpcyBlbWl0dGVkIGluc3RlYWQuIEZhaWxpbmcg
dGhhdCwgdGhlIEdldFByaXZhdGVOYW1lCisgICAgICAgIG9wZXJhdGlvbiBpcyBwcm9kdWNlZCwg
d2hpY2ggcHJvZHVjZXMgYSBHZXRCeVZhbCBJQyBsaWtlIGluIHRoZQorICAgICAgICBiYXNlbGlu
ZSBKSVQuCisKKyAgICAgICAgSW4gRlRMLCBHZXRQcml2YXRlTmFtZUJ5SUQgY2FuIGJlIHJlZHVj
ZWQgdG8gW011bHRpXUdldEJ5T2Zmc2V0IGluIHRoZQorICAgICAgICBERkdDb25zdGFudEZvbGRp
bmdQaGFzZSwgb3IgYSBHZXRCeUlEIElDIHdoZW4gbG93ZXJpbmcgdG8gQjMuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBlbmFibGVzIHRoZSBERkcgYW5kIEZUTCB0aWVycyB3aGVuIC0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzCisgICAgICAgIGlzIGVuYWJsZWQgKHNlZSBjaGFuZ2UgaW4gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uTGlzdC5oKQorCisgICAgICAgICogYnl0ZWNvZGUv
R2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21M
TEludCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAg
KEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6YXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1Bo
YXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvR2V0QnlPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVO
YW1lKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZh
dGVOYW1lQnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2YXRlTmFtZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgor
ICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJv
cHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0
ZUdldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKwogMjAy
MC0wOS0zMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjc3OTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRleCAxNTgwMjFmMzk5MjNmMmMwMjU5YmNi
OGZlZGM4NTRiZTZiMzc1ZWMyLi40MjQ4NmMxNjVjYjg3ZGMyM2VkYzU5ZmI2YjI4NzAwNmZiNTRi
ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0
dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5j
cHAKQEAgLTEwOCw2ICsxMDgsOSBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZy
b21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5kZQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgICAgIHJl
dHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisKICAgICBkZWZhdWx0OiB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA2MDQ4Y2QwNDI4ZTkzN2Q0ZDMzNDAz
OTYzMDM0N2M5ZDliNzJlMTY1Li44OWRmNGQ3YjEyOGNjYmMwNDk2ZDE1ZWRkNjI2NmNmZTdkMjI4
Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaApAQCAtNDA0LDYgKzQwNCw4IEBAIGlubGluZSBhdXRvIGFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5SWRGdW5jdGlvbihBY2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZvCiAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpHZXRCeUlkRGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERp
cmVjdE9wdGltaXplOworICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CisgICAg
ICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQyMCw2ICs0MjIsOCBAQCBpbmxpbmUgYXV0byBhcHByb3By
aWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24oQWNjZXNzVHlwZSB0eXBlKSAtPiBkZWNsdHlwZSgm
b3BlcgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWM7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0
QnlJZERpcmVjdEdlbmVyaWM7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWM7CiAgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOGIwNWQ1Zjk3NjA1
ZTZlNGI5ODVlYTk3MGU5MTQ5OTg3YmMwNDBkOS4uMWMzNzIzOGE5MDdjNjkyNWE5NmYwYjQ0NDY1
YWZhNjliNGU3YWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzM0OCw2ICszMzQ4LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNh
c2UgR2V0QnlJZERpcmVjdDoKICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICBjYXNl
IEdldEJ5SWQ6CkBAIC0zMzgzLDYgKzMzODQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNh
c2UgR2V0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IDhlOTNiN2IyNjY0YjJjYjFkZTQ2ZWZlNTViOGFmM2JkNDAzNTNi
ODEuLjk0NDYyMzI3ZjE5YTY2MzBmOGE2MjRmYmUzNWRiNDVmMzE3NjZjODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDQsOCAr
MjQ0LDExIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICB2b2lk
IHBhcnNlR2V0QnlJZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgIHZvaWQgc2ltcGxpZnlHZXRC
eVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyYpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJ
ZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwg
Tm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsK
KyAgICB2b2lkIGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1
cyk7CiAgICAgdm9pZCBlbWl0UHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgTm9kZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0Rp
cmVjdCwgRUNNQU1vZGUpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKQEAgLTQ1MzAsOSArNDUz
Myw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyLCBjb25zdCBQdXRCeUlkVmFyaWFuCiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zm
c2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhbHVlKTsKIH0KIAotdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVz
dGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBH
ZXRCeVN0YXR1cyBnZXRCeVN0YXR1cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9z
ckV4aXRJbmRleCkKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMoTm9k
ZSogYmFzZSwgR2V0QnlTdGF0dXMmIGdldEJ5U3RhdHVzKQogewogICAgIC8vIEF0dGVtcHQgdG8g
cmVkdWNlIHRoZSBzZXQgb2YgdGhpbmdzIGluIHRoZSBHZXRCeVN0YXR1cy4KICAgICBpZiAoYmFz
ZS0+b3AoKSA9PSBOZXdPYmplY3QpIHsKQEAgLTQ1NDksNiArNDU1MCwxMyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICBn
ZXRCeVN0YXR1cy5maWx0ZXIoYmFzZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIH0KK30KKwor
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAg
ICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4
IG9zckV4aXRJbmRleCkKK3sKKyAgICBzaW1wbGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3Rh
dHVzKTsKICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwogICAgIGlmICh0eXBlID09IEFjY2Vz
c1R5cGU6OkdldEJ5SWQpCkBAIC00NzE2LDYgKzQ3MjQsNzggQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAx
LCByZWdpc3Rlck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlvbik7
CiB9CiAKKy8vIEEgdmFyaWFudCBvbiBoYW5kbGVHZXRCeUlkIHdoaWNoIGlzIG1vcmUgbGltaXRl
ZCBpbiBzY29wZQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlk
KAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cykKK3sKKyAgICBzaW1w
bGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3RhdHVzKTsKKworICAgIEFTU0VSVCghZ2V0QnlT
dGF0dXMuaXNDdXN0b20oKSk7CisgICAgQVNTRVJUKCFnZXRCeVN0YXR1cy5tYWtlc0NhbGxzKCkp
OworICAgIGlmICghZ2V0QnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVtVmFy
aWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBzZXQo
ZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwg
T3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChnZXRCeVN0YXR1cy5udW1WYXJpYW50
cygpID4gMSkgeworICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAg
ICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAg
ICAgIHx8IGdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhp
Y0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9u
LAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8o
aWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRC
eVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRC
eVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAg
ICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOworCisgICAgICAgIC8v
IDEpIEVtaXQgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMg
Y291bGQgc29ydCBvZiBtYXliZSBub3QgYmUKKyAgICAgICAgLy8gICAgb3B0aW1hbCwgaWYgdGhl
cmUgaXMgc29tZSByYXJlbHkgZXhlY3V0ZWQgY2FzZSBpbiB0aGUgY2hhaW4gdGhhdCByZXF1aXJl
cyBhIGxvdAorICAgICAgICAvLyAgICBvZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBhcmUgbm90
IHdhdGNocG9pbnRhYmxlLgorICAgICAgICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50IDogZ2V0QnlTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpOworICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgpKTsKKworICAgICAgICAgICAgR2V0QnlPZmZzZXRN
ZXRob2QgbWV0aG9kID0gR2V0QnlPZmZzZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZzZXQoKSk7
CisgICAgICAgICAgICBjYXNlcy5hcHBlbmQoTXVsdGlHZXRCeU9mZnNldENhc2UoKm1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpLCBtZXRob2QpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAg
ICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOwor
CisgICAgICAgIC8vIDIpIEVtaXQgYSBNdWx0aUdldEJ5T2Zmc2V0CisgICAgICAgIE11bHRpR2V0
QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgp
OworICAgICAgICBkYXRhLT5jYXNlcyA9IGNhc2VzOworICAgICAgICBkYXRhLT5pZGVudGlmaWVy
TnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAg
ICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5m
byhwcmVkaWN0aW9uKSwgYmFzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IElmIHdlIHVzZSB0aGUgR2V0QnlTdGF0dXMgZm9yIGFueXRoaW5nIHRoZW4gd2Ugc2hv
dWxkIHJlY29yZCBpdCBhbmQgaW5zZXJ0IGEgbm9kZQorICAgIC8vIGFmdGVyIGV2ZXJ5dGhpbmcg
ZWxzZSAobGlrZSB0aGUgR2V0QnlPZmZzZXQgb3Igd2hhdGV2ZXIpIHRoYXQgd2lsbCBmaWx0ZXIg
dGhlIHJlY29yZGVkCisgICAgLy8gR2V0QnlTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29u
c3RhbnQgZm9sZGVyIGFsc28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgYWRkVG9HcmFwaChG
aWx0ZXJHZXRCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMo
KS5hZGRHZXRCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNl
KTsKKworICAgIEFTU0VSVChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgIEdl
dEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsKKworICAgIE5vZGUqIGxvYWRl
ZFZhbHVlID0gbG9hZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50
KTsKKyAgICBpZiAoIWxvYWRlZFZhbHVlKSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAg
ICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmll
ciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAg
ICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKworICAg
IGlmICghdmFyaWFudC5jYWxsTGlua1N0YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0g
Tm9JbnRyaW5zaWMpCisgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOworfQor
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdp
c3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLAogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0
ZUJ5U3RhdHVzLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTYzNDUsNiArNjQyNSw0MyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHV0X3NldHRlcl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAg
Y2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgp
OworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAg
ICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAg
ICAgICBib29sIGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICAgICAgICAg
IEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5l
TWFwLCBtX2ljQ29udGV4dFN0YWNrLCBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IDA7CisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRD
b25zdGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3Rh
dHVzLnNpbmdsZUlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikg
eworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlm
aWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96
ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkp
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZv
KGZyb3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZVNpbmdsZUlk
ZW50aWZpZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGhh
bmRsZUdldFByaXZhdGVOYW1lQnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwg
aWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMpOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0
ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgbm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKGdldEJ5U3RhdHVzLm9ic2Vy
dmVkU3RydWN0dXJlU3R1YkluZm9TbG93UGF0aCgpKQorICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fc2xvd0dldEJ5VmFsLmFkZChub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9wcml2YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBn
ZXQoYnl0ZWNvZGUubV9iYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKaW5kZXggYjViMTE2Njc4NGI3MzFjYTQ1NDdlMTk3NmNmOTljMGQ2NTIxZmNjMi4uM2Yz
NzNmM2Y4ZDA2NTBiOTE1M2MzZGQyMDMzMGVmODE3NjU3YzRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTY3Myw2ICs2NzMsOCBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIEdldFByaXZh
dGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVmaW5lRGF0
YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERl
bGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDY3N2Y2NGNiYzljMTBkNmQ2ODBkZWM0NzY5ZThlNGMz
ZjIzZDNmOWEuLmViYWJhYzExZDk1OWJlY2E5ZjMwZGQxMjdjNjgwY2UwYTNlYTJlZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCkBAIC01OTksNyArNTk5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgR2V0
QnlJZERpcmVjdDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgogICAgICAg
ICAgICAgY2FzZSBHZXRCeUlkOgotICAgICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKKyAg
ICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgICAgICAgICAgY2FzZSBHZXRQcml2YXRl
TmFtZUJ5SWQ6IHsKICAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxk
MSgpOwogICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUoKTsKICAg
ICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnVpZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IDUxMmY5M2M2YTMxMzZkODJjM2RiOWM3OGY0ZTc0Y2FkMDY2MWE3M2YuLjI0MjdkMjA4YmUz
NjZiM2M0ZTk1MmYyMTM2MzVjMDU1OGJlY2YwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTMyNCw2ICszMjQsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgR2V0UHJp
dmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBQdXRTdGFj
azoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDdiNWM1MWM5MzYz
NDY0ZmRhMDkwOTVjNDVhZmJkNWU5NWYyMTQ3YmIuLjQwYmM3OTkxODAyYTJjNzNhMjIwZjFiNDRi
NzI2NTU1M2YyODJkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcApAQCAtMTc4MCw2ICsxNzgwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIGNh
c2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPmhhc0NhY2hl
YWJsZUlkZW50aWZpZXIoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9s
KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkp
CisgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6IHsK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDA0ZTAyNWFiMmYxMWJlMjg2NTZhNTliNTcx
MjY1MGNmNTg3ZDNiYjUuLjg5N2I5OTllOTU0NGUyOWNmMDA2ZjlkODZjNDI3ZTU2OTMzZDVkZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01OTcsNyArNTk3LDcgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgY29udmVydFRvR2V0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0Rh
dGEmIGRhdGEsIEVkZ2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5
SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0Rmx1c2ggfHwgbV9vcCA9PSBNdWx0aUdl
dEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdl
dEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlkRGly
ZWN0Rmx1c2ggfHwgbV9vcCA9PSBHZXRQcml2YXRlTmFtZUJ5SWQgfHwgbV9vcCA9PSBNdWx0aUdl
dEJ5T2Zmc2V0KTsKICAgICAgICAgbV9vcEluZm8gPSAmZGF0YTsKICAgICAgICAgY2hpbGRyZW4u
c2V0Q2hpbGQxKHN0b3JhZ2UpOwogICAgICAgICBjaGlsZHJlbi5zZXRDaGlsZDIoYmFzZSk7CkBA
IC02MDcsNyArNjA3LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29udmVydFRvTXVsdGlH
ZXRCeU9mZnNldChNdWx0aUdldEJ5T2Zmc2V0RGF0YSogZGF0YSkKICAgICB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBt
X29wID09IEdldEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0Rmx1c2gpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1
c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNo
IHx8IG1fb3AgPT0gR2V0UHJpdmF0ZU5hbWVCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRh
OwogICAgICAgICBjaGlsZDEoKS5zZXRVc2VLaW5kKENlbGxVc2UpOwogICAgICAgICBtX29wID0g
TXVsdGlHZXRCeU9mZnNldDsKQEAgLTEwODIsNiArMTA4Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdDoKICAgICAg
ICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVC
eUlkOgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgSW5CeUlkOgogICAg
ICAgICBjYXNlIFB1dEJ5SWQ6CkBAIC0xNzY2LDYgKzE3NjcsOCBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgY2FzZSBH
ZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBj
YXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNl
IERpcmVjdENhbGw6CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVkQ2FsbGVyOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGNjNGZmYmVhZDY4ZWIwMmE1ODE2
ZWFiYjU1YzRiOTEyMDk1MDE5MjMuLjgxODY3OGFjZGExNzM4OTU2ODk1NjNmMWFmZWY0YmJkNDBl
ZWVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI0Miw2
ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTnVr
ZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENoZWNrQXJyYXksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0FycmF5T3JF
bXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldFByaXZhdGVOYW1lLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0UHJpdmF0ZU5hbWVC
eUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgLyogVGhpcyBjaGVj
a3MgaWYgdGhlIGVkZ2UgaXMgYSB0eXBlZCBhcnJheSBhbmQgaWYgaXQgaXMgbmV1dGVyZWQuICov
IFwKICAgICBtYWNybyhDaGVja05ldXRlcmVkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oQXJyYXlpZnksIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5k
ZXggZmY1NDM4YWFhNjlkNjc3MzUyOTI0NTUyNTBkMTExZWRkNzQ2ZTVkMy4uOTE0NTc2MzUyN2Yx
MjkyNDY5YjU5Mzg0MDIxMDU4NmU4YTZjZGVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAg
LTg3NSw2ICs4NzUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKKyAg
ICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5
SWQ6CiAgICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICAgICAgY2FzZSBHZXREaXJl
Y3RQbmFtZToKICAgICAgICAgY2FzZSBDYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA4M2Q0YzIyNjBlYmY2MzZhMjM2ZjY3ZTA2YjY4NTBl
OWI0NjViMDMwLi45MDM5MDM2NjQxZjU0ZGU3ZjZiOTZlOGEwMWMwZThmMDY2NGUxNzgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI5LDYg
KzUyOSw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZh
bDoKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlk
OgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6
CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclBy
b3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDkyNTMzODYyZWY2MDhlNzY0ODQ4NGZmOTk2
ZjhkNTM1ZGRlMDhlMjIuLjc1ODIxZWJmYzU0YWQyODYwNjYwOTg1MTY4NWZjYWU5MWFjMTYxYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0zNDY4LDYgKzM0NjgsODkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsRm9yT2JqZWN0V2l0aFN5bWJvbChOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2
YXRlTmFtZShOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5oYXNDYWNoZWFibGVJZGVudGlm
aWVyKCkpCisgICAgICAgIHJldHVybiBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKG5vZGUpOwor
CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3Bl
cnR5KHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBhdXRvIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygp
OworICAgIGF1dG8gcHJvcGVydHlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHByb3Bl
cnR5LmdwcigpKTsKKyAgICBhdXRvIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAg
YmFzZS51c2UoKTsKKyAgICBwcm9wZXJ0eS51c2UoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChw
cm9wZXJ0eS5lZGdlKCkpOworCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3Jp
Z2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRD
YWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9ncmFwaC5jaGlsZChub2RlLCAwKSku
aXNUeXBlKFNwZWNDZWxsKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoYmFzZVJlZ3MpKTsKKworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIHByb3Bl
cnR5UmVncywgcmVzdWx0UmVncyk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwor
ICAgIAorICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSwKKyAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
YmFzZVJlZ3MsIHByb3BlcnR5UmVncyk7CisKKyAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CisKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3By
KCkpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKwor
ICAgICAgICBiYXNlLnVzZSgpOworCisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWUpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0
YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOworCisgICAgICAgIGJhc2UudXNlKCk7CisKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CisK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1Nw
aWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisKKyAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGlj
aXRseSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIERG
R19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
Q2VsbFdpdGhTdHJpbmcoTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVk
Z2UmIGNoaWxkMykKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmcxKHRoaXMsIGNoaWxk
MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5k
ZXggZjA4ZGZlNzYyNzJhYjQ0ODUyYmU0MGQxZmRjY2VkNzJkMzg4MjBmOC4uNDhlMGZhYzIyODc0
NDUyNmI2MmZhNGJlMTYwZTkxNjY2MTUzYjhkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI4Miw3ICsxMjgyLDEwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25EaXJlY3RBcmd1bWVudHMoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMoTm9kZSopOwotICAgIAorCisg
ICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUdl
dFByaXZhdGVOYW1lQnlJZChOb2RlKik7CisKICAgICB2b2lkIGNvbXBpbGVHZXRTY29wZShOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlU2tpcFNjb3BlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRHbG9iYWxPYmplY3QoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZmMyMmRhYTQ2NzYwMjk2MDUxOTY4
YjJmOWQ2YmYyYmM5NDQ0Y2YxNS4uMTc0Y2MzNzZjMDUyZjlmMDE4ZWNkMzA3MTY5Y2ZhYzViMTE4
Njc2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCkBAIC0yMjQxLDYgKzIyNDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAg
IGNvbXBpbGVHZXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggNTcyOTljZjI3ZTRlYWNiMDE2NmUwN2RjYjM3YTIzMmM1MTgyMWUzNi4uM2M2MzgxM2FmODRj
YjI5YWNlZjY1YjA5Njk0YzA5NmU0MGYyZTBmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yNjE3LDYgKzI2MTcsMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5h
bWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICBzd2l0Y2ggKG5v
ZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpBbnlUeXBlZEFy
cmF5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IGFjODdmNmE1ZDZmMjViODQ1YjBmOTllMGRiMjE0YTVlZmQxNmI4ODYuLmEyNjg5ZTBjMTkx
MjY2MDRkZGRhZGU3NmI0ZWU3MzNkYTJiMzZjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5Nyw2ICszOTcsOCBAQCBpbmxpbmUgQ2Fw
YWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5VmFsV2l0
aFRoaXM6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
QnlJZDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVC
eUlkOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0
YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDU1ZWFhMDdmNmRhYTQ5MjYzYzFhODkx
NzdkZTk4ODYzYmJkMTdlZjguLjZjYmEzODc3MTY0MjdkZWQ1MDY0YzhmMmUyZWJmMTMzODI2NGFk
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTk0MCw2ICs5NDAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0
Rmx1c2g6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpHZXRCeUlkRGly
ZWN0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgor
ICAgICAgICAgICAgY29tcGlsZUdldFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgICAgICBjb21waWxlR2V0
UHJpdmF0ZU5hbWVCeUlkKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbkJ5
SWQ6CiAgICAgICAgICAgICBjb21waWxlSW5CeUlkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTM5MzMsNiArMzkzOSwxMTIgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKCkKKyAgICB7CisgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1Zh
bHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBM
VmFsdWUgcHJvcGVydHkgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworCisgICAgICAgIHNwZWN1bGF0ZShub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIHNwZWN1bGF0ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIGJvb2wgYmFzZUlzQ2VsbCA9
IGFic3RyYWN0VmFsdWUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7CisgICAgCisg
ICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50
NjQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm9wZXJ0eSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZv
Ojpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251
bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworCisgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Ig
b3BlcmF0aW9uIGNhbGxzLgorICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihw
YXJhbXMpLT5qdW1wcyhqaXQpOworCisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZXhp
dCBmb3IgY2FsbCBJQydzIGNyZWF0ZWQgYnkgdGhlIElDIGZvciBnZXR0ZXJzLiBXZSBkb24ndCBo
YXZlCisgICAgICAgICAgICAgICAgLy8gdG8gZG8gYW55dGhpbmcgd2VpcmQgb3RoZXIgdGhhbiBj
YWxsIHRoaXMsIHNpbmNlIGl0IHdpbGwgYXNzb2NpYXRlIHRoZSBleGl0IHdpdGgKKyAgICAgICAg
ICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCisgICAgICAgICAgICAgICAgZXhjZXB0aW9u
SGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5k
ZXgpOworCisgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIo
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisKKyAg
ICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46
OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAor
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVz
dWx0R1BSKSk7CisKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsK
KyAgICAgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCisgICAgICAgICAgICAgICAgICAgIG5v
dENlbGwgPSBqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VHUFIpOworCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CisKKyAgICAgICAgICAgICAgICBwYXJh
bXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJl
c3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAo
KS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5y
ZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKworICAgICAg
ICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZm
ZXIsIGxpbmtCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9p
bnQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCgpCisgICAg
eworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkKKyAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0
QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFt
ZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmFzZUNlbGxD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAg
ICAgICAgICAgICAgICBpc0NlbGwoYmFzZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSks
IHVuc3VyZShiYXNlQ2VsbENhc2UpLCB1bnN1cmUobm90Q2VsbENhc2UpKTsKKworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhiYXNlQ2VsbENhc2UsIG5v
dENlbGxDYXNlKTsKKworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1f
b3V0LmFuY2hvcihnZXRCeUlkKGJhc2UsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKSk7Cisg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAg
ICAgICAgSW50NjQsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsCisgICAgICAg
ICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwKKyAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCkpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWRXaXRoVGhpcygpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3Rh
dHMuaAppbmRleCBjOGQ0MTI5OGI5NzA4OGI2MmM3ZTdlMzVkMjYwZThlZTAyZmQ2MzQ0Li4yNGQ3
MGFjOWIzMzdmOGMwNmY4MzQ2NmE0OGIzM2Q3MTljOTczNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0lDU3RhdHMuaApAQCAtNzUsNyArNzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFj
cm8oSW5CeUlkU2VsZlBhdGNoKSBcCiAgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwK
ICAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykgXAotICAgIG1hY3JvKE9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUpCisgICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCkgXAor
ICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplKSBcCisgICAgbWFj
cm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCA1NzA4Y2IyNDBmOWZkZmEzMzUxZjA1ZTdhNTBjYmQwMTU2ZmRmMWQyLi4yODRmZjA5NjQ1
Njg4NjMzOTZmM2ZjZjVlMTI4YmY3YjljNWI3YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIyNjcsNiArMjI2NywyNCBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcgogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmll
bGROYW1lKTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFt
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNW
YWx1ZSBiYXNlVmFsdWUsIElkZW50aWZpZXIgZmllbGROYW1lKQoreworICAgIEFTU0VSVChmaWVs
ZE5hbWUuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworCisgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9i
YWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNWYWx1ZSgpKTsKKworICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwg
ZmllbGROYW1lKTsKK30KKwogZXh0ZXJuICJDIiB7CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUp
KQpAQCAtMjI4OCw3ICsyMzA2LDYgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG8KICAgICAgICAg
QVNTRVJUKGZpZWxkTmFtZS5pc1N5bWJvbCgpKTsKIAogICAgICAgICBKU09iamVjdCogYmFzZSA9
IGpzQ2FzdDxKU09iamVjdCo+KGJhc2VWYWx1ZS5hc0NlbGwoKSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Q
cm9wZXJ0eSk7CiAgICAgICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZp
ZWxkTmFtZSwgc2xvdCk7CkBAIC0yMzE5LDYgKzIzMzYsNzcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFs
T2JqZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZVZhbHVlKSk7CiB9CiAKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWQsIEVuY29kZWRK
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRl
bnRpZmllcikpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBzdHViSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGJhc2UpOworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZp
ZXIpOworICAgIElkZW50aWZpZXIgZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
aWRlbnRpZmllci51aWQoKSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldFByaXZhdGVOYW1l
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZSk7CisKKyAgICBM
T0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCwgYmFzZVZhbHVlLmNs
YXNzSW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwgdHJ1ZSkpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVCeUlkT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikpCit7CisgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxl
SWRlbnRpZmllcik7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgYXV0
byBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsK
KworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBKU09iamVjdCogYmFz
ZSA9IGpzQ2FzdDxKU09iamVjdCo+KGJhc2VWYWx1ZS5hc0NlbGwoKSk7CisKKyAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okdl
dE93blByb3BlcnR5KTsKKyAgICAgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVj
dCwgZmllbGROYW1lLCBzbG90KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgZmll
bGROYW1lLCB0cnVlKSk7CisKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5
KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0pLCBpZGVudGlmaWVy
KSkKKyAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6UHJpdmF0ZU5h
bWVCeUlkKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFZhbHVlKGds
b2JhbE9iamVjdCwgZmllbGROYW1lKSk7CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBm
aWVsZE5hbWUpKTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFBy
aXZhdGVOYW1lQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlk
ZW50aWZpZXIpKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMo
cmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSWRlbnRpZmllciBmaWVsZE5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKKworICAgIEpTVmFsdWUgcmVz
dWx0ID0gZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwg
ZmllbGROYW1lKTsKKworICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVCeUlkR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwg
dHJ1ZSkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJ
bmZvKiBieVZhbEluZm8pKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggMTM5ZDAyNWU1MzNh
Y2ZhMjA3ZTY3NzYwZTAyYmI5YjA3MmU2ZGFkZi4uODU4Y2RmMjdhN2FlNzhlZDdjMGFmMzgyNjJh
ZjhmZDRkNDMzODQyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTI3MSw2ICsyNzEsOSBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blNldHVwVmFyYXJnc0ZyYW1lLCBDYWxsRnJhbWUqLCAoSlNHbG9iYWxPYmplYwogCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWQsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlLCB1aW50cHRyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVCeUlkT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJp
YywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCB1aW50
cHRyX3QpKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hDaGFy
V2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoVk0qLCBFbmNvZGVk
SlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAppbmRleCBhMWE1MmRlNzdlNGZmNDAzZTI2NzY1Mzc0YmJjYWZkMDlmMGY2MzFl
Li5hMzliOGI4MThiNWEyNzRjODMzYzI5OWYxNzQzNjI4OGNlMjVhZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTE2NCw2ICsxNjQsOCBAQCBpbmxpbmUgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9u
KEdldEJ5S2luZAogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKICAg
ICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplOworICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5
SWQ6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE4Myw2ICsx
ODUsOCBAQCBpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZUdl
dEJ5RnVuY3Rpb24oR2V0QnlLaW5kIGtpbmQpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRC
eVZhbEdlbmVyaWM7CiAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgogICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWU7CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZh
dGVOYW1lQnlJZDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZDsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTIwMiw3ICsy
MDYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgIGlmICghYmFzZVZhbHVlLmlz
Q2VsbCgpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIEpTQ2Vs
bCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgIGNvbnN0IGJvb2wgaXNQ
cml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOworICAgICAgICBjb25zdCBi
b29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZSB8fCBraW5kID09
IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4
IDA4M2EzZDVkNjg0Y2FiZGZiMTRjY2FlYjc0NWZlYzc2M2RmYmNhMjEuLjVkZDIwYzYzNmEwNTE2
ODdkOTE2ZTgwYWI3ODNiMGU5ZTY2ZDMxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBXaXRoVGhp
cywKICAgICBEaXJlY3QsCiAgICAgUHJpdmF0ZU5hbWUsCisgICAgUHJpdmF0ZU5hbWVCeUlkLAog
fTsKIAogZW51bSBjbGFzcyBEZWxCeUtpbmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggZGRkZjRkZDY0NzA1NWRkYWY5OTI0NjllODQ1NTU0MjVk
MDIxZWNjMC4uYjkyZGRkMGUxNWNiNmU4YThmMjY3ZjQ0ODVkZDgxNTU2ZjMxOWFlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01NzAsNyArNTcw
LDcgQEAgZW51bSBFeHBlcmltZW50YWxPcHRpb25GbGFncyB7CiB9OwogCiAjZGVmaW5lIEZPUl9F
QUNIX0pTQ19FWFBFUklNRU5UQUxfT1BUSU9OKHYpIFwKLSAgICB2KHVzZVByaXZhdGVDbGFzc0Zp
ZWxkcywgTExJbnRBbmRCYXNlbGluZU9ubHksICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTI3ODQiKQorICAgIHYodXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBTdXBwb3J0c0ZUTCB8
IFN1cHBvcnRzREZHLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mjc4MSIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikK
IAogY29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJhY2MyNzFk
MWUyNTNhNDY3ZDQ4YWM5ODIyOTZiZjQxYjFlYTU4MTkuLmQwODg2ZDYzYWQ0ZjYwZWNlZjBhMmM3
NGU2NjhmMWI4ZjI5MTJiZGYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDktMzAgIENhaXRsaW4gUG90
dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBzdXBwb3J0IG9wX2dldF9w
cml2YXRlX25hbWUgaW4gREZHIGFuZCBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgc2V2ZXJhbCBuZXcgbWljcm9iZW5jaG1hcmtz
IHdpdGggcGVyZm9ybWFuY2UgY29tcGFyYWJsZSB0bworICAgICAgICB0aGUgdGVzdHMgZm9yIHB1
dF9wcml2YXRlX25hbWUsIGFuZCBzZXZlcmFsIG5ldyBzdHJlc3MgdGVzdHMgd2hpY2ggaGl0Cisg
ICAgICAgIGEgbnVtYmVyIG9mIGRpZmZlcmVudCByZXBhdGNoIGFuZCBPU1IgZXhpdCBjYXNlcy4K
KworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9y
cGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtZ2Vu
ZXJpYy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5
LWlkLW9zci1iYWQtaWRlbnRpZmllci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdl
dC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtaWRlbnRpZmllci5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0
cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1l
LWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1u
YW1lLWJ5LXZhbC1nZW5lcmljLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZnRsLWdldC1w
cml2YXRlLW5hbWUtYnktaWQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0LXBy
aXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9n
ZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtaWRlbnQuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wu
anM6IEFkZGVkLgorCiAyMDIwLTA5LTI5ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KIAogICAgICAgICBVcGRhdGUgdGVzdDI2MiAoMjAyMC4wOS4yOSkKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL21vbm9tb3Jw
aGljLWdldC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjFkODExOTU5ZTdlZjQzN2JmYmFiNDk5MzhhMWRhNWUwNTE3MWI2YwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL21vbm9t
b3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2NsYXNzIEMgeworICAg
ICNmaWVsZDsKKworICAgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSBp
OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYyA9IG5l
dyBDKCJ0ZXN0Iik7Citmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgeworICAgIGlm
IChjLmdldEZpZWxkKCkgIT09ICJ0ZXN0IikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmV4
cGVjdGVkIGZpZWxkIHZhbHVlIik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3Jw
aGljLWdldC1wcml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwNDFlODJhNmY4ZDcyNzFmYzY4
MzFkMmUzOTQ2ZDRiM2Q5NjE3NDIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVs
ZC5qcwpAQCAtMCwwICsxLDM0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPXRydWUiKQorCitjbGFzcyBDIHsKKyAgICAjZmllbGQ7CisKKyAgICBzZXRGaWVs
ZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHZhbHVlOworICAgIH0KKworICAgIGdl
dEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9Jbmxp
bmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0g
MDsKK2MxLnNldEZpZWxkKCJhIik7CisKK2xldCBjMiA9IG5ldyBDKCk7CitjMi5iYXIgPSAwOwor
YzIuc2V0RmllbGQoImIiKTsKKworbGV0IGMzID0gbmV3IEMoKTsKK2MzLmJheiA9IDA7CitjMy5z
ZXRGaWVsZCgiYyIpOworCitsZXQgYXJyID0gW2MxLCBjMiwgYzNdOworbGV0IHZhbHVlcyA9IFsi
YSIsICJiIiwgImMiXTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAg
aWYgKGFycltpICUgYXJyLmxlbmd0aF0uZ2V0RmllbGQoKSAhPT0gdmFsdWVzW2kgJSB2YWx1ZXMu
bGVuZ3RoXSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIGZpZWxkIHZhbHVl
Iik7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1l
LWJ5LWlkLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1i
eS1pZC1nZW5lcmljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTg0NDEzOTk2ZDViODY5MjE4N2NmZDM5NjU3
NzZjOTI2ZTBlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXBy
aXZhdGUtbmFtZS1ieS1pZC1nZW5lcmljLmpzCkBAIC0wLDAgKzEsNzYgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9sdXRlZCBwcm9ncmFtIHdoaWNoIHdpbGwgY29tcGls
ZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8gR2V0UHJpdmF0ZU5hbWVCeUlkLiBHZXRCeUlkCisv
LyB3aWxsIG5ldmVyIE9TUiBoZXJlIGR1ZSB0byBiYWQgc3RydWN0dXJlcywgYnV0IHdpbGwgaW5z
dGVhZCByZXBhdGNoIHRvIHRoZSBnZW5lcmljIGNhc2UuCisKK2xldCBhc3NlcnQgPSB7CisgICAg
ZXF1YWxzOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZDogJHtlfSBidXQgZ290OiAke2F9YCk7CisgICAgfSwK
KyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQg
dGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7Cisg
ICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBp
bnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4
cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGl0IHRocmV3OiAke2V9YCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1
dCBkaWQgbm90IHRocm93YCk7CisgICAgfQorfTsKKworY2xhc3MgQmFzZSB7CisgICAgY29uc3Ry
dWN0b3IoaSkgeworICAgICAgICBpZiAoaSAmIDIpIAorICAgICAgICAgICAgdGhpcy5jb21tb25F
eHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkgJiA0KQorICAgICAgICAgICAgdGhpcy5t
ZWdhRXh0cmFTdHVmZiA9IHRydWU7CisgICAgICAgIGlmIChpID4gMTAwMDApIHsKKyAgICAgICAg
ICAgIGlmIChpICYgMSkKKyAgICAgICAgICAgICAgICB0aGlzLnN1cGVyV2hhdGV2ZXIgPSB0cnVl
OworICAgICAgICB9CisKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAj
ZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIHN1cGVyKGkp
OworICAgICAgICBpZiAoaSA+IDUwMDApCisgICAgICAgICAgICB0aGlzLmV4dHJhU3R1ZmYgPSB0
cnVlOworICAgICAgICBpZiAoaSA9PT0gOTk5OSkKKyAgICAgICAgICAgIHRoaXMubW9yZVN0dWZm
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxk
ID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Zp
ZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vREZH
KEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmNvbnN0cnVjdG9y
KTsKK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vRlRMKEMucHJvdG90
eXBlLnNldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDsgKytpKSB7CisgICAg
bGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3Qn
KTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZp
ZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBjID0gbmV3IEMoMTAwKTsKK2Fzc2VydC50aHJv
d3MoVHlwZUVycm9yLCAoKSA9PiBjLmdldEZpZWxkLmNhbGwoe30pKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLW9zci1iYWQtaWRlbnRpZmll
ci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLW9zci1iYWQt
aWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTRjOTVkMmIxZTM0YTI2OTI4ODQwZWM2ODQyNzMy
ZGYzMTcxNDY4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2
YXRlLW5hbWUtYnktaWQtb3NyLWJhZC1pZGVudGlmaWVyLmpzCkBAIC0wLDAgKzEsNzYgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9sdXRlZCBwcm9ncmFtIHdoaWNoIHdp
bGwgY29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8gR2V0UHJpdmF0ZU5hbWVCeUlkLCBh
bmQgdGhlbiBPU1JFeGl0CisvLyBmcm9tIGdldEZpZWxkKCkgZHVlIHRvIGEgQ2hlY2tJc0NvbnN0
YW50IGZhaWx1cmUgd2hlbiBhIGRpZmZlcmVudCBpZGVudGlmaWVyIGlzIHVzZWQuCisKK2xldCBh
c3NlcnQgPSB7CisgICAgZXF1YWxzOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZDogJHtlfSBidXQgZ290OiAk
e2F9YCk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rvcikg
eworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGl0
IHRocmV3OiAke2V9YCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9u
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7ZXhj
ZXB0aW9uLm5hbWV9IGJ1dCBkaWQgbm90IHRocm93YCk7CisgICAgfQorfTsKKworY2xhc3MgQmFz
ZSB7CisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICBpZiAoaSAmIDEpCisgICAgICAgICAg
ICB0aGlzLmRpZmZlcmVudFN0cnVjdHVyZSA9IGBleHRyYSR7aX1gOworICAgIH0KK30KKworZnVu
Y3Rpb24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAg
ICAgI2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAg
ICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQo
KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9G
VEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0g
ZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAg
IGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0
Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRG
aWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3MoKTsgLy8gaW52
YWxpZGF0ZSBmaXJzdCB2ZXJzaW9uIG9mIHNldEZpZWxkIGR1ZSB0byBTY29wZSBpbnZhbGlkYXRp
b24gcG9pbnQKKworLy8gVHJpZ2dlcnMgbmV3IHZlcnNpb24gd2l0aG91dCBmb2xkaW5nIGdldF9m
cm9tX3Njb3BlCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9
IG5ldyBDKGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAg
IGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwg
J2ZvbycgKyBpKTsKK30KKworbGV0IGMyID0gbmV3IEMyKCk7Cithc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMyLmdldEZpZWxkLmNhbGwobmV3IEMoKSk7IC8vIHRy
aWdnZXIgT1NSIGV4aXQgZHVlIHRvIGJhZCBjb25zdGFudCB2YWx1ZQorfSk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMv
c3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZGM0Yjli
MmZmYmQ5ZTYwOWE2ODQwYmE3M2MyMmQ0MGYwNmFmODEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpAQCAtMCwwICsxLDk4IEBA
CisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gV2l0aCBtYW55IGluY29tcGF0aWJsZSBz
dHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCBjaGVja3MgdGhlIEdldFByaXZhdGVOYW1lIGxv
d2VyaW5nIGluIERGRyB3aGVuCisvLyByZWR1Y2luZyB0byBHZXRCeU9mZnNldCBpcyBub3QgcG9z
c2libGUuCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikK
KyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30K
K09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQg
Zm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAg
dHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBl
cnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJy
b3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7
ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQg
dG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKKwor
bGV0IGJhc2VzID0gWworICB7CisgIH0sCisgIHsKKyAgICBhOiAxLAorICB9LAorICB7CisgICAg
YjogMSwKKyAgICBhOiAyLAorICB9LAorICB7CisgICAgYzogMSwKKyAgICBkOiAyLAorICAgIGE6
IDMsCisgIH0sCisgIHsKKyAgfSwKKyAgeworICAgIHo6IDEsCisgICAgYTogMiwKKyAgICBiOiAz
LAorICAgIHE6IDQsCisgIH0sCisgIHsKKyAgICBhOiAxLAorICAgIGQ6IDIsCisgICAgejogMywK
KyAgICB4OiA0LAorICAgIGY6IDUsCisgIH0sCisgIHsKKyAgICBnOiAxLAorICAgIGI6IDIsCisg
ICAgZDogMywKKyAgICBxOiA0LAorICAgIHg6IDUsCisgICAgZDogNiwKKyAgfQorXTsKK2NsYXNz
IEJhc2UgeworICBjb25zdHJ1Y3RvcihpKSB7CisgICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1
cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAmIDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFz
c2lnbih7fSwgYmFzZXNbaSAlIGJhc2VzLmxlbmd0aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVu
ZHMgQmFzZSB7CisgICNwcml2YXRlID0gInByaXZhdGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1
cm4gdGhpcy4jcHJpdmF0ZTsgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhD
LmNvbnN0cnVjdG9yKTsKK25vRlRMKEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5wcm90b3R5cGUu
Z2V0UHJpdmF0ZSk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKKworbGV0IGdl
dFByaXZhdGUgPSBDLnByb3RvdHlwZS5nZXRQcml2YXRlOworCitmdW5jdGlvbiB0ZXN0KG8pIHsK
KyAgYXNzZXJ0LmVxdWFscyhnZXRQcml2YXRlLmNhbGwobyksICJwcml2YXRlIik7Cit9CisKK3Rl
c3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgIHRlc3QobmV3IEMoaSkpOworICBv
cHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRlc3QpOworfQorYXNzZXJ0LnRocm93cygoKSA9PiB7Cisg
IHRlc3Qoe30pCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0
ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLWlkZW50aWZpZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9k
ZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtb3NyLWJhZC1pZGVudGlmaWVyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE3MzIwYWY2YzA0YjdlZDc5ZDhlOWQ5Y2Y2MmUxNmZkMzMwMTg4YzQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQt
b3NyLWJhZC1pZGVudGlmaWVyLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIikKKworLy8gQ29udm9sdXRlZCBwcm9ncmFtIHdoaWNoIHdpbGwgY29tcGlsZSB0dXJu
IEdldFByaXZhdGVOYW1lIGludG8gR2V0QnlPZmZzZXQsIGFuZCB0aGVuIE9TUkV4aXQKKy8vIGZy
b20gZ2V0RmllbGQoKSBkdWUgdG8gYSBDaGVja0lzQ29uc3RhbnQgZmFpbHVyZSB3aGVuIGEgZGlm
ZmVyZW50IGlkZW50aWZpZXIgaXMgdXNlZC4KKworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6
IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRo
cm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4
Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAg
ICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNl
b2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
dG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBu
b3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAg
Y2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0Rmll
bGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisgICAgCisg
ICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAg
ICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBu
b0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworICAgIHJldHVybiBD
OworfQorCitsZXQgQyA9IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdl
dEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2Vy
dC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgQzIgPSBmYWN0b3J5
Q2xhc3MoKTsgLy8gaW52YWxpZGF0ZSBmaXJzdCB2ZXJzaW9uIG9mIHNldEZpZWxkIGR1ZSB0byBT
Y29wZSBpbnZhbGlkYXRpb24gcG9pbnQKKworLy8gVHJpZ2dlcnMgbmV3IHZlcnNpb24gd2l0aG91
dCBmb2xkaW5nIGdldF9mcm9tX3Njb3BlCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCks
ICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMo
Yy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzIuZ2V0RmllbGQuY2FsbChu
ZXcgQygpKTsgLy8gdHJpZ2dlciBPU1IgZXhpdCBkdWUgdG8gYmFkIGNvbnN0YW50IHZhbHVlCit9
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9m
ZnNldC1vc3ItYmFkLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0
ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0cnVjdHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTk3N2Ix
YWFmYmQ1NjY3NjVkMzk2YzI2ODkxNzVmNTNkYmUwZTVmCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0
dXJlLmpzCkBAIC0wLDAgKzEsNjIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8g
Q29udm9sdXRlZCBwcm9ncmFtIHdoaWNoIHdpbGwgY29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1l
IGludG8gR2V0QnlPZmZzZXQsIGFuZCB0aGVuIE9TUkV4aXQKKy8vIGZyb20gZ2V0RmllbGQoKSBk
dWUgdG8gYSBDaGVja1N0cnVjdHVyZSBmYWlsdXJlCisKK2xldCBhc3NlcnQgPSB7CisgICAgZXF1
YWxzOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZDogJHtlfSBidXQgZ290OiAke2F9YCk7CisgICAgfSwKKyAg
ICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhy
ZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0
YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGl0IHRocmV3OiAke2V9YCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBk
aWQgbm90IHRocm93YCk7CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gJ3Rl
c3QnOworCisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICBpZiAoaSA+IDUwMDApCisgICAg
ICAgICAgICB0aGlzLmV4dHJhU3R1ZmYgPSB0cnVlOyAvLyBJbnZhbGlkYXRlIGxvb3AgZHVlIHRv
IHN0cnVjdHVyZSBjaGFuZ2UKKyAgICAgICAgaWYgKGkgPT09IDk5OTkpCisgICAgICAgICAgICB0
aGlzLm1vcmVTdHVmZiA9IHRydWU7IC8vIFRyaWdnZXIgYSBCYWRDYWNoZSBPU1Igb24gZ2V0X3By
aXZhdGVfbmFtZQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmll
bGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4j
ZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9E
RkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9GVEwoQy5wcm90b3R5cGUuY29uc3RydWN0
b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5
cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9GVEwoQy5wcm90
b3R5cGUuc2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAg
ICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAndGVz
dCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0
RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworLy8gQ2hlY2sgc2VtYW50aWMgZmFpbHVyZSBzdGls
bCBmdW5jdGlvbnMKK2xldCBjID0gbmV3IEMoMTAwKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9y
LCAoKSA9PiBjLmdldEZpZWxkLmNhbGwoe30pKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWJhNDJkYWM1NmZkNTFj
ZmMwMmUyMGU0ZWJkNjk5MmQ5NGJlZjRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzCkBAIC0wLDAgKzEsNjIgQEAKKy8v
QHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBXaXRoIG5vIGluY29tcGF0aWJsZSBzdHJ1Y3R1
cmUgdmFyaWFudHMsIEdldFByaXZhdGVOYW1lIGlzIGNvbnZlcnRlZCB0byBHZXRCeU9mZnNldAor
Ly8gZHVyaW5nIGJ5dGVjb2RlIHBhcnNpbmcuIFdlIHRlc3QgdGhhdCBpdCdzIHN0aWxsIHNlbWFu
dGljYWxseSB2YWxpZC4KKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYg
KCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdl
fWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0
ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUp
IHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAo
dHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFu
Y2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQg
dGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBl
eHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9
KTsKKworY2xhc3MgQyB7CisgICNwcml2YXRlID0gInByaXZhdGUiOworICBnZXRQcml2YXRlKG8p
IHsgcmV0dXJuIG8uI3ByaXZhdGU7IH0KKyAgY29uc3RydWN0b3IoaSkgeworICAgIGlmIChpID09
PSA5OTUpCisgICAgICByZXR1cm4ge307CisgIH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3Ip
Oworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMu
cHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdl
dFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICByZXR1cm4gZ2V0UHJpdmF0ZShvKTsK
K30KK25ldmVySW5saW5lRnVuY3Rpb24odGVzdCk7CisKKy8vIFdhcm11cAordGVzdChuZXcgQywg
MCk7Cit0ZXN0KG5ldyBDLCAwKTsKK3Rlc3QobmV3IEMsIDApOworCit2YXIgaTsKK2ZvciAodmFy
IGogPSAwOyBqIDwgMjsgKytqKSB7CisgIGFzc2VydC50aHJvd3MoKCkgPT4geworICAgIGZvciAo
aSA9IDA7IGkgPCAyMDAwOyArK2kpIHsKKyAgICAgIGFzc2VydC5lcXVhbHModGVzdChuZXcgQyhp
KSksICJwcml2YXRlIik7CisgICAgICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRlc3QpOworICAg
IH0KKyAgfSwgVHlwZUVycm9yKTsKKworICAvLyBXZSBzaG91bGQgdGhyb3cgb24gaXRlcmF0aW9u
IDk5NSwgYmVjYXVzZSB0aGlzIHdpbGwgcmVzdWx0IGluIGFuIGludmFsaWQgbG9hZC4KKyAgYXNz
ZXJ0LmVxdWFscyhpLCA5OTUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdl
dC1wcml2YXRlLW5hbWUtYnktdmFsLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0
LXByaXZhdGUtbmFtZS1ieS12YWwtZ2VuZXJpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjI1NzYxNTk4ODUw
OTFkOGY1NDU0YWEyZDZmM2NkYTNjMjYzYmNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktdmFsLWdlbmVyaWMuanMKQEAgLTAsMCArMSw3
NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwg
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dyYW0g
d2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBKSVRHZXRCeVZhbCBJ
Qy4gR2V0QnlWYWwKKy8vIHdpbGwgbmV2ZXIgT1NSIGhlcmUgZHVlIHRvIGJhZCBzdHJ1Y3R1cmVz
LCBidXQgd2lsbCBpbnN0ZWFkIHJlcGF0Y2ggdG8gdGhlIGdlbmVyaWMgY2FzZS4KKworbGV0IGFz
c2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09
IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7
YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7
CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAg
IH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAg
ICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQg
dGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24p
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNl
cHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitjbGFzcyBCYXNl
IHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIGlmIChpICYgMSkKKyAgICAgICAgICAg
IHRoaXMubWVnYUNvbW1vbkV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSAmIDIpIAor
ICAgICAgICAgICAgdGhpcy5jb21tb25FeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkg
JiA0KQorICAgICAgICAgICAgdGhpcy5tb3JlRXh0cmFTdHVmZiA9IHRydWU7CisgICAgICAgIGlm
IChpICYgOCkKKyAgICAgICAgICAgIHRoaXMuc29NdWNoRXh0cmFTdHVmZiA9IHRydWU7CisgICAg
fQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisg
ICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICBzdXBlcihpKTsKKyAgICAgICAgaWYgKGkgPiA1
MDAwKQorICAgICAgICAgICAgdGhpcy5leHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkg
PT09IDk5OTkpCisgICAgICAgICAgICB0aGlzLm1vcmVTdHVmZiA9IHRydWU7CisgICAgfQorCisg
ICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAg
Z2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lu
bGluZShDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1
Y3Rvcik7Citub0ZUTChDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3Rv
dHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhD
LnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIGxldCBjID0gbmV3IEMoaSk7Cisg
ICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgn
Zm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOwor
fQorCitsZXQgYyA9IG5ldyBDKDEwMCk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4g
Yy5nZXRGaWVsZC5jYWxsKHt9KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0
LXByaXZhdGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1u
YW1lLWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YzE3ODk4M2ZkZTY0MjY1MmRmMzM4M2JhYTE2ODcx
YzNmODk1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZh
dGUtbmFtZS1ieS1pZC5qcwpAQCAtMCwwICsxLDEwNyBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0t
YWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKworLy8gV2l0aCBtYW55IGluY29tcGF0
aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCBjaGVja3MgdGhlIEdldFByaXZhdGVO
YW1lIGxvd2VyaW5nIGluIERGRyB3aGVuCisvLyByZWR1Y2luZyB0byBHZXRCeU9mZnNldCBpcyBu
b3QgcG9zc2libGUuCisvLyBUaGlzIHRlc3QgZGlzYWJsZXMgaW5saW5pbmcgbG9hZHMgdG8gR2V0
QnlPZmZzZXQgaW4gb3JkZXIgdG8gcHJldmVudCByZWR1Y2luZyB0aGUgR2V0UHJpdmF0ZU5hbWVC
eUlkIHRvIE11bHRpR2V0QnlPZmZzZXQgaW4gdGhlCisvLyBERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS4gSXQgaXMgY29uY2VpdmFibHkgcG9zc2libGUgZm9yIHRoaXMgc2NlbmFyaW8gdG8gYmUgZW5j
b3VudGVyZWQgd2l0aG91dCBkaXNhYmxpbmcgaW5saW5lIGFjY2Vzcy4KKworZnVuY3Rpb24gYXNz
ZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihg
QXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQs
IHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBl
eHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAg
fSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0
aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2Vw
dGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworbGV0IGJhc2VzID0gWworICB7CisgIH0s
CisgIHsKKyAgICBhOiAxLAorICB9LAorICB7CisgICAgYjogMSwKKyAgICBhOiAyLAorICB9LAor
ICB7CisgICAgYzogMSwKKyAgICBkOiAyLAorICAgIGE6IDMsCisgIH0sCisgIHsKKyAgfSwKKyAg
eworICAgIHo6IDEsCisgICAgYTogMiwKKyAgICBiOiAzLAorICAgIHE6IDQsCisgIH0sCisgIHsK
KyAgICBhOiAxLAorICAgIGQ6IDIsCisgICAgejogMywKKyAgICB4OiA0LAorICAgIGY6IDUsCisg
IH0sCisgIHsKKyAgICBnOiAxLAorICAgIGI6IDIsCisgICAgZDogMywKKyAgICBxOiA0LAorICAg
IHg6IDUsCisgICAgZDogNiwKKyAgfSwKKyAgeworICAgIHo6IDEsCisgICAgcTogMiwKKyAgICBm
OiAzLAorICAgIHk6IDQsCisgICAgYTogNSwKKyAgICAwOiA2LAorICAgIGs6IDcsCisgIH0sCitd
OworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICBpZiAoaSA8IDEwMCkKKyAg
ICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICYgM10pOworICAgIHJldHVybiBP
YmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICUgYmFzZXMubGVuZ3RoXSk7CisgIH0KK30KK2NsYXNz
IEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZhdGUgPSAicHJpdmF0ZSI7CisgIGdldFByaXZhdGUo
KSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsK
K25vREZHKEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5jb25zdHJ1Y3Rvcik7Citub0lubGluZShD
LnByb3RvdHlwZS5nZXRQcml2YXRlKTsKKworbGV0IGdldFByaXZhdGUgPSBDLnByb3RvdHlwZS5n
ZXRQcml2YXRlOworCitmdW5jdGlvbiB0ZXN0KG8pIHsKKyAgYXNzZXJ0LmVxdWFscyhnZXRQcml2
YXRlLmNhbGwobyksICJwcml2YXRlIik7Cit9CisKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChu
ZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK2ZvciAodmFyIGkgPSAwOyAhaXNGaW5h
bFRpZXIodGVzdCkgJiYgaSA8IDEwMDAwOyArK2kpIHsKKyAgdGVzdChuZXcgQyhpKSk7CisgIG9w
dGltaXplTmV4dEludm9jYXRpb24odGVzdCk7Cit9Cithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAg
dGVzdCh7fSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnRsLWdldC1wcml2YXRl
LW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzIGIvSlNUZXN0cy9zdHJlc3MvZnRsLWdldC1wcml2YXRl
LW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1N2QzNjRlNThjYTI1ZTQ1YzY0
MWEyY2U1YWJiN2FlYTE1OWM4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9m
dGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMKQEAgLTAsMCArMSw4NyBAQAor
Ly9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdpdGggbWFueSBpbmNvbXBhdGlibGUgc3Ry
dWN0dXJlIHZhcmlhbnRzLCB0aGlzIHRlc3Qgd2lsbCBmYWlsIHRvIGdlbmVyYXRlIEdldEJ5T2Zm
c2V0IGR3dXJpbmcgREZHQnl0ZUNvZGVQYXJzaW5nLgorLy8gRHVyaW5nIEZUTCBjb21waWxhdGlv
biwgaXQgd2lsbCB0cnkgYWdhaW4gaW4gREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuCitmdW5jdGlv
biBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVy
cm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFz
c2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwg
PT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWAp
OworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVu
Y3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVk
IHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1
cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitsZXQgYmFzZXMgPSBbCisgIHsK
KyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAgICBiOiAxLAorICAgIGE6IDIsCisg
IH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAgYTogMywKKyAgfSwKKyAgeworICB9
LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6IDMsCisgICAgcTogNCwKKyAgfSwK
KyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAzLAorICAgIHg6IDQsCisgICAgZjog
NSwKKyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoaSkgeworICAgIGlmIChp
IDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJiAzXSk7Cisg
ICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJSBiYXNlcy5sZW5ndGhdKTsKKyAg
fQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0ZSA9ICJwcml2YXRlIjsKKyAg
Z2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KK30KK25vSW5saW5lKEMuY29u
c3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNvbnN0cnVjdG9yKTsK
K25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMu
cHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1
YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30KKwordGVzdChuZXcgQygwKSwg
MCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9
IDA7ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwgMTAwMDA7ICsraSkgeworICB0ZXN0KG5ldyBD
KGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30KK2Fzc2VydC50aHJvd3Mo
KCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQt
cHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtaWRlbnQuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQt
cHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtaWRlbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ExMmZiYTc1
ZWYxMzhjMDBhM2MyMGRlODc5ZjFlMTFlYTUyNzJmYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVudC5qcwpAQCAtMCww
ICsxLDUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChl
eHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2Vy
dGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7Cisg
IGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0
ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisg
IHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisg
ICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cg
JHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAg
I2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVz
dCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNv
dW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZp
ZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5l
cXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMv
c3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2ExMmZiYTc1ZWYxMzhjMDBhM2MyMGRlODc5ZjFlMTFlYTUyNzJmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1i
b2wuanMKQEAgLTAsMCArMSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5j
dGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3
IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWdu
KGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1
YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFs
fWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBm
bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAi
ZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVj
dGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQg
bm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitsZXQgaSA9IDA7CisKK2Ns
YXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAg
ICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgdGhpcy5hbm90aGVyRmllbGQgPSBpOworICAgICAg
ICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhp
cy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4g
dGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOwor
bm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuc2V0Rmll
bGQpOworbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBp
KyspIHsKKyAgICBjb3VudCA9IGk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5l
cXVhbHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsK
KyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtc3ltYm9s
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1zeW1i
b2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDkxYTNmZGEyZGU3NjBiY2VhNTIyNjIxYjAzY2Q1MmMzYjk3ZjNj
YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0
aC1kaWZmZXJlbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHBy
KQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOwor
fQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1
dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAg
ICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9m
IGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBl
cnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcg
JHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3Rl
ZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKwor
ZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2Zp
ZWxkOworCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0g
djsKKyAgICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbm9ERkcoQy5wcm90b3R5cGUu
Y29uc3RydWN0b3IpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKKyAgICBu
b0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICAKKyAgICBub0lu
bGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5saW5l
KGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0gY2xhc3NEZWNsYXJhdGlvbigpOworbGV0IEMy
ID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMxIDogbmV3IEMyOworICAgIGMuc2V0RmllbGQo
J3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0JyArIGkp
OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410568</attachid>
            <date>2020-10-05 15:25:11 -0700</date>
            <delta_ts>2020-10-07 14:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20201005182510.patch</filename>
            <type>text/plain</type>
            <size>72017</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MjY3NzliZDk5MDk1MzkyY2U2ZWRiNDE2OWQ0M2VmYzFhZjQ5MTExLi44ODZhYzc2NWI3MWY5ZmIy
NDdjNWFhY2JkM2I1YzJkMmM3ZmI3NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAyMC0wOS0wMiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5k
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUuCisKKyAgICAgICAgRHVy
aW5nIERGRyBieXRlY29kZSBwYXJzaW5nLCB3ZSB3aWxsIGF0dGVtcHQsIGlmIGRlZW1lZCBwb3Nz
aWJsZSBieQorICAgICAgICB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCB0byBvdXRwdXQgYSBH
ZXRCeU9mZnNldCBvcGVyYXRpb24uIElmIGEKKyAgICAgICAgc2luZ2xlIHByaXZhdGUgZmllbGQg
aWRlbnRpZmllciBpcyB1c2VkIGluIGFsbCBjYXNlcyAodGhlIGNvbW1vbiBjYXNlKSwKKyAgICAg
ICAgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBzdHJ1Y3R1cmUgdmFyaWFudHMsIGEgR2V0UHJpdmF0
ZU5hbWVCeUlkCisgICAgICAgIG9wZXJhdGlvbiBpcyBlbWl0dGVkIGluc3RlYWQuIEZhaWxpbmcg
dGhhdCwgdGhlIEdldFByaXZhdGVOYW1lCisgICAgICAgIG9wZXJhdGlvbiBpcyBwcm9kdWNlZCwg
d2hpY2ggcHJvZHVjZXMgYSBHZXRCeVZhbCBJQyBsaWtlIGluIHRoZQorICAgICAgICBiYXNlbGlu
ZSBKSVQuCisKKyAgICAgICAgSW4gRlRMLCBHZXRQcml2YXRlTmFtZUJ5SUQgY2FuIGJlIHJlZHVj
ZWQgdG8gW011bHRpXUdldEJ5T2Zmc2V0IGluIHRoZQorICAgICAgICBERkdDb25zdGFudEZvbGRp
bmdQaGFzZSwgb3IgYSBHZXRCeUlEIElDIHdoZW4gbG93ZXJpbmcgdG8gQjMuCisKKyAgICAgICAg
KiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
OgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24pOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlHZXRCeVN0YXR1cyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0
VG9HZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlH
ZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FjaGVhYmxlSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFByaXZhdGVOYW1lKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OmFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0Qnkp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisKIDIwMjAtMTAtMDUgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEpTQyBvcHRpb24gdG8gdHJp
Z2dlciBhIGhhcmR3YXJlIGJyZWFrcG9pbnQgd2hlbiBkZWJ1Z2dlciBleHByZXNzaW9ucyBhcmUg
cmVhY2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMu
Y3BwCmluZGV4IDE1ODAyMWYzOTkyM2YyYzAyNTliY2I4ZmVkYzg1NGJlNmIzNzVlYzIuLmFkZjIx
ZGVlNzlkMDNkY2VmODM3NTNiNDBmMWFmNDQ2YTVlOTA0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtMTA4LDYgKzEwOCwxMSBAQCBH
ZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIEJ5dGVjb2RlSW5kZQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB1c2luZyBM
TEludCBjYWNoZXMgb3IgSUMgaW5mb3JtYXRpb24gdG8gcG9wdWxhdGUgR2V0QnlTdGF0dXMKKyAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzI0NQor
ICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworCiAgICAg
ZGVmYXVsdDogewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggNjA0OGNkMDQyOGU5
MzdkNGQzMzQwMzk2MzAzNDdjOWQ5YjcyZTE2NS4uODlkZjRkN2IxMjhjY2JjMDQ5NmQxNWVkZDYy
NjZjZmU3ZDIyOGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTQwNCw2ICs0MDQsOCBAQCBpbmxpbmUgYXV0byBhcHBy
b3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24oQWNjZXNzVHlwZSB0eXBlKSAtPiBkZWNs
dHlwZSgmbwogICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogICAg
IGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldEJ5SWREaXJlY3RPcHRpbWl6ZTsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkT3B0aW1pemU7
CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00MjAsNiArNDIyLDggQEAgaW5saW5lIGF1
dG8gYXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKEFjY2Vzc1R5cGUgdHlwZSkgLT4g
ZGVjbHR5cGUoJm9wZXIKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmlj
OwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdDoKICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvbkdldEJ5SWREaXJlY3RHZW5lcmljOworICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5l
cmljOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOgogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDhi
MDVkNWY5NzYwNWU2ZTRiOTg1ZWE5NzBlOTE0OTk4N2JjMDQwZDkuLjFjMzcyMzhhOTA3YzY5MjVh
OTZmMGI0NDQ2NWFmYTY5YjRlN2FhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMzNDgsNiAr
MzM0OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIG1ha2VIZWFwVG9wRm9y
Tm9kZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJ
ZDoKICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6
CiAgICAgY2FzZSBHZXRCeUlkOgpAQCAtMzM4Myw2ICszMzg0LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRQcml2YXRlTmFt
ZToKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6
CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4ZTkzYjdiMjY2NGIyY2IxZGU0NmVmZTU1Yjhh
ZjNiZDQwMzUzYjgxLi45NDQ2MjMyN2YxOWE2NjMwZjhhNjI0ZmJlMzVkYjQ1ZjMxNzY2YzgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApA
QCAtMjQ0LDggKzI0NCwxMSBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+
CiAgICAgdm9pZCBwYXJzZUdldEJ5SWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHNp
bXBsaWZ5R2V0QnlTdGF0dXMoTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMmKTsKICAgICB2b2lkIGhh
bmRsZUdldEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3Vs
YXRlZFR5cGUsIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCBCeXRlY29kZUluZGV4IG9zckV4
aXRJbmRleCk7CisgICAgdm9pZCBoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoCisgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9k
ZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwg
R2V0QnlTdGF0dXMpOwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2Us
IENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYs
IGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlKTsKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCkBAIC00
NTMwLDkgKzQ1MzMsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6c3RvcmUoTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlJZFZhcmlhbgogICAgIHJldHVybiBoYW5k
bGVQdXRCeU9mZnNldChiYXNlLCBpZGVudGlmaWVyLCB2YXJpYW50Lm9mZnNldCgpLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCi0gICAgVmlydHVhbFJl
Z2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNl
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsCi0gICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUgdHlwZSwgQnl0ZWNv
ZGVJbmRleCBvc3JFeGl0SW5kZXgpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpzaW1wbGlmeUdldEJ5
U3RhdHVzKE5vZGUqIGJhc2UsIEdldEJ5U3RhdHVzJiBnZXRCeVN0YXR1cykKIHsKICAgICAvLyBB
dHRlbXB0IHRvIHJlZHVjZSB0aGUgc2V0IG9mIHRoaW5ncyBpbiB0aGUgR2V0QnlTdGF0dXMuCiAg
ICAgaWYgKGJhc2UtPm9wKCkgPT0gTmV3T2JqZWN0KSB7CkBAIC00NTQ5LDYgKzQ1NTAsMTMgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgaWYgKG9rKQogICAg
ICAgICAgICAgZ2V0QnlTdGF0dXMuZmlsdGVyKGJhc2UtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAg
ICB9Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCisgICAgVmlydHVh
bFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBi
YXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsCisgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUgdHlwZSwgQnl0
ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpCit7CisgICAgc2ltcGxpZnlHZXRCeVN0YXR1cyhiYXNl
LCBnZXRCeVN0YXR1cyk7CiAgICAgCiAgICAgTm9kZVR5cGUgZ2V0QnlJZDsKICAgICBpZiAodHlw
ZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkKQpAQCAtNDcxNiw2ICs0NzI0LDc4IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGdldHRlciwgbnVtYmVyT2ZQYXJh
bWV0ZXJzIC0gMSwgcmVnaXN0ZXJPZmZzZXQsICp2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCksIHBy
ZWRpY3Rpb24pOwogfQogCisvLyBBIHZhcmlhbnQgb24gaGFuZGxlR2V0QnlJZCB3aGljaCBpcyBt
b3JlIGxpbWl0ZWQgaW4gc2NvcGUKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldFByaXZh
dGVOYW1lQnlJZCgKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMpCit7
CisgICAgc2ltcGxpZnlHZXRCeVN0YXR1cyhiYXNlLCBnZXRCeVN0YXR1cyk7CisKKyAgICBBU1NF
UlQoIWdldEJ5U3RhdHVzLmlzQ3VzdG9tKCkpOworICAgIEFTU0VSVCghZ2V0QnlTdGF0dXMubWFr
ZXNDYWxscygpKTsKKyAgICBpZiAoIWdldEJ5U3RhdHVzLmlzU2ltcGxlKCkgfHwgIWdldEJ5U3Rh
dHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAg
ICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2YXRl
TmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBu
dWxscHRyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZ2V0QnlTdGF0dXMu
bnVtVmFyaWFudHMoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgp
CisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygp
CisgICAgICAgICAgICB8fCBnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4
UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIHNldChk
ZXN0aW5hdGlvbiwKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJ
ZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFkZFRvR3JhcGgo
RmlsdGVyR2V0QnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2Vz
KCkuYWRkR2V0QnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0QnlTdGF0dXMpKSwgYmFz
ZSk7CisKKyAgICAgICAgVmVjdG9yPE11bHRpR2V0QnlPZmZzZXRDYXNlLCAyPiBjYXNlczsKKwor
ICAgICAgICAvLyAxKSBFbWl0IHByb3RvdHlwZSBzdHJ1Y3R1cmUgY2hlY2tzIGZvciBhbGwgY2hh
aW5zLiBUaGlzIGNvdWxkIHNvcnQgb2YgbWF5YmUgbm90IGJlCisgICAgICAgIC8vICAgIG9wdGlt
YWwsIGlmIHRoZXJlIGlzIHNvbWUgcmFyZWx5IGV4ZWN1dGVkIGNhc2UgaW4gdGhlIGNoYWluIHRo
YXQgcmVxdWlyZXMgYSBsb3QKKyAgICAgICAgLy8gICAgb2YgY2hlY2tzIGFuZCB0aG9zZSBjaGVj
a3MgYXJlIG5vdCB3YXRjaHBvaW50YWJsZS4KKyAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFy
aWFudCYgdmFyaWFudCA6IGdldEJ5U3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVCh2YXJpYW50LmludHJpbnNpYygpID09IE5vSW50cmluc2ljKTsKKyAgICAgICAgICAgIEFT
U0VSVCh2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKSk7CisKKyAgICAgICAgICAgIEdl
dEJ5T2Zmc2V0TWV0aG9kIG1ldGhvZCA9IEdldEJ5T2Zmc2V0TWV0aG9kOjpsb2FkKHZhcmlhbnQu
b2Zmc2V0KCkpOworICAgICAgICAgICAgY2FzZXMuYXBwZW5kKE11bHRpR2V0QnlPZmZzZXRDYXNl
KCptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgbWV0aG9k
KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlv
bigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdl
dEJ5SWQoKTsKKworICAgICAgICAvLyAyKSBFbWl0IGEgTXVsdGlHZXRCeU9mZnNldAorICAgICAg
ICBNdWx0aUdldEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aUdldEJ5T2Zmc2V0
RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+Y2FzZXMgPSBjYXNlczsKKyAgICAgICAgZGF0YS0+
aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIHNldChkZXN0aW5h
dGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNldCwgT3BJbmZvKGRh
dGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIEZJWE1FOiBJZiB3ZSB1c2UgdGhlIEdldEJ5U3RhdHVzIGZvciBhbnl0aGluZyB0
aGVuIHdlIHNob3VsZCByZWNvcmQgaXQgYW5kIGluc2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBl
dmVyeXRoaW5nIGVsc2UgKGxpa2UgdGhlIEdldEJ5T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdp
bGwgZmlsdGVyIHRoZSByZWNvcmRlZAorICAgIC8vIEdldEJ5U3RhdHVzLiBUaGF0IG1lYW5zIHRo
YXQgdGhlIGNvbnN0YW50IGZvbGRlciBhbHNvIG5lZWRzIHRvIGRvIHRoZSBzYW1lIQorICAgIGFk
ZFRvR3JhcGgoRmlsdGVyR2V0QnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRl
ZFN0YXR1c2VzKCkuYWRkR2V0QnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0QnlTdGF0
dXMpKSwgYmFzZSk7CisKKyAgICBBU1NFUlQoZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAx
KTsKKyAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50ID0gZ2V0QnlTdGF0dXNbMF07CisKKyAgICBO
b2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQocHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFyaWFudCk7CisgICAgaWYgKCFsb2FkZWRWYWx1ZSkgeworICAgICAgICBzZXQoZGVzdGlu
YXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZv
KGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9u
KCkpKQorICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlk
KCk7CisKKyAgICBpZiAoIXZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSAmJiB2YXJpYW50LmludHJp
bnNpYygpID09IE5vSW50cmluc2ljKQorICAgICAgICBzZXQoZGVzdGluYXRpb24sIGxvYWRlZFZh
bHVlKTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0
YXR1cyBkZWxldGVCeVN0YXR1cywgRUNNQU1vZGUgZWNtYU1vZGUpCkBAIC02MzQ1LDYgKzY0MjUs
NDMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zZXR0ZXJfYnlfdmFsKTsKICAgICAgICAgfQog
CisgICAgICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91
dE9TUkV4aXQoKTsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNl
KTsKKyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkp
OworICAgICAgICAgICAgYm9vbCBjb21waWxlU2luZ2xlSWRlbnRpZmllciA9IGZhbHNlOworCisg
ICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRl
Rm9yKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+
bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywgY3VycmVudENvZGVPcmlnaW4oKSk7CisK
KyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSAwOworICAgICAgICAgICAgaWYgKCFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJ
ZGVudCkKKyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkKKyAgICAgICAgICAgICAgICAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKworICAgICAgICAgICAgICAgIGlkZW50aWZpZXIg
PSBnZXRCeVN0YXR1cy5zaW5nbGVJZGVudGlmaWVyKCk7CisgICAgICAgICAgICAgICAgaWYgKGlk
ZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciA9IG1fZ3Jh
cGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZp
ZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lzQ29uc3Rh
bnQsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBp
bGVTaW5nbGVJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChjb21waWxlU2luZ2xlSWRlbnRpZmllcikKKyAgICAgICAg
ICAgICAgICBoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIHByZWRpY3Rp
b24sIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzKTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBo
KEdldFByaXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBwcm9w
ZXJ0eSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUubV9kc3QsIG5vZGUpOworICAgICAgICAgICAgICAgIGlmIChnZXRCeVN0
YXR1cy5vYnNlcnZlZFN0cnVjdHVyZVN0dWJJbmZvU2xvd1BhdGgoKSkKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3Nsb3dHZXRCeVZhbC5hZGQobm9kZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfcHJpdmF0ZV9uYW1lKTsKKyAgICAgICAgfQor
CiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5X2lkOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAgICAgICAgICBOb2Rl
KiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCmluZGV4IGI1YjExNjY3ODRiNzMxY2E0NTQ3ZTE5NzZjZjk5YzBkNjUy
MWZjYzIuLjNmMzczZjNmOGQwNjUwYjkxNTNjM2RkMjAzMzBlZjgxNzY1N2M0YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC02NzMsNiArNjczLDggQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgogICAgIGNh
c2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2Fz
ZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNl
IERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAg
ICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA2NzdmNjRjYmM5YzEwZDZkNjgwZGVj
NDc2OWU4ZTRjM2YyM2QzZjlhLi5lYmFiYWMxMWQ5NTliZWNhOWYzMGRkMTI3YzY4MGNlMGEzZWEy
ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcApAQCAtNTk5LDcgKzU5OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVz
aDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoKLSAgICAgICAgICAgIGNhc2UgR2V0QnlJZEZs
dXNoOiB7CisgICAgICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKKyAgICAgICAgICAgIGNhc2Ug
R2V0UHJpdmF0ZU5hbWVCeUlkOiB7CiAgICAgICAgICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBu
b2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5u
b2RlKCk7CiAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCA1MTJmOTNjNmEzMTM2ZDgyYzNkYjljNzhmNGU3NGNhZDA2NjFhNzNmLi4y
NDI3ZDIwOGJlMzY2YjNjNGU5NTJmMjEzNjM1YzA1NThiZWNmMDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjQsNiArMzI0LDggQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAg
Y2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICBj
YXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNh
c2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4
ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3
YjVjNTFjOTM2MzQ2NGZkYTA5MDk1YzQ1YWZiZDVlOTVmMjE0N2JiLi5kNjMyY2ZmM2UwYTNlYjM2
NmM0NjhkM2ViYTE0ZThhMjcyNmY1Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKQEAgLTE3ODAsNiArMTc4MCwxNSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgor
ICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgICAgICBpZiAoIW5vZGUtPmhhc0Nh
Y2hlYWJsZUlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBEZWxl
dGVCeVZhbDogewogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVDZWxsKCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMDRlMDI1YWIyZjExYmUy
ODY1NmE1OWI1NzEyNjUwY2Y1ODdkM2JiNS4uODk3Yjk5OWU5NTQ0ZTI5Y2YwMDZmOWQ4NmM0Mjdl
NTY5MzNkNWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTU5Nyw3ICs1
OTcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9HZXRCeU9mZnNldChTdG9y
YWdlQWNjZXNzRGF0YSYgZGF0YSwgRWRnZSBzdG9yYWdlLCBFZGdlIGJhc2UpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1f
b3AgPT0gR2V0QnlJZERpcmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29w
ID09IE11bHRpR2V0QnlPZmZzZXQpOworICAgICAgICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8
IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdCB8fCBtX29wID09
IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29wID09IEdldFByaXZhdGVOYW1lQnlJZCB8fCBtX29w
ID09IE11bHRpR2V0QnlPZmZzZXQpOwogICAgICAgICBtX29wSW5mbyA9ICZkYXRhOwogICAgICAg
ICBjaGlsZHJlbi5zZXRDaGlsZDEoc3RvcmFnZSk7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxk
MihiYXNlKTsKQEAgLTYwNyw3ICs2MDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252
ZXJ0VG9NdWx0aUdldEJ5T2Zmc2V0KE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhKQogICAgIHsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJ
ZEZsdXNoIHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RG
bHVzaCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09
IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlk
RGlyZWN0Rmx1c2ggfHwgbV9vcCA9PSBHZXRQcml2YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29w
SW5mbyA9IGRhdGE7CiAgICAgICAgIGNoaWxkMSgpLnNldFVzZUtpbmQoQ2VsbFVzZSk7CiAgICAg
ICAgIG1fb3AgPSBNdWx0aUdldEJ5T2Zmc2V0OwpAQCAtMTA4Miw2ICsxMDgyLDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeUlkRGly
ZWN0OgogICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKKyAgICAgICAgY2FzZSBHZXRQ
cml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBJ
bkJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKQEAgLTE3NjYsNiArMTc2Nyw4IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAg
ICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6
CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIENhbGw6CiAg
ICAgICAgIGNhc2UgRGlyZWN0Q2FsbDoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxs
ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggY2M0ZmZiZWFk
NjhlYjAyYTU4MTZlYWJiNTVjNGI5MTIwOTUwMTkyMy4uODE4Njc4YWNkYTE3Mzg5NTY4OTU2M2Yx
YWZlZjRiYmQ0MGVlZWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aApAQCAtMjQyLDYgKzI0Miw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQ2hlY2tBcnJheSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENo
ZWNrQXJyYXlPckVtcHR5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0UHJpdmF0
ZU5hbWUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRQ
cml2YXRlTmFtZUJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAv
KiBUaGlzIGNoZWNrcyBpZiB0aGUgZWRnZSBpcyBhIHR5cGVkIGFycmF5IGFuZCBpZiBpdCBpcyBu
ZXV0ZXJlZC4gKi8gXAogICAgIG1hY3JvKENoZWNrTmV1dGVyZWQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhBcnJheWlmeSwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAppbmRleCBmZjU0MzhhYWE2OWQ2NzczNTI5MjQ1NTI1MGQxMTFlZGQ3NDZlNWQzLi45
MTQ1NzYzNTI3ZjEyOTI0NjliNTkzODQwMjEwNTg2ZThhNmNkZWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcApAQCAtODc1LDYgKzg3NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHJ5R2V0
QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIEdldEJ5
T2Zmc2V0OgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFBy
aXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICBj
YXNlIEdldERpcmVjdFBuYW1lOgogICAgICAgICBjYXNlIENhbGw6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDgzZDRjMjI2MGViZjYzNmEyMzZm
NjdlMDZiNjg1MGU5YjQ2NWIwMzAuLjkwMzkwMzY2NDFmNTRkZTdmNmI5NmU4YTAxYzBlOGYwNjY0
ZTE3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CkBAIC01MjksNiArNTI5LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1
dFNldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZh
dGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggOTI1MzM4NjJlZjYwOGU3
NjQ4NDg0ZmY5OTZmOGQ1MzVkZGUwOGUyMi4uY2Q1ODUzYzY4NTE1YmZmYWI0NzI1YjEyZWNjZDk1
NTcyOWI0ZmM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTM0NjgsNiArMzQ2OCw5MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3ltYm9sKE5vZGUqIG5vZGUpCiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmhhc0NhY2hl
YWJsZUlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
SWQobm9kZSk7CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQo
bm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1
bHQodGhpcyk7CisgICAgYXV0byBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBh
dXRvIHByb3BlcnR5UmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShwcm9wZXJ0eS5ncHIo
KSk7CisgICAgYXV0byByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgIGJhc2UudXNl
KCk7CisgICAgcHJvcGVydHkudXNlKCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHku
ZWRnZSgpKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
ICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpLmlzVHlwZShT
cGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2VSZWdzKSk7CisKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3Ms
IHJlc3VsdFJlZ3MpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICAKKyAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAg
ICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCisgICAgICAg
IGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQ
UigpKSk7CisKKyAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVO
YW1lQnlJZChOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKSB7CisgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFy
eSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VS
ZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOworICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBiYXNlLnVzZSgp
OworCisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVn
cywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6
SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworCisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGls
ZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNl
IFVudHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVz
ZSwgYmFzZSk7CisKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVS
ZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwor
CisgICAgICAgIGJhc2UudXNlKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CisKKyAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
LCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFw
aCgpLCBub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9k
ZSogbm9kZSwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMykKIHsKICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmcxKHRoaXMsIGNoaWxkMSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZjA4ZGZlNzYyNzJhYjQ0
ODUyYmU0MGQxZmRjY2VkNzJkMzg4MjBmOC4uNDhlMGZhYzIyODc0NDUyNmI2MmZhNGJlMTYwZTkx
NjY2MTUzYjhkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTI4Miw3ICsxMjgyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGls
ZUdldEJ5VmFsT25EaXJlY3RBcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5
VmFsT25TY29wZWRBcmd1bWVudHMoTm9kZSopOwotICAgIAorCisgICAgdm9pZCBjb21waWxlR2V0
UHJpdmF0ZU5hbWUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChO
b2RlKik7CisKICAgICB2b2lkIGNvbXBpbGVHZXRTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlU2tpcFNjb3BlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxPYmplY3QoTm9k
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKaW5kZXggZmMyMmRhYTQ2NzYwMjk2MDUxOTY4YjJmOWQ2YmYyYmM5NDQ0Y2Yx
NS4uMTc0Y2MzNzZjMDUyZjlmMDE4ZWNkMzA3MTY5Y2ZhYzViMTE4Njc2NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBA
IC0yMjQxLDYgKzIyNDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgor
ICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVHZXRQcml2YXRl
TmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRCeVZhbDog
ewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBj
YXNlIEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNTcyOTljZjI3ZTRlYWNi
MDE2NmUwN2RjYjM3YTIzMmM1MTgyMWUzNi4uM2M2MzgxM2FmODRjYjI5YWNlZjY1YjA5Njk0YzA5
NmU0MGYyZTBmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCkBAIC0yNjE3LDYgKzI2MTcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAg
IGNvbXBpbGVHZXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpBbnlUeXBlZEFycmF5OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGFjODdmNmE1ZDZmMjVi
ODQ1YjBmOTllMGRiMjE0YTVlZmQxNmI4ODYuLmEyNjg5ZTBjMTkxMjY2MDRkZGRhZGU3NmI0ZWU3
MzNkYTJiMzZjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTM5Nyw2ICszOTcsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZToKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIEdl
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgTWF0
Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IDU1ZWFhMDdmNmRhYTQ5MjYzYzFhODkxNzdkZTk4ODYzYmJkMTdlZjgu
LjJkNzQxZjNhNjcyYzlkNjEyZWYxODJkNTg1YzEzZTY1OTI3MmQ5NWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTk0MCw2ICs5NDAsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6CiAgICAgICAgICAg
ICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICAgICAgY29tcGls
ZUdldFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRQ
cml2YXRlTmFtZUJ5SWQ6CisgICAgICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKCk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbkJ5SWQ6CiAgICAgICAgICAgICBj
b21waWxlSW5CeUlkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM5MzMsNiArMzkzOSwxMzgg
QEAgcHJpdmF0ZToKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAorICAgIExW
YWx1ZSBnZXRQcml2YXRlTmFtZShMVmFsdWUgYmFzZSwgTFZhbHVlIHByb3BlcnR5KQorICAgIHsK
KyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29t
ZVJlZ2lzdGVyKHByb3BlcnR5KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2Vs
bE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisKKyAgICAgICAgUmVm
UHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQ
YXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKKworICAgICAgICBTdGF0ZSogc3Rh
dGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgYm9vbCBiYXNlSXNDZWxsID0gYWJzdHJhY3RWYWx1
ZShub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lu
cy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRp
b24gY2FsbHMuCisgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4
Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcykt
Pmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBleGl0IGZvciBj
YWxsIElDJ3MgY3JlYXRlZCBieSB0aGUgSUMgZm9yIGdldHRlcnMuIFdlIGRvbid0IGhhdmUKKyAg
ICAgICAgICAgICAgICAvLyB0byBkbyBhbnl0aGluZyB3ZWlyZCBvdGhlciB0aGFuIGNhbGwgdGhp
cywgc2luY2UgaXQgd2lsbCBhc3NvY2lhdGUgdGhlIGV4aXQgd2l0aAorICAgICAgICAgICAgICAg
IC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KKyAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUt
PnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CisK
KyAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOworICAg
ICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAg
ICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKworICAgICAgICAg
ICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIp
KTsKKworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOworICAgICAg
ICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKKyAgICAgICAgICAgICAgICAgICAgbm90Q2VsbCA9
IGppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUik7CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRM
YXRlUGF0aChbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbm90Q2VsbC5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNs
b3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BS
LAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtU
byhkb25lLCAmaml0KTsKKworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNs
b3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisgICAgICAgICAgICAg
ICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlu
a0J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAg
ICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRQcml2YXRlTmFtZSgpCisgICAgeworICAgICAgICBp
ZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkKKyAgICAgICAgICAgIHNl
dEpTVmFsdWUoZ2V0UHJpdmF0ZU5hbWUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3lt
Ym9sKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHByb3BlcnR5ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBiYXNlQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgIGlzQ2VsbChiYXNlLCBwcm92ZW5U
eXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGJhc2VDZWxsQ2FzZSksIHVuc3VyZShub3RD
ZWxsQ2FzZSkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGJhc2VDZWxsQ2FzZSwgbm90Q2VsbENhc2UpOworCisgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdldFByaXZhdGVOYW1lKGJhc2UsIHBy
b3BlcnR5KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENl
bGxSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAgICAgIEludDY0LCBv
cGVyYXRpb25HZXRQcml2YXRlTmFtZSwKKyAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBtX291dC5jb25zdEludFB0cigwKSwgYmFzZSwKKyAgICAgICAgICAgICAgICBw
cm9wZXJ0eSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBjZWxsUmVzdWx0LCBub3RDZWxsUmVzdWx0
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
SWQoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgaWYg
KG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpCisgICAgICAgICAgICBzZXRK
U1ZhbHVlKGdldEJ5SWQobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgQWNjZXNzVHlwZTo6R2V0
UHJpdmF0ZU5hbWUpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGJhc2VDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5i
cmFuY2goCisgICAgICAgICAgICAgICAgaXNDZWxsKGJhc2UsIHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDEoKSkpLCB1bnN1cmUoYmFzZUNlbGxDYXNlKSwgdW5zdXJlKG5vdENlbGxDYXNlKSk7CisK
KyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYmFzZUNl
bGxDYXNlLCBub3RDZWxsQ2FzZSk7CisKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxS
ZXN1bHQgPSBtX291dC5hbmNob3IoZ2V0QnlJZChiYXNlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRl
TmFtZSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAor
ICAgICAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmlj
LAorICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsCisgICAg
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCkucmF3Qml0cygpKSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBjZWxsUmVzdWx0LCBub3RDZWxs
UmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkV2l0
aFRoaXMoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9JQ1N0YXRzLmgKaW5kZXggYzhkNDEyOThiOTcwODhiNjJjN2U3ZTM1ZDI2MGU4ZWUwMmZk
NjM0NC4uMjRkNzBhYzliMzM3ZjhjMDZmODM0NjZhNDhiMzNkNzE5Yzk3MzcwNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTc1LDcgKzc1LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkgXAogICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdp
dGhKdW1wKSBcCiAgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpIFwKLSAgICBtYWNy
byhPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKQorICAgIG1hY3JvKE9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lT3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFt
ZUJ5SWQpIFwKKyAgICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSkg
XAorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMpCiAKIGNsYXNz
IElDRXZlbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggMTkwNmU1ZDdiYzIyNGY4NDIxOTE5Y2MxNTI5NWNhZDk2NDY1NGEyYy4u
MmE4OWMwMDliNzYyNzkyMWRlYjgyYjE1YTYwMmQzMjIwNzM0ZGFhMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMjcwLDYgKzIyNzAsMjQgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShnbG9iYWxP
YmplY3QsIGZpZWxkTmFtZSk7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0
UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBJZGVudGlmaWVyIGZpZWxkTmFtZSkKK3sKKyAgICBB
U1NFUlQoZmllbGROYW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0
Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNWYWx1ZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBiYXNlLT5nZXRQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShnbG9i
YWxPYmplY3QsIGZpZWxkTmFtZSk7Cit9CisKIGV4dGVybiAiQyIgewogCiBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFs
dWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
RmllbGROYW1lKSkKQEAgLTIyOTEsNyArMjMwOSw2IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
CiAgICAgICAgIEFTU0VSVChmaWVsZE5hbWUuaXNTeW1ib2woKSk7CiAKICAgICAgICAgSlNPYmpl
Y3QqIGJhc2UgPSBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFsdWUuYXNDZWxsKCkpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0T3duUHJvcGVydHkpOwogICAgICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOwpAQCAtMjMxNywxMSArMjMzNCw4MyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplYwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRGaWVsZE5hbWUpOwogCi0gICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7CisgICAgaWYgKHN0dWJJbmZvKQorICAgICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0g
dHJ1ZTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lVmFsdWUpKTsKIH0KIAorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJ
ZGVudGlmaWVyKSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIHN0dWJJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoYmFzZSk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0g
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRp
Zmllcik7CisgICAgSWRlbnRpZmllciBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCBpZGVudGlmaWVyLnVpZCgpKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0UHJpdmF0ZU5h
bWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKTsKKworICAg
IExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkLCBiYXNlVmFsdWUu
Y2xhc3NJbmZvT3JOdWxsKHZtKSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKK3sKKyAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFi
bGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBh
dXRvIGZpZWxkTmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkp
OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBi
YXNlID0ganNDYXN0PEpTT2JqZWN0Kj4oYmFzZVZhbHVlLmFzQ2VsbCgpKTsKKworICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
R2V0T3duUHJvcGVydHkpOworICAgICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2Jq
ZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBm
aWVsZE5hbWUsIHRydWUpKTsKKworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5n
Qnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCh2bSksIGlkZW50aWZp
ZXIpKQorICAgICAgICAgICAgcmVwYXRjaEdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlVmFsdWUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgR2V0QnlLaW5kOjpQcml2YXRl
TmFtZUJ5SWQpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUo
Z2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUs
IGZpZWxkTmFtZSkpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxl
SWRlbnRpZmllcikpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUo
ZmFsc2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0
cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworCisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVl
LCBmaWVsZE5hbWUpOworCisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQcml2YXRl
TmFtZUJ5SWRHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgZmllbGROYW1l
LCB0cnVlKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZh
bEluZm8qIGJ5VmFsSW5mbykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCAxMzlkMDI1ZTUz
M2FjZmEyMDdlNjc3NjBlMDJiYjliMDcyZTZkYWRmLi44NThjZGYyN2E3YWU3OGVkN2MwYWYzODI2
MmFmOGZkNGQ0MzM4NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaApAQCAtMjcxLDYgKzI3MSw5IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uU2V0dXBWYXJhcmdzRnJhbWUsIENhbGxGcmFtZSosIChKU0dsb2JhbE9iamVjCiAKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIHVpbnRwdHJfdCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5l
cmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIHVp
bnRwdHJfdCkpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaENo
YXJXaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSosIEVuY29k
ZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCmluZGV4IGExYTUyZGU3N2U0ZmY0MDNlMjY3NjUzNzRiYmNhZmQwOWYwZjYz
MWUuLmEzOWI4YjgxOGI1YTI3NGM4MzNjMjk5ZjE3NDM2Mjg4Y2UyNWFmZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTY0LDYgKzE2NCw4IEBAIGlubGluZSBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rp
b24oR2V0QnlLaW5kCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOwog
ICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1l
QnlJZDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXpl
OwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTgzLDYg
KzE4NSw4IEBAIGlubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRl
R2V0QnlGdW5jdGlvbihHZXRCeUtpbmQga2luZCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdl
dEJ5VmFsR2VuZXJpYzsKICAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAgICAg
IHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZTsKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWVCeUlkOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlk
OwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMjAyLDcg
KzIwNiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgaWYgKCFiYXNlVmFsdWUu
aXNDZWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgSlND
ZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgY29uc3QgYm9vbCBp
c1ByaXZhdGUgPSBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU7CisgICAgICAgIGNvbnN0
IGJvb2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lIHx8IGtpbmQg
PT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5k
ZXggMDgzYTNkNWQ2ODRjYWJkZmIxNGNjYWViNzQ1ZmVjNzYzZGZiY2EyMS4uNWRkMjBjNjM2YTA1
MTY4N2Q5MTZlODBhYjc4M2IwZTllNjZkMzFkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmgKQEAgLTQwLDYgKzQwLDcgQEAgZW51bSBjbGFzcyBHZXRCeUtpbmQgewogICAgIFdpdGhU
aGlzLAogICAgIERpcmVjdCwKICAgICBQcml2YXRlTmFtZSwKKyAgICBQcml2YXRlTmFtZUJ5SWQs
CiB9OwogCiBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA4ODQzN2RhOWRlZTQwNjZmNmQ3ODU4MzkyMDViMzE3
NDkyYTMxYzljLi5iYzdiYjIwZjNjNzM4NGE0NTIxM2JkYzE0Y2FmOTBhNWQ0OTkzMmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTU3MSw3ICs1
NzEsNyBAQCBlbnVtIEV4cGVyaW1lbnRhbE9wdGlvbkZsYWdzIHsKIH07CiAKICNkZWZpbmUgRk9S
X0VBQ0hfSlNDX0VYUEVSSU1FTlRBTF9PUFRJT04odikgXAotICAgIHYodXNlUHJpdmF0ZUNsYXNz
RmllbGRzLCBMTEludEFuZEJhc2VsaW5lT25seSwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjc4NCIpCisgICAgdih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIFN1cHBvcnRzRlRM
IHwgU3VwcG9ydHNERkcsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEyNzgxIiwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQi
KQogCiBjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCkKIHsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTQ0YWRj
NGJlNjNiMWM1MGU4YWNlNWU3ZWJjN2M5Yzk5N2ZhMzk4Ny4uOTg2NWY4YjBlZTdlMDA4NjI2OGU4
Mjc1NmRmMmU3MjY0NWQxYjNlYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOS0wMiAgQ2FpdGxpbiBQ
b3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0
X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5kIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZz
ZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1p
ZC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9m
ZnNldC1tdWx0aS5qczogQWRkZWQuCisKIDIwMjAtMTAtMDIgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBBcnJheSNpdGVtIHRvIEBA
dW5zY29wYWJsZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlL21vbm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZh
dGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFkODExOTU5ZTdlZjQzN2JmYmFiNDk5MzhhMWRhNWUw
NTE3MWI2YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNz
LWZpZWxkcy1wcml2YXRlL21vbm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAg
KzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIpCisKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIGNvbnN0cnVjdG9yKGkpIHsKKyAg
ICAgICAgdGhpcy4jZmllbGQgPSBpOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCJ0ZXN0Iik7Citmb3IgKGxldCBpID0gMDsgaSA8IDUw
MDAwMDA7IGkrKykgeworICAgIGlmIChjLmdldEZpZWxkKCkgIT09ICJ0ZXN0IikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIGZpZWxkIHZhbHVlIik7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhp
Yy1nZXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYwNDFlODJhNmY4ZDcyNzFmYzY4MzFkMmUzOTQ2ZDRiM2Q5NjE3NDIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9y
cGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDM0IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitjbGFzcyBDIHsKKyAgICAj
ZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHZh
bHVlOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmll
bGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYzEg
PSBuZXcgQygpOworYzEuZm9vID0gMDsKK2MxLnNldEZpZWxkKCJhIik7CisKK2xldCBjMiA9IG5l
dyBDKCk7CitjMi5iYXIgPSAwOworYzIuc2V0RmllbGQoImIiKTsKKworbGV0IGMzID0gbmV3IEMo
KTsKK2MzLmJheiA9IDA7CitjMy5zZXRGaWVsZCgiYyIpOworCitsZXQgYXJyID0gW2MxLCBjMiwg
YzNdOworbGV0IHZhbHVlcyA9IFsiYSIsICJiIiwgImMiXTsKK2ZvciAobGV0IGkgPSAwOyBpIDwg
NTAwMDAwMDsgaSsrKSB7CisgICAgaWYgKGFycltpICUgYXJyLmxlbmd0aF0uZ2V0RmllbGQoKSAh
PT0gdmFsdWVzW2kgJSB2YWx1ZXMubGVuZ3RoXSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1
bmV4cGVjdGVkIGZpZWxkIHZhbHVlIik7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9k
ZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC1nZW5lcmljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTg0NDEz
OTk2ZDViODY5MjE4N2NmZDM5NjU3NzZjOTI2ZTBlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC1nZW5lcmljLmpzCkBAIC0wLDAg
KzEsNzYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9sdXRlZCBwcm9n
cmFtIHdoaWNoIHdpbGwgY29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8gR2V0UHJpdmF0
ZU5hbWVCeUlkLiBHZXRCeUlkCisvLyB3aWxsIG5ldmVyIE9TUiBoZXJlIGR1ZSB0byBiYWQgc3Ry
dWN0dXJlcywgYnV0IHdpbGwgaW5zdGVhZCByZXBhdGNoIHRvIHRoZSBnZW5lcmljIGNhc2UuCisK
K2xldCBhc3NlcnQgPSB7CisgICAgZXF1YWxzOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlm
IChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZDogJHtlfSBidXQg
Z290OiAke2F9YCk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVu
Y3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0g
YnV0IGl0IHRocmV3OiAke2V9YCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhj
ZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBh
ICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBkaWQgbm90IHRocm93YCk7CisgICAgfQorfTsKKworY2xh
c3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICBpZiAoaSAmIDIpIAorICAg
ICAgICAgICAgdGhpcy5jb21tb25FeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkgJiA0
KQorICAgICAgICAgICAgdGhpcy5tZWdhRXh0cmFTdHVmZiA9IHRydWU7CisgICAgICAgIGlmIChp
ID4gMTAwMDApIHsKKyAgICAgICAgICAgIGlmIChpICYgMSkKKyAgICAgICAgICAgICAgICB0aGlz
LnN1cGVyV2hhdGV2ZXIgPSB0cnVlOworICAgICAgICB9CisKKyAgICB9Cit9CisKK2NsYXNzIEMg
ZXh0ZW5kcyBCYXNlIHsKKyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3Rvcihp
KSB7CisgICAgICAgIHN1cGVyKGkpOworICAgICAgICBpZiAoaSA+IDUwMDApCisgICAgICAgICAg
ICB0aGlzLmV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSA9PT0gOTk5OSkKKyAgICAg
ICAgICAgIHRoaXMubW9yZVN0dWZmID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7
CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBl
LmNvbnN0cnVjdG9yKTsKK25vREZHKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMu
cHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsK
K25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLnNldEZp
ZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkg
PCAyMDAwMDsgKytpKSB7CisgICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQuZXF1YWxz
KGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAg
YXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBjID0gbmV3
IEMoMTAwKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiBjLmdldEZpZWxkLmNhbGwo
e30pKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5
LWlkLW9zci1iYWQtaWRlbnRpZmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0
ZS1uYW1lLWJ5LWlkLW9zci1iYWQtaWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTRjOTVkMmIx
ZTM0YTI2OTI4ODQwZWM2ODQyNzMyZGYzMTcxNDY4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtb3NyLWJhZC1pZGVudGlmaWVyLmpz
CkBAIC0wLDAgKzEsNzYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVk
VGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9s
dXRlZCBwcm9ncmFtIHdoaWNoIHdpbGwgY29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8g
R2V0UHJpdmF0ZU5hbWVCeUlkLCBhbmQgdGhlbiBPU1JFeGl0CisvLyBmcm9tIGdldEZpZWxkKCkg
ZHVlIHRvIGEgQ2hlY2tJc0NvbnN0YW50IGZhaWx1cmUgd2hlbiBhIGRpZmZlcmVudCBpZGVudGlm
aWVyIGlzIHVzZWQuCisKK2xldCBhc3NlcnQgPSB7CisgICAgZXF1YWxzOiBmdW5jdGlvbiAoYSwg
ZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZDogJHtlfSBidXQgZ290OiAke2F9YCk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9u
KGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2Vw
dGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhj
ZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtl
eGNlcHRpb24ubmFtZX0gYnV0IGl0IHRocmV3OiAke2V9YCk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBkaWQgbm90IHRocm93YCk7Cisg
ICAgfQorfTsKKworY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICBp
ZiAoaSAmIDEpCisgICAgICAgICAgICB0aGlzLmRpZmZlcmVudFN0cnVjdHVyZSA9IGBleHRyYSR7
aX1gOworICAgIH0KK30KKworZnVuY3Rpb24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNsYXNzIEMg
ZXh0ZW5kcyBCYXNlIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBz
ZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKyAg
ICAKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgICAgIH0KKyAgICB9CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOwor
ICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCisgICAgcmV0
dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFs
cyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAg
IGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgQzIgPSBm
YWN0b3J5Q2xhc3MoKTsgLy8gaW52YWxpZGF0ZSBmaXJzdCB2ZXJzaW9uIG9mIHNldEZpZWxkIGR1
ZSB0byBTY29wZSBpbnZhbGlkYXRpb24gcG9pbnQKKworLy8gVHJpZ2dlcnMgbmV3IHZlcnNpb24g
d2l0aG91dCBmb2xkaW5nIGdldF9mcm9tX3Njb3BlCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRG
aWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQu
ZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IGMyID0gbmV3IEMyKCk7
Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMyLmdldEZpZWxk
LmNhbGwobmV3IEMoKSk7IC8vIHRyaWdnZXIgT1NSIGV4aXQgZHVlIHRvIGJhZCBjb25zdGFudCB2
YWx1ZQorfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFt
ZS1ieS1pZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBmZGM0YjliMmZmYmQ5ZTYwOWE2ODQwYmE3M2MyMmQ0MGYwNmFmODEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1p
ZC5qcwpAQCAtMCwwICsxLDk4IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9y
dGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gV2l0
aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCBjaGVja3Mg
dGhlIEdldFByaXZhdGVOYW1lIGxvd2VyaW5nIGluIERGRyB3aGVuCisvLyByZWR1Y2luZyB0byBH
ZXRCeU9mZnNldCBpcyBub3QgcG9zc2libGUuCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNz
YWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWls
ZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBl
Y3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhm
biwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFz
c2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5
cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNz
ZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
bi5gKTsKKyAgfQorfSk7CisKKworbGV0IGJhc2VzID0gWworICB7CisgIH0sCisgIHsKKyAgICBh
OiAxLAorICB9LAorICB7CisgICAgYjogMSwKKyAgICBhOiAyLAorICB9LAorICB7CisgICAgYzog
MSwKKyAgICBkOiAyLAorICAgIGE6IDMsCisgIH0sCisgIHsKKyAgfSwKKyAgeworICAgIHo6IDEs
CisgICAgYTogMiwKKyAgICBiOiAzLAorICAgIHE6IDQsCisgIH0sCisgIHsKKyAgICBhOiAxLAor
ICAgIGQ6IDIsCisgICAgejogMywKKyAgICB4OiA0LAorICAgIGY6IDUsCisgIH0sCisgIHsKKyAg
ICBnOiAxLAorICAgIGI6IDIsCisgICAgZDogMywKKyAgICBxOiA0LAorICAgIHg6IDUsCisgICAg
ZDogNiwKKyAgfQorXTsKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcihpKSB7CisgICAgaWYg
KGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAmIDNdKTsK
KyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAlIGJhc2VzLmxlbmd0aF0pOwor
ICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICNwcml2YXRlID0gInByaXZhdGUiOwor
ICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJpdmF0ZTsgfQorfQorbm9JbmxpbmUoQy5j
b25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMuY29uc3RydWN0b3Ip
Oworbm9GVEwoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7Citub0lubGluZShDLnByb3RvdHlwZS5n
ZXRQcml2YXRlKTsKKworbGV0IGdldFByaXZhdGUgPSBDLnByb3RvdHlwZS5nZXRQcml2YXRlOwor
CitmdW5jdGlvbiB0ZXN0KG8pIHsKKyAgYXNzZXJ0LmVxdWFscyhnZXRQcml2YXRlLmNhbGwobyks
ICJwcml2YXRlIik7Cit9CisKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7
Cit0ZXN0KG5ldyBDKDApLCAwKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
IHRlc3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRlc3QpOworfQorYXNz
ZXJ0LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLWlkZW50aWZpZXIu
anMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtb3NyLWJh
ZC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MzIwYWY2YzA0YjdlZDc5ZDhlOWQ5Y2Y2MmUx
NmZkMzMwMTg4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXBy
aXZhdGUtbmFtZS1ieS1vZmZzZXQtb3NyLWJhZC1pZGVudGlmaWVyLmpzCkBAIC0wLDAgKzEsNjkg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9sdXRlZCBwcm9ncmFtIHdo
aWNoIHdpbGwgY29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8gR2V0QnlPZmZzZXQsIGFu
ZCB0aGVuIE9TUkV4aXQKKy8vIGZyb20gZ2V0RmllbGQoKSBkdWUgdG8gYSBDaGVja0lzQ29uc3Rh
bnQgZmFpbHVyZSB3aGVuIGEgZGlmZmVyZW50IGlkZW50aWZpZXIgaXMgdXNlZC4KKworbGV0IGFz
c2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09
IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7
YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7
CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAg
IH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAg
ICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQg
dGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24p
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNl
cHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitmdW5jdGlvbiBm
YWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsK
KyAgICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2
OworICAgICAgICB9CisgICAgCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMucHJvdG90
eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAg
bm9ERkcoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLnNldEZp
ZWxkKTsKKworICAgIHJldHVybiBDOworfQorCitsZXQgQyA9IGZhY3RvcnlDbGFzcygpOworCitm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgn
Zm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOwor
fQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3MoKTsgLy8gaW52YWxpZGF0ZSBmaXJzdCB2ZXJzaW9u
IG9mIHNldEZpZWxkIGR1ZSB0byBTY29wZSBpbnZhbGlkYXRpb24gcG9pbnQKKworLy8gVHJpZ2dl
cnMgbmV3IHZlcnNpb24gd2l0aG91dCBmb2xkaW5nIGdldF9mcm9tX3Njb3BlCitmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkp
OworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQg
YzIgPSBuZXcgQzIoKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7Cisg
ICAgYzIuZ2V0RmllbGQuY2FsbChuZXcgQygpKTsgLy8gdHJpZ2dlciBPU1IgZXhpdCBkdWUgdG8g
YmFkIGNvbnN0YW50IHZhbHVlCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0cnVjdHVyZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNTk3N2IxYWFmYmQ1NjY3NjVkMzk2YzI2ODkxNzVmNTNkYmUwZTVmCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnkt
b2Zmc2V0LW9zci1iYWQtc3RydWN0dXJlLmpzCkBAIC0wLDAgKzEsNjIgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9sdXRlZCBwcm9ncmFtIHdoaWNoIHdpbGwgY29tcGls
ZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8gR2V0QnlPZmZzZXQsIGFuZCB0aGVuIE9TUkV4aXQK
Ky8vIGZyb20gZ2V0RmllbGQoKSBkdWUgdG8gYSBDaGVja1N0cnVjdHVyZSBmYWlsdXJlCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgZXF1YWxzOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZDogJHtlfSBidXQgZ290
OiAke2F9YCk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rv
cikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0
IGl0IHRocmV3OiAke2V9YCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0
aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7
ZXhjZXB0aW9uLm5hbWV9IGJ1dCBkaWQgbm90IHRocm93YCk7CisgICAgfQorfTsKKworY2xhc3Mg
QyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAg
ICBpZiAoaSA+IDUwMDApCisgICAgICAgICAgICB0aGlzLmV4dHJhU3R1ZmYgPSB0cnVlOyAvLyBJ
bnZhbGlkYXRlIGxvb3AgZHVlIHRvIHN0cnVjdHVyZSBjaGFuZ2UKKyAgICAgICAgaWYgKGkgPT09
IDk5OTkpCisgICAgICAgICAgICB0aGlzLm1vcmVTdHVmZiA9IHRydWU7IC8vIFRyaWdnZXIgYSBC
YWRDYWNoZSBPU1Igb24gZ2V0X3ByaXZhdGVfbmFtZQorICAgIH0KKworICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5
cGUuY29uc3RydWN0b3IpOworbm9ERkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9GVEwo
Qy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
Oworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwOyArK2kpIHsKKyAgICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2VydC5lcXVh
bHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAg
ICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworLy8gQ2hlY2sg
c2VtYW50aWMgZmFpbHVyZSBzdGlsbCBmdW5jdGlvbnMKK2xldCBjID0gbmV3IEMoMTAwKTsKK2Fz
c2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiBjLmdldEZpZWxkLmNhbGwoe30pKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qcyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMWJhNDJkYWM1NmZkNTFjZmMwMmUyMGU0ZWJkNjk5MmQ5NGJlZjRlCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0Lmpz
CkBAIC0wLDAgKzEsNjIgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRU
aWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBXaXRoIG5v
IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIEdldFByaXZhdGVOYW1lIGlzIGNvbnZl
cnRlZCB0byBHZXRCeU9mZnNldAorLy8gZHVyaW5nIGJ5dGVjb2RlIHBhcnNpbmcuIFdlIHRlc3Qg
dGhhdCBpdCdzIHN0aWxsIHNlbWFudGljYWxseSB2YWxpZC4KKworZnVuY3Rpb24gYXNzZXJ0KGV4
cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0
aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAg
ZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3Rl
ZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAg
dGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAk
e2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3
YXMgdGhyb3duLmApOworICB9Cit9KTsKKworY2xhc3MgQyB7CisgICNwcml2YXRlID0gInByaXZh
dGUiOworICBnZXRQcml2YXRlKG8pIHsgcmV0dXJuIG8uI3ByaXZhdGU7IH0KKyAgY29uc3RydWN0
b3IoaSkgeworICAgIGlmIChpID09PSA5OTUpCisgICAgICByZXR1cm4ge307CisgIH0KK30KK25v
SW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNv
bnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJp
dmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICBy
ZXR1cm4gZ2V0UHJpdmF0ZShvKTsKK30KK25ldmVySW5saW5lRnVuY3Rpb24odGVzdCk7CisKKy8v
IFdhcm11cAordGVzdChuZXcgQywgMCk7Cit0ZXN0KG5ldyBDLCAwKTsKK3Rlc3QobmV3IEMsIDAp
OworCit2YXIgaTsKK2ZvciAodmFyIGogPSAwOyBqIDwgMjsgKytqKSB7CisgIGFzc2VydC50aHJv
d3MoKCkgPT4geworICAgIGZvciAoaSA9IDA7IGkgPCAyMDAwOyArK2kpIHsKKyAgICAgIGFzc2Vy
dC5lcXVhbHModGVzdChuZXcgQyhpKSksICJwcml2YXRlIik7CisgICAgICBvcHRpbWl6ZU5leHRJ
bnZvY2F0aW9uKHRlc3QpOworICAgIH0KKyAgfSwgVHlwZUVycm9yKTsKKworICAvLyBXZSBzaG91
bGQgdGhyb3cgb24gaXRlcmF0aW9uIDk5NSwgYmVjYXVzZSB0aGlzIHdpbGwgcmVzdWx0IGluIGFu
IGludmFsaWQgbG9hZC4KKyAgYXNzZXJ0LmVxdWFscyhpLCA5OTUpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktdmFsLWdlbmVyaWMuanMgYi9K
U1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12YWwtZ2VuZXJpYy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NjI1NzYxNTk4ODUwOTFkOGY1NDU0YWEyZDZmM2NkYTNjMjYzYmNhCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktdmFsLWdl
bmVyaWMuanMKQEAgLTAsMCArMSw3NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5z
dXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisv
LyBDb252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5h
bWUgaW50byBKSVRHZXRCeVZhbCBJQy4gR2V0QnlWYWwKKy8vIHdpbGwgbmV2ZXIgT1NSIGhlcmUg
ZHVlIHRvIGJhZCBzdHJ1Y3R1cmVzLCBidXQgd2lsbCBpbnN0ZWFkIHJlcGF0Y2ggdG8gdGhlIGdl
bmVyaWMgY2FzZS4KKworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBl
KSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkOiAke2V9IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24o
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4
Y2VwdGlvbi5uYW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAg
ICB9Cit9OworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIGlm
IChpICYgMSkKKyAgICAgICAgICAgIHRoaXMubWVnYUNvbW1vbkV4dHJhU3R1ZmYgPSB0cnVlOwor
ICAgICAgICBpZiAoaSAmIDIpIAorICAgICAgICAgICAgdGhpcy5jb21tb25FeHRyYVN0dWZmID0g
dHJ1ZTsKKyAgICAgICAgaWYgKGkgJiA0KQorICAgICAgICAgICAgdGhpcy5tb3JlRXh0cmFTdHVm
ZiA9IHRydWU7CisgICAgICAgIGlmIChpICYgOCkKKyAgICAgICAgICAgIHRoaXMuc29NdWNoRXh0
cmFTdHVmZiA9IHRydWU7CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAg
I2ZpZWxkID0gJ3Rlc3QnOworCisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICBzdXBlcihp
KTsKKyAgICAgICAgaWYgKGkgPiA1MDAwKQorICAgICAgICAgICAgdGhpcy5leHRyYVN0dWZmID0g
dHJ1ZTsKKyAgICAgICAgaWYgKGkgPT09IDk5OTkpCisgICAgICAgICAgICB0aGlzLm1vcmVTdHVm
ZiA9IHRydWU7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVs
ZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNm
aWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0RG
RyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
cik7Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3Rv
dHlwZS5zZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAg
IGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0
Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRG
aWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgYyA9IG5ldyBDKDEwMCk7Cithc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgKCkgPT4gYy5nZXRGaWVsZC5jYWxsKHt9KSk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YzE3ODk4M2Zk
ZTY0MjY1MmRmMzM4M2JhYTE2ODcxYzNmODk1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpAQCAtMCwwICsxLDEwNyBAQAor
Ly9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKwor
Ly8gV2l0aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCBj
aGVja3MgdGhlIEdldFByaXZhdGVOYW1lIGxvd2VyaW5nIGluIERGRyB3aGVuCisvLyByZWR1Y2lu
ZyB0byBHZXRCeU9mZnNldCBpcyBub3QgcG9zc2libGUuCisvLyBUaGlzIHRlc3QgZGlzYWJsZXMg
aW5saW5pbmcgbG9hZHMgdG8gR2V0QnlPZmZzZXQgaW4gb3JkZXIgdG8gcHJldmVudCByZWR1Y2lu
ZyB0aGUgR2V0UHJpdmF0ZU5hbWVCeUlkIHRvIE11bHRpR2V0QnlPZmZzZXQgaW4gdGhlCisvLyBE
RkdDb25zdGFudEZvbGRpbmdQaGFzZS4gSXQgaXMgY29uY2VpdmFibHkgcG9zc2libGUgZm9yIHRo
aXMgc2NlbmFyaW8gdG8gYmUgZW5jb3VudGVyZWQgd2l0aG91dCBkaXNhYmxpbmcgaW5saW5lIGFj
Y2Vzcy4KKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQor
ICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQor
T2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBm
b3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0
cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVy
cm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJv
clR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtl
fWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0
byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworbGV0
IGJhc2VzID0gWworICB7CisgIH0sCisgIHsKKyAgICBhOiAxLAorICB9LAorICB7CisgICAgYjog
MSwKKyAgICBhOiAyLAorICB9LAorICB7CisgICAgYzogMSwKKyAgICBkOiAyLAorICAgIGE6IDMs
CisgIH0sCisgIHsKKyAgfSwKKyAgeworICAgIHo6IDEsCisgICAgYTogMiwKKyAgICBiOiAzLAor
ICAgIHE6IDQsCisgIH0sCisgIHsKKyAgICBhOiAxLAorICAgIGQ6IDIsCisgICAgejogMywKKyAg
ICB4OiA0LAorICAgIGY6IDUsCisgIH0sCisgIHsKKyAgICBnOiAxLAorICAgIGI6IDIsCisgICAg
ZDogMywKKyAgICBxOiA0LAorICAgIHg6IDUsCisgICAgZDogNiwKKyAgfSwKKyAgeworICAgIHo6
IDEsCisgICAgcTogMiwKKyAgICBmOiAzLAorICAgIHk6IDQsCisgICAgYTogNSwKKyAgICAwOiA2
LAorICAgIGs6IDcsCisgIH0sCitdOworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKGkpIHsK
KyAgICBpZiAoaSA8IDEwMCkKKyAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tp
ICYgM10pOworICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICUgYmFzZXMubGVu
Z3RoXSk7CisgIH0KK30KK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZhdGUgPSAicHJp
dmF0ZSI7CisgIGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9Cit9Citub0lu
bGluZShDLmNvbnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5jb25z
dHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKKworbGV0IGdldFBy
aXZhdGUgPSBDLnByb3RvdHlwZS5nZXRQcml2YXRlOworCitmdW5jdGlvbiB0ZXN0KG8pIHsKKyAg
YXNzZXJ0LmVxdWFscyhnZXRQcml2YXRlLmNhbGwobyksICJwcml2YXRlIik7Cit9CisKK3Rlc3Qo
bmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK2Zv
ciAodmFyIGkgPSAwOyAhaXNGaW5hbFRpZXIodGVzdCkgJiYgaSA8IDEwMDAwOyArK2kpIHsKKyAg
dGVzdChuZXcgQyhpKSk7CisgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7Cit9Cithc3Nl
cnQudGhyb3dzKCgpID0+IHsKKyAgdGVzdCh7fSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzIGIvSlNUZXN0cy9z
dHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM1N2QzNjRlNThjYTI1ZTQ1YzY0MWEyY2U1YWJiN2FlYTE1OWM4MDYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGku
anMKQEAgLTAsMCArMSw4NyBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdpdGgg
bWFueSBpbmNvbXBhdGlibGUgc3RydWN0dXJlIHZhcmlhbnRzLCB0aGlzIHRlc3Qgd2lsbCBmYWls
IHRvIGdlbmVyYXRlIEdldEJ5T2Zmc2V0IGR3dXJpbmcgREZHQnl0ZUNvZGVQYXJzaW5nLgorLy8g
RHVyaW5nIEZUTCBjb21waWxhdGlvbiwgaXQgd2lsbCB0cnkgYWdhaW4gaW4gREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4
cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7
Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0g
YnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgewor
ICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBl
b2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9m
IGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJl
dyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVj
dGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOwor
CitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAg
ICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAg
YTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6
IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAz
LAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3Ry
dWN0b3IoaSkgeworICAgIGlmIChpIDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24o
e30sIGJhc2VzW2kgJiAzXSk7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kg
JSBiYXNlcy5sZW5ndGhdKTsKKyAgfQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJp
dmF0ZSA9ICJwcml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7
IH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citu
b0ZUTChDLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOwor
CitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRl
c3QobykgeworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsK
K30KKwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMo
MCksIDApOworZm9yICh2YXIgaSA9IDA7ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwgMTAwMDA7
ICsraSkgeworICB0ZXN0KG5ldyBDKGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0
KTsKK30KK2Fzc2VydC50aHJvd3MoKCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtaWRlbnQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtaWRlbnQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2ExMmZiYTc1ZWYxMzhjMDBhM2MyMGRlODc5ZjFlMTFlYTUyNzJmYwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25z
dGFudC1pZGVudC5qcwpAQCAtMCwwICsxLDUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxs
b3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIp
CisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0
aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVj
dC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNz
ZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQg
JHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsK
KyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5
cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBl
LCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsK
KyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhy
b3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2xldCBpID0g
MDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkg
eworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7
CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAg
ICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRG
aWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwg
MTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
YXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9v
JyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50
LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFu
dC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ExMmZiYTc1ZWYxMzhjMDBhM2MyMGRlODc5ZjFlMTFl
YTUyNzJmYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5h
bWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw1MyBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAo
IWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9
YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3Rl
ZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkg
eworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0
eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5j
ZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0
aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4
cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30p
OworCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOwor
CisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgdGhpcy5hbm90
aGVyRmllbGQgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZp
ZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxk
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5w
cm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9E
RkcoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOwor
Citmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBjb3VudCA9IGk7CisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMu
c2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2Zv
bycgKyBpKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUt
d2l0aC1kaWZmZXJlbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFt
ZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkxYTNmZGEyZGU3NjBiY2Vh
NTIyNjIxYjAzY2Q1MmMzYjk3ZjNjYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2dldC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNTQg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1l
c3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZh
aWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxz
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4
cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dz
KGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAg
YXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9y
VHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBh
c3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhy
b3duLmApOworICB9Cit9KTsKKworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbigpIHsKKyAgICBj
bGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkOworCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAg
ICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisg
ICAgbm9ERkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworICAgIG5vRlRMKEMucHJvdG90eXBl
LmNvbnN0cnVjdG9yKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAg
bm9ERkcoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLnNldEZp
ZWxkKTsKKyAgICAKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICBy
ZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0gY2xhc3NE
ZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMxIDogbmV3
IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdl
dEZpZWxkKCksICd0ZXN0JyArIGkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410782</attachid>
            <date>2020-10-07 14:37:45 -0700</date>
            <delta_ts>2020-10-08 10:22:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20201007173745.patch</filename>
            <type>text/plain</type>
            <size>72877</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NzZlNjQwM2I3YTg0OTYzZjA2MjAyNzcxMzNjMWU3Yzk2OWQ4Zjk0Li41MmNiNjkxNWZlNWM5ODAz
ZmU1ZTQyNDlkMThkOTYyYWJjMzM0OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMC0xMC0wNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5k
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUuCisKKyAgICAgICAgRHVy
aW5nIERGRyBieXRlY29kZSBwYXJzaW5nLCB3ZSB3aWxsIGF0dGVtcHQsIGlmIGRlZW1lZCBwb3Nz
aWJsZSBieQorICAgICAgICB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCB0byBvdXRwdXQgYSBH
ZXRCeU9mZnNldCBvcGVyYXRpb24uIElmIGEKKyAgICAgICAgc2luZ2xlIHByaXZhdGUgZmllbGQg
aWRlbnRpZmllciBpcyB1c2VkIGluIGFsbCBjYXNlcyAodGhlIGNvbW1vbiBjYXNlKSwKKyAgICAg
ICAgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBzdHJ1Y3R1cmUgdmFyaWFudHMsIGEgR2V0UHJpdmF0
ZU5hbWVCeUlkCisgICAgICAgIG9wZXJhdGlvbiBpcyBlbWl0dGVkIGluc3RlYWQuIEZhaWxpbmcg
dGhhdCwgdGhlIEdldFByaXZhdGVOYW1lCisgICAgICAgIG9wZXJhdGlvbiBpcyBwcm9kdWNlZCwg
d2hpY2ggcHJvZHVjZXMgYSBHZXRCeVZhbCBJQyBsaWtlIGluIHRoZQorICAgICAgICBiYXNlbGlu
ZSBKSVQuCisKKyAgICAgICAgSW4gRlRMLCBHZXRQcml2YXRlTmFtZUJ5SUQgY2FuIGJlIHJlZHVj
ZWQgdG8gW011bHRpXUdldEJ5T2Zmc2V0IGluIHRoZQorICAgICAgICBERkdDb25zdGFudEZvbGRp
bmdQaGFzZSwgb3IgYSBHZXRCeUlEIElDIHdoZW4gbG93ZXJpbmcgdG8gQjMuCisKKyAgICAgICAg
KiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
OgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24pOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlHZXRCeVN0YXR1cyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0
VG9HZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlH
ZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FjaGVhYmxlSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJpdmF0ZU5h
bWVCeUlkKToKKyAgICAgICAgKiBqaXQvSUNTdGF0cy5oOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
YXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6
CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0
Lmg6CisKIDIwMjAtMTAtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBNb3JlIGNvbnNpc3RlbnQgUHRyVGFnZ2luZyBmb3IgY29kZSB0eXBlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKaW5kZXgg
MTU4MDIxZjM5OTIzZjJjMDI1OWJjYjhmZWRjODU0YmU2YjM3NWVjMi4uYWRmMjFkZWU3OWQwM2Rj
ZWY4Mzc1M2I0MGYxYWY0NDZhNWU5MDQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCkBAIC0xMDgsNiArMTA4LDExIEBAIEdldEJ5U3RhdHVz
IEdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
Qnl0ZWNvZGVJbmRlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ugb3BfZ2V0X3By
aXZhdGVfbmFtZToKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHVzaW5nIExMSW50IGNhY2hl
cyBvciBJQyBpbmZvcm1hdGlvbiB0byBwb3B1bGF0ZSBHZXRCeVN0YXR1cworICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjQ1CisgICAgICAgIHJl
dHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisKICAgICBkZWZhdWx0OiB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA2MDQ4Y2QwNDI4ZTkzN2Q0ZDMzNDAz
OTYzMDM0N2M5ZDliNzJlMTY1Li44OWRmNGQ3YjEyOGNjYmMwNDk2ZDE1ZWRkNjI2NmNmZTdkMjI4
Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaApAQCAtNDA0LDYgKzQwNCw4IEBAIGlubGluZSBhdXRvIGFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5SWRGdW5jdGlvbihBY2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZvCiAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpHZXRCeUlkRGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERp
cmVjdE9wdGltaXplOworICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CisgICAg
ICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQyMCw2ICs0MjIsOCBAQCBpbmxpbmUgYXV0byBhcHByb3By
aWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24oQWNjZXNzVHlwZSB0eXBlKSAtPiBkZWNsdHlwZSgm
b3BlcgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWM7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0
QnlJZERpcmVjdEdlbmVyaWM7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWM7CiAgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOGIwNWQ1Zjk3NjA1
ZTZlNGI5ODVlYTk3MGU5MTQ5OTg3YmMwNDBkOS4uMWMzNzIzOGE5MDdjNjkyNWE5NmYwYjQ0NDY1
YWZhNjliNGU3YWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzM0OCw2ICszMzQ4LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNh
c2UgR2V0QnlJZERpcmVjdDoKICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICBjYXNl
IEdldEJ5SWQ6CkBAIC0zMzgzLDYgKzMzODQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNh
c2UgR2V0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IDhlOTNiN2IyNjY0YjJjYjFkZTQ2ZWZlNTViOGFmM2JkNDAzNTNi
ODEuLjk0NDYyMzI3ZjE5YTY2MzBmOGE2MjRmYmUzNWRiNDVmMzE3NjZjODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDQsOCAr
MjQ0LDExIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICB2b2lk
IHBhcnNlR2V0QnlJZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgIHZvaWQgc2ltcGxpZnlHZXRC
eVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyYpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJ
ZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwg
Tm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsK
KyAgICB2b2lkIGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1
cyk7CiAgICAgdm9pZCBlbWl0UHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgTm9kZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0Rp
cmVjdCwgRUNNQU1vZGUpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKQEAgLTQ1MzAsOSArNDUz
Myw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyLCBjb25zdCBQdXRCeUlkVmFyaWFuCiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zm
c2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhbHVlKTsKIH0KIAotdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVz
dGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBH
ZXRCeVN0YXR1cyBnZXRCeVN0YXR1cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9z
ckV4aXRJbmRleCkKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMoTm9k
ZSogYmFzZSwgR2V0QnlTdGF0dXMmIGdldEJ5U3RhdHVzKQogewogICAgIC8vIEF0dGVtcHQgdG8g
cmVkdWNlIHRoZSBzZXQgb2YgdGhpbmdzIGluIHRoZSBHZXRCeVN0YXR1cy4KICAgICBpZiAoYmFz
ZS0+b3AoKSA9PSBOZXdPYmplY3QpIHsKQEAgLTQ1NDksNiArNDU1MCwxMyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICBn
ZXRCeVN0YXR1cy5maWx0ZXIoYmFzZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIH0KK30KKwor
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAg
ICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4
IG9zckV4aXRJbmRleCkKK3sKKyAgICBzaW1wbGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3Rh
dHVzKTsKICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwogICAgIGlmICh0eXBlID09IEFjY2Vz
c1R5cGU6OkdldEJ5SWQpCkBAIC00NzE2LDYgKzQ3MjQsNzggQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAx
LCByZWdpc3Rlck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlvbik7
CiB9CiAKKy8vIEEgdmFyaWFudCBvbiBoYW5kbGVHZXRCeUlkIHdoaWNoIGlzIG1vcmUgbGltaXRl
ZCBpbiBzY29wZQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlk
KAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cykKK3sKKyAgICBzaW1w
bGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3RhdHVzKTsKKworICAgIEFTU0VSVCghZ2V0QnlT
dGF0dXMuaXNDdXN0b20oKSk7CisgICAgQVNTRVJUKCFnZXRCeVN0YXR1cy5tYWtlc0NhbGxzKCkp
OworICAgIGlmICghZ2V0QnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVtVmFy
aWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBzZXQo
ZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwg
T3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChnZXRCeVN0YXR1cy5udW1WYXJpYW50
cygpID4gMSkgeworICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAg
ICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAg
ICAgIHx8IGdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhp
Y0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9u
LAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8o
aWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRC
eVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRC
eVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAg
ICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOworCisgICAgICAgIC8v
IDEpIEVtaXQgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMg
Y291bGQgc29ydCBvZiBtYXliZSBub3QgYmUKKyAgICAgICAgLy8gICAgb3B0aW1hbCwgaWYgdGhl
cmUgaXMgc29tZSByYXJlbHkgZXhlY3V0ZWQgY2FzZSBpbiB0aGUgY2hhaW4gdGhhdCByZXF1aXJl
cyBhIGxvdAorICAgICAgICAvLyAgICBvZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBhcmUgbm90
IHdhdGNocG9pbnRhYmxlLgorICAgICAgICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50IDogZ2V0QnlTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpOworICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgpKTsKKworICAgICAgICAgICAgR2V0QnlPZmZzZXRN
ZXRob2QgbWV0aG9kID0gR2V0QnlPZmZzZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZzZXQoKSk7
CisgICAgICAgICAgICBjYXNlcy5hcHBlbmQoTXVsdGlHZXRCeU9mZnNldENhc2UoKm1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpLCBtZXRob2QpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAg
ICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOwor
CisgICAgICAgIC8vIDIpIEVtaXQgYSBNdWx0aUdldEJ5T2Zmc2V0CisgICAgICAgIE11bHRpR2V0
QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgp
OworICAgICAgICBkYXRhLT5jYXNlcyA9IGNhc2VzOworICAgICAgICBkYXRhLT5pZGVudGlmaWVy
TnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAg
ICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5m
byhwcmVkaWN0aW9uKSwgYmFzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IElmIHdlIHVzZSB0aGUgR2V0QnlTdGF0dXMgZm9yIGFueXRoaW5nIHRoZW4gd2Ugc2hv
dWxkIHJlY29yZCBpdCBhbmQgaW5zZXJ0IGEgbm9kZQorICAgIC8vIGFmdGVyIGV2ZXJ5dGhpbmcg
ZWxzZSAobGlrZSB0aGUgR2V0QnlPZmZzZXQgb3Igd2hhdGV2ZXIpIHRoYXQgd2lsbCBmaWx0ZXIg
dGhlIHJlY29yZGVkCisgICAgLy8gR2V0QnlTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29u
c3RhbnQgZm9sZGVyIGFsc28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgYWRkVG9HcmFwaChG
aWx0ZXJHZXRCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMo
KS5hZGRHZXRCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNl
KTsKKworICAgIEFTU0VSVChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgIEdl
dEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsKKworICAgIE5vZGUqIGxvYWRl
ZFZhbHVlID0gbG9hZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50
KTsKKyAgICBpZiAoIWxvYWRlZFZhbHVlKSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAg
ICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmll
ciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAg
ICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKworICAg
IGlmICghdmFyaWFudC5jYWxsTGlua1N0YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0g
Tm9JbnRyaW5zaWMpCisgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOworfQor
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdp
c3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLAogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0
ZUJ5U3RhdHVzLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTYzNDUsNiArNjQyNSw0MyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHV0X3NldHRlcl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAg
Y2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgp
OworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAg
ICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAg
ICAgICBib29sIGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICAgICAgICAg
IEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5l
TWFwLCBtX2ljQ29udGV4dFN0YWNrLCBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IDA7CisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRD
b25zdGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3Rh
dHVzLnNpbmdsZUlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikg
eworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlm
aWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96
ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkp
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZv
KGZyb3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZVNpbmdsZUlk
ZW50aWZpZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGhh
bmRsZUdldFByaXZhdGVOYW1lQnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwg
aWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMpOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0
ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgbm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKGdldEJ5U3RhdHVzLm9ic2Vy
dmVkU3RydWN0dXJlU3R1YkluZm9TbG93UGF0aCgpKQorICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fc2xvd0dldEJ5VmFsLmFkZChub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9wcml2YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBn
ZXQoYnl0ZWNvZGUubV9iYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKaW5kZXggYjViMTE2Njc4NGI3MzFjYTQ1NDdlMTk3NmNmOTljMGQ2NTIxZmNjMi4uM2Yz
NzNmM2Y4ZDA2NTBiOTE1M2MzZGQyMDMzMGVmODE3NjU3YzRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTY3Myw2ICs2NzMsOCBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIEdldFByaXZh
dGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVmaW5lRGF0
YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERl
bGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDY3N2Y2NGNiYzljMTBkNmQ2ODBkZWM0NzY5ZThlNGMz
ZjIzZDNmOWEuLmViYWJhYzExZDk1OWJlY2E5ZjMwZGQxMjdjNjgwY2UwYTNlYTJlZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCkBAIC01OTksNyArNTk5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgR2V0
QnlJZERpcmVjdDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgogICAgICAg
ICAgICAgY2FzZSBHZXRCeUlkOgotICAgICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKKyAg
ICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgICAgICAgICAgY2FzZSBHZXRQcml2YXRl
TmFtZUJ5SWQ6IHsKICAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxk
MSgpOwogICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUoKTsKICAg
ICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnVpZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IDUxMmY5M2M2YTMxMzZkODJjM2RiOWM3OGY0ZTc0Y2FkMDY2MWE3M2YuLjI0MjdkMjA4YmUz
NjZiM2M0ZTk1MmYyMTM2MzVjMDU1OGJlY2YwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTMyNCw2ICszMjQsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgR2V0UHJp
dmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBQdXRTdGFj
azoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDdiNWM1MWM5MzYz
NDY0ZmRhMDkwOTVjNDVhZmJkNWU5NWYyMTQ3YmIuLmQ2MzJjZmYzZTBhM2ViMzY2YzQ2OGQzZWJh
MTRlOGEyNzI2ZjVjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcApAQCAtMTc4MCw2ICsxNzgwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIGNh
c2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgICAgIGlmICghbm9kZS0+aGFzQ2FjaGVhYmxlSWRl
bnRpZmllcigpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOiB7
CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAwNGUwMjVhYjJmMTFiZTI4NjU2YTU5YjU3
MTI2NTBjZjU4N2QzYmI1Li44OTdiOTk5ZTk1NDRlMjljZjAwNmY5ZDg2YzQyN2U1NjkzM2Q1ZGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTk3LDcgKzU5Nyw3IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0dldEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NE
YXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRC
eUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlH
ZXRCeU9mZnNldCk7CisgICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBH
ZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERp
cmVjdEZsdXNoIHx8IG1fb3AgPT0gR2V0UHJpdmF0ZU5hbWVCeUlkIHx8IG1fb3AgPT0gTXVsdGlH
ZXRCeU9mZnNldCk7CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVu
LnNldENoaWxkMShzdG9yYWdlKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpA
QCAtNjA3LDcgKzYwNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRp
R2V0QnlPZmZzZXQoTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwg
bV9vcCA9PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZs
dXNoIHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVz
aCB8fCBtX29wID09IEdldFByaXZhdGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gZGF0
YTsKICAgICAgICAgY2hpbGQxKCkuc2V0VXNlS2luZChDZWxsVXNlKTsKICAgICAgICAgbV9vcCA9
IE11bHRpR2V0QnlPZmZzZXQ7CkBAIC0xMDgyLDYgKzEwODIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1l
QnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgICAgICBjYXNlIEluQnlJZDoKICAg
ICAgICAgY2FzZSBQdXRCeUlkOgpAQCAtMTc2Niw2ICsxNzY3LDggQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgIGNhc2Ug
R2V0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICAgICAg
Y2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2Fz
ZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBjYzRmZmJlYWQ2OGViMDJhNTgx
NmVhYmI1NWM0YjkxMjA5NTAxOTIzLi44MTg2NzhhY2RhMTczODk1Njg5NTYzZjFhZmVmNGJiZDQw
ZWVlYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNDIs
NiArMjQyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE51
a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhDaGVja0FycmF5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tBcnJheU9y
RW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRQcml2YXRlTmFtZSwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldFByaXZhdGVOYW1l
QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFRoaXMgY2hl
Y2tzIGlmIHRoZSBlZGdlIGlzIGEgdHlwZWQgYXJyYXkgYW5kIGlmIGl0IGlzIG5ldXRlcmVkLiAq
LyBcCiAgICAgbWFjcm8oQ2hlY2tOZXV0ZXJlZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKEFycmF5aWZ5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmlu
ZGV4IGZmNTQzOGFhYTY5ZDY3NzM1MjkyNDU1MjUwZDExMWVkZDc0NmU1ZDMuLjkxNDU3NjM1Mjdm
MTI5MjQ2OWI1OTM4NDAyMTA1ODZlOGE2Y2RlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC04NzUsNiArODc1LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAg
ICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6Cisg
ICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVC
eUlkOgogICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgR2V0RGly
ZWN0UG5hbWU6CiAgICAgICAgIGNhc2UgQ2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggODNkNGMyMjYwZWJmNjM2YTIzNmY2N2UwNmI2ODUw
ZTliNDY1YjAzMC4uOTAzOTAzNjY0MWY1NGRlN2Y2Yjk2ZThhMDFjMGU4ZjA2NjRlMTc4MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyOSw2
ICs1MjksOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0U2V0dGVyQnlW
YWw6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJ
ZDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlk
OgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0NTNlMTU2YjBlNDI0ZTE2NWRkOTVlMmYw
NzE2YzMxYjFmMTkwMmJiLi44NmM3ZjhiN2UwMTdlYTQzZjZjODk5NDBhZGQ1ZTE4MWNmYjFkODUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzQ2OCw2ICszNDY4LDkyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbEZvck9iamVjdFdpdGhTeW1ib2woTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJp
dmF0ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+aGFzQ2FjaGVhYmxlSWRlbnRp
ZmllcigpKQorICAgICAgICByZXR1cm4gY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChub2RlKTsK
KworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hp
bGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgu
Y2hpbGQobm9kZSwgMSkpOworICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICBhdXRvIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIGF1dG8gcHJvcGVy
dHlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHByb3BlcnR5LmdwcigpKTsKKyAgICBh
dXRvIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgYmFzZS51c2UoKTsKKyAgICBw
cm9wZXJ0eS51c2UoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChwcm9wZXJ0eS5lZGdlKCkpOwor
CisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRl
RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNp
emUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3Rl
cnMoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFt
X3N0YXRlLmZvck5vZGUobV9ncmFwaC5jaGlsZChub2RlLCAwKSkuaXNUeXBlKFNwZWNDZWxsKSkK
KyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3Mp
KTsKKworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwg
dXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVn
cyk7CisgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOworICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKKyAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkpKTsKKworICAgIG1faml0LmFkZEdl
dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdU
Rk1vdmUoc2xvd1BhdGgpKTsKKworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwg
RGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworfQorCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCit7Cisg
ICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIENlbGxVc2U6
IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFz
ZSk7CisKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkoYmFzZS5ncHIoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOworCisgICAgICAgIGJhc2UudXNlKCk7CisKKyAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKworICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICAgICAgYmFzZS51c2UoKTsKKwor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2VSZWdzKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90
Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVs
dDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgdXNlIGtpbmQi
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiBub2RlLCBFZGdlJiBjaGlsZDEsIEVk
Z2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFy
ZzEodGhpcywgY2hpbGQxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAppbmRleCBmMDhkZmU3NjI3MmFiNDQ4NTJiZTQwZDFmZGNjZWQ3MmQzODgyMGY4
Li40OGUwZmFjMjI4NzQ0NTI2YjYyZmE0YmUxNjBlOTE2NjYxNTNiOGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMjgyLDcgKzEyODIs
MTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkRpcmVjdEFyZ3VtZW50
cyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50cyhOb2Rl
Kik7Ci0gICAgCisKKyAgICB2b2lkIGNvbXBpbGVHZXRQcml2YXRlTmFtZShOb2RlKik7CisgICAg
dm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqKTsKKwogICAgIHZvaWQgY29tcGls
ZUdldFNjb3BlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUdldEdsb2JhbE9iamVjdChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBmYzIyZGFh
NDY3NjAyOTYwNTE5NjhiMmY5ZDZiZjJiYzk0NDRjZjE1Li4xNzRjYzM3NmMwNTJmOWYwMThlY2Qz
MDcxNjljZmFjNWIxMTg2NzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIyNDEsNiArMjI0MSwxMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5
SWQ6IHsKKyAgICAgICAgY29tcGlsZUdldFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5VmFsOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+
YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OlNlbGVjdFVzaW5nUHJl
ZGljdGlvbnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCA1NzI5OWNmMjdlNGVhY2IwMTY2ZTA3ZGNiMzdhMjMyYzUxODIxZTM2
Li4zYzYzODEzYWY4NGNiMjlhY2VmNjViMDk2OTRjMDk2ZTQwZjJlMGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI2MTcs
NiArMjYxNywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2Fz
ZSBHZXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZUdldFByaXZhdGVOYW1lKG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5VmFsOiB7CiAgICAg
ICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJy
YXk6OkFueVR5cGVkQXJyYXk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKaW5kZXggYWM4N2Y2YTVkNmYyNWI4NDViMGY5OWUwZGIyMTRhNWVmZDE2Yjg4
Ni4uYTI2ODllMGMxOTEyNjYwNGRkZGFkZTc2YjRlZTczM2RhMmIzNmNkYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzk3LDYgKzM5Nyw4
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBH
ZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNTVlYWEwN2Y2
ZGFhNDkyNjNjMWE4OTE3N2RlOTg4NjNiYmQxN2VmOC4uMmQ3NDFmM2E2NzJjOWQ2MTJlZjE4MmQ1
ODVjMTNlNjU5MjcyZDk1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtOTQwLDYgKzk0MCwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5
cGU6OkdldEJ5SWREaXJlY3QpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAg
ICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgICAgIGNvbXBpbGVJbkJ5SWQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzkzMyw2ICszOTM5LDEzOCBAQCBwcml2YXRlOgogICAgICAgICBzZXRK
U1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCisgICAgTFZhbHVlIGdldFByaXZhdGVOYW1lKExWYWx1
ZSBiYXNlLCBMVmFsdWUgcHJvcGVydHkpCisgICAgeworICAgICAgICBOb2RlKiBub2RlID0gbV9u
b2RlOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBv
aW50KEludDY0KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2Up
OworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocHJvcGVydHkpOworICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKKworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBh
dGNocG9pbnQpOworCisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAg
ICBib29sIGJhc2VJc0NlbGwgPSBhYnN0cmFjdFZhbHVlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUo
U3BlY0NlbGwpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CisKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBz
dGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KKyAgICAgICAgICAgICAg
ICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRs
ZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKworICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGV4aXQgZm9yIGNhbGwgSUMncyBjcmVhdGVkIGJ5IHRoZSBJ
QyBmb3IgZ2V0dGVycy4gV2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAgICAgIC8vIHRvIGRvIGFu
eXRoaW5nIHdlaXJkIG90aGVyIHRoYW4gY2FsbCB0aGlzLCBzaW5jZSBpdCB3aWxsIGFzc29jaWF0
ZSB0aGUgZXhpdCB3aXRoCisgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4Lgor
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JV
bndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKKworICAgICAgICAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BS
ID0gcGFyYW1zWzJdLmdwcigpOworCisgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBC
b3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9w
ZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworCisgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CisgICAgICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxs
KQorICAgICAgICAgICAgICAgICAgICBub3RDZWxsID0gaml0LmJyYW5jaElmTm90Q2VsbChiYXNl
R1BSKTsKKworICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQp
OworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgp
OworCisgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxs
LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0g
aml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4s
IHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdl
dFByaXZhdGVOYW1lKCkKKyAgICB7CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlKQorICAgICAgICAgICAgc2V0SlNWYWx1ZShnZXRQcml2YXRlTmFtZShs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSkpKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wo
bV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJhc2VDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAg
ICAgICAgICAgICAgaXNDZWxsKGJhc2UsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1
bnN1cmUoYmFzZUNlbGxDYXNlKSwgdW5zdXJlKG5vdENlbGxDYXNlKSk7CisKKyAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYmFzZUNlbGxDYXNlLCBub3RD
ZWxsQ2FzZSk7CisKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxSZXN1bHQgPSBtX291
dC5hbmNob3IoZ2V0UHJpdmF0ZU5hbWUoYmFzZSwgcHJvcGVydHkpKTsKKyAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90
Q2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwoCisgICAgICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lLAor
ICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1fb3V0LmNvbnN0SW50
UHRyKDApLCBiYXNlLAorICAgICAgICAgICAgICAgIHByb3BlcnR5KSk7CisgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGko
SW50NjQsIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCgpCisgICAgeworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gQ2VsbFVzZSkKKyAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSkpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmFzZUNlbGxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICBp
c0NlbGwoYmFzZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShiYXNlQ2Vs
bENhc2UpLCB1bnN1cmUobm90Q2VsbENhc2UpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhiYXNlQ2VsbENhc2UsIG5vdENlbGxDYXNlKTsKKwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihnZXRC
eUlkKGJhc2UsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKSk7CisgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENl
bGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2Vs
bFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAgICAgICAgSW50NjQsIG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsCisgICAgICAgICAgICAgICAgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpKSk7CisgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkoSW50NjQsIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWRXaXRoVGhpcygpCiAgICAgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9J
Q1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCA5YzJl
ZTE5MzRlMGVkY2IzODhhMzQ2OTQ2ZWNhYzExZGVmZjFlMDhjLi45NGQxZjkyNmNmMmFmMTdlYWEy
ODk0YmNhYTVkZjM1OTdiZTE1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApA
QCAtNzIsNyArNzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oSW5CeUlkU2VsZlBh
dGNoKSBcCiAgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhEZWxC
eVJlcGxhY2VXaXRoR2VuZXJpYykgXAotICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1l
T3B0aW1pemUpCisgICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSkgXAor
ICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCkgXAorICAgIG1hY3JvKE9wZXJh
dGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAxOTA2ZTVkN2Jj
MjI0Zjg0MjE5MTljYzE1Mjk1Y2FkOTY0NjU0YTJjLi4yYTg5YzAwOWI3NjI3OTIxZGViODJiMTVh
NjAyZDMyMjA3MzRkYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTIyNzAsNiArMjI3MCwyNCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1Zh
bHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgog
ICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKTsKIH0KIAor
QUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUs
IElkZW50aWZpZXIgZmllbGROYW1lKQoreworICAgIEFTU0VSVChmaWVsZE5hbWUuaXNQcml2YXRl
TmFtZSgpKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgSlNPYmpl
Y3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3du
UHJvcGVydHkpOworICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxk
TmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsK
KworICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKTsKK30K
KwogZXh0ZXJuICJDIiB7CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpKQpAQCAtMjI5MSw3ICsy
MzA5LDYgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1l
T3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG8KICAgICAgICAgQVNTRVJUKGZpZWxkTmFt
ZS5pc1N5bWJvbCgpKTsKIAogICAgICAgICBKU09iamVjdCogYmFzZSA9IGpzQ2FzdDxKU09iamVj
dCo+KGJhc2VWYWx1ZS5hc0NlbGwoKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2Us
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAgICAg
ICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7
CkBAIC0yMzE3LDExICsyMzM0LDgzIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25HZXRQcml2YXRlTmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjCiAgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFs
dWUgZmllbGROYW1lVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CiAK
LSAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICBpZiAoc3R1YkluZm8pCisg
ICAgICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZh
bHVlLCBmaWVsZE5hbWVWYWx1ZSkpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpKQoreworICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7
CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBJZGVudGlmaWVyIGZp
ZWxkTmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworCisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpOworCisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRp
b25HZXRQcml2YXRlTmFtZUJ5SWQsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBmaWVs
ZE5hbWUsIHRydWUpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30K
KworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9w
dGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90
IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAgIGF1dG8gZmllbGROYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIGJhc2UgPSBqc0Nhc3Q8SlNPYmplY3QqPihi
YXNlVmFsdWUuYXNDZWxsKCkpOworCisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgICAg
IGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisg
ICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwg
YmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwgdHJ1ZSkpOworCisgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFs
dWUuc3RydWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNo
R2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xv
dCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZCk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSkp
OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKSk7Cit9CisKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKK3sKKyAgICBTdXBl
clNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGJhc2UpOworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIp
OworICAgIElkZW50aWZpZXIgZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRl
bnRpZmllci51aWQoKSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldFByaXZhdGVOYW1lKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZSk7CisKKyAgICBMT0df
SUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsIGJhc2VWYWx1
ZS5jbGFzc0luZm9Pck51bGwodm0pLCBmaWVsZE5hbWUsIHRydWUpKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCmluZGV4IDEzOWQwMjVlNTMzYWNmYTIwN2U2Nzc2MGUwMmJiOWIwNzJl
NmRhZGYuLjg1OGNkZjI3YTdhZTc4ZWQ3YzBhZjM4MjYyYWY4ZmQ0ZDQzMzg0MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNzEsNiArMjcxLDkgQEAg
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgQ2Fs
bEZyYW1lKiwgKEpTR2xvYmFsT2JqZWMKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25HZXRQcml2YXRlTmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRGaWVsZE5hbWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGlt
aXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiAKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5k
ZXgpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVu
a25vd25LZXlUeXBlLCBjaGFyKiwgKFZNKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFi
bGVJbmRleCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggYTFhNTJk
ZTc3ZTRmZjQwM2UyNjc2NTM3NGJiY2FmZDA5ZjBmNjMxZS4uYTM5YjhiODE4YjVhMjc0YzgzM2My
OTlmMTc0MzYyODhjZTI1YWZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC0xNjQsNiArMTY0LDggQEAgaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihHZXRCeUtpbmQKICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CiAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZh
dGVOYW1lOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsK
KyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkT3B0aW1pemU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xODMsNiArMTg1LDggQEAgaW5saW5lIEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZCBr
aW5kKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljOwogICAgIGNhc2Ug
R2V0QnlLaW5kOjpQcml2YXRlTmFtZToKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lOworICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWQ7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0yMDIsNyArMjA2LDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKgogICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSkKICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVl
LmFzQ2VsbCgpOwotICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlL
aW5kOjpQcml2YXRlTmFtZTsKKyAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09
IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUgfHwga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1l
QnlJZDsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCAwODNhM2Q1ZDY4NGNhYmRmYjE0Y2Nh
ZWI3NDVmZWM3NjNkZmJjYTIxLi41ZGQyMGM2MzZhMDUxNjg3ZDkxNmU4MGFiNzgzYjBlOWU2NmQz
MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDAsNiArNDAsNyBAQCBl
bnVtIGNsYXNzIEdldEJ5S2luZCB7CiAgICAgV2l0aFRoaXMsCiAgICAgRGlyZWN0LAogICAgIFBy
aXZhdGVOYW1lLAorICAgIFByaXZhdGVOYW1lQnlJZCwKIH07CiAKIGVudW0gY2xhc3MgRGVsQnlL
aW5kIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4
IDg4NDM3ZGE5ZGVlNDA2NmY2ZDc4NTgzOTIwNWIzMTc0OTJhMzFjOWMuLmJjN2JiMjBmM2M3Mzg0
YTQ1MjEzYmRjMTRjYWY5MGE1ZDQ5OTMyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTcxLDcgKzU3MSw3IEBAIGVudW0gRXhwZXJpbWVudGFs
T3B0aW9uRmxhZ3MgewogfTsKIAogI2RlZmluZSBGT1JfRUFDSF9KU0NfRVhQRVJJTUVOVEFMX09Q
VElPTih2KSBcCi0gICAgdih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIExMSW50QW5kQmFzZWxpbmVP
bmx5LCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKKyAgICB2KHVz
ZVByaXZhdGVDbGFzc0ZpZWxkcywgU3VwcG9ydHNGVEwgfCBTdXBwb3J0c0RGRywgImh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4NCIpCiAKIGNvbnN0ZXhwciBzaXplX3QgY291
bnROdW1iZXJPZkpTQ09wdGlvbnMoKQogewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhNjg1MWEzZTllMDQwZjZjNzk3Y2FkZDhkYWExYjJh
OGJiMTBlMjVlLi44MjhmZjc0MjBkNTJmMWQzZjY2ZGZkNjI1ZTFjYjY5NmM0OGZhZTkzIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTEwLTA3ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0pTQ10gc3VwcG9ydCBvcF9nZXRfcHJpdmF0ZV9uYW1lIGluIERGRyBhbmQg
RlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ4
NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0
ZS1maWVsZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxk
cy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtZ2VuZXJpYy5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLW9zci1iYWQtaWRl
bnRpZmllci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1l
LWJ5LWlkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUt
Ynktb2Zmc2V0LW9zci1iYWQtaWRlbnRpZmllci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0cnVjdHVyZS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LXZhbC1nZW5l
cmljLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnkt
aWQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1v
ZmZzZXQtbXVsdGkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1l
LXdpdGgtY29uc3RhbnQtaWRlbnQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9nZXQtcHJp
dmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanM6IEFkZGVkLgorCiAy
MDIwLTEwLTA3ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBb
TUlQU10gRmxha3kgdGVzdCBzdHJlc3MvYXJyYXktc3BlY2llcy1jcmVhdGUtc2hvdWxkLWhhbmRs
ZS1tYXNxdWVyYWRlci5qcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQt
cHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWQ4MTE5NTllN2VmNDM3YmZiYWI0OTkzOGEx
ZGE1ZTA1MTcxYjZjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKQEAg
LTAsMCArMSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIikKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgY29uc3RydWN0b3IoaSkg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IGk7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMoInRlc3QiKTsKK2ZvciAobGV0IGkgPSAwOyBp
IDwgNTAwMDAwMDsgaSsrKSB7CisgICAgaWYgKGMuZ2V0RmllbGQoKSAhPT0gInRlc3QiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHlt
b3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjA0MWU4MmE2ZjhkNzI3MWZjNjgzMWQyZTM5NDZkNGIzZDk2MTc0MgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3Bv
bHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2NsYXNzIEMgewor
ICAgICNmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxk
ID0gdmFsdWU7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xl
dCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAwOworYzEuc2V0RmllbGQoImEiKTsKKworbGV0IGMy
ID0gbmV3IEMoKTsKK2MyLmJhciA9IDA7CitjMi5zZXRGaWVsZCgiYiIpOworCitsZXQgYzMgPSBu
ZXcgQygpOworYzMuYmF6ID0gMDsKK2MzLnNldEZpZWxkKCJjIik7CisKK2xldCBhcnIgPSBbYzEs
IGMyLCBjM107CitsZXQgdmFsdWVzID0gWyJhIiwgImIiLCAiYyJdOworZm9yIChsZXQgaSA9IDA7
IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBpZiAoYXJyW2kgJSBhcnIubGVuZ3RoXS5nZXRGaWVs
ZCgpICE9PSB2YWx1ZXNbaSAlIHZhbHVlcy5sZW5ndGhdKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoInVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFl
ODQ0MTM5OTZkNWI4NjkyMTg3Y2ZkMzk2NTc3NmM5MjZlMGViOAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMKQEAg
LTAsMCArMSw3NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVy
cz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVk
IHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRQ
cml2YXRlTmFtZUJ5SWQuIEdldEJ5SWQKKy8vIHdpbGwgbmV2ZXIgT1NSIGhlcmUgZHVlIHRvIGJh
ZCBzdHJ1Y3R1cmVzLCBidXQgd2lsbCBpbnN0ZWFkIHJlcGF0Y2ggdG8gdGhlIGdlbmVyaWMgY2Fz
ZS4KKworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAg
ICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9
IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9u
LCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFs
c2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0
cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5u
YW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhy
ZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRo
cm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9Owor
CitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIGlmIChpICYgMikg
CisgICAgICAgICAgICB0aGlzLmNvbW1vbkV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBpZiAo
aSAmIDQpCisgICAgICAgICAgICB0aGlzLm1lZ2FFeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAg
aWYgKGkgPiAxMDAwMCkgeworICAgICAgICAgICAgaWYgKGkgJiAxKQorICAgICAgICAgICAgICAg
IHRoaXMuc3VwZXJXaGF0ZXZlciA9IHRydWU7CisgICAgICAgIH0KKworICAgIH0KK30KKworY2xh
c3MgQyBleHRlbmRzIEJhc2UgeworICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIGNvbnN0cnVj
dG9yKGkpIHsKKyAgICAgICAgc3VwZXIoaSk7CisgICAgICAgIGlmIChpID4gNTAwMCkKKyAgICAg
ICAgICAgIHRoaXMuZXh0cmFTdHVmZiA9IHRydWU7CisgICAgICAgIGlmIChpID09PSA5OTk5KQor
ICAgICAgICAgICAgdGhpcy5tb3JlU3R1ZmYgPSB0cnVlOworICAgIH0KKworICAgIHNldEZpZWxk
KHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkg
eworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90
b3R5cGUuY29uc3RydWN0b3IpOworbm9ERkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9G
VEwoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0Rmll
bGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDIwMDAwOyArK2kpIHsKKyAgICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2VydC5l
cXVhbHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsK
KyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IGMg
PSBuZXcgQygxMDApOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IGMuZ2V0RmllbGQu
Y2FsbCh7fSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5h
bWUtYnktaWQtb3NyLWJhZC1pZGVudGlmaWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1w
cml2YXRlLW5hbWUtYnktaWQtb3NyLWJhZC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NGM5
NWQyYjFlMzRhMjY5Mjg4NDBlYzY4NDI3MzJkZjMxNzE0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC1vc3ItYmFkLWlkZW50aWZp
ZXIuanMKQEAgLTAsMCArMSw3NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBD
b252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUg
aW50byBHZXRQcml2YXRlTmFtZUJ5SWQsIGFuZCB0aGVuIE9TUkV4aXQKKy8vIGZyb20gZ2V0Rmll
bGQoKSBkdWUgdG8gYSBDaGVja0lzQ29uc3RhbnQgZmFpbHVyZSB3aGVuIGEgZGlmZmVyZW50IGlk
ZW50aWZpZXIgaXMgdXNlZC4KKworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9u
IChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVu
Y3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0
aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cg
YSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dg
KTsKKyAgICB9Cit9OworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAg
ICAgIGlmIChpICYgMSkKKyAgICAgICAgICAgIHRoaXMuZGlmZmVyZW50U3RydWN0dXJlID0gYGV4
dHJhJHtpfWA7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xh
c3MgQyBleHRlbmRzIEJhc2UgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAg
ICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAg
fQorICAgIAorICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNm
aWVsZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJv
dG90eXBlLnNldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKKyAg
ICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQu
ZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7
CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBD
MiA9IGZhY3RvcnlDbGFzcygpOyAvLyBpbnZhbGlkYXRlIGZpcnN0IHZlcnNpb24gb2Ygc2V0Rmll
bGQgZHVlIHRvIFNjb3BlIGludmFsaWRhdGlvbiBwb2ludAorCisvLyBUcmlnZ2VycyBuZXcgdmVy
c2lvbiB3aXRob3V0IGZvbGRpbmcgZ2V0X2Zyb21fc2NvcGUKK2ZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFscyhj
LmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFz
c2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgYzIgPSBuZXcg
QzIoKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzIuZ2V0
RmllbGQuY2FsbChuZXcgQygpKTsgLy8gdHJpZ2dlciBPU1IgZXhpdCBkdWUgdG8gYmFkIGNvbnN0
YW50IHZhbHVlCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0
ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnkt
aWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGZkYzRiOWIyZmZiZDllNjA5YTY4NDBiYTczYzIyZDQwZjA2YWY4
MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1l
LWJ5LWlkLmpzCkBAIC0wLDAgKzEsOTggQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5z
dXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisv
LyBXaXRoIG1hbnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0ZXN0IGNo
ZWNrcyB0aGUgR2V0UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJlZHVjaW5n
IHRvIEdldEJ5T2Zmc2V0IGlzIG5vdCBwb3NzaWJsZS4KKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIs
IG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9u
IEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1
YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwg
YGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhy
b3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vy
cm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMg
dGhyb3duLmApOworICB9Cit9KTsKKworCitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgewor
ICAgIGE6IDEsCisgIH0sCisgIHsKKyAgICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAg
ICBjOiAxLAorICAgIGQ6IDIsCisgICAgYTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAg
ejogMSwKKyAgICBhOiAyLAorICAgIGI6IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6
IDEsCisgICAgZDogMiwKKyAgICB6OiAzLAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKKyAg
eworICAgIGc6IDEsCisgICAgYjogMiwKKyAgICBkOiAzLAorICAgIHE6IDQsCisgICAgeDogNSwK
KyAgICBkOiA2LAorICB9CitdOworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKGkpIHsKKyAg
ICBpZiAoaSA8IDEwMCkKKyAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICYg
M10pOworICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICUgYmFzZXMubGVuZ3Ro
XSk7CisgIH0KK30KK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZhdGUgPSAicHJpdmF0
ZSI7CisgIGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9Cit9Citub0lubGlu
ZShDLmNvbnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5jb25zdHJ1
Y3Rvcik7Citub0ZUTChDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKK25vSW5saW5lKEMucHJvdG90
eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZh
dGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2Fs
bChvKSwgInByaXZhdGUiKTsKK30KKwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDAp
LCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kp
IHsKKyAgdGVzdChuZXcgQyhpKSk7CisgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7Cit9
Cithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgdGVzdCh7fSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtaWRlbnRp
Zmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1v
c3ItYmFkLWlkZW50aWZpZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczMjBhZjZjMDRiN2VkNzlkOGU5ZDlj
ZjYyZTE2ZmQzMzAxODhjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLWlkZW50aWZpZXIuanMKQEAgLTAsMCAr
MSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dy
YW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRCeU9mZnNl
dCwgYW5kIHRoZW4gT1NSRXhpdAorLy8gZnJvbSBnZXRGaWVsZCgpIGR1ZSB0byBhIENoZWNrSXND
b25zdGFudCBmYWlsdXJlIHdoZW4gYSBkaWZmZXJlbnQgaWRlbnRpZmllciBpcyB1c2VkLgorCits
ZXQgYXNzZXJ0ID0geworICAgIGVxdWFsczogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQ6ICR7ZX0gYnV0IGdv
dDogJHthfWApOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0
b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1
dCBpdCB0aHJldzogJHtlfWApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAk
e2V4Y2VwdGlvbi5uYW1lfSBidXQgZGlkIG5vdCB0aHJvd2ApOworICAgIH0KK307CisKK2Z1bmN0
aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rl
c3QnOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVs
ZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbm9JbmxpbmUoQy5w
cm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
KyAgICBub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZp
ZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsg
aSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOyAvLyBpbnZhbGlkYXRlIGZpcnN0IHZl
cnNpb24gb2Ygc2V0RmllbGQgZHVlIHRvIFNjb3BlIGludmFsaWRhdGlvbiBwb2ludAorCisvLyBU
cmlnZ2VycyBuZXcgdmVyc2lvbiB3aXRob3V0IGZvbGRpbmcgZ2V0X2Zyb21fc2NvcGUKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28n
ICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisK
K2xldCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgp
IHsKKyAgICBjMi5nZXRGaWVsZC5jYWxsKG5ldyBDKCkpOyAvLyB0cmlnZ2VyIE9TUiBleGl0IGR1
ZSB0byBiYWQgY29uc3RhbnQgdmFsdWUKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
ZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0dXJlLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0
dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM1OTc3YjFhYWZiZDU2Njc2NWQzOTZjMjY4OTE3NWY1M2RiZTBl
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFt
ZS1ieS1vZmZzZXQtb3NyLWJhZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw2MiBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBj
b21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRCeU9mZnNldCwgYW5kIHRoZW4gT1NS
RXhpdAorLy8gZnJvbSBnZXRGaWVsZCgpIGR1ZSB0byBhIENoZWNrU3RydWN0dXJlIGZhaWx1cmUK
KworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAg
aWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1
dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1l
fSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdF
eGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93
IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitj
bGFzcyBDIHsKKyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7Cisg
ICAgICAgIGlmIChpID4gNTAwMCkKKyAgICAgICAgICAgIHRoaXMuZXh0cmFTdHVmZiA9IHRydWU7
IC8vIEludmFsaWRhdGUgbG9vcCBkdWUgdG8gc3RydWN0dXJlIGNoYW5nZQorICAgICAgICBpZiAo
aSA9PT0gOTk5OSkKKyAgICAgICAgICAgIHRoaXMubW9yZVN0dWZmID0gdHJ1ZTsgLy8gVHJpZ2dl
ciBhIEJhZENhY2hlIE9TUiBvbiBnZXRfcHJpdmF0ZV9uYW1lCisgICAgfQorCisgICAgc2V0Rmll
bGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnBy
b3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citu
b0ZUTChDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5zZXRG
aWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0
LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkp
OworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCisvLyBD
aGVjayBzZW1hbnRpYyBmYWlsdXJlIHN0aWxsIGZ1bmN0aW9ucworbGV0IGMgPSBuZXcgQygxMDAp
OworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IGMuZ2V0RmllbGQuY2FsbCh7fSkpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQxYmE0MmRhYzU2ZmQ1MWNmYzAyZTIwZTRlYmQ2OTkyZDk0YmVmNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZz
ZXQuanMKQEAgLTAsMCArMSw2MiBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdp
dGggbm8gaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgR2V0UHJpdmF0ZU5hbWUgaXMg
Y29udmVydGVkIHRvIEdldEJ5T2Zmc2V0CisvLyBkdXJpbmcgYnl0ZWNvZGUgcGFyc2luZy4gV2Ug
dGVzdCB0aGF0IGl0J3Mgc3RpbGwgc2VtYW50aWNhbGx5IHZhbGlkLgorCitmdW5jdGlvbiBhc3Nl
cnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBB
c3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwg
eworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4
cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9
LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24i
KQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRo
cm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0
aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitjbGFzcyBDIHsKKyAgI3ByaXZhdGUgPSAi
cHJpdmF0ZSI7CisgIGdldFByaXZhdGUobykgeyByZXR1cm4gby4jcHJpdmF0ZTsgfQorICBjb25z
dHJ1Y3RvcihpKSB7CisgICAgaWYgKGkgPT09IDk5NSkKKyAgICAgIHJldHVybiB7fTsKKyAgfQor
fQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRM
KEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBn
ZXRQcml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7
CisgIHJldHVybiBnZXRQcml2YXRlKG8pOworfQorbmV2ZXJJbmxpbmVGdW5jdGlvbih0ZXN0KTsK
KworLy8gV2FybXVwCit0ZXN0KG5ldyBDLCAwKTsKK3Rlc3QobmV3IEMsIDApOwordGVzdChuZXcg
QywgMCk7CisKK3ZhciBpOworZm9yICh2YXIgaiA9IDA7IGogPCAyOyArK2opIHsKKyAgYXNzZXJ0
LnRocm93cygoKSA9PiB7CisgICAgZm9yIChpID0gMDsgaSA8IDIwMDA7ICsraSkgeworICAgICAg
YXNzZXJ0LmVxdWFscyh0ZXN0KG5ldyBDKGkpKSwgInByaXZhdGUiKTsKKyAgICAgIG9wdGltaXpl
TmV4dEludm9jYXRpb24odGVzdCk7CisgICAgfQorICB9LCBUeXBlRXJyb3IpOworCisgIC8vIFdl
IHNob3VsZCB0aHJvdyBvbiBpdGVyYXRpb24gOTk1LCBiZWNhdXNlIHRoaXMgd2lsbCByZXN1bHQg
aW4gYW4gaW52YWxpZCBsb2FkLgorICBhc3NlcnQuZXF1YWxzKGksIDk5NSk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12YWwtZ2VuZXJpYy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LXZhbC1nZW5lcmljLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY2MjU3NjE1OTg4NTA5MWQ4ZjU0NTRhYTJkNmYzY2RhM2MyNjNiY2EKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12
YWwtZ2VuZXJpYy5qcwpAQCAtMCwwICsxLDc1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxs
b3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIp
CisKKy8vIENvbnZvbHV0ZWQgcHJvZ3JhbSB3aGljaCB3aWxsIGNvbXBpbGUgdHVybiBHZXRQcml2
YXRlTmFtZSBpbnRvIEpJVEdldEJ5VmFsIElDLiBHZXRCeVZhbAorLy8gd2lsbCBuZXZlciBPU1Ig
aGVyZSBkdWUgdG8gYmFkIHN0cnVjdHVyZXMsIGJ1dCB3aWxsIGluc3RlYWQgcmVwYXRjaCB0byB0
aGUgZ2VuZXJpYyBjYXNlLgorCitsZXQgYXNzZXJ0ID0geworICAgIGVxdWFsczogZnVuY3Rpb24g
KGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQ6ICR7ZX0gYnV0IGdvdDogJHthfWApOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5j
dGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBh
ICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBpdCB0aHJldzogJHtlfWApOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgZGlkIG5vdCB0aHJvd2Ap
OworICAgIH0KK307CisKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICAg
ICAgaWYgKGkgJiAxKQorICAgICAgICAgICAgdGhpcy5tZWdhQ29tbW9uRXh0cmFTdHVmZiA9IHRy
dWU7CisgICAgICAgIGlmIChpICYgMikgCisgICAgICAgICAgICB0aGlzLmNvbW1vbkV4dHJhU3R1
ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSAmIDQpCisgICAgICAgICAgICB0aGlzLm1vcmVFeHRy
YVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkgJiA4KQorICAgICAgICAgICAgdGhpcy5zb011
Y2hFeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsK
KyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIHN1
cGVyKGkpOworICAgICAgICBpZiAoaSA+IDUwMDApCisgICAgICAgICAgICB0aGlzLmV4dHJhU3R1
ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSA9PT0gOTk5OSkKKyAgICAgICAgICAgIHRoaXMubW9y
ZVN0dWZmID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMu
I2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsK
K25vREZHKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmNvbnN0
cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vRlRMKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7
CisgICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwg
J3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhj
LmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBjID0gbmV3IEMoMTAwKTsKK2Fzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiBjLmdldEZpZWxkLmNhbGwoe30pKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdjMTc4
OTgzZmRlNjQyNjUyZGYzMzgzYmFhMTY4NzFjM2Y4OTVkMAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsMTA3
IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2Ui
KQorCisvLyBXaXRoIG1hbnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0
ZXN0IGNoZWNrcyB0aGUgR2V0UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJl
ZHVjaW5nIHRvIEdldEJ5T2Zmc2V0IGlzIG5vdCBwb3NzaWJsZS4KKy8vIFRoaXMgdGVzdCBkaXNh
YmxlcyBpbmxpbmluZyBsb2FkcyB0byBHZXRCeU9mZnNldCBpbiBvcmRlciB0byBwcmV2ZW50IHJl
ZHVjaW5nIHRoZSBHZXRQcml2YXRlTmFtZUJ5SWQgdG8gTXVsdGlHZXRCeU9mZnNldCBpbiB0aGUK
Ky8vIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLiBJdCBpcyBjb25jZWl2YWJseSBwb3NzaWJsZSBm
b3IgdGhpcyBzY2VuYXJpbyB0byBiZSBlbmNvdW50ZXJlZCB3aXRob3V0IGRpc2FibGluZyBpbmxp
bmUgYWNjZXNzLgorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4
cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7
Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0g
YnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgewor
ICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBl
b2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9m
IGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJl
dyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVj
dGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOwor
CitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAg
ICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAg
YTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6
IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAz
LAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKKyAgeworICAgIGc6IDEsCisgICAgYjogMiwK
KyAgICBkOiAzLAorICAgIHE6IDQsCisgICAgeDogNSwKKyAgICBkOiA2LAorICB9LAorICB7Cisg
ICAgejogMSwKKyAgICBxOiAyLAorICAgIGY6IDMsCisgICAgeTogNCwKKyAgICBhOiA1LAorICAg
IDA6IDYsCisgICAgazogNywKKyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3Io
aSkgeworICAgIGlmIChpIDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJh
c2VzW2kgJiAzXSk7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJSBiYXNl
cy5sZW5ndGhdKTsKKyAgfQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0ZSA9
ICJwcml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KK30K
K25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChD
LmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQg
Z2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3Qobykg
eworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30KKwor
dGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDAp
OworZm9yICh2YXIgaSA9IDA7ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwgMTAwMDA7ICsraSkg
eworICB0ZXN0KG5ldyBDKGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30K
K2Fzc2VydC50aHJvd3MoKCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMgYi9KU1Rl
c3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzU3ZDM2NGU1OGNhMjVlNDVjNjQxYTJjZTVhYmI3YWVhMTU5YzgwNgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1t
dWx0aS5qcwpAQCAtMCwwICsxLDg3IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8g
V2l0aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCB3aWxs
IGZhaWwgdG8gZ2VuZXJhdGUgR2V0QnlPZmZzZXQgZHd1cmluZyBERkdCeXRlQ29kZVBhcnNpbmcu
CisvLyBEdXJpbmcgRlRMIGNvbXBpbGF0aW9uLCBpdCB3aWxsIHRyeSBhZ2FpbiBpbiBERkdDb25z
dGFudEZvbGRpbmdQaGFzZS4KK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlm
ICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2Fn
ZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVj
dGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBl
KSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYg
KHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3Rh
bmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0
IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBg
ZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQor
fSk7CisKK2xldCBiYXNlcyA9IFsKKyAgeworICB9LAorICB7CisgICAgYTogMSwKKyAgfSwKKyAg
eworICAgIGI6IDEsCisgICAgYTogMiwKKyAgfSwKKyAgeworICAgIGM6IDEsCisgICAgZDogMiwK
KyAgICBhOiAzLAorICB9LAorICB7CisgIH0sCisgIHsKKyAgICB6OiAxLAorICAgIGE6IDIsCisg
ICAgYjogMywKKyAgICBxOiA0LAorICB9LAorICB7CisgICAgYTogMSwKKyAgICBkOiAyLAorICAg
IHo6IDMsCisgICAgeDogNCwKKyAgICBmOiA1LAorICB9LAorXTsKK2NsYXNzIEJhc2UgeworICBj
b25zdHJ1Y3RvcihpKSB7CisgICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFz
c2lnbih7fSwgYmFzZXNbaSAmIDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFz
ZXNbaSAlIGJhc2VzLmxlbmd0aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7Cisg
ICNwcml2YXRlID0gInByaXZhdGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJp
dmF0ZTsgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9y
KTsKK25vRlRMKEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0
ZSk7CisKK2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rp
b24gdGVzdChvKSB7CisgIGFzc2VydC5lcXVhbHMoZ2V0UHJpdmF0ZS5jYWxsKG8pLCAicHJpdmF0
ZSIpOworfQorCit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChu
ZXcgQygwKSwgMCk7Citmb3IgKHZhciBpID0gMDsgIWlzRmluYWxUaWVyKHRlc3QpICYmIGkgPCAx
MDAwMDsgKytpKSB7CisgIHRlc3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9u
KHRlc3QpOworfQorYXNzZXJ0LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVu
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVu
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYTEyZmJhNzVlZjEzOGMwMGEzYzIwZGU4NzlmMWUxMWVhNTI3MmZj
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRo
LWNvbnN0YW50LWlkZW50LmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10
cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQor
ICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQor
T2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBm
b3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0
cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVy
cm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJv
clR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtl
fWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0
byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworbGV0
IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGlu
aXQoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxk
ID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7
CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBl
LnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJv
dG90eXBlLnNldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxk
KCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTEyZmJhNzVlZjEzOGMwMGEzYzIwZGU4Nzlm
MWUxMWVhNTI3MmZjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZh
dGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDUzIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7Cisg
IGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVz
c2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4
cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JU
eXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
aWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGlu
c3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0g
YnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNl
LCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAg
fQorfSk7CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0
KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlz
LmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAg
c2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0
RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGlu
ZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
Citub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cisg
ICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgp
LCAnZm9vJyArIGkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUt
bmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0
ZS1uYW1lLXdpdGgtZGlmZmVyZW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTFhM2ZkYTJkZTc2
MGJjZWE1MjI2MjFiMDNjZDUyYzNiOTdmM2NjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMKQEAgLTAsMCAr
MSw1NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoZXhw
ciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRp
b24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBl
cXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVk
LCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0
aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAg
ICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7
ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQor
ICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24uYCk7CisgIH0KK30pOworCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisKKyAgICAgICAgc2V0RmllbGQodikgewor
ICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0Rmll
bGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7CisgICAgbm9GVEwoQy5wcm90
b3R5cGUuY29uc3RydWN0b3IpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsK
KyAgICBub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworICAgIAorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKwor
ICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CitsZXQgQzEgPSBj
bGFzc0RlY2xhcmF0aW9uKCk7CitsZXQgQzIgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gaSAlIDIgPyBuZXcgQzEg
OiBuZXcgQzI7CisgICAgYy5zZXRGaWVsZCgndGVzdCcgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxz
KGMuZ2V0RmllbGQoKSwgJ3Rlc3QnICsgaSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410859</attachid>
            <date>2020-10-08 10:22:57 -0700</date>
            <delta_ts>2020-10-15 16:04:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20201008132256.patch</filename>
            <type>text/plain</type>
            <size>72913</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmZhZGY4MWFhNDgwZTg1NjdiM2Q3NzFkY2FjMTZiYWI2ODUwZmMwLi4xNTQ5MmFjOTlhZTQyOTE2
MjI1YmIzM2JmNTIyYmI2ZDQ0M2U2NWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMC0xMC0wOCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5k
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUuCisKKyAgICAgICAgRHVy
aW5nIERGRyBieXRlY29kZSBwYXJzaW5nLCB3ZSB3aWxsIGF0dGVtcHQsIGlmIGRlZW1lZCBwb3Nz
aWJsZSBieQorICAgICAgICB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCB0byBvdXRwdXQgYSBH
ZXRCeU9mZnNldCBvcGVyYXRpb24uIElmIGEKKyAgICAgICAgc2luZ2xlIHByaXZhdGUgZmllbGQg
aWRlbnRpZmllciBpcyB1c2VkIGluIGFsbCBjYXNlcyAodGhlIGNvbW1vbiBjYXNlKSwKKyAgICAg
ICAgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBzdHJ1Y3R1cmUgdmFyaWFudHMsIGEgR2V0UHJpdmF0
ZU5hbWVCeUlkCisgICAgICAgIG9wZXJhdGlvbiBpcyBlbWl0dGVkIGluc3RlYWQuIEZhaWxpbmcg
dGhhdCwgdGhlIEdldFByaXZhdGVOYW1lCisgICAgICAgIG9wZXJhdGlvbiBpcyBwcm9kdWNlZCwg
d2hpY2ggcHJvZHVjZXMgYSBHZXRCeVZhbCBJQyBsaWtlIGluIHRoZQorICAgICAgICBiYXNlbGlu
ZSBKSVQuCisKKyAgICAgICAgSW4gRlRMLCBHZXRQcml2YXRlTmFtZUJ5SUQgY2FuIGJlIHJlZHVj
ZWQgdG8gW011bHRpXUdldEJ5T2Zmc2V0IGluIHRoZQorICAgICAgICBERkdDb25zdGFudEZvbGRp
bmdQaGFzZSwgb3IgYSBHZXRCeUlEIElDIHdoZW4gbG93ZXJpbmcgdG8gQjMuCisKKyAgICAgICAg
KiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
OgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24pOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlHZXRCeVN0YXR1cyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0
VG9HZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlH
ZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FjaGVhYmxlSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJpdmF0ZU5h
bWVCeUlkKToKKyAgICAgICAgKiBqaXQvSUNTdGF0cy5oOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
YXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6
CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0
Lmg6CisKIDIwMjAtMTAtMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBSZXN0cmljdCBtb3JlIHB0ci10YWdnaW5nIGFuZCBhdm9pZCB1c2luZyBP
cGVyYXRpb25QdHJUYWcgZm9yIEpJVCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRleCAxNTgwMjFmMzk5MjNmMmMwMjU5YmNiOGZlZGM4
NTRiZTZiMzc1ZWMyLi5hZGYyMWRlZTc5ZDAzZGNlZjgzNzUzYjQwZjFhZjQ0NmE1ZTkwNDVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAg
LTEwOCw2ICsxMDgsMTEgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgICAgICAvLyBGSVhN
RTogQ29uc2lkZXIgdXNpbmcgTExJbnQgY2FjaGVzIG9yIElDIGluZm9ybWF0aW9uIHRvIHBvcHVs
YXRlIEdldEJ5U3RhdHVzCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTcyNDUKKyAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRp
b24sIGZhbHNlKTsKKwogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDYwNDhjZDA0MjhlOTM3ZDRkMzM0MDM5NjMwMzQ3YzlkOWI3MmUxNjUuLjg5ZGY0ZDdi
MTI4Y2NiYzA0OTZkMTVlZGQ2MjY2Y2ZlN2QyMjhjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC00MDQsNiArNDA0LDgg
QEAgaW5saW5lIGF1dG8gYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKEFjY2Vz
c1R5cGUgdHlwZSkgLT4gZGVjbHR5cGUoJm8KICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdl
dEJ5SWRPcHRpbWl6ZTsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Q6CiAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgY2FzZSBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lQnlJZE9wdGltaXplOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlz
OgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDIwLDYg
KzQyMiw4IEBAIGlubGluZSBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbihB
Y2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZvcGVyCiAgICAgICAgIHJldHVybiBvcGVyYXRp
b25UcnlHZXRCeUlkR2VuZXJpYzsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Q6
CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0R2VuZXJpYzsKKyAgICBjYXNl
IEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYzsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRo
VGhpczoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCA4YjA1ZDVmOTc2MDVlNmU0Yjk4NWVhOTcwZTkxNDk5ODdiYzA0MGQ5
Li4xYzM3MjM4YTkwN2M2OTI1YTk2ZjBiNDQ0NjVhZmE2OWI0ZTdhYTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCkBAIC0zMzQ4LDYgKzMzNDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
ICAgICBtYWtlSGVhcFRvcEZvck5vZGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRGlyZWN0OgogICAgIGNhc2Ug
R2V0QnlJZERpcmVjdEZsdXNoOgogICAgIGNhc2UgR2V0QnlJZDoKQEAgLTMzODMsNiArMzM4NCw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggOGU5M2I3YjI2
NjRiMmNiMWRlNDZlZmU1NWI4YWYzYmQ0MDM1M2I4MS4uOTQ0NjIzMjdmMTlhNjYzMGY4YTYyNGZi
ZTM1ZGI0NWYzMTc2NmM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKQEAgLTI0NCw4ICsyNDQsMTEgQEAgcHJpdmF0ZToKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgogICAgIHZvaWQgcGFyc2VHZXRCeUlkKGNvbnN0IEluc3RydWN0
aW9uKik7CisgICAgdm9pZCBzaW1wbGlmeUdldEJ5U3RhdHVzKE5vZGUqIGJhc2UsIEdldEJ5U3Rh
dHVzJik7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cywgQWNjZXNzVHlwZSwg
Qnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpOworICAgIHZvaWQgaGFuZGxlR2V0UHJpdmF0ZU5h
bWVCeUlkKAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzKTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAog
ICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNv
bnN0IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CiAgICAgdm9pZCBo
YW5kbGVQdXRCeUlkKApAQCAtNDUzMCw5ICs0NTMzLDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6
OnN0b3JlKE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFB1dEJ5SWRWYXJp
YW4KICAgICByZXR1cm4gaGFuZGxlUHV0QnlPZmZzZXQoYmFzZSwgaWRlbnRpZmllciwgdmFyaWFu
dC5vZmZzZXQoKSwgdmFsdWUpOwogfQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKAotICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzLCBBY2Nl
c3NUeXBlIHR5cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KQordm9pZCBCeXRlQ29kZVBh
cnNlcjo6c2ltcGxpZnlHZXRCeVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyYgZ2V0QnlT
dGF0dXMpCiB7CiAgICAgLy8gQXR0ZW1wdCB0byByZWR1Y2UgdGhlIHNldCBvZiB0aGluZ3MgaW4g
dGhlIEdldEJ5U3RhdHVzLgogICAgIGlmIChiYXNlLT5vcCgpID09IE5ld09iamVjdCkgewpAQCAt
NDU0OSw2ICs0NTUwLDEzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAg
ICAgICAgIGlmIChvaykKICAgICAgICAgICAgIGdldEJ5U3RhdHVzLmZpbHRlcihiYXNlLT5zdHJ1
Y3R1cmUoKS5nZXQoKSk7CiAgICAgfQorfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAorICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzLCBB
Y2Nlc3NUeXBlIHR5cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KQoreworICAgIHNpbXBs
aWZ5R2V0QnlTdGF0dXMoYmFzZSwgZ2V0QnlTdGF0dXMpOwogICAgIAogICAgIE5vZGVUeXBlIGdl
dEJ5SWQ7CiAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCkKQEAgLTQ3MTYsNiAr
NDcyNCw3OCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBn
ZXR0ZXIsIG51bWJlck9mUGFyYW1ldGVycyAtIDEsIHJlZ2lzdGVyT2Zmc2V0LCAqdmFyaWFudC5j
YWxsTGlua1N0YXR1cygpLCBwcmVkaWN0aW9uKTsKIH0KIAorLy8gQSB2YXJpYW50IG9uIGhhbmRs
ZUdldEJ5SWQgd2hpY2ggaXMgbW9yZSBsaW1pdGVkIGluIHNjb3BlCit2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoCisgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3Rp
bmF0aW9uLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3Rh
dHVzIGdldEJ5U3RhdHVzKQoreworICAgIHNpbXBsaWZ5R2V0QnlTdGF0dXMoYmFzZSwgZ2V0QnlT
dGF0dXMpOworCisgICAgQVNTRVJUKCFnZXRCeVN0YXR1cy5pc0N1c3RvbSgpKTsKKyAgICBBU1NF
UlQoIWdldEJ5U3RhdHVzLm1ha2VzQ2FsbHMoKSk7CisgICAgaWYgKCFnZXRCeVN0YXR1cy5pc1Np
bXBsZSgpIHx8ICFnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nl
c3NJbmxpbmluZygpKSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CisgICAgICAgIGlmICghbV9n
cmFwaC5tX3BsYW4uaXNGVEwoKQorICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3Jw
aGljQWNjZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgZ2V0QnlTdGF0dXMubnVtVmFyaWFu
dHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7
CisgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChHZXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rp
b24pLCBiYXNlLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEdldEJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCks
IGdldEJ5U3RhdHVzKSksIGJhc2UpOworCisgICAgICAgIFZlY3RvcjxNdWx0aUdldEJ5T2Zmc2V0
Q2FzZSwgMj4gY2FzZXM7CisKKyAgICAgICAgLy8gMSkgRW1pdCBwcm90b3R5cGUgc3RydWN0dXJl
IGNoZWNrcyBmb3IgYWxsIGNoYWlucy4gVGhpcyBjb3VsZCBzb3J0IG9mIG1heWJlIG5vdCBiZQor
ICAgICAgICAvLyAgICBvcHRpbWFsLCBpZiB0aGVyZSBpcyBzb21lIHJhcmVseSBleGVjdXRlZCBj
YXNlIGluIHRoZSBjaGFpbiB0aGF0IHJlcXVpcmVzIGEgbG90CisgICAgICAgIC8vICAgIG9mIGNo
ZWNrcyBhbmQgdGhvc2UgY2hlY2tzIGFyZSBub3Qgd2F0Y2hwb2ludGFibGUuCisgICAgICAgIGZv
ciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBnZXRCeVN0YXR1cy52YXJpYW50cygp
KSB7CisgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNp
Yyk7CisgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5jb25kaXRpb25TZXQoKS5pc0VtcHR5KCkp
OworCisgICAgICAgICAgICBHZXRCeU9mZnNldE1ldGhvZCBtZXRob2QgPSBHZXRCeU9mZnNldE1l
dGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIGNhc2VzLmFwcGVuZChN
dWx0aUdldEJ5T2Zmc2V0Q2FzZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1
Y3R1cmVTZXQoKSksIG1ldGhvZCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CisKKyAgICAgICAgLy8gMikgRW1pdCBhIE11bHRp
R2V0QnlPZmZzZXQKKyAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBo
Lm1fbXVsdGlHZXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPmNhc2VzID0gY2Fz
ZXM7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwor
ICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKE11bHRpR2V0
QnlPZmZzZXQsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogSWYgd2UgdXNlIHRoZSBHZXRCeVN0
YXR1cyBmb3IgYW55dGhpbmcgdGhlbiB3ZSBzaG91bGQgcmVjb3JkIGl0IGFuZCBpbnNlcnQgYSBu
b2RlCisgICAgLy8gYWZ0ZXIgZXZlcnl0aGluZyBlbHNlIChsaWtlIHRoZSBHZXRCeU9mZnNldCBv
ciB3aGF0ZXZlcikgdGhhdCB3aWxsIGZpbHRlciB0aGUgcmVjb3JkZWQKKyAgICAvLyBHZXRCeVN0
YXR1cy4gVGhhdCBtZWFucyB0aGF0IHRoZSBjb25zdGFudCBmb2xkZXIgYWxzbyBuZWVkcyB0byBk
byB0aGUgc2FtZSEKKyAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5U3RhdHVzLCBPcEluZm8obV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEdldEJ5U3RhdHVzKGN1cnJlbnRDb2Rl
T3JpZ2luKCksIGdldEJ5U3RhdHVzKSksIGJhc2UpOworCisgICAgQVNTRVJUKGdldEJ5U3RhdHVz
Lm51bVZhcmlhbnRzKCkgPT0gMSk7CisgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGdldEJ5
U3RhdHVzWzBdOworCisgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJh
c2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOworICAgIGlmICghbG9hZGVkVmFsdWUpIHsK
KyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2
YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNl
LCBudWxscHRyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoVU5MSUtFTFko
bV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5u
b3RpY2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgaWYgKCF2YXJpYW50LmNhbGxMaW5rU3RhdHVz
KCkgJiYgdmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYykKKyAgICAgICAgc2V0KGRl
c3RpbmF0aW9uLCBsb2FkZWRWYWx1ZSk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURlbGV0ZUJ5SWQoCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNl
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMsIEVDTUFNb2RlIGVjbWFNb2Rl
KQpAQCAtNjM0NSw2ICs2NDI1LDQzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfc2V0dGVyX2J5
X3ZhbCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6IHsK
KyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
UHJpdmF0ZU5hbWU+KCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0g
Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0g
Z2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChi
eXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZVNpbmdsZUlkZW50
aWZpZXIgPSBmYWxzZTsKKworICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZvcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssIGN1cnJl
bnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gMDsKKyAgICAg
ICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUp
CisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CisKKyAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyID0gZ2V0QnlTdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpOworICAg
ICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyKSB7CisgICAgICAgICAgICAgICAgICAgIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlk
KCkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwo
KSk7CisgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZy
ZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworICAgICAg
ICAgICAgICAgICAgICBjb21waWxlU2luZ2xlSWRlbnRpZmllciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29tcGlsZVNpbmdsZUlk
ZW50aWZpZXIpCisgICAgICAgICAgICAgICAgaGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKGJ5dGVj
b2RlLm1fZHN0LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVy
LCBnZXRCeVN0YXR1cyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYWRkVG9HcmFwaChHZXRQcml2YXRlTmFtZSwgT3BJbmZvKCksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgYmFzZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBub2RlKTsKKyAgICAgICAg
ICAgICAgICBpZiAoZ2V0QnlTdGF0dXMub2JzZXJ2ZWRTdHJ1Y3R1cmVTdHViSW5mb1Nsb3dQYXRo
KCkpCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zbG93R2V0QnlWYWwuYWRkKG5vZGUp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3ByaXZhdGVf
bmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlbF9ieV9pZDogewogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigp
OwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiNWIxMTY2Nzg0YjczMWNh
NDU0N2UxOTc2Y2Y5OWMwZDY1MjFmY2MyLi4zZjM3M2YzZjhkMDY1MGI5MTUzYzNkZDIwMzMwZWY4
MTc2NTdjNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApA
QCAtNjczLDYgKzY3Myw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRT
ZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0UHJpdmF0
ZU5hbWVCeUlkOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRl
TmFtZUJ5SWQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggNjc3
ZjY0Y2JjOWMxMGQ2ZDY4MGRlYzQ3NjllOGU0YzNmMjNkM2Y5YS4uZWJhYmFjMTFkOTU5YmVjYTlm
MzBkZDEyN2M2ODBjZTBhM2VhMmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTU5OSw3ICs1OTksOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2Fz
ZSBHZXRCeUlkRGlyZWN0Rmx1c2g6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWQ6Ci0gICAgICAg
ICAgICBjYXNlIEdldEJ5SWRGbHVzaDogeworICAgICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6
CisgICAgICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDogewogICAgICAgICAgICAgICAg
IEVkZ2UgY2hpbGRFZGdlID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICAgICAgTm9kZSog
Y2hpbGQgPSBjaGlsZEVkZ2Uubm9kZSgpOwogICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNTEyZjkzYzZhMzEzNmQ4MmMzZGI5Yzc4
ZjRlNzRjYWQwNjYxYTczZi4uMjQyN2QyMDhiZTM2NmIzYzRlOTUyZjIxMzYzNWMwNTU4YmVjZjA5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzI0LDYgKzMy
NCw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1
dFNldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZh
dGVOYW1lQnlJZDoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6
CiAgICAgY2FzZSBSZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggN2I1YzUxYzkzNjM0NjRmZGEwOTA5NWM0NWFmYmQ1ZTk1ZjIxNDdi
Yi4uZDYzMmNmZjNlMGEzZWIzNjZjNDY4ZDNlYmExNGU4YTI3MjZmNWM3OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzgwLDYgKzE3ODAsMTUg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2Fz
ZSBHZXRQcml2YXRlTmFtZToKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICAg
ICAgaWYgKCFub2RlLT5oYXNDYWNoZWFibGVJZGVudGlmaWVyKCkpCisgICAgICAgICAgICAgICAg
Zml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxD
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmlu
ZGV4IDA0ZTAyNWFiMmYxMWJlMjg2NTZhNTliNTcxMjY1MGNmNTg3ZDNiYjUuLjg5N2I5OTllOTU0
NGUyOWNmMDA2ZjlkODZjNDI3ZTU2OTMzZDVkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCkBAIC01OTcsNyArNTk3LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29udmVy
dFRvR2V0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEsIEVkZ2Ugc3RvcmFnZSwgRWRn
ZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09
IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlk
RGlyZWN0Rmx1c2ggfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJU
KG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5
SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0Rmx1c2ggfHwgbV9vcCA9PSBHZXRQcml2
YXRlTmFtZUJ5SWQgfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zmc2V0KTsKICAgICAgICAgbV9vcElu
Zm8gPSAmZGF0YTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQxKHN0b3JhZ2UpOwogICAgICAg
ICBjaGlsZHJlbi5zZXRDaGlsZDIoYmFzZSk7CkBAIC02MDcsNyArNjA3LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY29udmVydFRvTXVsdGlHZXRCeU9mZnNldChNdWx0aUdldEJ5T2Zmc2V0
RGF0YSogZGF0YSkKICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb3AgPT0gR2V0QnlJ
ZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5SWREaXJlY3QgfHwgbV9v
cCA9PSBHZXRCeUlkRGlyZWN0Rmx1c2gpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX29wID09
IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0
IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0gR2V0UHJpdmF0ZU5hbWVC
eUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBjaGlsZDEoKS5zZXRVc2VL
aW5kKENlbGxVc2UpOwogICAgICAgICBtX29wID0gTXVsdGlHZXRCeU9mZnNldDsKQEAgLTEwODIs
NiArMTA4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZERpcmVjdDoKICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6
CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIERlbGV0ZUJ5
SWQ6CiAgICAgICAgIGNhc2UgSW5CeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CkBAIC0xNzY2
LDYgKzE3NjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCeVZhbDoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBj
YXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAg
ICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNlIERpcmVjdENhbGw6CiAgICAgICAgIGNhc2Ug
VGFpbENhbGxJbmxpbmVkQ2FsbGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCmluZGV4IGNjNGZmYmVhZDY4ZWIwMmE1ODE2ZWFiYjU1YzRiOTEyMDk1MDE5MjMuLjgxODY3
OGFjZGExNzM4OTU2ODk1NjNmMWFmZWY0YmJkNDBlZWVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI0Miw2ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrQXJyYXksIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhDaGVja0FycmF5T3JFbXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKEdldFByaXZhdGVOYW1lLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oR2V0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgLyogVGhpcyBjaGVja3MgaWYgdGhlIGVkZ2UgaXMgYSB0eXBlZCBh
cnJheSBhbmQgaWYgaXQgaXMgbmV1dGVyZWQuICovIFwKICAgICBtYWNybyhDaGVja05ldXRlcmVk
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXJyYXlpZnksIE5vZGVNdXN0R2VuZXJh
dGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggZmY1NDM4YWFhNjlkNjc3MzUyOTI0NTUy
NTBkMTExZWRkNzQ2ZTVkMy4uOTE0NTc2MzUyN2YxMjkyNDY5YjU5Mzg0MDIxMDU4NmU4YTZjZGVl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTg3NSw2ICs4NzUsOCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoK
ICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToK
KyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgTXVsdGlHZXRC
eU9mZnNldDoKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICAgICAgY2FzZSBDYWxs
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA4
M2Q0YzIyNjBlYmY2MzZhMjM2ZjY3ZTA2YjY4NTBlOWI0NjViMDMwLi45MDM5MDM2NjQxZjU0ZGU3
ZjZiOTZlOGEwMWMwZThmMDY2NGUxNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9v
bCBpZ25vCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
OgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6
CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVy
dHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IDQ1M2UxNTZiMGU0MjRlMTY1ZGQ5NWUyZjA3MTZjMzFiMWYxOTAyYmIuLmZiODFmNDRjNzE1
NGYzN2QyMTdkZjIwZjExM2U2N2U0M2NkYzEzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNDY4LDYgKzM0NjgsOTMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN5bWJvbChOb2Rl
KiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQoreworICAg
IGlmIChub2RlLT5oYXNDYWNoZWFibGVJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeUlkKG5vZGUpOworCisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CisgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgYXV0byBiYXNlUmVncyA9IGJhc2Uu
anNWYWx1ZVJlZ3MoKTsKKyAgICBhdXRvIHByb3BlcnR5UmVncyA9IEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShwcm9wZXJ0eS5ncHIoKSk7CisgICAgYXV0byByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKKworICAgIGJhc2UudXNlKCk7CisgICAgcHJvcGVydHkudXNlKCk7CisKKyAgICBzcGVj
dWxhdGVTeW1ib2wocHJvcGVydHkuZWRnZSgpKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdp
biA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0g
bV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElm
TmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGguY2hp
bGQobm9kZSwgMCkpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisKKyAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBwcm9wZXJ0eVJl
Z3MsIHJlc3VsdFJlZ3MpOworICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0g
dHJ1ZTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisKKyAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCisgICAgICAgIGJhc2VSZWdzLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKSk7CisKKyAg
ICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
K30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChOb2Rl
KiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAg
Y2FzZSBDZWxsVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOworCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBiYXNlLnVzZSgpOworCisgICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVn
cywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVk
VG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworCisgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFVudHlwZWRVc2U6
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisK
KyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAgIGJh
c2UudXNlKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJy
YW5jaElmTm90Q2VsbChiYXNlUmVncyk7CisKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFt
ZSk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAi
QmFkIHVzZSBraW5kIik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSogbm9kZSwgRWRn
ZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMykKIHsKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBhcmcxKHRoaXMsIGNoaWxkMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZjA4ZGZlNzYyNzJhYjQ0ODUyYmU0MGQxZmRj
Y2VkNzJkMzg4MjBmOC4uNDhlMGZhYzIyODc0NDUyNmI2MmZhNGJlMTYwZTkxNjY2MTUzYjhkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAt
MTI4Miw3ICsxMjgyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25E
aXJlY3RBcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25TY29wZWRB
cmd1bWVudHMoTm9kZSopOwotICAgIAorCisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWUo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChOb2RlKik7CisKICAg
ICB2b2lkIGNvbXBpbGVHZXRTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2tpcFNjb3Bl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxPYmplY3QoTm9kZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggZmMyMmRhYTQ2NzYwMjk2MDUxOTY4YjJmOWQ2YmYyYmM5NDQ0Y2YxNS4uMTc0Y2MzNzZj
MDUyZjlmMDE4ZWNkMzA3MTY5Y2ZhYzViMTE4Njc2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMjQxLDYgKzIy
NDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICBz
d2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpT
ZWxlY3RVc2luZ1ByZWRpY3Rpb25zOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNTcyOTljZjI3ZTRlYWNiMDE2NmUwN2RjYjM3
YTIzMmM1MTgyMWUzNi4uM2M2MzgxM2FmODRjYjI5YWNlZjY1YjA5Njk0YzA5NmU0MGYyZTBmOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0yNjE3LDYgKzI2MTcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVO
YW1lOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVHZXRQ
cml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRC
eVZhbDogewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAg
ICAgICBjYXNlIEFycmF5OjpBbnlUeXBlZEFycmF5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGFjODdmNmE1ZDZmMjViODQ1YjBmOTllMGRi
MjE0YTVlZmQxNmI4ODYuLmEyNjg5ZTBjMTkxMjY2MDRkZGRhZGU3NmI0ZWU3MzNkYTJiMzZjZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAg
LTM5Nyw2ICszOTcsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFt
ZToKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1l
OgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6
CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3Rh
dHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmlu
ZGV4IDU1ZWFhMDdmNmRhYTQ5MjYzYzFhODkxNzdkZTk4ODYzYmJkMTdlZjguLjJkNzQxZjNhNjcy
YzlkNjEyZWYxODJkNTg1YzEzZTY1OTI3MmQ5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTk0MCw2ICs5NDAsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6CiAgICAgICAgICAgICBjb21waWxlR2V0
QnlJZChBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICAgICAgY29tcGlsZUdldFByaXZhdGVO
YW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5
SWQ6CisgICAgICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBJbkJ5SWQ6CiAgICAgICAgICAgICBjb21waWxlSW5CeUlk
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM5MzMsNiArMzkzOSwxMzggQEAgcHJpdmF0ZToK
ICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAorICAgIExWYWx1ZSBnZXRQcml2
YXRlTmFtZShMVmFsdWUgYmFzZSwgTFZhbHVlIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgTm9k
ZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0g
bV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVS
ZWdpc3RlcihiYXNlKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHBy
b3BlcnR5KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9y
RXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKKworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKKyAgICAgICAgYm9vbCBiYXNlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShub2RlLT5jaGls
ZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVl
Q2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCisg
ICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBl
eGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7
CisKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBleGl0IGZvciBjYWxsIElDJ3MgY3Jl
YXRlZCBieSB0aGUgSUMgZm9yIGdldHRlcnMuIFdlIGRvbid0IGhhdmUKKyAgICAgICAgICAgICAg
ICAvLyB0byBkbyBhbnl0aGluZyB3ZWlyZCBvdGhlciB0aGFuIGNhbGwgdGhpcywgc2luY2UgaXQg
d2lsbCBhc3NvY2lhdGUgdGhlIGV4aXQgd2l0aAorICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxs
c2l0ZSBpbmRleC4KKyAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CisKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKworICAgICAgICAgICAgICAgIGF1dG8g
Z2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNW
YWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKworICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOworICAgICAgICAgICAgICAgIGlm
ICghYmFzZUlzQ2VsbCkKKyAgICAgICAgICAgICAgICAgICAgbm90Q2VsbCA9IGppdC5icmFuY2hJ
Zk5vdENlbGwoYmFzZUdQUik7CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUg
PSBqaXQubGFiZWwoKTsKKworICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aChbPV0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAobm90Q2VsbC5pc1NldCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5s
aW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
LmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xv
d1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0
KTsKKworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChz
bG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5h
ZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlua0J1ZmZlcik7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICB9CisKKyAgICB2
b2lkIGNvbXBpbGVHZXRQcml2YXRlTmFtZSgpCisgICAgeworICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkKKyAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0
UHJpdmF0ZU5hbWUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+
Y2hpbGQyKCkpKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5
ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBiYXNlQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKAorICAgICAgICAgICAgICAgIGlzQ2VsbChiYXNlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwgdW5zdXJlKGJhc2VDZWxsQ2FzZSksIHVuc3VyZShub3RDZWxsQ2FzZSkpOwor
CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGJhc2VD
ZWxsQ2FzZSwgbm90Q2VsbENhc2UpOworCisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxs
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdldFByaXZhdGVOYW1lKGJhc2UsIHByb3BlcnR5KSk7Cisg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBt
X291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZSwKKyAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBt
X291dC5jb25zdEludFB0cigwKSwgYmFzZSwKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSkpOwor
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHNldEpTVmFs
dWUobV9vdXQucGhpKEludDY0LCBjZWxsUmVzdWx0LCBub3RDZWxsUmVzdWx0KSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoKQorICAgIHsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpCisgICAgICAgICAgICBzZXRKU1ZhbHVlKGdldEJ5
SWQobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUp
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJhc2VDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAg
ICAgICAgICAgICAgaXNDZWxsKGJhc2UsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1
bnN1cmUoYmFzZUNlbGxDYXNlKSwgdW5zdXJlKG5vdENlbGxDYXNlKSk7CisKKyAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYmFzZUNlbGxDYXNlLCBub3RD
ZWxsQ2FzZSk7CisKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxSZXN1bHQgPSBtX291
dC5hbmNob3IoZ2V0QnlJZChiYXNlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSkpOworICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhub3RDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAg
ICAgIEludDY0LCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLAorICAgICAgICAg
ICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsCisgICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHNl
dEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBjZWxsUmVzdWx0LCBub3RDZWxsUmVzdWx0KSk7Cisg
ICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoKQogICAg
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRz
LmgKaW5kZXggOWMyZWUxOTM0ZTBlZGNiMzg4YTM0Njk0NmVjYWMxMWRlZmYxZTA4Yy4uOTRkMWY5
MjZjZjJhZjE3ZWFhMjg5NGJjYWE1ZGYzNTk3YmUxNWYwZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmgKQEAgLTcyLDcgKzcyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3Jv
KEluQnlJZFNlbGZQYXRjaCkgXAogICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhKdW1wKSBcCiAg
ICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpIFwKLSAgICBtYWNybyhPcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplKQorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1l
T3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWQpIFwKKyAg
ICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSkgXAorICAgIG1hY3Jv
KE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMpCiAKIGNsYXNzIElDRXZlbnQgewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5k
ZXggNjgxODQwNDk5NDA5NWVjMDBmMDBhM2NjZjY2ODU5ZWRmZWVlNzgxOC4uODcxM2ZhMDc4MDA0
OWYwZDVkYzE3N2I4ZDYzM2Y5NzIxNGM5MDc5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMjcwLDYgKzIyNzAsMjQgQEAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnIKICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIGZpZWxk
TmFtZSk7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5hbWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgYmFzZVZhbHVlLCBJZGVudGlmaWVyIGZpZWxkTmFtZSkKK3sKKyAgICBBU1NFUlQoZmllbGRO
YW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsK
KworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CisKKyAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIGZp
ZWxkTmFtZSk7Cit9CisKIGV4dGVybiAiQyIgewogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSkK
QEAgLTIyOTEsNyArMjMwOSw2IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvCiAgICAgICAgIEFT
U0VSVChmaWVsZE5hbWUuaXNTeW1ib2woKSk7CiAKICAgICAgICAgSlNPYmplY3QqIGJhc2UgPSBq
c0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFsdWUuYXNDZWxsKCkpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJv
cGVydHkpOwogICAgICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVs
ZE5hbWUsIHNsb3QpOwpAQCAtMjMxNywxMSArMjMzNCw4MyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplYwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KTsKICAgICBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRG
aWVsZE5hbWUpOwogCi0gICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAgaWYg
KHN0dWJJbmZvKQorICAgICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lVmFsdWUpKTsKIH0KIAorSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCwgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkK
K3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
YmFzZSk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAg
SWRlbnRpZmllciBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVy
LnVpZCgpKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKTsKKworICAgIExPR19JQygoSUNF
dmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JO
dWxsKHZtKSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2
YXRlTmFtZUJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKK3sKKyAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVy
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBhdXRvIGZpZWxkTmFt
ZSA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworCisgICAgaWYg
KGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBiYXNlID0ganNDYXN0
PEpTT2JqZWN0Kj4oYmFzZVZhbHVlLmFzQ2VsbCgpKTsKKworICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVy
dHkpOworICAgICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5h
bWUsIHNsb3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKKworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBmaWVsZE5hbWUsIHRy
dWUpKTsKKworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVC
bG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCh2bSksIGlkZW50aWZpZXIpKQorICAgICAg
ICAgICAgcmVwYXRjaEdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIGlk
ZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0
LCBmaWVsZE5hbWUpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdldFBy
aXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZSkp
OworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVC
eUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikp
Cit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFi
bGVJZGVudGlmaWVyKTsKKyAgICBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBnZXRQ
cml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUp
OworCisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5l
cmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgZmllbGROYW1lLCB0cnVlKSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qIGJ5VmFs
SW5mbykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCAxMzlkMDI1ZTUzM2FjZmEyMDdlNjc3
NjBlMDJiYjliMDcyZTZkYWRmLi44NThjZGYyN2E3YWU3OGVkN2MwYWYzODI2MmFmOGZkNGQ0MzM4
NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjcx
LDYgKzI3MSw5IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0dXBWYXJh
cmdzRnJhbWUsIENhbGxGcmFtZSosIChKU0dsb2JhbE9iamVjCiAKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVp
bnRwdHJfdCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRl
TmFtZUJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwog
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93
bktleVR5cGUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNp
emVfdCB0YWJsZUluZGV4KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3
aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlIGtl
eSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CmluZGV4IGM1M2Y0OTgzZDIwNWZiY2M2ODY2ZTMwZDFlNTZiNGM0ZTM0MmQyZmMuLjZhZmJjODE3
NjNhZmYyYTFmZTJkOTQyODA3YzYxNTdmZThlM2VhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcApAQCAtMTY1LDYgKzE2NSw4IEBAIGlubGluZSBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oR2V0QnlLaW5k
CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOwogICAgIGNhc2UgR2V0
QnlLaW5kOjpQcml2YXRlTmFtZToKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDoKKyAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplOwogICAgIH0KICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTg0LDYgKzE4Niw4IEBAIGlu
bGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlv
bihHZXRCeUtpbmQga2luZCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJp
YzsKICAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25HZXRQcml2YXRlTmFtZTsKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlk
OgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkOwogICAgIH0KICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMjAzLDcgKzIwNyw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgSlNDZWxsKiBiYXNlQ2Vs
bCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBr
aW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU7CisgICAgICAgIGNvbnN0IGJvb2wgaXNQcml2
YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lIHx8IGtpbmQgPT0gR2V0QnlLaW5k
OjpQcml2YXRlTmFtZUJ5SWQ7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IG5ld0Nhc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggMDgzYTNkNWQ2
ODRjYWJkZmIxNGNjYWViNzQ1ZmVjNzYzZGZiY2EyMS4uNWRkMjBjNjM2YTA1MTY4N2Q5MTZlODBh
Yjc4M2IwZTllNjZkMzFkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTQw
LDYgKzQwLDcgQEAgZW51bSBjbGFzcyBHZXRCeUtpbmQgewogICAgIFdpdGhUaGlzLAogICAgIERp
cmVjdCwKICAgICBQcml2YXRlTmFtZSwKKyAgICBQcml2YXRlTmFtZUJ5SWQsCiB9OwogCiBlbnVt
IGNsYXNzIERlbEJ5S2luZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCA4ODQzN2RhOWRlZTQwNjZmNmQ3ODU4MzkyMDViMzE3NDkyYTMxYzljLi5i
YzdiYjIwZjNjNzM4NGE0NTIxM2JkYzE0Y2FmOTBhNWQ0OTkzMmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTU3MSw3ICs1NzEsNyBAQCBlbnVt
IEV4cGVyaW1lbnRhbE9wdGlvbkZsYWdzIHsKIH07CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX0VY
UEVSSU1FTlRBTF9PUFRJT04odikgXAotICAgIHYodXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBMTElu
dEFuZEJhc2VsaW5lT25seSwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4
NCIpCisgICAgdih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIFN1cHBvcnRzRlRMIHwgU3VwcG9ydHNE
RkcsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQogCiBjb25zdGV4
cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCkKIHsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODBjOTdlYThkZWQwODdlODk5
OThkN2E4NDM3MjQwYzI1YjI1NmMxMC4uODM1ZDVjNmM3Nzk5OGFhMjljNzc3Nzk3N2FjNzUyZDU4
NWZiNjQxNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0xMC0wOCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0
cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFt
ZSBpbiBERkcgYW5kIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBo
aWMtZ2V0LXByaXZhdGUtZmllbGQuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVy
aWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1p
ZC1vc3ItYmFkLWlkZW50aWZpZXIuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctZ2V0
LXByaXZhdGUtbmFtZS1ieS1pZC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQt
cHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLWlkZW50aWZpZXIuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtb3NyLWJhZC1zdHJ1
Y3R1cmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1i
eS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFt
ZS1ieS12YWwtZ2VuZXJpYy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2Z0bC1nZXQtcHJp
dmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZnRsLWdldC1wcml2
YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZ2V0
LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LWlkZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtc3ltYm9sLmpz
OiBBZGRlZC4KKwogMjAyMC0xMC0wNyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CiAKICAgICAgICAgW0pTQ10gUmV2ZXJ0IFN0cmluZy5wcm90b3R5cGUuaXRlbQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvbW9u
b21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMWQ4MTE5NTllN2VmNDM3YmZiYWI0OTkzOGExZGE1ZTA1MTcxYjZjCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUv
bW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKQEAgLTAsMCArMSwyMCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworY2xhc3MgQyB7
CisgICAgI2ZpZWxkOworCisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICB0aGlzLiNmaWVs
ZCA9IGk7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNm
aWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBj
ID0gbmV3IEMoInRlc3QiKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7Cisg
ICAgaWYgKGMuZ2V0RmllbGQoKSAhPT0gInRlc3QiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
InVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZp
ZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcG9s
eW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA0MWU4MmE2ZjhkNzI3
MWZjNjgzMWQyZTM5NDZkNGIzZDk2MTc0MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1wcml2YXRl
LWZpZWxkLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIHNl
dEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdmFsdWU7CisgICAgfQorCisg
ICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citu
b0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5m
b28gPSAwOworYzEuc2V0RmllbGQoImEiKTsKKworbGV0IGMyID0gbmV3IEMoKTsKK2MyLmJhciA9
IDA7CitjMi5zZXRGaWVsZCgiYiIpOworCitsZXQgYzMgPSBuZXcgQygpOworYzMuYmF6ID0gMDsK
K2MzLnNldEZpZWxkKCJjIik7CisKK2xldCBhcnIgPSBbYzEsIGMyLCBjM107CitsZXQgdmFsdWVz
ID0gWyJhIiwgImIiLCAiYyJdOworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsK
KyAgICBpZiAoYXJyW2kgJSBhcnIubGVuZ3RoXS5nZXRGaWVsZCgpICE9PSB2YWx1ZXNbaSAlIHZh
bHVlcy5sZW5ndGhdKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgZmllbGQg
dmFsdWUiKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRl
LW5hbWUtYnktaWQtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1u
YW1lLWJ5LWlkLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFlODQ0MTM5OTZkNWI4NjkyMTg3Y2Zk
Mzk2NTc3NmM5MjZlMGViOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMKQEAgLTAsMCArMSw3NiBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBj
b21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRQcml2YXRlTmFtZUJ5SWQuIEdldEJ5
SWQKKy8vIHdpbGwgbmV2ZXIgT1NSIGhlcmUgZHVlIHRvIGJhZCBzdHJ1Y3R1cmVzLCBidXQgd2ls
bCBpbnN0ZWFkIHJlcGF0Y2ggdG8gdGhlIGdlbmVyaWMgY2FzZS4KKworbGV0IGFzc2VydCA9IHsK
KyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7YX1gKTsKKyAg
ICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAg
IGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
KTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYg
KCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQgdGhyZXc6ICR7
ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFt
ZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitjbGFzcyBCYXNlIHsKKyAgICBj
b25zdHJ1Y3RvcihpKSB7CisgICAgICAgIGlmIChpICYgMikgCisgICAgICAgICAgICB0aGlzLmNv
bW1vbkV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSAmIDQpCisgICAgICAgICAgICB0
aGlzLm1lZ2FFeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkgPiAxMDAwMCkgeworICAg
ICAgICAgICAgaWYgKGkgJiAxKQorICAgICAgICAgICAgICAgIHRoaXMuc3VwZXJXaGF0ZXZlciA9
IHRydWU7CisgICAgICAgIH0KKworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2Ugewor
ICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICAgICAgc3Vw
ZXIoaSk7CisgICAgICAgIGlmIChpID4gNTAwMCkKKyAgICAgICAgICAgIHRoaXMuZXh0cmFTdHVm
ZiA9IHRydWU7CisgICAgICAgIGlmIChpID09PSA5OTk5KQorICAgICAgICAgICAgdGhpcy5tb3Jl
U3R1ZmYgPSB0cnVlOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4j
ZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOwor
bm9ERkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9GVEwoQy5wcm90b3R5cGUuY29uc3Ry
dWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9GVEwoQy5w
cm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDAwOyArK2kpIHsK
KyAgICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAn
dGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMu
Z2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IGMgPSBuZXcgQygxMDApOworYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsICgpID0+IGMuZ2V0RmllbGQuY2FsbCh7fSkpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtb3NyLWJhZC1pZGVu
dGlmaWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtb3Ny
LWJhZC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NGM5NWQyYjFlMzRhMjY5Mjg4NDBlYzY4
NDI3MzJkZjMxNzE0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0
LXByaXZhdGUtbmFtZS1ieS1pZC1vc3ItYmFkLWlkZW50aWZpZXIuanMKQEAgLTAsMCArMSw3NiBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dyYW0gd2hp
Y2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRQcml2YXRlTmFtZUJ5
SWQsIGFuZCB0aGVuIE9TUkV4aXQKKy8vIGZyb20gZ2V0RmllbGQoKSBkdWUgdG8gYSBDaGVja0lz
Q29uc3RhbnQgZmFpbHVyZSB3aGVuIGEgZGlmZmVyZW50IGlkZW50aWZpZXIgaXMgdXNlZC4KKwor
bGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYg
KGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1dCBn
b3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5j
dG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBi
dXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNl
cHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEg
JHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitjbGFz
cyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIGlmIChpICYgMSkKKyAgICAg
ICAgICAgIHRoaXMuZGlmZmVyZW50U3RydWN0dXJlID0gYGV4dHJhJHtpfWA7CisgICAgfQorfQor
CitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyBleHRlbmRzIEJhc2Ugewor
ICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAg
ICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBnZXRG
aWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAg
IH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAg
ICBub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KKworbGV0
IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7
CisgICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwg
J3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhj
LmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOyAv
LyBpbnZhbGlkYXRlIGZpcnN0IHZlcnNpb24gb2Ygc2V0RmllbGQgZHVlIHRvIFNjb3BlIGludmFs
aWRhdGlvbiBwb2ludAorCisvLyBUcmlnZ2VycyBuZXcgdmVyc2lvbiB3aXRob3V0IGZvbGRpbmcg
Z2V0X2Zyb21fc2NvcGUKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7
CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVs
ZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzIuZ2V0RmllbGQuY2FsbChuZXcgQygpKTsg
Ly8gdHJpZ2dlciBPU1IgZXhpdCBkdWUgdG8gYmFkIGNvbnN0YW50IHZhbHVlCit9KTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZk
YzRiOWIyZmZiZDllNjA5YTY4NDBiYTczYzIyZDQwZjA2YWY4MQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEs
OTggQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwg
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBXaXRoIG1hbnkgaW5jb21wYXRp
YmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0ZXN0IGNoZWNrcyB0aGUgR2V0UHJpdmF0ZU5h
bWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJlZHVjaW5nIHRvIEdldEJ5T2Zmc2V0IGlzIG5v
dCBwb3NzaWJsZS4KKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFl
eHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWAp
OworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9
IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsK
KyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlw
ZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2Vv
ZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhy
ZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBl
Y3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsK
KworCitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsK
KyAgICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisg
ICAgYTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAg
IGI6IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6
OiAzLAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKKyAgeworICAgIGc6IDEsCisgICAgYjog
MiwKKyAgICBkOiAzLAorICAgIHE6IDQsCisgICAgeDogNSwKKyAgICBkOiA2LAorICB9CitdOwor
Y2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICBpZiAoaSA8IDEwMCkKKyAgICAg
IHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICYgM10pOworICAgIHJldHVybiBPYmpl
Y3QuYXNzaWduKHt9LCBiYXNlc1tpICUgYmFzZXMubGVuZ3RoXSk7CisgIH0KK30KK2NsYXNzIEMg
ZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZhdGUgPSAicHJpdmF0ZSI7CisgIGdldFByaXZhdGUoKSB7
IHJldHVybiB0aGlzLiNwcml2YXRlOyB9Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25v
REZHKEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLnByb3Rv
dHlwZS5nZXRQcml2YXRlKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCits
ZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3Qo
bykgeworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30K
KwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCks
IDApOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgdGVzdChuZXcgQyhpKSk7
CisgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7Cit9Cithc3NlcnQudGhyb3dzKCgpID0+
IHsKKyAgdGVzdCh7fSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1w
cml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtaWRlbnRpZmllci5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLWlkZW50aWZpZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTczMjBhZjZjMDRiN2VkNzlkOGU5ZDljZjYyZTE2ZmQzMzAxODhjNAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9m
ZnNldC1vc3ItYmFkLWlkZW50aWZpZXIuanMKQEAgLTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxl
IHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRCeU9mZnNldCwgYW5kIHRoZW4gT1NSRXhpdAor
Ly8gZnJvbSBnZXRGaWVsZCgpIGR1ZSB0byBhIENoZWNrSXNDb25zdGFudCBmYWlsdXJlIHdoZW4g
YSBkaWZmZXJlbnQgaWRlbnRpZmllciBpcyB1c2VkLgorCitsZXQgYXNzZXJ0ID0geworICAgIGVx
dWFsczogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQ6ICR7ZX0gYnV0IGdvdDogJHthfWApOworICAgIH0sCisg
ICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRo
cmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAg
ICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5z
dGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBpdCB0aHJldzogJHtlfWApOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQg
ZGlkIG5vdCB0aHJvd2ApOworICAgIH0KK307CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBz
ZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKyAg
ICAKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgICAgIH0KKyAgICB9CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOwor
ICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCisgICAgcmV0
dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuZXF1YWxz
KGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAg
YXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBDMiA9IGZh
Y3RvcnlDbGFzcygpOyAvLyBpbnZhbGlkYXRlIGZpcnN0IHZlcnNpb24gb2Ygc2V0RmllbGQgZHVl
IHRvIFNjb3BlIGludmFsaWRhdGlvbiBwb2ludAorCisvLyBUcmlnZ2VycyBuZXcgdmVyc2lvbiB3
aXRob3V0IGZvbGRpbmcgZ2V0X2Zyb21fc2NvcGUKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0Rmll
bGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVx
dWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBjMiA9IG5ldyBDMigpOwor
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMi5nZXRGaWVsZC5j
YWxsKG5ldyBDKCkpOyAvLyB0cmlnZ2VyIE9TUiBleGl0IGR1ZSB0byBiYWQgY29uc3RhbnQgdmFs
dWUKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUt
Ynktb2Zmc2V0LW9zci1iYWQtc3RydWN0dXJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1w
cml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0dXJlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1
OTc3YjFhYWZiZDU2Njc2NWQzOTZjMjY4OTE3NWY1M2RiZTBlNWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtb3NyLWJhZC1z
dHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw2MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQor
CisvLyBDb252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0
ZU5hbWUgaW50byBHZXRCeU9mZnNldCwgYW5kIHRoZW4gT1NSRXhpdAorLy8gZnJvbSBnZXRGaWVs
ZCgpIGR1ZSB0byBhIENoZWNrU3RydWN0dXJlIGZhaWx1cmUKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9
LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxl
dCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsK
KyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFl
IGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1g
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0g
YnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjZmllbGQg
PSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIGlmIChpID4gNTAwMCkK
KyAgICAgICAgICAgIHRoaXMuZXh0cmFTdHVmZiA9IHRydWU7IC8vIEludmFsaWRhdGUgbG9vcCBk
dWUgdG8gc3RydWN0dXJlIGNoYW5nZQorICAgICAgICBpZiAoaSA9PT0gOTk5OSkKKyAgICAgICAg
ICAgIHRoaXMubW9yZVN0dWZmID0gdHJ1ZTsgLy8gVHJpZ2dlciBhIEJhZENhY2hlIE9TUiBvbiBn
ZXRfcHJpdmF0ZV9uYW1lCisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlz
LiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7
Citub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLnByb3RvdHlwZS5jb25z
dHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkg
eworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCks
ICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMo
Yy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCisvLyBDaGVjayBzZW1hbnRpYyBmYWlsdXJl
IHN0aWxsIGZ1bmN0aW9ucworbGV0IGMgPSBuZXcgQygxMDApOworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsICgpID0+IGMuZ2V0RmllbGQuY2FsbCh7fSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
ZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxYmE0MmRhYzU2
ZmQ1MWNmYzAyZTIwZTRlYmQ2OTkyZDk0YmVmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQuanMKQEAgLTAsMCArMSw2MiBA
QAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdpdGggbm8gaW5jb21wYXRpYmxlIHN0
cnVjdHVyZSB2YXJpYW50cywgR2V0UHJpdmF0ZU5hbWUgaXMgY29udmVydGVkIHRvIEdldEJ5T2Zm
c2V0CisvLyBkdXJpbmcgYnl0ZWNvZGUgcGFyc2luZy4gV2UgdGVzdCB0aGF0IGl0J3Mgc3RpbGwg
c2VtYW50aWNhbGx5IHZhbGlkLgorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgewor
ICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21l
c3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtl
eHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9y
VHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
IGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBp
bnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9
IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxz
ZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7Cisg
IH0KK30pOworCitjbGFzcyBDIHsKKyAgI3ByaXZhdGUgPSAicHJpdmF0ZSI7CisgIGdldFByaXZh
dGUobykgeyByZXR1cm4gby4jcHJpdmF0ZTsgfQorICBjb25zdHJ1Y3RvcihpKSB7CisgICAgaWYg
KGkgPT09IDk5NSkKKyAgICAgIHJldHVybiB7fTsKKyAgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1
Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMuY29uc3RydWN0b3IpOworbm9G
VEwoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5
cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7CisgIHJldHVybiBnZXRQcml2YXRl
KG8pOworfQorbmV2ZXJJbmxpbmVGdW5jdGlvbih0ZXN0KTsKKworLy8gV2FybXVwCit0ZXN0KG5l
dyBDLCAwKTsKK3Rlc3QobmV3IEMsIDApOwordGVzdChuZXcgQywgMCk7CisKK3ZhciBpOworZm9y
ICh2YXIgaiA9IDA7IGogPCAyOyArK2opIHsKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB7CisgICAg
Zm9yIChpID0gMDsgaSA8IDIwMDA7ICsraSkgeworICAgICAgYXNzZXJ0LmVxdWFscyh0ZXN0KG5l
dyBDKGkpKSwgInByaXZhdGUiKTsKKyAgICAgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7
CisgICAgfQorICB9LCBUeXBlRXJyb3IpOworCisgIC8vIFdlIHNob3VsZCB0aHJvdyBvbiBpdGVy
YXRpb24gOTk1LCBiZWNhdXNlIHRoaXMgd2lsbCByZXN1bHQgaW4gYW4gaW52YWxpZCBsb2FkLgor
ICBhc3NlcnQuZXF1YWxzKGksIDk5NSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9k
ZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12YWwtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Rm
Zy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LXZhbC1nZW5lcmljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2MjU3NjE1
OTg4NTA5MWQ4ZjU0NTRhYTJkNmYzY2RhM2MyNjNiY2EKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12YWwtZ2VuZXJpYy5qcwpAQCAtMCww
ICsxLDc1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIENvbnZvbHV0ZWQgcHJv
Z3JhbSB3aGljaCB3aWxsIGNvbXBpbGUgdHVybiBHZXRQcml2YXRlTmFtZSBpbnRvIEpJVEdldEJ5
VmFsIElDLiBHZXRCeVZhbAorLy8gd2lsbCBuZXZlciBPU1IgaGVyZSBkdWUgdG8gYmFkIHN0cnVj
dHVyZXMsIGJ1dCB3aWxsIGluc3RlYWQgcmVwYXRjaCB0byB0aGUgZ2VuZXJpYyBjYXNlLgorCits
ZXQgYXNzZXJ0ID0geworICAgIGVxdWFsczogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQ6ICR7ZX0gYnV0IGdv
dDogJHthfWApOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0
b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1
dCBpdCB0aHJldzogJHtlfWApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAk
e2V4Y2VwdGlvbi5uYW1lfSBidXQgZGlkIG5vdCB0aHJvd2ApOworICAgIH0KK307CisKK2NsYXNz
IEJhc2UgeworICAgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICAgICAgaWYgKGkgJiAxKQorICAgICAg
ICAgICAgdGhpcy5tZWdhQ29tbW9uRXh0cmFTdHVmZiA9IHRydWU7CisgICAgICAgIGlmIChpICYg
MikgCisgICAgICAgICAgICB0aGlzLmNvbW1vbkV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBp
ZiAoaSAmIDQpCisgICAgICAgICAgICB0aGlzLm1vcmVFeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAg
ICAgaWYgKGkgJiA4KQorICAgICAgICAgICAgdGhpcy5zb011Y2hFeHRyYVN0dWZmID0gdHJ1ZTsK
KyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjZmllbGQgPSAndGVzdCc7
CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIHN1cGVyKGkpOworICAgICAgICBpZiAo
aSA+IDUwMDApCisgICAgICAgICAgICB0aGlzLmV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBp
ZiAoaSA9PT0gOTk5OSkKKyAgICAgICAgICAgIHRoaXMubW9yZVN0dWZmID0gdHJ1ZTsKKyAgICB9
CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisK
KyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vREZHKEMucHJvdG90eXBlLmNv
bnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25v
REZHKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsK
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgbGV0IGMgPSBuZXcgQyhp
KTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZp
ZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsg
aSk7Cit9CisKK2xldCBjID0gbmV3IEMoMTAwKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAo
KSA9PiBjLmdldEZpZWxkLmNhbGwoe30pKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z0
bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvZnRsLWdldC1wcml2
YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdjMTc4OTgzZmRlNjQyNjUyZGYzMzgzYmFh
MTY4NzFjM2Y4OTVkMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQt
cHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsMTA3IEBACisvL0ByZXF1aXJlT3B0aW9u
cygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCisvLyBXaXRoIG1hbnkgaW5j
b21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0ZXN0IGNoZWNrcyB0aGUgR2V0UHJp
dmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJlZHVjaW5nIHRvIEdldEJ5T2Zmc2V0
IGlzIG5vdCBwb3NzaWJsZS4KKy8vIFRoaXMgdGVzdCBkaXNhYmxlcyBpbmxpbmluZyBsb2FkcyB0
byBHZXRCeU9mZnNldCBpbiBvcmRlciB0byBwcmV2ZW50IHJlZHVjaW5nIHRoZSBHZXRQcml2YXRl
TmFtZUJ5SWQgdG8gTXVsdGlHZXRCeU9mZnNldCBpbiB0aGUKKy8vIERGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLiBJdCBpcyBjb25jZWl2YWJseSBwb3NzaWJsZSBmb3IgdGhpcyBzY2VuYXJpbyB0byBi
ZSBlbmNvdW50ZXJlZCB3aXRob3V0IGRpc2FibGluZyBpbmxpbmUgYWNjZXNzLgorCitmdW5jdGlv
biBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVy
cm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFz
c2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwg
PT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWAp
OworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVu
Y3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVk
IHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1
cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitsZXQgYmFzZXMgPSBbCisgIHsK
KyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAgICBiOiAxLAorICAgIGE6IDIsCisg
IH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAgYTogMywKKyAgfSwKKyAgeworICB9
LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6IDMsCisgICAgcTogNCwKKyAgfSwK
KyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAzLAorICAgIHg6IDQsCisgICAgZjog
NSwKKyAgfSwKKyAgeworICAgIGc6IDEsCisgICAgYjogMiwKKyAgICBkOiAzLAorICAgIHE6IDQs
CisgICAgeDogNSwKKyAgICBkOiA2LAorICB9LAorICB7CisgICAgejogMSwKKyAgICBxOiAyLAor
ICAgIGY6IDMsCisgICAgeTogNCwKKyAgICBhOiA1LAorICAgIDA6IDYsCisgICAgazogNywKKyAg
fSwKK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoaSkgeworICAgIGlmIChpIDwgMTAw
KQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJiAzXSk7CisgICAgcmV0
dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJSBiYXNlcy5sZW5ndGhdKTsKKyAgfQorfQor
Y2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0ZSA9ICJwcml2YXRlIjsKKyAgZ2V0UHJp
dmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0
b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNvbnN0cnVjdG9yKTsKK25vSW5s
aW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90
eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1YWxzKGdl
dFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30KKwordGVzdChuZXcgQygwKSwgMCk7Cit0
ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9IDA7ICFp
c0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwgMTAwMDA7ICsraSkgeworICB0ZXN0KG5ldyBDKGkpKTsK
KyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30KK2Fzc2VydC50aHJvd3MoKCkgPT4g
eworICB0ZXN0KHt9KQorfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXBy
aXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXBy
aXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU3ZDM2NGU1OGNhMjVl
NDVjNjQxYTJjZTVhYmI3YWVhMTU5YzgwNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1tdWx0aS5qcwpAQCAtMCwwICsxLDg3
IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gV2l0aCBtYW55IGluY29tcGF0aWJs
ZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCB3aWxsIGZhaWwgdG8gZ2VuZXJhdGUgR2V0
QnlPZmZzZXQgZHd1cmluZyBERkdCeXRlQ29kZVBhcnNpbmcuCisvLyBEdXJpbmcgRlRMIGNvbXBp
bGF0aW9uLCBpdCB3aWxsIHRyeSBhZ2FpbiBpbiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS4KK2Z1
bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3Np
Z24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFj
dHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1
YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAg
IGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09
ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhw
ZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAg
IHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1
dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2xldCBiYXNlcyA9IFsK
KyAgeworICB9LAorICB7CisgICAgYTogMSwKKyAgfSwKKyAgeworICAgIGI6IDEsCisgICAgYTog
MiwKKyAgfSwKKyAgeworICAgIGM6IDEsCisgICAgZDogMiwKKyAgICBhOiAzLAorICB9LAorICB7
CisgIH0sCisgIHsKKyAgICB6OiAxLAorICAgIGE6IDIsCisgICAgYjogMywKKyAgICBxOiA0LAor
ICB9LAorICB7CisgICAgYTogMSwKKyAgICBkOiAyLAorICAgIHo6IDMsCisgICAgeDogNCwKKyAg
ICBmOiA1LAorICB9LAorXTsKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcihpKSB7CisgICAg
aWYgKGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAmIDNd
KTsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAlIGJhc2VzLmxlbmd0aF0p
OworICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICNwcml2YXRlID0gInByaXZhdGUi
OworICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJpdmF0ZTsgfQorfQorbm9JbmxpbmUo
Qy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMuY29uc3RydWN0
b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBnZXRQcml2YXRl
ID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7CisgIGFzc2Vy
dC5lcXVhbHMoZ2V0UHJpdmF0ZS5jYWxsKG8pLCAicHJpdmF0ZSIpOworfQorCit0ZXN0KG5ldyBD
KDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7Citmb3IgKHZh
ciBpID0gMDsgIWlzRmluYWxUaWVyKHRlc3QpICYmIGkgPCAxMDAwMDsgKytpKSB7CisgIHRlc3Qo
bmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRlc3QpOworfQorYXNzZXJ0LnRo
cm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVudC5qcyBiL0pTVGVzdHMvc3RyZXNz
L2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVudC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTEy
ZmJhNzVlZjEzOGMwMGEzYzIwZGU4NzlmMWUxMWVhNTI3MmZjCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LWlkZW50LmpzCkBA
IC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGll
cnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNz
ZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihg
QXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQs
IHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBl
eHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAg
fSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0
aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2Vw
dGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsK
KyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChp
ICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICAgICAgcmV0dXJu
ICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxk
ID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Zp
ZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5l
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25v
RlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7Cisg
ICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMu
Z2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNz
ZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYTEyZmJhNzVlZjEzOGMwMGEzYzIwZGU4NzlmMWUxMWVhNTI3MmZjCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50
LXN5bWJvbC5qcwpAQCAtMCwwICsxLDUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dV
bnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisK
K2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJv
dyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5h
c3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0
KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHth
Y3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAg
ICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUg
PT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBg
ZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3cs
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2xldCBpID0gMDsK
KworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgewor
ICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7Cisg
ICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAg
ICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5z
ZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNz
ZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyAr
IGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1z
eW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50
LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTFhM2ZkYTJkZTc2MGJjZWE1MjI2MjFiMDNjZDUyYzNi
OTdmM2NjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFt
ZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAo
IWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9
YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3Rl
ZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkg
eworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0
eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5j
ZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0
aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4
cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30p
OworCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAg
ICAjZmllbGQ7CisKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmll
bGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0RGRyhDLnByb3Rv
dHlwZS5jb25zdHJ1Y3Rvcik7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOwor
ICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIAorICAg
IG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorbm9J
bmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CitsZXQgQzEgPSBjbGFzc0RlY2xhcmF0aW9uKCk7Cits
ZXQgQzIgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIGxldCBjID0gaSAlIDIgPyBuZXcgQzEgOiBuZXcgQzI7CisgICAgYy5zZXRG
aWVsZCgndGVzdCcgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3Qn
ICsgaSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411457</attachid>
            <date>2020-10-15 10:35:04 -0700</date>
            <delta_ts>2020-10-20 12:59:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20201015133503.patch</filename>
            <type>text/plain</type>
            <size>72593</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NGM4NTU1ODBmYjMzZGQ2MGRlNWM2ODA1MjYxYmM1OWVmZTI0MDM5Li4yM2MxMDU1YjhhMTVlMTBh
NjkzMDFiYzFiMDllZTU5MWNkMzIyMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAyMC0xMC0xNSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5k
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUuCisKKyAgICAgICAgRHVy
aW5nIERGRyBieXRlY29kZSBwYXJzaW5nLCB3ZSB3aWxsIGF0dGVtcHQsIGlmIGRlZW1lZCBwb3Nz
aWJsZSBieQorICAgICAgICB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCB0byBvdXRwdXQgYSBH
ZXRCeU9mZnNldCBvcGVyYXRpb24uIElmIGEKKyAgICAgICAgc2luZ2xlIHByaXZhdGUgZmllbGQg
aWRlbnRpZmllciBpcyB1c2VkIGluIGFsbCBjYXNlcyAodGhlIGNvbW1vbiBjYXNlKSwKKyAgICAg
ICAgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBzdHJ1Y3R1cmUgdmFyaWFudHMsIGEgR2V0UHJpdmF0
ZU5hbWVCeUlkCisgICAgICAgIG9wZXJhdGlvbiBpcyBlbWl0dGVkIGluc3RlYWQuIEZhaWxpbmcg
dGhhdCwgdGhlIEdldFByaXZhdGVOYW1lCisgICAgICAgIG9wZXJhdGlvbiBpcyBwcm9kdWNlZCwg
d2hpY2ggcHJvZHVjZXMgYSBHZXRCeVZhbCBJQyBsaWtlIGluIHRoZQorICAgICAgICBiYXNlbGlu
ZSBKSVQuCisKKyAgICAgICAgSW4gRlRMLCBHZXRQcml2YXRlTmFtZUJ5SUQgY2FuIGJlIHJlZHVj
ZWQgdG8gW011bHRpXUdldEJ5T2Zmc2V0IGluIHRoZQorICAgICAgICBERkdDb25zdGFudEZvbGRp
bmdQaGFzZSwgb3IgYSBHZXRCeUlEIElDIHdoZW4gbG93ZXJpbmcgdG8gQjMuCisKKyAgICAgICAg
KiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
OgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24pOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlHZXRCeVN0YXR1cyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0
VG9HZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlH
ZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FjaGVhYmxlSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJpdmF0ZU5h
bWVCeUlkKToKKyAgICAgICAgKiBqaXQvSUNTdGF0cy5oOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0
ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZXRC
eUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgICogaml0
L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisKIDIwMjAtMTAt
MTQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFVz
ZSBAcHV0QnlWYWxEaXJlY3QgaW5zdGVhZCBvZiBBcnJheS5wcm90b3R5cGUuQHB1c2ggaW4gYnVp
bHQtaW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNw
cAppbmRleCAxNTgwMjFmMzk5MjNmMmMwMjU5YmNiOGZlZGM4NTRiZTZiMzc1ZWMyLi5hZGYyMWRl
ZTc5ZDAzZGNlZjgzNzUzYjQwZjFhZjQ0NmE1ZTkwNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTEwOCw2ICsxMDgsMTEgQEAgR2V0
QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBCeXRlY29kZUluZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBv
cF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgTExJ
bnQgY2FjaGVzIG9yIElDIGluZm9ybWF0aW9uIHRvIHBvcHVsYXRlIEdldEJ5U3RhdHVzCisgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyNDUKKyAg
ICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKwogICAgIGRl
ZmF1bHQ6IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBH
ZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDYwNDhjZDA0MjhlOTM3
ZDRkMzM0MDM5NjMwMzQ3YzlkOWI3MmUxNjUuLjg5ZGY0ZDdiMTI4Y2NiYzA0OTZkMTVlZGQ2MjY2
Y2ZlN2QyMjhjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oCkBAIC00MDQsNiArNDA0LDggQEAgaW5saW5lIGF1dG8gYXBwcm9w
cmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKEFjY2Vzc1R5cGUgdHlwZSkgLT4gZGVjbHR5
cGUoJm8KICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKICAgICBj
YXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Q6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25H
ZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFt
ZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplOwog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOgogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDIwLDYgKzQyMiw4IEBAIGlubGluZSBhdXRv
IGFwcHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbihBY2Nlc3NUeXBlIHR5cGUpIC0+IGRl
Y2x0eXBlKCZvcGVyCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYzsK
ICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Q6CiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25HZXRCeUlkRGlyZWN0R2VuZXJpYzsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJp
YzsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA4YjA1
ZDVmOTc2MDVlNmU0Yjk4NWVhOTcwZTkxNDk5ODdiYzA0MGQ5Li4xYzM3MjM4YTkwN2M2OTI1YTk2
ZjBiNDQ0NjVhZmE2OWI0ZTdhYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMzQ4LDYgKzMz
NDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBtYWtlSGVhcFRvcEZvck5v
ZGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6
CiAgICAgY2FzZSBHZXRCeUlkRGlyZWN0OgogICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgog
ICAgIGNhc2UgR2V0QnlJZDoKQEAgLTMzODMsNiArMzM4NCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6
CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgog
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggOGU5M2I3YjI2NjRiMmNiMWRlNDZlZmU1NWI4YWYz
YmQ0MDM1M2I4MS4uZTcyMDdlYTgzMjZiMGVmOWM3YmQ4NDI1NzkyOWE2Y2RhM2M3MTk3MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTI0NCw4ICsyNDQsMTEgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgog
ICAgIHZvaWQgcGFyc2VHZXRCeUlkKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgdm9pZCBzaW1w
bGlmeUdldEJ5U3RhdHVzKE5vZGUqIGJhc2UsIEdldEJ5U3RhdHVzJik7CiAgICAgdm9pZCBoYW5k
bGVHZXRCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0
ZWRUeXBlLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBHZXRCeVN0YXR1cywgQWNjZXNzVHlwZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0
SW5kZXgpOworICAgIHZvaWQgaGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAorICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUq
IGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdl
dEJ5U3RhdHVzKTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLCBi
b29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKApAQCAtNDUz
MCw5ICs0NTMzLDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OnN0b3JlKE5vZGUqIGJhc2UsIHVu
c2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFB1dEJ5SWRWYXJpYW4KICAgICByZXR1cm4gaGFuZGxl
UHV0QnlPZmZzZXQoYmFzZSwgaWRlbnRpZmllciwgdmFyaWFudC5vZmZzZXQoKSwgdmFsdWUpOwog
fQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAotICAgIFZpcnR1YWxSZWdp
c3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZSogYmFzZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LAotICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlIHR5cGUsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGV4KQordm9pZCBCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlHZXRCeVN0
YXR1cyhOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyYgZ2V0QnlTdGF0dXMpCiB7CiAgICAgLy8gQXR0
ZW1wdCB0byByZWR1Y2UgdGhlIHNldCBvZiB0aGluZ3MgaW4gdGhlIEdldEJ5U3RhdHVzLgogICAg
IGlmIChiYXNlLT5vcCgpID09IE5ld09iamVjdCkgewpAQCAtNDU0OSw2ICs0NTUwLDEzIEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGlmIChvaykKICAgICAg
ICAgICAgIGdldEJ5U3RhdHVzLmZpbHRlcihiYXNlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAg
fQorfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAorICAgIFZpcnR1YWxS
ZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLAorICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlIHR5cGUsIEJ5dGVj
b2RlSW5kZXggb3NyRXhpdEluZGV4KQoreworICAgIHNpbXBsaWZ5R2V0QnlTdGF0dXMoYmFzZSwg
Z2V0QnlTdGF0dXMpOwogICAgIAogICAgIE5vZGVUeXBlIGdldEJ5SWQ7CiAgICAgaWYgKHR5cGUg
PT0gQWNjZXNzVHlwZTo6R2V0QnlJZCkKQEAgLTQ3MTYsNiArNDcyNCw3NiBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBnZXR0ZXIsIG51bWJlck9mUGFyYW1l
dGVycyAtIDEsIHJlZ2lzdGVyT2Zmc2V0LCAqdmFyaWFudC5jYWxsTGlua1N0YXR1cygpLCBwcmVk
aWN0aW9uKTsKIH0KIAorLy8gQSB2YXJpYW50IG9uIGhhbmRsZUdldEJ5SWQgd2hpY2ggaXMgbW9y
ZSBsaW1pdGVkIGluIHNjb3BlCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRl
TmFtZUJ5SWQoCisgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzKQorewor
ICAgIHNpbXBsaWZ5R2V0QnlTdGF0dXMoYmFzZSwgZ2V0QnlTdGF0dXMpOworCisgICAgQVNTRVJU
KCFnZXRCeVN0YXR1cy5pc0N1c3RvbSgpKTsKKyAgICBBU1NFUlQoIWdldEJ5U3RhdHVzLm1ha2Vz
Q2FsbHMoKSk7CisgICAgaWYgKCFnZXRCeVN0YXR1cy5pc1NpbXBsZSgpIHx8ICFnZXRCeVN0YXR1
cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAg
ICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5h
bWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVs
bHB0cikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGdldEJ5U3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxKSB7CisgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKQor
ICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQor
ICAgICAgICAgICAgfHwgZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBv
bHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBzZXQoZGVz
dGluYXRpb24sCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2YXRlTmFtZUJ5SWQs
IE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBudWxscHRyKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhZGRUb0dyYXBoKEZp
bHRlckdldEJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygp
LmFkZEdldEJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5U3RhdHVzKSksIGJhc2Up
OworCisgICAgICAgIFZlY3RvcjxNdWx0aUdldEJ5T2Zmc2V0Q2FzZSwgMj4gY2FzZXM7CisKKyAg
ICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IGdldEJ5U3RhdHVzLnZh
cmlhbnRzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmludHJpbnNpYygpID09IE5v
SW50cmluc2ljKTsKKyAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmNvbmRpdGlvblNldCgpLmlz
RW1wdHkoKSk7CisKKyAgICAgICAgICAgIEdldEJ5T2Zmc2V0TWV0aG9kIG1ldGhvZCA9IEdldEJ5
T2Zmc2V0TWV0aG9kOjpsb2FkKHZhcmlhbnQub2Zmc2V0KCkpOworICAgICAgICAgICAgY2FzZXMu
YXBwZW5kKE11bHRpR2V0QnlPZmZzZXRDYXNlKCptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJp
YW50LnN0cnVjdHVyZVNldCgpKSwgbWV0aG9kKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
VU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29t
cGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKworICAgICAgICAvLyAyKSBFbWl0
IGEgTXVsdGlHZXRCeU9mZnNldAorICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0RGF0YSogZGF0YSA9
IG1fZ3JhcGgubV9tdWx0aUdldEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+Y2Fz
ZXMgPSBjYXNlczsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
TXVsdGlHZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2Up
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBJZiB3ZSB1c2UgdGhl
IEdldEJ5U3RhdHVzIGZvciBhbnl0aGluZyB0aGVuIHdlIHNob3VsZCByZWNvcmQgaXQgYW5kIGlu
c2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBldmVyeXRoaW5nIGVsc2UgKGxpa2UgdGhlIEdldEJ5
T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdpbGwgZmlsdGVyIHRoZSByZWNvcmRlZAorICAgIC8v
IEdldEJ5U3RhdHVzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGNvbnN0YW50IGZvbGRlciBhbHNvIG5l
ZWRzIHRvIGRvIHRoZSBzYW1lIQorICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlTdGF0dXMsIE9w
SW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkR2V0QnlTdGF0dXMoY3Vy
cmVudENvZGVPcmlnaW4oKSwgZ2V0QnlTdGF0dXMpKSwgYmFzZSk7CisKKyAgICBBU1NFUlQoZ2V0
QnlTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKKyAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50
ID0gZ2V0QnlTdGF0dXNbMF07CisKKyAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQocHJlZGlj
dGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CisgICAgaWYgKCFsb2FkZWRW
YWx1ZSkgeworICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBo
KEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlv
biksIGJhc2UsIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChV
TkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICBtX2dyYXBoLmNvbXBpbGF0
aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CisKKyAgICBBU1NFUlQoIXZhcmlhbnQuY2Fs
bExpbmtTdGF0dXMoKSk7CisgICAgaWYgKHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5z
aWMpCisgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOworfQorCiB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0
aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAg
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVz
LCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTYzNDUsNiArNjQyMyw0MSBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfcHV0X3NldHRlcl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9n
ZXRfcHJpdmF0ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOworICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9k
ZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29s
IGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICAgICAgICAgIEdldEJ5U3Rh
dHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2lj
Q29udGV4dFN0YWNrLCBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciA9IDA7CisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAg
ICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZh
bHVlKSkgeworCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3RhdHVzLnNpbmds
ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikgeworICAgICAg
ICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVu
c3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50
aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSog
ZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiks
IHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZVNpbmdsZUlkZW50aWZpZXIg
PSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGhhbmRsZUdldFBy
aXZhdGVOYW1lQnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmll
ciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWUsIE9w
SW5mbygpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKKyAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2Rz
dCwgbm9kZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRf
cHJpdmF0ZV9uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5X2lkOiB7
CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERl
bEJ5SWQ+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI1YjExNjY3
ODRiNzMxY2E0NTQ3ZTE5NzZjZjk5YzBkNjUyMWZjYzIuLjNmMzczZjNmOGQwNjUwYjkxNTNjM2Rk
MjAzMzBlZjgxNzY1N2M0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCkBAIC02NzMsNiArNjczLDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBj
YXNlIFB1dFNldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdl
dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNl
IERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApp
bmRleCA2NzdmNjRjYmM5YzEwZDZkNjgwZGVjNDc2OWU4ZTRjM2YyM2QzZjlhLi5lYmFiYWMxMWQ5
NTliZWNhOWYzMGRkMTI3YzY4MGNlMGEzZWEyZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNTk5LDcgKzU5
OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAgICAgICAg
ICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoK
LSAgICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CisgICAgICAgICAgICBjYXNlIEdldEJ5
SWRGbHVzaDoKKyAgICAgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CiAgICAgICAg
ICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAg
ICBOb2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1MTJmOTNjNmEzMTM2ZDgy
YzNkYjljNzhmNGU3NGNhZDA2NjFhNzNmLi4yNDI3ZDIwOGJlMzY2YjNjNGU5NTJmMjEzNjM1YzA1
NThiZWNmMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0z
MjQsNiArMzI0LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNl
IFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgIGNhc2Ug
R2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0Fy
Z3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3YjVjNTFjOTM2MzQ2NGZkYTA5MDk1YzQ1YWZiZDVl
OTVmMjE0N2JiLi5kNjMyY2ZmM2UwYTNlYjM2NmM0NjhkM2ViYTE0ZThhMjcyNmY1Yzc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3ODAsNiAr
MTc4MCwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJ
ZDoKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgp
KQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworCisg
ICAgICAgICAgICBpZiAoIW5vZGUtPmhhc0NhY2hlYWJsZUlkZW50aWZpZXIoKSkKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDogewogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpIHsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKaW5kZXggMDRlMDI1YWIyZjExYmUyODY1NmE1OWI1NzEyNjUwY2Y1ODdkM2JiNS4uODk3
Yjk5OWU5NTQ0ZTI5Y2YwMDZmOWQ4NmM0MjdlNTY5MzNkNWRmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKQEAgLTU5Nyw3ICs1OTcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBjb252ZXJ0VG9HZXRCeU9mZnNldChTdG9yYWdlQWNjZXNzRGF0YSYgZGF0YSwgRWRnZSBzdG9y
YWdlLCBFZGdlIGJhc2UpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8
IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdCB8fCBtX29wID09
IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29wID09IE11bHRpR2V0QnlPZmZzZXQpOworICAgICAg
ICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3Ag
PT0gR2V0QnlJZERpcmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29wID09
IEdldFByaXZhdGVOYW1lQnlJZCB8fCBtX29wID09IE11bHRpR2V0QnlPZmZzZXQpOwogICAgICAg
ICBtX29wSW5mbyA9ICZkYXRhOwogICAgICAgICBjaGlsZHJlbi5zZXRDaGlsZDEoc3RvcmFnZSk7
CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMihiYXNlKTsKQEAgLTYwNyw3ICs2MDcsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9NdWx0aUdldEJ5T2Zmc2V0KE11bHRpR2V0
QnlPZmZzZXREYXRhKiBkYXRhKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcCA9
PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gR2V0QnlJZERpcmVj
dCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVzaCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5
SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0Rmx1c2ggfHwgbV9vcCA9PSBHZXRQcml2
YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9IGRhdGE7CiAgICAgICAgIGNoaWxkMSgp
LnNldFVzZUtpbmQoQ2VsbFVzZSk7CiAgICAgICAgIG1fb3AgPSBNdWx0aUdldEJ5T2Zmc2V0OwpA
QCAtMTA4Miw2ICsxMDgyLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhp
czoKICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIEdldEJ5SWREaXJl
Y3RGbHVzaDoKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2Ug
RGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBJbkJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoK
QEAgLTE3NjYsNiArMTc2Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgog
ICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6Cisg
ICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVC
eUlkOgogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0Q2FsbDoKICAgICAg
ICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKaW5kZXggY2M0ZmZiZWFkNjhlYjAyYTU4MTZlYWJiNTVjNGI5MTIwOTUwMTky
My4uODE4Njc4YWNkYTE3Mzg5NTY4OTU2M2YxYWZlZjRiYmQ0MGVlZWM5MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjQyLDYgKzI0Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhOdWtlU3RydWN0dXJlQW5kU2V0QnV0
dGVyZmx5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tBcnJheSwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrQXJyYXlPckVtcHR5LCBOb2RlTXVzdEdlbmVy
YXRlKSBcCisgICAgbWFjcm8oR2V0UHJpdmF0ZU5hbWUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRQcml2YXRlTmFtZUJ5SWQsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBUaGlzIGNoZWNrcyBpZiB0aGUgZWRnZSBpcyBh
IHR5cGVkIGFycmF5IGFuZCBpZiBpdCBpcyBuZXV0ZXJlZC4gKi8gXAogICAgIG1hY3JvKENoZWNr
TmV1dGVyZWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBcnJheWlmeSwgTm9kZU11
c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZjU0MzhhYWE2OWQ2Nzcz
NTI5MjQ1NTI1MGQxMTFlZGQ3NDZlNWQzLi45MTQ1NzYzNTI3ZjEyOTI0NjliNTkzODQwMjEwNTg2
ZThhNmNkZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtODc1LDYgKzg3NSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdp
dGhUaGlzOgogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OgorICAgICAgICBjYXNlIEdldFByaXZh
dGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBN
dWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgogICAgICAgICBj
YXNlIENhbGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CmluZGV4IDgzZDRjMjI2MGViZjYzNmEyMzZmNjdlMDZiNjg1MGU5YjQ2NWIwMzAuLjkwMzkwMzY2
NDFmNTRkZTdmNmI5NmU4YTAxYzBlOGYwNjY0ZTE3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjksNiArNTI5LDggQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0UHJp
dmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBHZXRQcml2
YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURh
dGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBB
cnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggNDUzZTE1NmIwZTQyNGUxNjVkZDk1ZTJmMDcxNmMzMWIxZjE5MDJiYi4uZmI4
MWY0NGM3MTU0ZjM3ZDIxN2RmMjBmMTEzZTY3ZTQzY2RjMTM5YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM0NjgsNiArMzQ2OCw5
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3lt
Ym9sKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0K
IAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKG5vZGUtPmhhc0NhY2hlYWJsZUlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0
dXJuIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQobm9kZSk7CisKKyAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKyAg
ICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICBhdXRvIGJhc2VSZWdz
ID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIGF1dG8gcHJvcGVydHlSZWdzID0gSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHByb3BlcnR5LmdwcigpKTsKKyAgICBhdXRvIHJlc3VsdFJlZ3MgPSBy
ZXN1bHQucmVncygpOworCisgICAgYmFzZS51c2UoKTsKKyAgICBwcm9wZXJ0eS51c2UoKTsKKwor
ICAgIHNwZWN1bGF0ZVN5bWJvbChwcm9wZXJ0eS5lZGdlKCkpOworCisgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0
ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9n
cmFwaC5jaGlsZChub2RlLCAwKSkuaXNUeXBlKFNwZWNDZWxsKSkKKyAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKKworICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAg
ICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHBy
b3BlcnR5UmVncywgcmVzdWx0UmVncyk7CisgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNT
eW1ib2wgPSB0cnVlOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKworICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKKyAgICAgICAg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgYmFz
ZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkp
KTsKKworICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVC
eUlkKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkp
IHsKKyAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CisgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAgIGJhc2UudXNlKCk7CisK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1w
KCksIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVW50
eXBlZFVzZTogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBi
YXNlKTsKKworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3Mo
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAg
ICAgICAgYmFzZS51c2UoKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERh
dGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCks
IG5vZGUsICJCYWQgdXNlIGtpbmQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiBu
b2RlLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKQogewogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGFyZzEodGhpcywgY2hpbGQxKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmMDhkZmU3NjI3MmFiNDQ4NTJi
ZTQwZDFmZGNjZWQ3MmQzODgyMGY4Li40OGUwZmFjMjI4NzQ0NTI2YjYyZmE0YmUxNjBlOTE2NjYx
NTNiOGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCkBAIC0xMjgyLDcgKzEyODIsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21waWxlR2V0
QnlWYWxPbkRpcmVjdEFyZ3VtZW50cyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxP
blNjb3BlZEFyZ3VtZW50cyhOb2RlKik7Ci0gICAgCisKKyAgICB2b2lkIGNvbXBpbGVHZXRQcml2
YXRlTmFtZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUq
KTsKKwogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVT
a2lwU2NvcGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbE9iamVjdChOb2RlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAppbmRleCBmYzIyZGFhNDY3NjAyOTYwNTE5NjhiMmY5ZDZiZjJiYzk0NDRjZjE1Li4x
NzRjYzM3NmMwNTJmOWYwMThlY2QzMDcxNjljZmFjNWIxMTg2NzY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIy
NDEsNiArMjI0MSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAg
Y2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZUdldFByaXZhdGVOYW1l
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5VmFsOiB7CiAg
ICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
QXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA1NzI5OWNmMjdlNGVhY2IwMTY2
ZTA3ZGNiMzdhMjMyYzUxODIxZTM2Li4zYzYzODEzYWY4NGNiMjlhY2VmNjViMDk2OTRjMDk2ZTQw
ZjJlMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTI2MTcsNiArMjYxNywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgY29t
cGlsZUdldFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIEdldEJ5VmFsOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgp
KSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkFueVR5cGVkQXJyYXk6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYWM4N2Y2YTVkNmYyNWI4NDVi
MGY5OWUwZGIyMTRhNWVmZDE2Yjg4Ni4uYTI2ODllMGMxOTEyNjYwNGRkZGFkZTc2YjRlZTczM2Rh
MmIzNmNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMzk3LDYgKzM5Nyw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgR2V0UHJp
dmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBNYXRjaFN0
cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
R2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggNTVlYWEwN2Y2ZGFhNDkyNjNjMWE4OTE3N2RlOTg4NjNiYmQxN2VmOC4uMmQ3
NDFmM2E2NzJjOWQ2MTJlZjE4MmQ1ODVjMTNlNjU5MjcyZDk1YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTQwLDYgKzk0MCwxMiBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNv
bXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21waWxlR2V0
UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFByaXZh
dGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgICAgIGNvbXBp
bGVJbkJ5SWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkzMyw2ICszOTM5LDEzOCBAQCBw
cml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCisgICAgTFZhbHVl
IGdldFByaXZhdGVOYW1lKExWYWx1ZSBiYXNlLCBMVmFsdWUgcHJvcGVydHkpCisgICAgeworICAg
ICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kU29tZVJlZ2lzdGVyKGJhc2UpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVn
aXN0ZXIocHJvcGVydHkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFz
aywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgICAgICBSZWZQdHI8
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworCisgICAgICAgIFN0YXRlKiBzdGF0ZSA9
ICZtX2Z0bFN0YXRlOworICAgICAgICBib29sIGJhc2VJc0NlbGwgPSBhYnN0cmFjdFZhbHVlKG5v
ZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBj
YWxscy4KKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0
aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVt
cHMoaml0KTsKKworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGV4aXQgZm9yIGNhbGwg
SUMncyBjcmVhdGVkIGJ5IHRoZSBJQyBmb3IgZ2V0dGVycy4gV2UgZG9uJ3QgaGF2ZQorICAgICAg
ICAgICAgICAgIC8vIHRvIGRvIGFueXRoaW5nIHdlaXJkIG90aGVyIHRoYW4gY2FsbCB0aGlzLCBz
aW5jZSBpdCB3aWxsIGFzc29jaWF0ZSB0aGUgZXhpdCB3aXRoCisgICAgICAgICAgICAgICAgLy8g
dGhlIGNhbGxzaXRlIGluZGV4LgorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2No
ZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKKworICAg
ICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOworCisgICAgICAgICAgICAg
ICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCisg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOwor
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CisgICAgICAgICAg
ICAgICAgaWYgKCFiYXNlSXNDZWxsKQorICAgICAgICAgICAgICAgICAgICBub3RDZWxsID0gaml0
LmJyYW5jaElmTm90Q2VsbChiYXNlR1BSKTsKKworICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQ
YXRoKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBu
b3RDZWxsLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1Bh
dGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVm
ZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgIH0K
KworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKCkKKyAgICB7CisgICAgICAgIGlmICht
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQorICAgICAgICAgICAgc2V0SlNW
YWx1ZShnZXRQcml2YXRlTmFtZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dTeW1ib2wo
bV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUg
cHJvcGVydHkgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGJhc2VDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgaXNDZWxsKGJhc2UsIHByb3ZlblR5cGUo
bV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoYmFzZUNlbGxDYXNlKSwgdW5zdXJlKG5vdENlbGxD
YXNlKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8oYmFzZUNlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CisKKyAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGNlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoZ2V0UHJpdmF0ZU5hbWUoYmFzZSwgcHJvcGVy
dHkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obm90Q2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJl
c3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAgICAgICAgSW50NjQsIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIG1fb3V0LmNvbnN0SW50UHRyKDApLCBiYXNlLAorICAgICAgICAgICAgICAgIHByb3Bl
cnR5KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCgp
CisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBpZiAobV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkKKyAgICAgICAgICAgIHNldEpTVmFs
dWUoZ2V0QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmFz
ZUNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5v
dENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJyYW5j
aCgKKyAgICAgICAgICAgICAgICBpc0NlbGwoYmFzZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxk
MSgpKSksIHVuc3VyZShiYXNlQ2VsbENhc2UpLCB1bnN1cmUobm90Q2VsbENhc2UpKTsKKworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhiYXNlQ2VsbENh
c2UsIG5vdENlbGxDYXNlKTsKKworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3Vs
dCA9IG1fb3V0LmFuY2hvcihnZXRCeUlkKGJhc2UsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1l
KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCisgICAg
ICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsCisg
ICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwKKyAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCkpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1
bHQpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWRXaXRoVGhp
cygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0lDU3RhdHMuaAppbmRleCA5YzJlZTE5MzRlMGVkY2IzODhhMzQ2OTQ2ZWNhYzExZGVmZjFlMDhj
Li45NGQxZjkyNmNmMmFmMTdlYWEyODk0YmNhYTVkZjM1OTdiZTE1ZjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0lDU3RhdHMuaApAQCAtNzIsNyArNzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCiAgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1
bXApIFwKICAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykgXAotICAgIG1hY3JvKE9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpCisgICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJ
ZCkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplKSBcCisg
ICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYykKIAogY2xhc3MgSUNF
dmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCA5NGE1OGQ4M2VhNTVlOTYyNjgyYmNkZmI3OTYzYTUzNDhmMTk2MmVhLi44NmE1
OTZjNmZlZWVhZTMzMGFiNGYyNTUzM2UyNDU0ZWIxZWJkYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIyNTQsNiArMjI1NCwyNCBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcgogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVj
dCwgZmllbGROYW1lKTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2
YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIElkZW50aWZpZXIgZmllbGROYW1lKQoreworICAgIEFTU0VS
VChmaWVsZE5hbWUuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2Vy
Y2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOworCisgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworICAgIGJhc2UtPmdldFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9i
amVjdCwgZmllbGROYW1lKTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjI3Myw3ICsyMjkxLDYgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG8KICAgICAgICAgQVNTRVJUKGZpZWxkTmFtZS5pc1N5bWJvbCgpKTsK
IAogICAgICAgICBKU09iamVjdCogYmFzZSA9IGpzQ2FzdDxKU09iamVjdCo+KGJhc2VWYWx1ZS5h
c0NlbGwoKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAgICAgICAgIGJhc2UtPmdldFBy
aXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CkBAIC0yMjk5LDExICsy
MzE2LDgzIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgZmllbGROYW1lVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CiAKLSAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICBpZiAoc3R1YkluZm8pCisgICAgICAgIHN0dWJJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRQ
cml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWVW
YWx1ZSkpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVCeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0
cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhy
YXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworCisgICAgSlNWYWx1ZSByZXN1
bHQgPSBnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBm
aWVsZE5hbWUpOworCisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQcml2YXRlTmFt
ZUJ5SWQsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBmaWVsZE5hbWUsIHRydWUpKTsK
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlk
ZW50aWZpZXIpKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21S
YXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGJhc2UpOworICAgIGF1dG8gZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
aWRlbnRpZmllci51aWQoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAg
ICAgICAgSlNPYmplY3QqIGJhc2UgPSBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFsdWUuYXNDZWxs
KCkpOworCisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgICAgIGJhc2UtPmdldFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIExPR19JQygo
SUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgYmFzZVZhbHVlLmNsYXNz
SW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwgdHJ1ZSkpOworCisgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JO
dWxsKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoR2V0QnkoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBH
ZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSkpOworICAgIH0KKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRw
dHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIElkZW50aWZp
ZXIgZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7
CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZSk7CisKKyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51
bGwodm0pLCBmaWVsZE5hbWUsIHRydWUpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CmluZGV4IDZmMDFlMzY0YmVhMTFjMjc0YjVmOGNiNTg3ZjdjODYyNTIxOTM2ZDguLmI3NWE3YjEw
ZTY2YTgyMWU3MDVjMTQ5NDM3MTA3ZTE1NjA2MTYwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNjksNiArMjY5LDkgQEAgSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgQ2FsbEZyYW1lKiwgKEpTR2xv
YmFsT2JqZWMKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRl
TmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVs
ZE5hbWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRGaWVsZE5hbWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVCeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSwgdWludHB0cl90KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFBy
aXZhdGVOYW1lQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBj
aGFyKiwgKFZNKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMTVkOWE4YjRjZTEzY2MzMDlhMjVk
MDAzZmNjZGNhYjBkYzIyMWVlZC4uMDc3MTE2MWMxNWM5ZTE3NTkyZDY1YjZkYWE4MTRiYWQyZDNh
MzYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xNjUsNiArMTY1
LDggQEAgaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlGdW5jdGlvbihHZXRCeUtpbmQKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemU7CiAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgogICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICBjYXNlIEdldEJ5
S2luZDo6UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVCeUlkT3B0aW1pemU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CkBAIC0xODQsNiArMTg2LDggQEAgaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4gYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZCBraW5kKQogICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljOwogICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2
YXRlTmFtZToKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lOworICAgIGNh
c2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZUJ5SWQ7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CkBAIC0yMDMsNyArMjA3LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAg
ICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAg
ICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFt
ZTsKKyAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09IEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWUgfHwga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDsKIAogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaAppbmRleCAwODNhM2Q1ZDY4NGNhYmRmYjE0Y2NhZWI3NDVmZWM3NjNkZmJj
YTIxLi41ZGQyMGM2MzZhMDUxNjg3ZDkxNmU4MGFiNzgzYjBlOWU2NmQzMWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDAsNiArNDAsNyBAQCBlbnVtIGNsYXNzIEdldEJ5
S2luZCB7CiAgICAgV2l0aFRoaXMsCiAgICAgRGlyZWN0LAogICAgIFByaXZhdGVOYW1lLAorICAg
IFByaXZhdGVOYW1lQnlJZCwKIH07CiAKIGVudW0gY2xhc3MgRGVsQnlLaW5kIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDJlMTliMDhkZjk2Zjdl
MDI3MWUyZWM3MDNkMTRlMzQ1MDIxMDM3MjYuLjQ4NjhhNzA4OTgyNDAzMjdmYTI5ZGNhYjBhYmY1
NzQ2ZGUyZWQ3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaApAQCAtNTcwLDcgKzU3MCw3IEBAIGVudW0gRXhwZXJpbWVudGFsT3B0aW9uRmxhZ3Mgewog
fTsKIAogI2RlZmluZSBGT1JfRUFDSF9KU0NfRVhQRVJJTUVOVEFMX09QVElPTih2KSBcCi0gICAg
dih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIExMSW50QW5kQmFzZWxpbmVPbmx5LCAiaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKKyAgICB2KHVzZVByaXZhdGVDbGFzc0Zp
ZWxkcywgU3VwcG9ydHNGVEwgfCBTdXBwb3J0c0RGRywgImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMjc4NCIpCiAKIGNvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09w
dGlvbnMoKQogewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA0MTMyYTgxODQ3NGNmNDhmNTA3OWJhYThhMTZlZGNlYTI5ZmNkZmQxLi5iZTEz
NzlhNjAyOTk5ZTgyNjVlYWE2NTIxODY2N2ZhMWI5OWI3YTRlIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIw
LTEwLTE1ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pT
Q10gc3VwcG9ydCBvcF9nZXRfcHJpdmF0ZV9uYW1lIGluIERGRyBhbmQgRlRMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ4NjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qczogQWRk
ZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHlt
b3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZn
LWdldC1wcml2YXRlLW5hbWUtYnktaWQtZ2VuZXJpYy5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLW9zci1iYWQtaWRlbnRpZmllci5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1i
YWQtaWRlbnRpZmllci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0
ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LXZhbC1nZW5lcmljLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQt
aWRlbnQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgt
Y29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZ2V0LXByaXZhdGUt
bmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanM6IEFkZGVkLgorCiAyMDIwLTEwLTE0ICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBVcGRhdGUgdGVz
dDI2MiAoMjAyMC4xMC4xNCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlL21vbm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0
LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFkODExOTU5ZTdlZjQzN2JmYmFiNDk5Mzhh
MWRhNWUwNTE3MWI2YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2NsYXNzLWZpZWxkcy1wcml2YXRlL21vbm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCkBA
IC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIGNvbnN0cnVjdG9yKGkp
IHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSBpOworICAgIH0KKworICAgIGdldEZpZWxkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5
cGUuZ2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCJ0ZXN0Iik7Citmb3IgKGxldCBpID0gMDsg
aSA8IDUwMDAwMDA7IGkrKykgeworICAgIGlmIChjLmdldEZpZWxkKCkgIT09ICJ0ZXN0IikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIGZpZWxkIHZhbHVlIik7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5
bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYwNDFlODJhNmY4ZDcyNzFmYzY4MzFkMmUzOTQ2ZDRiM2Q5NjE3NDIKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9w
b2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDM0IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitjbGFzcyBDIHsK
KyAgICAjZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVs
ZCA9IHZhbHVlOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCits
ZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gMDsKK2MxLnNldEZpZWxkKCJhIik7CisKK2xldCBj
MiA9IG5ldyBDKCk7CitjMi5iYXIgPSAwOworYzIuc2V0RmllbGQoImIiKTsKKworbGV0IGMzID0g
bmV3IEMoKTsKK2MzLmJheiA9IDA7CitjMy5zZXRGaWVsZCgiYyIpOworCitsZXQgYXJyID0gW2Mx
LCBjMiwgYzNdOworbGV0IHZhbHVlcyA9IFsiYSIsICJiIiwgImMiXTsKK2ZvciAobGV0IGkgPSAw
OyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgaWYgKGFycltpICUgYXJyLmxlbmd0aF0uZ2V0Rmll
bGQoKSAhPT0gdmFsdWVzW2kgJSB2YWx1ZXMubGVuZ3RoXSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJ1bmV4cGVjdGVkIGZpZWxkIHZhbHVlIik7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0
cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC1nZW5lcmljLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJh
ZTg0NDEzOTk2ZDViODY5MjE4N2NmZDM5NjU3NzZjOTI2ZTBlYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC1nZW5lcmljLmpzCkBA
IC0wLDAgKzEsNzYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGll
cnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9sdXRl
ZCBwcm9ncmFtIHdoaWNoIHdpbGwgY29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8gR2V0
UHJpdmF0ZU5hbWVCeUlkLiBHZXRCeUlkCisvLyB3aWxsIG5ldmVyIE9TUiBoZXJlIGR1ZSB0byBi
YWQgc3RydWN0dXJlcywgYnV0IHdpbGwgaW5zdGVhZCByZXBhdGNoIHRvIHRoZSBnZW5lcmljIGNh
c2UuCisKK2xldCBhc3NlcnQgPSB7CisgICAgZXF1YWxzOiBmdW5jdGlvbiAoYSwgZSkgeworICAg
ICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZDogJHtl
fSBidXQgZ290OiAke2F9YCk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlv
biwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZh
bHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24u
bmFtZX0gYnV0IGl0IHRocmV3OiAke2V9YCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRo
cmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0
aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBkaWQgbm90IHRocm93YCk7CisgICAgfQorfTsK
KworY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICBpZiAoaSAmIDIp
IAorICAgICAgICAgICAgdGhpcy5jb21tb25FeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYg
KGkgJiA0KQorICAgICAgICAgICAgdGhpcy5tZWdhRXh0cmFTdHVmZiA9IHRydWU7CisgICAgICAg
IGlmIChpID4gMTAwMDApIHsKKyAgICAgICAgICAgIGlmIChpICYgMSkKKyAgICAgICAgICAgICAg
ICB0aGlzLnN1cGVyV2hhdGV2ZXIgPSB0cnVlOworICAgICAgICB9CisKKyAgICB9Cit9CisKK2Ns
YXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1
Y3RvcihpKSB7CisgICAgICAgIHN1cGVyKGkpOworICAgICAgICBpZiAoaSA+IDUwMDApCisgICAg
ICAgICAgICB0aGlzLmV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSA9PT0gOTk5OSkK
KyAgICAgICAgICAgIHRoaXMubW9yZVN0dWZmID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRGaWVs
ZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJv
dG90eXBlLmNvbnN0cnVjdG9yKTsKK25vREZHKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25v
RlRMKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZp
ZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBl
LnNldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAyMDAwMDsgKytpKSB7CisgICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQu
ZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7
CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBj
ID0gbmV3IEMoMTAwKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiBjLmdldEZpZWxk
LmNhbGwoe30pKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1u
YW1lLWJ5LWlkLW9zci1iYWQtaWRlbnRpZmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQt
cHJpdmF0ZS1uYW1lLWJ5LWlkLW9zci1iYWQtaWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTRj
OTVkMmIxZTM0YTI2OTI4ODQwZWM2ODQyNzMyZGYzMTcxNDY4Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtb3NyLWJhZC1pZGVudGlm
aWVyLmpzCkBAIC0wLDAgKzEsNzYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8g
Q29udm9sdXRlZCBwcm9ncmFtIHdoaWNoIHdpbGwgY29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1l
IGludG8gR2V0UHJpdmF0ZU5hbWVCeUlkLCBhbmQgdGhlbiBPU1JFeGl0CisvLyBmcm9tIGdldEZp
ZWxkKCkgZHVlIHRvIGEgQ2hlY2tJc0NvbnN0YW50IGZhaWx1cmUgd2hlbiBhIGRpZmZlcmVudCBp
ZGVudGlmaWVyIGlzIHVzZWQuCisKK2xldCBhc3NlcnQgPSB7CisgICAgZXF1YWxzOiBmdW5jdGlv
biAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZDogJHtlfSBidXQgZ290OiAke2F9YCk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1
bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRo
cmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2Vw
dGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93
IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGl0IHRocmV3OiAke2V9YCk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBkaWQgbm90IHRocm93
YCk7CisgICAgfQorfTsKKworY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoaSkgeworICAg
ICAgICBpZiAoaSAmIDEpCisgICAgICAgICAgICB0aGlzLmRpZmZlcmVudFN0cnVjdHVyZSA9IGBl
eHRyYSR7aX1gOworICAgIH0KK30KKworZnVuY3Rpb24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNs
YXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAg
ICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAg
IH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4j
ZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0Rmll
bGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnBy
b3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCisg
ICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0
LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkp
OworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQg
QzIgPSBmYWN0b3J5Q2xhc3MoKTsgLy8gaW52YWxpZGF0ZSBmaXJzdCB2ZXJzaW9uIG9mIHNldEZp
ZWxkIGR1ZSB0byBTY29wZSBpbnZhbGlkYXRpb24gcG9pbnQKKworLy8gVHJpZ2dlcnMgbmV3IHZl
cnNpb24gd2l0aG91dCBmb2xkaW5nIGdldF9mcm9tX3Njb3BlCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2VydC5lcXVhbHMo
Yy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBh
c3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IGMyID0gbmV3
IEMyKCk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMyLmdl
dEZpZWxkLmNhbGwobmV3IEMoKSk7IC8vIHRyaWdnZXIgT1NSIGV4aXQgZHVlIHRvIGJhZCBjb25z
dGFudCB2YWx1ZQorfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZh
dGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5
LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBmZGM0YjliMmZmYmQ5ZTYwOWE2ODQwYmE3M2MyMmQ0MGYwNmFm
ODEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFt
ZS1ieS1pZC5qcwpAQCAtMCwwICsxLDk4IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vu
c3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKwor
Ly8gV2l0aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCBj
aGVja3MgdGhlIEdldFByaXZhdGVOYW1lIGxvd2VyaW5nIGluIERGRyB3aGVuCisvLyByZWR1Y2lu
ZyB0byBHZXRCeU9mZnNldCBpcyBub3QgcG9zc2libGUuCisKK2Z1bmN0aW9uIGFzc2VydChleHBy
LCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlv
biBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVx
dWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQs
IGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRo
cm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAg
ICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtl
cnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2Fz
IHRocm93bi5gKTsKKyAgfQorfSk7CisKKworbGV0IGJhc2VzID0gWworICB7CisgIH0sCisgIHsK
KyAgICBhOiAxLAorICB9LAorICB7CisgICAgYjogMSwKKyAgICBhOiAyLAorICB9LAorICB7Cisg
ICAgYzogMSwKKyAgICBkOiAyLAorICAgIGE6IDMsCisgIH0sCisgIHsKKyAgfSwKKyAgeworICAg
IHo6IDEsCisgICAgYTogMiwKKyAgICBiOiAzLAorICAgIHE6IDQsCisgIH0sCisgIHsKKyAgICBh
OiAxLAorICAgIGQ6IDIsCisgICAgejogMywKKyAgICB4OiA0LAorICAgIGY6IDUsCisgIH0sCisg
IHsKKyAgICBnOiAxLAorICAgIGI6IDIsCisgICAgZDogMywKKyAgICBxOiA0LAorICAgIHg6IDUs
CisgICAgZDogNiwKKyAgfQorXTsKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcihpKSB7Cisg
ICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAm
IDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNbaSAlIGJhc2VzLmxlbmd0
aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICNwcml2YXRlID0gInByaXZh
dGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJpdmF0ZTsgfQorfQorbm9Jbmxp
bmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMuY29uc3Ry
dWN0b3IpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7Citub0lubGluZShDLnByb3Rv
dHlwZS5nZXRQcml2YXRlKTsKKworbGV0IGdldFByaXZhdGUgPSBDLnByb3RvdHlwZS5nZXRQcml2
YXRlOworCitmdW5jdGlvbiB0ZXN0KG8pIHsKKyAgYXNzZXJ0LmVxdWFscyhnZXRQcml2YXRlLmNh
bGwobyksICJwcml2YXRlIik7Cit9CisKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygw
KSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytp
KSB7CisgIHRlc3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRlc3QpOwor
fQorYXNzZXJ0LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLWlkZW50
aWZpZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQt
b3NyLWJhZC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MzIwYWY2YzA0YjdlZDc5ZDhlOWQ5
Y2Y2MmUxNmZkMzMwMTg4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmct
Z2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtb3NyLWJhZC1pZGVudGlmaWVyLmpzCkBAIC0wLDAg
KzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9sdXRlZCBwcm9n
cmFtIHdoaWNoIHdpbGwgY29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8gR2V0QnlPZmZz
ZXQsIGFuZCB0aGVuIE9TUkV4aXQKKy8vIGZyb20gZ2V0RmllbGQoKSBkdWUgdG8gYSBDaGVja0lz
Q29uc3RhbnQgZmFpbHVyZSB3aGVuIGEgZGlmZmVyZW50IGlkZW50aWZpZXIgaXMgdXNlZC4KKwor
bGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYg
KGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1dCBn
b3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5j
dG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBi
dXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNl
cHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEg
JHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitmdW5j
dGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0
ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmll
bGQgPSB2OworICAgICAgICB9CisgICAgCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisgICAgbm9ERkcoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBl
LnNldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorCitsZXQgQyA9IGZhY3RvcnlDbGFzcygp
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRG
aWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyAr
IGkpOworfQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3MoKTsgLy8gaW52YWxpZGF0ZSBmaXJzdCB2
ZXJzaW9uIG9mIHNldEZpZWxkIGR1ZSB0byBTY29wZSBpbnZhbGlkYXRpb24gcG9pbnQKKworLy8g
VHJpZ2dlcnMgbmV3IHZlcnNpb24gd2l0aG91dCBmb2xkaW5nIGdldF9mcm9tX3Njb3BlCitmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
YXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9v
JyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQor
CitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAo
KSB7CisgICAgYzIuZ2V0RmllbGQuY2FsbChuZXcgQygpKTsgLy8gdHJpZ2dlciBPU1IgZXhpdCBk
dWUgdG8gYmFkIGNvbnN0YW50IHZhbHVlCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0cnVjdHVyZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0cnVj
dHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNTk3N2IxYWFmYmQ1NjY3NjVkMzk2YzI2ODkxNzVmNTNkYmUw
ZTVmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5h
bWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0dXJlLmpzCkBAIC0wLDAgKzEsNjIgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gQ29udm9sdXRlZCBwcm9ncmFtIHdoaWNoIHdpbGwg
Y29tcGlsZSB0dXJuIEdldFByaXZhdGVOYW1lIGludG8gR2V0QnlPZmZzZXQsIGFuZCB0aGVuIE9T
UkV4aXQKKy8vIGZyb20gZ2V0RmllbGQoKSBkdWUgdG8gYSBDaGVja1N0cnVjdHVyZSBmYWlsdXJl
CisKK2xldCBhc3NlcnQgPSB7CisgICAgZXF1YWxzOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAg
IGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZDogJHtlfSBi
dXQgZ290OiAke2F9YCk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwg
ZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNl
OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFt
ZX0gYnV0IGl0IHRocmV3OiAke2V9YCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3
RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJv
dyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBkaWQgbm90IHRocm93YCk7CisgICAgfQorfTsKKwor
Y2xhc3MgQyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgY29uc3RydWN0b3IoaSkgewor
ICAgICAgICBpZiAoaSA+IDUwMDApCisgICAgICAgICAgICB0aGlzLmV4dHJhU3R1ZmYgPSB0cnVl
OyAvLyBJbnZhbGlkYXRlIGxvb3AgZHVlIHRvIHN0cnVjdHVyZSBjaGFuZ2UKKyAgICAgICAgaWYg
KGkgPT09IDk5OTkpCisgICAgICAgICAgICB0aGlzLm1vcmVTdHVmZiA9IHRydWU7IC8vIFRyaWdn
ZXIgYSBCYWRDYWNoZSBPU1Igb24gZ2V0X3ByaXZhdGVfbmFtZQorICAgIH0KKworICAgIHNldEZp
ZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxk
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5w
cm90b3R5cGUuY29uc3RydWN0b3IpOworbm9ERkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOwor
bm9GVEwoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5
cGUuc2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2Vy
dC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBp
KTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworLy8g
Q2hlY2sgc2VtYW50aWMgZmFpbHVyZSBzdGlsbCBmdW5jdGlvbnMKK2xldCBjID0gbmV3IEMoMTAw
KTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiBjLmdldEZpZWxkLmNhbGwoe30pKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNl
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMWJhNDJkYWM1NmZkNTFjZmMwMmUyMGU0ZWJkNjk5MmQ5NGJlZjRlCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zm
c2V0LmpzCkBAIC0wLDAgKzEsNjIgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBX
aXRoIG5vIGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIEdldFByaXZhdGVOYW1lIGlz
IGNvbnZlcnRlZCB0byBHZXRCeU9mZnNldAorLy8gZHVyaW5nIGJ5dGVjb2RlIHBhcnNpbmcuIFdl
IHRlc3QgdGhhdCBpdCdzIHN0aWxsIHNlbWFudGljYWxseSB2YWxpZC4KKworZnVuY3Rpb24gYXNz
ZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihg
QXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQs
IHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBl
eHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAg
fSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0
aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2Vw
dGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworY2xhc3MgQyB7CisgICNwcml2YXRlID0g
InByaXZhdGUiOworICBnZXRQcml2YXRlKG8pIHsgcmV0dXJuIG8uI3ByaXZhdGU7IH0KKyAgY29u
c3RydWN0b3IoaSkgeworICAgIGlmIChpID09PSA5OTUpCisgICAgICByZXR1cm4ge307CisgIH0K
K30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZU
TChDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQg
Z2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3Qobykg
eworICByZXR1cm4gZ2V0UHJpdmF0ZShvKTsKK30KK25ldmVySW5saW5lRnVuY3Rpb24odGVzdCk7
CisKKy8vIFdhcm11cAordGVzdChuZXcgQywgMCk7Cit0ZXN0KG5ldyBDLCAwKTsKK3Rlc3QobmV3
IEMsIDApOworCit2YXIgaTsKK2ZvciAodmFyIGogPSAwOyBqIDwgMjsgKytqKSB7CisgIGFzc2Vy
dC50aHJvd3MoKCkgPT4geworICAgIGZvciAoaSA9IDA7IGkgPCAyMDAwOyArK2kpIHsKKyAgICAg
IGFzc2VydC5lcXVhbHModGVzdChuZXcgQyhpKSksICJwcml2YXRlIik7CisgICAgICBvcHRpbWl6
ZU5leHRJbnZvY2F0aW9uKHRlc3QpOworICAgIH0KKyAgfSwgVHlwZUVycm9yKTsKKworICAvLyBX
ZSBzaG91bGQgdGhyb3cgb24gaXRlcmF0aW9uIDk5NSwgYmVjYXVzZSB0aGlzIHdpbGwgcmVzdWx0
IGluIGFuIGludmFsaWQgbG9hZC4KKyAgYXNzZXJ0LmVxdWFscyhpLCA5OTUpOworfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktdmFsLWdlbmVyaWMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12YWwtZ2VuZXJpYy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NjI1NzYxNTk4ODUwOTFkOGY1NDU0YWEyZDZmM2NkYTNjMjYzYmNhCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnkt
dmFsLWdlbmVyaWMuanMKQEAgLTAsMCArMSw3NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCisvLyBDb252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJp
dmF0ZU5hbWUgaW50byBKSVRHZXRCeVZhbCBJQy4gR2V0QnlWYWwKKy8vIHdpbGwgbmV2ZXIgT1NS
IGhlcmUgZHVlIHRvIGJhZCBzdHJ1Y3R1cmVzLCBidXQgd2lsbCBpbnN0ZWFkIHJlcGF0Y2ggdG8g
dGhlIGdlbmVyaWMgY2FzZS4KKworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9u
IChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVu
Y3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0
aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cg
YSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dg
KTsKKyAgICB9Cit9OworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAg
ICAgIGlmIChpICYgMSkKKyAgICAgICAgICAgIHRoaXMubWVnYUNvbW1vbkV4dHJhU3R1ZmYgPSB0
cnVlOworICAgICAgICBpZiAoaSAmIDIpIAorICAgICAgICAgICAgdGhpcy5jb21tb25FeHRyYVN0
dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkgJiA0KQorICAgICAgICAgICAgdGhpcy5tb3JlRXh0
cmFTdHVmZiA9IHRydWU7CisgICAgICAgIGlmIChpICYgOCkKKyAgICAgICAgICAgIHRoaXMuc29N
dWNoRXh0cmFTdHVmZiA9IHRydWU7CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7
CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgY29uc3RydWN0b3IoaSkgeworICAgICAgICBz
dXBlcihpKTsKKyAgICAgICAgaWYgKGkgPiA1MDAwKQorICAgICAgICAgICAgdGhpcy5leHRyYVN0
dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkgPT09IDk5OTkpCisgICAgICAgICAgICB0aGlzLm1v
cmVTdHVmZiA9IHRydWU7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlz
LiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7
Citub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLnByb3RvdHlwZS5jb25z
dHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkg
eworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCks
ICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMo
Yy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgYyA9IG5ldyBDKDEwMCk7Cithc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4gYy5nZXRGaWVsZC5jYWxsKHt9KSk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YzE3
ODk4M2ZkZTY0MjY1MmRmMzM4M2JhYTE2ODcxYzNmODk1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpAQCAtMCwwICsxLDEw
NyBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNl
IikKKworLy8gV2l0aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMg
dGVzdCBjaGVja3MgdGhlIEdldFByaXZhdGVOYW1lIGxvd2VyaW5nIGluIERGRyB3aGVuCisvLyBy
ZWR1Y2luZyB0byBHZXRCeU9mZnNldCBpcyBub3QgcG9zc2libGUuCisvLyBUaGlzIHRlc3QgZGlz
YWJsZXMgaW5saW5pbmcgbG9hZHMgdG8gR2V0QnlPZmZzZXQgaW4gb3JkZXIgdG8gcHJldmVudCBy
ZWR1Y2luZyB0aGUgR2V0UHJpdmF0ZU5hbWVCeUlkIHRvIE11bHRpR2V0QnlPZmZzZXQgaW4gdGhl
CisvLyBERkdDb25zdGFudEZvbGRpbmdQaGFzZS4gSXQgaXMgY29uY2VpdmFibHkgcG9zc2libGUg
Zm9yIHRoaXMgc2NlbmFyaW8gdG8gYmUgZW5jb3VudGVyZWQgd2l0aG91dCBkaXNhYmxpbmcgaW5s
aW5lIGFjY2Vzcy4KKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFl
eHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWAp
OworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9
IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsK
KyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlw
ZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2Vv
ZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhy
ZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBl
Y3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsK
KworbGV0IGJhc2VzID0gWworICB7CisgIH0sCisgIHsKKyAgICBhOiAxLAorICB9LAorICB7Cisg
ICAgYjogMSwKKyAgICBhOiAyLAorICB9LAorICB7CisgICAgYzogMSwKKyAgICBkOiAyLAorICAg
IGE6IDMsCisgIH0sCisgIHsKKyAgfSwKKyAgeworICAgIHo6IDEsCisgICAgYTogMiwKKyAgICBi
OiAzLAorICAgIHE6IDQsCisgIH0sCisgIHsKKyAgICBhOiAxLAorICAgIGQ6IDIsCisgICAgejog
MywKKyAgICB4OiA0LAorICAgIGY6IDUsCisgIH0sCisgIHsKKyAgICBnOiAxLAorICAgIGI6IDIs
CisgICAgZDogMywKKyAgICBxOiA0LAorICAgIHg6IDUsCisgICAgZDogNiwKKyAgfSwKKyAgewor
ICAgIHo6IDEsCisgICAgcTogMiwKKyAgICBmOiAzLAorICAgIHk6IDQsCisgICAgYTogNSwKKyAg
ICAwOiA2LAorICAgIGs6IDcsCisgIH0sCitdOworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9y
KGkpIHsKKyAgICBpZiAoaSA8IDEwMCkKKyAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBi
YXNlc1tpICYgM10pOworICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICUgYmFz
ZXMubGVuZ3RoXSk7CisgIH0KK30KK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZhdGUg
PSAicHJpdmF0ZSI7CisgIGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9Cit9
Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOworbm9GVEwo
Qy5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKKworbGV0
IGdldFByaXZhdGUgPSBDLnByb3RvdHlwZS5nZXRQcml2YXRlOworCitmdW5jdGlvbiB0ZXN0KG8p
IHsKKyAgYXNzZXJ0LmVxdWFscyhnZXRQcml2YXRlLmNhbGwobyksICJwcml2YXRlIik7Cit9CisK
K3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAw
KTsKK2ZvciAodmFyIGkgPSAwOyAhaXNGaW5hbFRpZXIodGVzdCkgJiYgaSA8IDEwMDAwOyArK2kp
IHsKKyAgdGVzdChuZXcgQyhpKSk7CisgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7Cit9
Cithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgdGVzdCh7fSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW11bHRpLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM1N2QzNjRlNThjYTI1ZTQ1YzY0MWEyY2U1YWJiN2FlYTE1OWM4MDYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQt
bXVsdGkuanMKQEAgLTAsMCArMSw4NyBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1
cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8v
IFdpdGggbWFueSBpbmNvbXBhdGlibGUgc3RydWN0dXJlIHZhcmlhbnRzLCB0aGlzIHRlc3Qgd2ls
bCBmYWlsIHRvIGdlbmVyYXRlIEdldEJ5T2Zmc2V0IGR3dXJpbmcgREZHQnl0ZUNvZGVQYXJzaW5n
LgorLy8gRHVyaW5nIEZUTCBjb21waWxhdGlvbiwgaXQgd2lsbCB0cnkgYWdhaW4gaW4gREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBp
ZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3Nh
Z2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBl
Y3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlw
ZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlm
ICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0
YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1
dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwg
YGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0K
K30pOworCitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisg
IHsKKyAgICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIs
CisgICAgYTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAor
ICAgIGI6IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAg
ICB6OiAzLAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAg
Y29uc3RydWN0b3IoaSkgeworICAgIGlmIChpIDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5h
c3NpZ24oe30sIGJhc2VzW2kgJiAzXSk7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJh
c2VzW2kgJSBiYXNlcy5sZW5ndGhdKTsKKyAgfQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2Ugewor
ICAjcHJpdmF0ZSA9ICJwcml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3By
aXZhdGU7IH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rv
cik7Citub0ZUTChDLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZh
dGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0
aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZh
dGUiKTsKK30KKwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3Qo
bmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9IDA7ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwg
MTAwMDA7ICsraSkgeworICB0ZXN0KG5ldyBDKGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlv
bih0ZXN0KTsKK30KK2Fzc2VydC50aHJvd3MoKCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtaWRl
bnQuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtaWRl
bnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2ExMmZiYTc1ZWYxMzhjMDBhM2MyMGRlODc5ZjFlMTFlYTUyNzJm
YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0
aC1jb25zdGFudC1pZGVudC5qcwpAQCAtMCwwICsxLDUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikK
KyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30K
K09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQg
Zm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAg
dHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBl
cnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJy
b3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7
ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQg
dG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2xl
dCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBp
bml0KCkgeworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVs
ZCA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnBy
b3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAo
OyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVs
ZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkp
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1j
b25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ExMmZiYTc1ZWYxMzhjMDBhM2MyMGRlODc5
ZjFlMTFlYTUyNzJmYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2
YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw1MyBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgewor
ICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21l
c3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtl
eHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9y
VHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
IGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBp
bnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9
IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxz
ZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7Cisg
IH0KK30pOworCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5p
dCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgdGhp
cy5hbm90aGVyRmllbGQgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAg
IHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdl
dEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9Jbmxp
bmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQp
Oworbm9ERkcoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuc2V0Rmll
bGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBjb3VudCA9IGk7CisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOwor
ICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQo
KSwgJ2ZvbycgKyBpKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRl
LW5hbWUtd2l0aC1kaWZmZXJlbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZh
dGUtbmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkxYTNmZGEyZGU3
NjBiY2VhNTIyNjIxYjAzY2Q1MmMzYjk3ZjNjYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtc3ltYm9sLmpzCkBAIC0wLDAg
KzEsNTQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGV4
cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0
aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAg
ZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3Rl
ZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAg
dGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAk
e2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3
YXMgdGhyb3duLmApOworICB9Cit9KTsKKworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbigpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkOworCisgICAgICAgIHNldEZpZWxkKHYpIHsK
KyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdldEZp
ZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAg
fQorCisgICAgbm9ERkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworICAgIG5vRlRMKEMucHJv
dG90eXBlLmNvbnN0cnVjdG9yKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7
CisgICAgbm9ERkcoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBl
LnNldEZpZWxkKTsKKyAgICAKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisK
KyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0g
Y2xhc3NEZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMx
IDogbmV3IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LmVxdWFs
cyhjLmdldEZpZWxkKCksICd0ZXN0JyArIGkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411901</attachid>
            <date>2020-10-20 12:59:08 -0700</date>
            <delta_ts>2020-10-21 06:13:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214861-20201020155906.patch</filename>
            <type>text/plain</type>
            <size>73618</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTlkZjMyNzcwZDUyOTkxM2VjZmU1YzlhNjE5OTc2MDM1ZDBlNTdhLi42ZmQxNGZlNTE0ZWUzZDI4
MDMxMDE4NmYwOWNlNGFjNTBiMTllNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMC0xMC0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5k
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUuCisKKyAgICAgICAgRHVy
aW5nIERGRyBieXRlY29kZSBwYXJzaW5nLCB3ZSB3aWxsIGF0dGVtcHQsIGlmIGRlZW1lZCBwb3Nz
aWJsZSBieQorICAgICAgICB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCB0byBvdXRwdXQgYSBH
ZXRCeU9mZnNldCBvcGVyYXRpb24uIElmIGEKKyAgICAgICAgc2luZ2xlIHByaXZhdGUgZmllbGQg
aWRlbnRpZmllciBpcyB1c2VkIGluIGFsbCBjYXNlcyAodGhlIGNvbW1vbiBjYXNlKSwKKyAgICAg
ICAgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBzdHJ1Y3R1cmUgdmFyaWFudHMsIGEgR2V0UHJpdmF0
ZU5hbWVCeUlkCisgICAgICAgIG9wZXJhdGlvbiBpcyBlbWl0dGVkIGluc3RlYWQuIEZhaWxpbmcg
dGhhdCwgdGhlIEdldFByaXZhdGVOYW1lCisgICAgICAgIG9wZXJhdGlvbiBpcyBwcm9kdWNlZCwg
d2hpY2ggcHJvZHVjZXMgYSBHZXRCeVZhbCBJQyBsaWtlIGluIHRoZQorICAgICAgICBiYXNlbGlu
ZSBKSVQuCisKKyAgICAgICAgSW4gRlRMLCBHZXRQcml2YXRlTmFtZUJ5SUQgY2FuIGJlIHJlZHVj
ZWQgdG8gW011bHRpXUdldEJ5T2Zmc2V0IGluIHRoZQorICAgICAgICBERkdDb25zdGFudEZvbGRp
bmdQaGFzZSwgb3IgYSBHZXRCeUlEIElDIHdoZW4gbG93ZXJpbmcgdG8gQjMuCisKKyAgICAgICAg
KiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
OgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24pOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlHZXRCeVN0YXR1cyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0
VG9HZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlH
ZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FjaGVhYmxlSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRQcml2YXRlTmFtZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQ
cml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFw
cHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3By
aWF0ZUdldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAg
ICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKwog
MjAyMC0xMC0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBQ
YXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBBZGQgc2V0U2NyZWVuU2l6ZU92ZXJyaWRlIEFQSSB0byB0aGUgUGFnZSBhZ2VudApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKaW5kZXgg
MTU4MDIxZjM5OTIzZjJjMDI1OWJjYjhmZWRjODU0YmU2YjM3NWVjMi4uYWRmMjFkZWU3OWQwM2Rj
ZWY4Mzc1M2I0MGYxYWY0NDZhNWU5MDQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCkBAIC0xMDgsNiArMTA4LDExIEBAIEdldEJ5U3RhdHVz
IEdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
Qnl0ZWNvZGVJbmRlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ugb3BfZ2V0X3By
aXZhdGVfbmFtZToKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHVzaW5nIExMSW50IGNhY2hl
cyBvciBJQyBpbmZvcm1hdGlvbiB0byBwb3B1bGF0ZSBHZXRCeVN0YXR1cworICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjQ1CisgICAgICAgIHJl
dHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisKICAgICBkZWZhdWx0OiB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA2MDQ4Y2QwNDI4ZTkzN2Q0ZDMzNDAz
OTYzMDM0N2M5ZDliNzJlMTY1Li44OWRmNGQ3YjEyOGNjYmMwNDk2ZDE1ZWRkNjI2NmNmZTdkMjI4
Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaApAQCAtNDA0LDYgKzQwNCw4IEBAIGlubGluZSBhdXRvIGFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5SWRGdW5jdGlvbihBY2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZvCiAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpHZXRCeUlkRGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERp
cmVjdE9wdGltaXplOworICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CisgICAg
ICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQyMCw2ICs0MjIsOCBAQCBpbmxpbmUgYXV0byBhcHByb3By
aWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24oQWNjZXNzVHlwZSB0eXBlKSAtPiBkZWNsdHlwZSgm
b3BlcgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWM7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0
QnlJZERpcmVjdEdlbmVyaWM7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWM7CiAgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOGIwNWQ1Zjk3NjA1
ZTZlNGI5ODVlYTk3MGU5MTQ5OTg3YmMwNDBkOS4uMWMzNzIzOGE5MDdjNjkyNWE5NmYwYjQ0NDY1
YWZhNjliNGU3YWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzM0OCw2ICszMzQ4LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNh
c2UgR2V0QnlJZERpcmVjdDoKICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICBjYXNl
IEdldEJ5SWQ6CkBAIC0zMzgzLDYgKzMzODQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNh
c2UgR2V0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IDhlOTNiN2IyNjY0YjJjYjFkZTQ2ZWZlNTViOGFmM2JkNDAzNTNi
ODEuLmU3MjA3ZWE4MzI2YjBlZjljN2JkODQyNTc5MjlhNmNkYTNjNzE5NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDQsOCAr
MjQ0LDExIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICB2b2lk
IHBhcnNlR2V0QnlJZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgIHZvaWQgc2ltcGxpZnlHZXRC
eVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyYpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJ
ZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwg
Tm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsK
KyAgICB2b2lkIGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1
cyk7CiAgICAgdm9pZCBlbWl0UHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgTm9kZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0Rp
cmVjdCwgRUNNQU1vZGUpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKQEAgLTQ1MzAsOSArNDUz
Myw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyLCBjb25zdCBQdXRCeUlkVmFyaWFuCiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zm
c2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhbHVlKTsKIH0KIAotdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVz
dGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBH
ZXRCeVN0YXR1cyBnZXRCeVN0YXR1cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4IG9z
ckV4aXRJbmRleCkKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OnNpbXBsaWZ5R2V0QnlTdGF0dXMoTm9k
ZSogYmFzZSwgR2V0QnlTdGF0dXMmIGdldEJ5U3RhdHVzKQogewogICAgIC8vIEF0dGVtcHQgdG8g
cmVkdWNlIHRoZSBzZXQgb2YgdGhpbmdzIGluIHRoZSBHZXRCeVN0YXR1cy4KICAgICBpZiAoYmFz
ZS0+b3AoKSA9PSBOZXdPYmplY3QpIHsKQEAgLTQ1NDksNiArNDU1MCwxMyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICBn
ZXRCeVN0YXR1cy5maWx0ZXIoYmFzZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIH0KK30KKwor
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAg
ICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cywgQWNjZXNzVHlwZSB0eXBlLCBCeXRlY29kZUluZGV4
IG9zckV4aXRJbmRleCkKK3sKKyAgICBzaW1wbGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3Rh
dHVzKTsKICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwogICAgIGlmICh0eXBlID09IEFjY2Vz
c1R5cGU6OkdldEJ5SWQpCkBAIC00NzE2LDYgKzQ3MjQsNzYgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAx
LCByZWdpc3Rlck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlvbik7
CiB9CiAKKy8vIEEgdmFyaWFudCBvbiBoYW5kbGVHZXRCeUlkIHdoaWNoIGlzIG1vcmUgbGltaXRl
ZCBpbiBzY29wZQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlk
KAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cykKK3sKKyAgICBzaW1w
bGlmeUdldEJ5U3RhdHVzKGJhc2UsIGdldEJ5U3RhdHVzKTsKKworICAgIEFTU0VSVCghZ2V0QnlT
dGF0dXMuaXNDdXN0b20oKSk7CisgICAgQVNTRVJUKCFnZXRCeVN0YXR1cy5tYWtlc0NhbGxzKCkp
OworICAgIGlmICghZ2V0QnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVtVmFy
aWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBzZXQo
ZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwg
T3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChnZXRCeVN0YXR1cy5udW1WYXJpYW50
cygpID4gMSkgeworICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAg
ICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAg
ICAgIHx8IGdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhp
Y0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9u
LAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8o
aWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRC
eVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRC
eVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKKworICAg
ICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOworCisgICAgICAgIGZv
ciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBnZXRCeVN0YXR1cy52YXJpYW50cygp
KSB7CisgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNp
Yyk7CisgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5jb25kaXRpb25TZXQoKS5pc0VtcHR5KCkp
OworCisgICAgICAgICAgICBHZXRCeU9mZnNldE1ldGhvZCBtZXRob2QgPSBHZXRCeU9mZnNldE1l
dGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIGNhc2VzLmFwcGVuZChN
dWx0aUdldEJ5T2Zmc2V0Q2FzZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1
Y3R1cmVTZXQoKSksIG1ldGhvZCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CisKKyAgICAgICAgLy8gMikgRW1pdCBhIE11bHRp
R2V0QnlPZmZzZXQKKyAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBo
Lm1fbXVsdGlHZXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPmNhc2VzID0gY2Fz
ZXM7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwor
ICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKE11bHRpR2V0
QnlPZmZzZXQsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogSWYgd2UgdXNlIHRoZSBHZXRCeVN0
YXR1cyBmb3IgYW55dGhpbmcgdGhlbiB3ZSBzaG91bGQgcmVjb3JkIGl0IGFuZCBpbnNlcnQgYSBu
b2RlCisgICAgLy8gYWZ0ZXIgZXZlcnl0aGluZyBlbHNlIChsaWtlIHRoZSBHZXRCeU9mZnNldCBv
ciB3aGF0ZXZlcikgdGhhdCB3aWxsIGZpbHRlciB0aGUgcmVjb3JkZWQKKyAgICAvLyBHZXRCeVN0
YXR1cy4gVGhhdCBtZWFucyB0aGF0IHRoZSBjb25zdGFudCBmb2xkZXIgYWxzbyBuZWVkcyB0byBk
byB0aGUgc2FtZSEKKyAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5U3RhdHVzLCBPcEluZm8obV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEdldEJ5U3RhdHVzKGN1cnJlbnRDb2Rl
T3JpZ2luKCksIGdldEJ5U3RhdHVzKSksIGJhc2UpOworCisgICAgQVNTRVJUKGdldEJ5U3RhdHVz
Lm51bVZhcmlhbnRzKCkgPT0gMSk7CisgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGdldEJ5
U3RhdHVzWzBdOworCisgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJh
c2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOworICAgIGlmICghbG9hZGVkVmFsdWUpIHsK
KyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2
YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNl
LCBudWxscHRyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoVU5MSUtFTFko
bV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5u
b3RpY2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgQVNTRVJUKCF2YXJpYW50LmNhbGxMaW5rU3Rh
dHVzKCkpOworICAgIGlmICh2YXJpYW50LmludHJpbnNpYygpID09IE5vSW50cmluc2ljKQorICAg
ICAgICBzZXQoZGVzdGluYXRpb24sIGxvYWRlZFZhbHVlKTsKK30KKwogdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24s
IE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cyBkZWxldGVCeVN0YXR1cywgRUNNQU1v
ZGUgZWNtYU1vZGUpCkBAIC02MzQ1LDYgKzY0MjMsNDEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1
dF9zZXR0ZXJfYnlfdmFsKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X3ByaXZh
dGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKKyAgICAgICAgICAgIE5v
ZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUqIHByb3Bl
cnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgYm9vbCBjb21waWxl
U2luZ2xlSWRlbnRpZmllciA9IGZhbHNlOworCisgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRC
eVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRT
dGFjaywgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIg
PSAwOworICAgICAgICAgICAgaWYgKCFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAmJiAh
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkVHlwZSkKKyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsK
KworICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBnZXRCeVN0YXR1cy5zaW5nbGVJZGVudGlm
aWVyKCk7CisgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRl
bnRpZmllci51aWQoKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlz
U3ltYm9sQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9
IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0
eSk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb21w
aWxlU2luZ2xlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBoYW5kbGVHZXRQcml2YXRlTmFt
ZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50
aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lLCBPcEluZm8oKSwg
T3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgbV9l
eGl0T0sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIG5vZGUp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3ByaXZhdGVf
bmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlbF9ieV9pZDogewogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigp
OwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiNWIxMTY2Nzg0YjczMWNh
NDU0N2UxOTc2Y2Y5OWMwZDY1MjFmY2MyLi4zZjM3M2YzZjhkMDY1MGI5MTUzYzNkZDIwMzMwZWY4
MTc2NTdjNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApA
QCAtNjczLDYgKzY3Myw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRT
ZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0UHJpdmF0
ZU5hbWVCeUlkOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRl
TmFtZUJ5SWQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggNjc3
ZjY0Y2JjOWMxMGQ2ZDY4MGRlYzQ3NjllOGU0YzNmMjNkM2Y5YS4uZWJhYmFjMTFkOTU5YmVjYTlm
MzBkZDEyN2M2ODBjZTBhM2VhMmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTU5OSw3ICs1OTksOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2Fz
ZSBHZXRCeUlkRGlyZWN0Rmx1c2g6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWQ6Ci0gICAgICAg
ICAgICBjYXNlIEdldEJ5SWRGbHVzaDogeworICAgICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6
CisgICAgICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDogewogICAgICAgICAgICAgICAg
IEVkZ2UgY2hpbGRFZGdlID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICAgICAgTm9kZSog
Y2hpbGQgPSBjaGlsZEVkZ2Uubm9kZSgpOwogICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNTEyZjkzYzZhMzEzNmQ4MmMzZGI5Yzc4
ZjRlNzRjYWQwNjYxYTczZi4uMjQyN2QyMDhiZTM2NmIzYzRlOTUyZjIxMzYzNWMwNTU4YmVjZjA5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzI0LDYgKzMy
NCw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1
dFNldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZh
dGVOYW1lQnlJZDoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6
CiAgICAgY2FzZSBSZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggYWNlM2YxNzk5NzUzYWYyN2NmYjY5YTY4YTkwNjlmMTVmOTJmNmU2
Yy4uZDY3ZTU3ODlkYWRhNDNkMmUyMDA1MjM2MGIwMzYzY2M5MDRiYTc3YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzgwLDYgKzE3ODAsMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2Fz
ZSBHZXRQcml2YXRlTmFtZToKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKworICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNDYWNoZWFibGVJZGVudGlmaWVyKCkpCisg
ICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6IHsKICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCmluZGV4IDA0ZTAyNWFiMmYxMWJlMjg2NTZhNTliNTcxMjY1MGNmNTg3ZDNi
YjUuLjg5N2I5OTllOTU0NGUyOWNmMDA2ZjlkODZjNDI3ZTU2OTMzZDVkZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01OTcsNyArNTk3LDcgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgY29udmVydFRvR2V0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEsIEVk
Z2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0
QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5SWREaXJlY3QgfHwg
bV9vcCA9PSBHZXRCeUlkRGlyZWN0Rmx1c2ggfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zmc2V0KTsK
KyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8
fCBtX29wID09IEdldEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0Rmx1c2ggfHwg
bV9vcCA9PSBHZXRQcml2YXRlTmFtZUJ5SWQgfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zmc2V0KTsK
ICAgICAgICAgbV9vcEluZm8gPSAmZGF0YTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQxKHN0
b3JhZ2UpOwogICAgICAgICBjaGlsZHJlbi5zZXRDaGlsZDIoYmFzZSk7CkBAIC02MDcsNyArNjA3
LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29udmVydFRvTXVsdGlHZXRCeU9mZnNldChN
dWx0aUdldEJ5T2Zmc2V0RGF0YSogZGF0YSkKICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IEdldEJ5
SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0Rmx1c2gpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9
PSBHZXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdEZsdXNoIHx8IG1fb3AgPT0g
R2V0UHJpdmF0ZU5hbWVCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBj
aGlsZDEoKS5zZXRVc2VLaW5kKENlbGxVc2UpOwogICAgICAgICBtX29wID0gTXVsdGlHZXRCeU9m
ZnNldDsKQEAgLTEwODIsNiArMTA4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBHZXRCeUlk
V2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdDoKICAgICAgICAgY2FzZSBHZXRC
eUlkRGlyZWN0Rmx1c2g6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAg
ICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgSW5CeUlkOgogICAgICAgICBjYXNlIFB1
dEJ5SWQ6CkBAIC0xNzY2LDYgKzE3NjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVHJ5R2V0
QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhU
aGlzOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZh
dGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNlIERpcmVjdENhbGw6
CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVkQ2FsbGVyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGNjNGZmYmVhZDY4ZWIwMmE1ODE2ZWFiYjU1YzRiOTEy
MDk1MDE5MjMuLjgxODY3OGFjZGExNzM4OTU2ODk1NjNmMWFmZWY0YmJkNDBlZWVjOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI0Miw2ICsyNDIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTnVrZVN0cnVjdHVyZUFu
ZFNldEJ1dHRlcmZseSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrQXJyYXks
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0FycmF5T3JFbXB0eSwgTm9kZU11
c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldFByaXZhdGVOYW1lLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgLyogVGhpcyBjaGVja3MgaWYgdGhlIGVk
Z2UgaXMgYSB0eXBlZCBhcnJheSBhbmQgaWYgaXQgaXMgbmV1dGVyZWQuICovIFwKICAgICBtYWNy
byhDaGVja05ldXRlcmVkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXJyYXlpZnks
IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggZmY1NDM4YWFh
NjlkNjc3MzUyOTI0NTUyNTBkMTExZWRkNzQ2ZTVkMy4uOTE0NTc2MzUyN2YxMjkyNDY5YjU5Mzg0
MDIxMDU4NmU4YTZjZGVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTg3NSw2ICs4NzUs
OCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0
QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKKyAgICAgICAgY2FzZSBH
ZXRQcml2YXRlTmFtZToKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAg
ICAgICAgY2FzZSBDYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAppbmRleCA4M2Q0YzIyNjBlYmY2MzZhMjM2ZjY3ZTA2YjY4NTBlOWI0NjViMDMwLi45
MDM5MDM2NjQxZjU0ZGU3ZjZiOTZlOGEwMWMwZThmMDY2NGUxNzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI5LDYgKzUyOSw4IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNl
IFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2Ug
R2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBE
ZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAg
IGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCmluZGV4IDE0MGJhOWU5NDM5NzU4YTU2MzIwOWRjNjcyOWQ4YTA0YzYxMjAz
N2EuLjViYWE5ODdiNDZhNmIzOGM2ZWU4NGQ1YTc0MDlkZjFiZDg4M2M3MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNDY4LDYg
KzM0NjgsMTA5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbEZvck9iamVj
dFdpdGhTeW1ib2woTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWUoTm9k
ZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+aGFzQ2FjaGVhYmxlSWRlbnRpZmllcigpKQorICAg
ICAgICByZXR1cm4gY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChub2RlKTsKKworICAgIHN3aXRj
aCAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIENlbGxVc2U6
IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxk
KG5vZGUsIDApKTsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywg
bV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CisKKyAgICAgICAgY29tcGlsZUdldFByaXZhdGVOYW1l
QnlWYWwobm9kZSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpLCBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocHJvcGVydHkuZ3ByKCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRo
aXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKworICAgICAgICBjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChub2RlLCBiYXNlLmpzVmFsdWVSZWdzKCksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShwcm9wZXJ0eS5ncHIoKSkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJC
YWQgdXNlIGtpbmQiKTsKKyAgICB9Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHByb3BlcnR5KQoreworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9k
ZS0+b3AoKSA9PSBHZXRQcml2YXRlTmFtZSk7CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgp
LCBub2RlLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDEpLnVzZUtpbmQoKSA9PSBTeW1ib2xVc2UpOwor
ICAgIHNwZWN1bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKworICAgIEpTVmFs
dWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1f
aml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5l
ZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IHNsb3dDYXNlczsKKyAgICBjb25zdCBib29sIGJhc2VJc0tub3duQ2VsbCA9IG1fc3Rh
dGUuZm9yTm9kZShtX2dyYXBoLmNoaWxkKG5vZGUsIDApKS5pc1R5cGUoU3BlY0NlbGwpOworICAg
IGlmICghYmFzZUlzS25vd25DZWxsKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbChiYXNlKSk7CisKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2UsIHByb3BlcnR5
LCByZXN1bHQucmVncygpKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9
IHRydWU7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworCisgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgYXV0byBtYWtlU2xvd1BhdGhDYWxs
ID0gWyZdKGF1dG8gYmFzZSkgeworICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAor
ICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwKKyAgICAgICAgICAgIGJhc2UsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5LnBh
eWxvYWRHUFIoKSkpOworICAgIH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoID0gYmFzZUlzS25vd25DZWxsCisgICAgICAgID8gbWFrZVNsb3dQYXRo
Q2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkpCisgICAgICAg
IDogbWFrZVNsb3dQYXRoQ2FsbChiYXNlKTsKKworICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKKworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LnJlZ3MoKSwgbm9kZSwgRGF0YUZvcm1h
dEpTKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJ
ZChOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51c2VL
aW5kKCkpIHsKKyAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgSlNWYWx1ZVJl
Z3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKworICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRU
b1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisKKyAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKworICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CisKKyAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
LCBEYXRhRm9ybWF0SlMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCB1c2Uga2luZCIpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwgRWRnZSYg
Y2hpbGQyLCBFZGdlJiBjaGlsZDMpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJnMSh0
aGlzLCBjaGlsZDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IGYwOGRmZTc2MjcyYWI0NDg1MmJlNDBkMWZkY2NlZDcyZDM4ODIwZjguLmFm
MDQyNmUyODBiMDBkMzE1MzI4ZTk3YWEwYzEwYjdiYzNmMzE4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEyODIsNyArMTI4MiwxMSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRGlyZWN0QXJndW1lbnRzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKE5vZGUqKTsK
LSAgICAKKworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUdldFBy
aXZhdGVOYW1lQnlWYWwoTm9kZSosIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5KTsKKwogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVTa2lwU2NvcGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbE9iamVjdChOb2Rl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCBmYzIyZGFhNDY3NjAyOTYwNTE5NjhiMmY5ZDZiZjJiYzk0NDRjZjE1
Li4xNzRjYzM3NmMwNTJmOWYwMThlY2QzMDcxNjljZmFjNWIxMTg2NzY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAg
LTIyNDEsNiArMjI0MSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6Cisg
ICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZUdldFByaXZhdGVO
YW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5VmFsOiB7
CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNh
c2UgQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA1NzI5OWNmMjdlNGVhY2Iw
MTY2ZTA3ZGNiMzdhMjMyYzUxODIxZTM2Li4zYzYzODEzYWY4NGNiMjlhY2VmNjViMDk2OTRjMDk2
ZTQwZjJlMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKQEAgLTI2MTcsNiArMjYxNywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
R2V0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAg
Y29tcGlsZUdldFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIEdldEJ5VmFsOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkFueVR5cGVkQXJyYXk6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYWM4N2Y2YTVkNmYyNWI4
NDViMGY5OWUwZGIyMTRhNWVmZDE2Yjg4Ni4uYTI2ODllMGMxOTEyNjYwNGRkZGFkZTc2YjRlZTcz
M2RhMmIzNmNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMzk3LDYgKzM5Nyw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBNYXRj
aFN0cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmls
dGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKaW5kZXggMGUyMTc4MmNlYjY2MWEwNzJjNWVhYzY2MzY2OWI5NzRmZTZhOGFhOC4u
MDQxOGIwNGNkZWZlMmY0OTQ3ODU5M2U5NjMwZGZkZmQwYzczZjczOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTQwLDYgKzk0MCwxMiBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAg
IGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21waWxl
R2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFBy
aXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgICAgIGNv
bXBpbGVJbkJ5SWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkzMyw2ICszOTM5LDEzOCBA
QCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCisgICAgTFZh
bHVlIGdldFByaXZhdGVOYW1lKExWYWx1ZSBiYXNlLCBMVmFsdWUgcHJvcGVydHkpCisgICAgewor
ICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21l
UmVnaXN0ZXIocHJvcGVydHkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwor
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgICAgICBSZWZQ
dHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBh
dGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworCisgICAgICAgIFN0YXRlKiBzdGF0
ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBib29sIGJhc2VJc0NlbGwgPSBhYnN0cmFjdFZhbHVl
KG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpOworICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5z
LT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlv
biBjYWxscy4KKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhj
ZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+
anVtcHMoaml0KTsKKworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGV4aXQgZm9yIGNh
bGwgSUMncyBjcmVhdGVkIGJ5IHRoZSBJQyBmb3IgZ2V0dGVycy4gV2UgZG9uJ3QgaGF2ZQorICAg
ICAgICAgICAgICAgIC8vIHRvIGRvIGFueXRoaW5nIHdlaXJkIG90aGVyIHRoYW4gY2FsbCB0aGlz
LCBzaW5jZSBpdCB3aWxsIGFzc29jaWF0ZSB0aGUgZXhpdCB3aXRoCisgICAgICAgICAgICAgICAg
Ly8gdGhlIGNhbGxzaXRlIGluZGV4LgorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKKwor
ICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAg
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAg
ICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOworCisgICAgICAgICAg
ICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUo
CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikp
OworCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CisgICAgICAg
ICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQorICAgICAgICAgICAgICAgICAgICBub3RDZWxsID0g
aml0LmJyYW5jaElmTm90Q2VsbChiYXNlR1BSKTsKKworICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExh
dGVQYXRoKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAg
ICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBub3RDZWxsLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xv
d1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIs
CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1Rv
KGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xv
d1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5r
QnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAg
IH0KKworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lKCkKKyAgICB7CisgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQorICAgICAgICAgICAgc2V0
SlNWYWx1ZShnZXRQcml2YXRlTmFtZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dTeW1i
b2wobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMVmFs
dWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcHJvcGVydHkgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGJhc2VDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAg
ICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgaXNDZWxsKGJhc2UsIHByb3ZlblR5
cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoYmFzZUNlbGxDYXNlKSwgdW5zdXJlKG5vdENl
bGxDYXNlKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oYmFzZUNlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CisKKyAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGNlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoZ2V0UHJpdmF0ZU5hbWUoYmFzZSwgcHJv
cGVydHkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8obm90Q2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2Vs
bFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAgICAgICAgSW50NjQsIG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIG1fb3V0LmNvbnN0SW50UHRyKDApLCBiYXNlLAorICAgICAgICAgICAgICAgIHBy
b3BlcnR5KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lQnlJ
ZCgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBpZiAo
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkKKyAgICAgICAgICAgIHNldEpT
VmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sg
YmFzZUNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJy
YW5jaCgKKyAgICAgICAgICAgICAgICBpc0NlbGwoYmFzZSwgcHJvdmVuVHlwZShtX25vZGUtPmNo
aWxkMSgpKSksIHVuc3VyZShiYXNlQ2VsbENhc2UpLCB1bnN1cmUobm90Q2VsbENhc2UpKTsKKwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhiYXNlQ2Vs
bENhc2UsIG5vdENlbGxDYXNlKTsKKworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJl
c3VsdCA9IG1fb3V0LmFuY2hvcihnZXRCeUlkKGJhc2UsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCisg
ICAgICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMs
CisgICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwKKyAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS5yYXdCaXRzKCkpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisK
KyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAg
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGNlbGxSZXN1bHQsIG5vdENlbGxS
ZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWRXaXRo
VGhpcygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0lDU3RhdHMuaAppbmRleCA5YzJlZTE5MzRlMGVkY2IzODhhMzQ2OTQ2ZWNhYzExZGVmZjFl
MDhjLi45NGQxZjkyNmNmMmFmMTdlYWEyODk0YmNhYTVkZjM1OTdiZTE1ZjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNzIsNyArNzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCiAgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0
aEp1bXApIFwKICAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykgXAotICAgIG1hY3Jv
KE9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpCisgICAgbWFjcm8oT3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1l
QnlJZCkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplKSBc
CisgICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYykKIAogY2xhc3Mg
SUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCAxZjIyZWMxYjY5MDgyMDQ4ZDAwOGVhNDUxMWEzMjBjYjcwZjg1M2MzLi4y
MzY2OTJjODUyOGY5ZjcwMDBiMWNmODU0ODE1NjAwNTUxMzVjZGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIyNjEsNiArMjI2MSwyNCBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9i
amVjdCwgZmllbGROYW1lKTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQ
cml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIElkZW50aWZpZXIgZmllbGROYW1lKQoreworICAgIEFT
U0VSVChmaWVsZE5hbWUuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RD
b2VyY2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOworCisgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworICAgIGJhc2UtPmdldFByaXZhdGVG
aWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2Jh
bE9iamVjdCwgZmllbGROYW1lKTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjI4MCw3ICsyMjk4LDYgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG8KICAgICAgICAgQVNTRVJUKGZpZWxkTmFtZS5pc1N5bWJvbCgp
KTsKIAogICAgICAgICBKU09iamVjdCogYmFzZSA9IGpzQ2FzdDxKU09iamVjdCo+KGJhc2VWYWx1
ZS5hc0NlbGwoKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAgICAgICAgIGJhc2UtPmdl
dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CkBAIC0yMzA2LDEx
ICsyMzIzLDgzIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRl
TmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjCiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgZmllbGROYW1l
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CiAKLSAgICBzdHViSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICBpZiAoc3R1YkluZm8pCisgICAgICAgIHN0dWJJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShn
ZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5h
bWVWYWx1ZSkpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVCeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpKQoreworICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0
cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworCisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVl
LCBmaWVsZE5hbWUpOworCisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQcml2YXRl
TmFtZUJ5SWQsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBmaWVsZE5hbWUsIHRydWUp
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJs
ZUlkZW50aWZpZXIpKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGJhc2UpOworICAgIGF1dG8gZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgaWRlbnRpZmllci51aWQoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsK
KyAgICAgICAgSlNPYmplY3QqIGJhc2UgPSBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFsdWUuYXND
ZWxsKCkpOworCisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgICAgIGJhc2UtPmdldFBy
aXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIExPR19J
QygoSUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgYmFzZVZhbHVlLmNs
YXNzSW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwgdHJ1ZSkpOworCisgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgaWYgKHN0dWJJ
bmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJl
T3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoR2V0QnkoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZv
LCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSkpOworICAgIH0KKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVp
bnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2Up
OworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIElkZW50
aWZpZXIgZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQo
KSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZSk7CisKKyAgICBMT0dfSUMoKElDRXZlbnQ6
Ok9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9P
ck51bGwodm0pLCBmaWVsZE5hbWUsIHRydWUpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDZmMDFlMzY0YmVhMTFjMjc0YjVmOGNiNTg3ZjdjODYyNTIxOTM2ZDguLmI3NWE3
YjEwZTY2YTgyMWU3MDVjMTQ5NDM3MTA3ZTE1NjA2MTYwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNjksNiArMjY5LDkgQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgQ2FsbEZyYW1lKiwgKEpT
R2xvYmFsT2JqZWMKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2
YXRlTmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRG
aWVsZE5hbWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRGaWVsZE5hbWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVCeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSwgdWludHB0cl90KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBl
LCBjaGFyKiwgKFZNKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMTVkOWE4YjRjZTEzY2MzMDlh
MjVkMDAzZmNjZGNhYjBkYzIyMWVlZC4uMDc3MTE2MWMxNWM5ZTE3NTkyZDY1YjZkYWE4MTRiYWQy
ZDNhMzYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xNjUsNiAr
MTY1LDggQEAgaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVP
cHRpbWl6aW5nR2V0QnlGdW5jdGlvbihHZXRCeUtpbmQKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldEJ5VmFsT3B0aW1pemU7CiAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgogICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICBjYXNlIEdl
dEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVCeUlkT3B0aW1pemU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CkBAIC0xODQsNiArMTg2LDggQEAgaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZCBraW5kKQogICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljOwogICAgIGNhc2UgR2V0QnlLaW5kOjpQ
cml2YXRlTmFtZToKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lOworICAg
IGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgIHJldHVybiBvcGVyYXRp
b25HZXRQcml2YXRlTmFtZUJ5SWQ7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CkBAIC0yMDMsNyArMjA3LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAg
ICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOwogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwot
ICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRl
TmFtZTsKKyAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09IEdldEJ5S2luZDo6
UHJpdmF0ZU5hbWUgfHwga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDsKIAogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaAppbmRleCAwODNhM2Q1ZDY4NGNhYmRmYjE0Y2NhZWI3NDVmZWM3NjNk
ZmJjYTIxLi41ZGQyMGM2MzZhMDUxNjg3ZDkxNmU4MGFiNzgzYjBlOWU2NmQzMWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDAsNiArNDAsNyBAQCBlbnVtIGNsYXNzIEdl
dEJ5S2luZCB7CiAgICAgV2l0aFRoaXMsCiAgICAgRGlyZWN0LAogICAgIFByaXZhdGVOYW1lLAor
ICAgIFByaXZhdGVOYW1lQnlJZCwKIH07CiAKIGVudW0gY2xhc3MgRGVsQnlLaW5kIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDJlMTliMDhkZjk2
ZjdlMDI3MWUyZWM3MDNkMTRlMzQ1MDIxMDM3MjYuLjQ4NjhhNzA4OTgyNDAzMjdmYTI5ZGNhYjBh
YmY1NzQ2ZGUyZWQ3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaApAQCAtNTcwLDcgKzU3MCw3IEBAIGVudW0gRXhwZXJpbWVudGFsT3B0aW9uRmxhZ3Mg
ewogfTsKIAogI2RlZmluZSBGT1JfRUFDSF9KU0NfRVhQRVJJTUVOVEFMX09QVElPTih2KSBcCi0g
ICAgdih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIExMSW50QW5kQmFzZWxpbmVPbmx5LCAiaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKKyAgICB2KHVzZVByaXZhdGVDbGFz
c0ZpZWxkcywgU3VwcG9ydHNGVEwgfCBTdXBwb3J0c0RGRywgImh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjc4NCIpCiAKIGNvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpT
Q09wdGlvbnMoKQogewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBmMjA2NWZhNWI2NWU5YTE4ZmI5ZTFmNTBiZDI5M2MyOGZjMjU0OTVjLi4w
ZjQzYWQwNzAxYTBhY2JiZmI5NTkwZWNkZDg2OWRiYjYzNjkxODhjIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDIwLTEwLTIwICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0pTQ10gc3VwcG9ydCBvcF9nZXRfcHJpdmF0ZV9uYW1lIGluIERGRyBhbmQgRlRMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ4NjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qczog
QWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3Bv
bHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
ZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtZ2VuZXJpYy5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLW9zci1iYWQtaWRlbnRpZmllci5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9z
ci1iYWQtaWRlbnRpZmllci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1nZXQtcHJp
dmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLXN0cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LXZhbC1nZW5lcmljLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGku
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3Rh
bnQtaWRlbnQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdp
dGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZ2V0LXByaXZh
dGUtbmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanM6IEFkZGVkLgorCiAyMDIwLTEwLTE5ICBB
bGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURM
XSAlSW50ZXJmYWNlJS5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIGJlIGRlZmluZWQgb24g
W1tTZXRdXSByZWNlaXZlcgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQt
cHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWQ4MTE5NTllN2VmNDM3YmZiYWI0OTkzOGEx
ZGE1ZTA1MTcxYjZjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKQEAg
LTAsMCArMSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIikKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgY29uc3RydWN0b3IoaSkg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IGk7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMoInRlc3QiKTsKK2ZvciAobGV0IGkgPSAwOyBp
IDwgNTAwMDAwMDsgaSsrKSB7CisgICAgaWYgKGMuZ2V0RmllbGQoKSAhPT0gInRlc3QiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHlt
b3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjA0MWU4MmE2ZjhkNzI3MWZjNjgzMWQyZTM5NDZkNGIzZDk2MTc0MgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3Bv
bHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2NsYXNzIEMgewor
ICAgICNmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxk
ID0gdmFsdWU7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xl
dCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAwOworYzEuc2V0RmllbGQoImEiKTsKKworbGV0IGMy
ID0gbmV3IEMoKTsKK2MyLmJhciA9IDA7CitjMi5zZXRGaWVsZCgiYiIpOworCitsZXQgYzMgPSBu
ZXcgQygpOworYzMuYmF6ID0gMDsKK2MzLnNldEZpZWxkKCJjIik7CisKK2xldCBhcnIgPSBbYzEs
IGMyLCBjM107CitsZXQgdmFsdWVzID0gWyJhIiwgImIiLCAiYyJdOworZm9yIChsZXQgaSA9IDA7
IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBpZiAoYXJyW2kgJSBhcnIubGVuZ3RoXS5nZXRGaWVs
ZCgpICE9PSB2YWx1ZXNbaSAlIHZhbHVlcy5sZW5ndGhdKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoInVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFl
ODQ0MTM5OTZkNWI4NjkyMTg3Y2ZkMzk2NTc3NmM5MjZlMGViOAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMKQEAg
LTAsMCArMSw3NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVy
cz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVk
IHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRQ
cml2YXRlTmFtZUJ5SWQuIEdldEJ5SWQKKy8vIHdpbGwgbmV2ZXIgT1NSIGhlcmUgZHVlIHRvIGJh
ZCBzdHJ1Y3R1cmVzLCBidXQgd2lsbCBpbnN0ZWFkIHJlcGF0Y2ggdG8gdGhlIGdlbmVyaWMgY2Fz
ZS4KKworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAg
ICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9
IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9u
LCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFs
c2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0
cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5u
YW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhy
ZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRo
cm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9Owor
CitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIGlmIChpICYgMikg
CisgICAgICAgICAgICB0aGlzLmNvbW1vbkV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBpZiAo
aSAmIDQpCisgICAgICAgICAgICB0aGlzLm1lZ2FFeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAg
aWYgKGkgPiAxMDAwMCkgeworICAgICAgICAgICAgaWYgKGkgJiAxKQorICAgICAgICAgICAgICAg
IHRoaXMuc3VwZXJXaGF0ZXZlciA9IHRydWU7CisgICAgICAgIH0KKworICAgIH0KK30KKworY2xh
c3MgQyBleHRlbmRzIEJhc2UgeworICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIGNvbnN0cnVj
dG9yKGkpIHsKKyAgICAgICAgc3VwZXIoaSk7CisgICAgICAgIGlmIChpID4gNTAwMCkKKyAgICAg
ICAgICAgIHRoaXMuZXh0cmFTdHVmZiA9IHRydWU7CisgICAgICAgIGlmIChpID09PSA5OTk5KQor
ICAgICAgICAgICAgdGhpcy5tb3JlU3R1ZmYgPSB0cnVlOworICAgIH0KKworICAgIHNldEZpZWxk
KHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkg
eworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90
b3R5cGUuY29uc3RydWN0b3IpOworbm9ERkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9G
VEwoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0Rmll
bGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDIwMDAwOyArK2kpIHsKKyAgICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2VydC5l
cXVhbHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsK
KyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IGMg
PSBuZXcgQygxMDApOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IGMuZ2V0RmllbGQu
Y2FsbCh7fSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5h
bWUtYnktaWQtb3NyLWJhZC1pZGVudGlmaWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1w
cml2YXRlLW5hbWUtYnktaWQtb3NyLWJhZC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NGM5
NWQyYjFlMzRhMjY5Mjg4NDBlYzY4NDI3MzJkZjMxNzE0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC1vc3ItYmFkLWlkZW50aWZp
ZXIuanMKQEAgLTAsMCArMSw3NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBD
b252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUg
aW50byBHZXRQcml2YXRlTmFtZUJ5SWQsIGFuZCB0aGVuIE9TUkV4aXQKKy8vIGZyb20gZ2V0Rmll
bGQoKSBkdWUgdG8gYSBDaGVja0lzQ29uc3RhbnQgZmFpbHVyZSB3aGVuIGEgZGlmZmVyZW50IGlk
ZW50aWZpZXIgaXMgdXNlZC4KKworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9u
IChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVu
Y3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0
aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cg
YSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dg
KTsKKyAgICB9Cit9OworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAg
ICAgIGlmIChpICYgMSkKKyAgICAgICAgICAgIHRoaXMuZGlmZmVyZW50U3RydWN0dXJlID0gYGV4
dHJhJHtpfWA7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xh
c3MgQyBleHRlbmRzIEJhc2UgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAg
ICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAg
fQorICAgIAorICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNm
aWVsZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJv
dG90eXBlLnNldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKKyAg
ICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQu
ZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7
CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBD
MiA9IGZhY3RvcnlDbGFzcygpOyAvLyBpbnZhbGlkYXRlIGZpcnN0IHZlcnNpb24gb2Ygc2V0Rmll
bGQgZHVlIHRvIFNjb3BlIGludmFsaWRhdGlvbiBwb2ludAorCisvLyBUcmlnZ2VycyBuZXcgdmVy
c2lvbiB3aXRob3V0IGZvbGRpbmcgZ2V0X2Zyb21fc2NvcGUKK2ZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFscyhj
LmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFz
c2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgYzIgPSBuZXcg
QzIoKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzIuZ2V0
RmllbGQuY2FsbChuZXcgQygpKTsgLy8gdHJpZ2dlciBPU1IgZXhpdCBkdWUgdG8gYmFkIGNvbnN0
YW50IHZhbHVlCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0
ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnkt
aWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGZkYzRiOWIyZmZiZDllNjA5YTY4NDBiYTczYzIyZDQwZjA2YWY4
MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1l
LWJ5LWlkLmpzCkBAIC0wLDAgKzEsOTggQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5z
dXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisv
LyBXaXRoIG1hbnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0ZXN0IGNo
ZWNrcyB0aGUgR2V0UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJlZHVjaW5n
IHRvIEdldEJ5T2Zmc2V0IGlzIG5vdCBwb3NzaWJsZS4KKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIs
IG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9u
IEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1
YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwg
YGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhy
b3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vy
cm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMg
dGhyb3duLmApOworICB9Cit9KTsKKworCitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgewor
ICAgIGE6IDEsCisgIH0sCisgIHsKKyAgICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAg
ICBjOiAxLAorICAgIGQ6IDIsCisgICAgYTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAg
ejogMSwKKyAgICBhOiAyLAorICAgIGI6IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6
IDEsCisgICAgZDogMiwKKyAgICB6OiAzLAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKKyAg
eworICAgIGc6IDEsCisgICAgYjogMiwKKyAgICBkOiAzLAorICAgIHE6IDQsCisgICAgeDogNSwK
KyAgICBkOiA2LAorICB9CitdOworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKGkpIHsKKyAg
ICBpZiAoaSA8IDEwMCkKKyAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICYg
M10pOworICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICUgYmFzZXMubGVuZ3Ro
XSk7CisgIH0KK30KK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZhdGUgPSAicHJpdmF0
ZSI7CisgIGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9Cit9Citub0lubGlu
ZShDLmNvbnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5jb25zdHJ1
Y3Rvcik7Citub0ZUTChDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKK25vSW5saW5lKEMucHJvdG90
eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZh
dGU7CisKK2Z1bmN0aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2Fs
bChvKSwgInByaXZhdGUiKTsKK30KKwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDAp
LCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kp
IHsKKyAgdGVzdChuZXcgQyhpKSk7CisgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7Cit9
Cithc3NlcnQudGhyb3dzKCgpID0+IHsKKyAgdGVzdCh7fSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtaWRlbnRp
Zmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1v
c3ItYmFkLWlkZW50aWZpZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczMjBhZjZjMDRiN2VkNzlkOGU5ZDlj
ZjYyZTE2ZmQzMzAxODhjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1n
ZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLWlkZW50aWZpZXIuanMKQEAgLTAsMCAr
MSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dy
YW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRCeU9mZnNl
dCwgYW5kIHRoZW4gT1NSRXhpdAorLy8gZnJvbSBnZXRGaWVsZCgpIGR1ZSB0byBhIENoZWNrSXND
b25zdGFudCBmYWlsdXJlIHdoZW4gYSBkaWZmZXJlbnQgaWRlbnRpZmllciBpcyB1c2VkLgorCits
ZXQgYXNzZXJ0ID0geworICAgIGVxdWFsczogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQ6ICR7ZX0gYnV0IGdv
dDogJHthfWApOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0
b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1
dCBpdCB0aHJldzogJHtlfWApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAk
e2V4Y2VwdGlvbi5uYW1lfSBidXQgZGlkIG5vdCB0aHJvd2ApOworICAgIH0KK307CisKK2Z1bmN0
aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rl
c3QnOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVs
ZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbm9JbmxpbmUoQy5w
cm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
KyAgICBub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZp
ZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsg
aSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOyAvLyBpbnZhbGlkYXRlIGZpcnN0IHZl
cnNpb24gb2Ygc2V0RmllbGQgZHVlIHRvIFNjb3BlIGludmFsaWRhdGlvbiBwb2ludAorCisvLyBU
cmlnZ2VycyBuZXcgdmVyc2lvbiB3aXRob3V0IGZvbGRpbmcgZ2V0X2Zyb21fc2NvcGUKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28n
ICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisK
K2xldCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgp
IHsKKyAgICBjMi5nZXRGaWVsZC5jYWxsKG5ldyBDKCkpOyAvLyB0cmlnZ2VyIE9TUiBleGl0IGR1
ZSB0byBiYWQgY29uc3RhbnQgdmFsdWUKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
ZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0dXJlLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0
dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM1OTc3YjFhYWZiZDU2Njc2NWQzOTZjMjY4OTE3NWY1M2RiZTBl
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFt
ZS1ieS1vZmZzZXQtb3NyLWJhZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw2MiBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBj
b21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRCeU9mZnNldCwgYW5kIHRoZW4gT1NS
RXhpdAorLy8gZnJvbSBnZXRGaWVsZCgpIGR1ZSB0byBhIENoZWNrU3RydWN0dXJlIGZhaWx1cmUK
KworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAg
aWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1
dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1l
fSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdF
eGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93
IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitj
bGFzcyBDIHsKKyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7Cisg
ICAgICAgIGlmIChpID4gNTAwMCkKKyAgICAgICAgICAgIHRoaXMuZXh0cmFTdHVmZiA9IHRydWU7
IC8vIEludmFsaWRhdGUgbG9vcCBkdWUgdG8gc3RydWN0dXJlIGNoYW5nZQorICAgICAgICBpZiAo
aSA9PT0gOTk5OSkKKyAgICAgICAgICAgIHRoaXMubW9yZVN0dWZmID0gdHJ1ZTsgLy8gVHJpZ2dl
ciBhIEJhZENhY2hlIE9TUiBvbiBnZXRfcHJpdmF0ZV9uYW1lCisgICAgfQorCisgICAgc2V0Rmll
bGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnBy
b3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citu
b0ZUTChDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5zZXRG
aWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0
LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkp
OworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCisvLyBD
aGVjayBzZW1hbnRpYyBmYWlsdXJlIHN0aWxsIGZ1bmN0aW9ucworbGV0IGMgPSBuZXcgQygxMDAp
OworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IGMuZ2V0RmllbGQuY2FsbCh7fSkpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQxYmE0MmRhYzU2ZmQ1MWNmYzAyZTIwZTRlYmQ2OTkyZDk0YmVmNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZz
ZXQuanMKQEAgLTAsMCArMSw2MiBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdp
dGggbm8gaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgR2V0UHJpdmF0ZU5hbWUgaXMg
Y29udmVydGVkIHRvIEdldEJ5T2Zmc2V0CisvLyBkdXJpbmcgYnl0ZWNvZGUgcGFyc2luZy4gV2Ug
dGVzdCB0aGF0IGl0J3Mgc3RpbGwgc2VtYW50aWNhbGx5IHZhbGlkLgorCitmdW5jdGlvbiBhc3Nl
cnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBB
c3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwg
eworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4
cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9
LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24i
KQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRo
cm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0
aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitjbGFzcyBDIHsKKyAgI3ByaXZhdGUgPSAi
cHJpdmF0ZSI7CisgIGdldFByaXZhdGUobykgeyByZXR1cm4gby4jcHJpdmF0ZTsgfQorICBjb25z
dHJ1Y3RvcihpKSB7CisgICAgaWYgKGkgPT09IDk5NSkKKyAgICAgIHJldHVybiB7fTsKKyAgfQor
fQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRM
KEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBn
ZXRQcml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7
CisgIHJldHVybiBnZXRQcml2YXRlKG8pOworfQorbmV2ZXJJbmxpbmVGdW5jdGlvbih0ZXN0KTsK
KworLy8gV2FybXVwCit0ZXN0KG5ldyBDLCAwKTsKK3Rlc3QobmV3IEMsIDApOwordGVzdChuZXcg
QywgMCk7CisKK3ZhciBpOworZm9yICh2YXIgaiA9IDA7IGogPCAyOyArK2opIHsKKyAgYXNzZXJ0
LnRocm93cygoKSA9PiB7CisgICAgZm9yIChpID0gMDsgaSA8IDIwMDA7ICsraSkgeworICAgICAg
YXNzZXJ0LmVxdWFscyh0ZXN0KG5ldyBDKGkpKSwgInByaXZhdGUiKTsKKyAgICAgIG9wdGltaXpl
TmV4dEludm9jYXRpb24odGVzdCk7CisgICAgfQorICB9LCBUeXBlRXJyb3IpOworCisgIC8vIFdl
IHNob3VsZCB0aHJvdyBvbiBpdGVyYXRpb24gOTk1LCBiZWNhdXNlIHRoaXMgd2lsbCByZXN1bHQg
aW4gYW4gaW52YWxpZCBsb2FkLgorICBhc3NlcnQuZXF1YWxzKGksIDk5NSk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12YWwtZ2VuZXJpYy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LXZhbC1nZW5lcmljLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY2MjU3NjE1OTg4NTA5MWQ4ZjU0NTRhYTJkNmYzY2RhM2MyNjNiY2EKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12
YWwtZ2VuZXJpYy5qcwpAQCAtMCwwICsxLDc1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxs
b3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIp
CisKKy8vIENvbnZvbHV0ZWQgcHJvZ3JhbSB3aGljaCB3aWxsIGNvbXBpbGUgdHVybiBHZXRQcml2
YXRlTmFtZSBpbnRvIEpJVEdldEJ5VmFsIElDLiBHZXRCeVZhbAorLy8gd2lsbCBuZXZlciBPU1Ig
aGVyZSBkdWUgdG8gYmFkIHN0cnVjdHVyZXMsIGJ1dCB3aWxsIGluc3RlYWQgcmVwYXRjaCB0byB0
aGUgZ2VuZXJpYyBjYXNlLgorCitsZXQgYXNzZXJ0ID0geworICAgIGVxdWFsczogZnVuY3Rpb24g
KGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQ6ICR7ZX0gYnV0IGdvdDogJHthfWApOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5j
dGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBh
ICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBpdCB0aHJldzogJHtlfWApOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgZGlkIG5vdCB0aHJvd2Ap
OworICAgIH0KK307CisKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICAg
ICAgaWYgKGkgJiAxKQorICAgICAgICAgICAgdGhpcy5tZWdhQ29tbW9uRXh0cmFTdHVmZiA9IHRy
dWU7CisgICAgICAgIGlmIChpICYgMikgCisgICAgICAgICAgICB0aGlzLmNvbW1vbkV4dHJhU3R1
ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSAmIDQpCisgICAgICAgICAgICB0aGlzLm1vcmVFeHRy
YVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkgJiA4KQorICAgICAgICAgICAgdGhpcy5zb011
Y2hFeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsK
KyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIHN1
cGVyKGkpOworICAgICAgICBpZiAoaSA+IDUwMDApCisgICAgICAgICAgICB0aGlzLmV4dHJhU3R1
ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSA9PT0gOTk5OSkKKyAgICAgICAgICAgIHRoaXMubW9y
ZVN0dWZmID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMu
I2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsK
K25vREZHKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmNvbnN0
cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vRlRMKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7
CisgICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwg
J3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhj
LmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBjID0gbmV3IEMoMTAwKTsKK2Fzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiBjLmdldEZpZWxkLmNhbGwoe30pKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdjMTc4
OTgzZmRlNjQyNjUyZGYzMzgzYmFhMTY4NzFjM2Y4OTVkMAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsMTA3
IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2Ui
KQorCisvLyBXaXRoIG1hbnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0
ZXN0IGNoZWNrcyB0aGUgR2V0UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJl
ZHVjaW5nIHRvIEdldEJ5T2Zmc2V0IGlzIG5vdCBwb3NzaWJsZS4KKy8vIFRoaXMgdGVzdCBkaXNh
YmxlcyBpbmxpbmluZyBsb2FkcyB0byBHZXRCeU9mZnNldCBpbiBvcmRlciB0byBwcmV2ZW50IHJl
ZHVjaW5nIHRoZSBHZXRQcml2YXRlTmFtZUJ5SWQgdG8gTXVsdGlHZXRCeU9mZnNldCBpbiB0aGUK
Ky8vIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLiBJdCBpcyBjb25jZWl2YWJseSBwb3NzaWJsZSBm
b3IgdGhpcyBzY2VuYXJpbyB0byBiZSBlbmNvdW50ZXJlZCB3aXRob3V0IGRpc2FibGluZyBpbmxp
bmUgYWNjZXNzLgorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4
cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7
Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0g
YnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgewor
ICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBl
b2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9m
IGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJl
dyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVj
dGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOwor
CitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAg
ICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAg
YTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6
IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAz
LAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKKyAgeworICAgIGc6IDEsCisgICAgYjogMiwK
KyAgICBkOiAzLAorICAgIHE6IDQsCisgICAgeDogNSwKKyAgICBkOiA2LAorICB9LAorICB7Cisg
ICAgejogMSwKKyAgICBxOiAyLAorICAgIGY6IDMsCisgICAgeTogNCwKKyAgICBhOiA1LAorICAg
IDA6IDYsCisgICAgazogNywKKyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3Io
aSkgeworICAgIGlmIChpIDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJh
c2VzW2kgJiAzXSk7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJSBiYXNl
cy5sZW5ndGhdKTsKKyAgfQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0ZSA9
ICJwcml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KK30K
K25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChD
LmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQg
Z2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3Qobykg
eworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30KKwor
dGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDAp
OworZm9yICh2YXIgaSA9IDA7ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwgMTAwMDA7ICsraSkg
eworICB0ZXN0KG5ldyBDKGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30K
K2Fzc2VydC50aHJvd3MoKCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMgYi9KU1Rl
c3RzL3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzU3ZDM2NGU1OGNhMjVlNDVjNjQxYTJjZTVhYmI3YWVhMTU5YzgwNgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1t
dWx0aS5qcwpAQCAtMCwwICsxLDg3IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8g
V2l0aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCB3aWxs
IGZhaWwgdG8gZ2VuZXJhdGUgR2V0QnlPZmZzZXQgZHd1cmluZyBERkdCeXRlQ29kZVBhcnNpbmcu
CisvLyBEdXJpbmcgRlRMIGNvbXBpbGF0aW9uLCBpdCB3aWxsIHRyeSBhZ2FpbiBpbiBERkdDb25z
dGFudEZvbGRpbmdQaGFzZS4KK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlm
ICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2Fn
ZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVj
dGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBl
KSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYg
KHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3Rh
bmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0
IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBg
ZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQor
fSk7CisKK2xldCBiYXNlcyA9IFsKKyAgeworICB9LAorICB7CisgICAgYTogMSwKKyAgfSwKKyAg
eworICAgIGI6IDEsCisgICAgYTogMiwKKyAgfSwKKyAgeworICAgIGM6IDEsCisgICAgZDogMiwK
KyAgICBhOiAzLAorICB9LAorICB7CisgIH0sCisgIHsKKyAgICB6OiAxLAorICAgIGE6IDIsCisg
ICAgYjogMywKKyAgICBxOiA0LAorICB9LAorICB7CisgICAgYTogMSwKKyAgICBkOiAyLAorICAg
IHo6IDMsCisgICAgeDogNCwKKyAgICBmOiA1LAorICB9LAorXTsKK2NsYXNzIEJhc2UgeworICBj
b25zdHJ1Y3RvcihpKSB7CisgICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFz
c2lnbih7fSwgYmFzZXNbaSAmIDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFz
ZXNbaSAlIGJhc2VzLmxlbmd0aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7Cisg
ICNwcml2YXRlID0gInByaXZhdGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJp
dmF0ZTsgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9y
KTsKK25vRlRMKEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0
ZSk7CisKK2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rp
b24gdGVzdChvKSB7CisgIGFzc2VydC5lcXVhbHMoZ2V0UHJpdmF0ZS5jYWxsKG8pLCAicHJpdmF0
ZSIpOworfQorCit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChu
ZXcgQygwKSwgMCk7Citmb3IgKHZhciBpID0gMDsgIWlzRmluYWxUaWVyKHRlc3QpICYmIGkgPCAx
MDAwMDsgKytpKSB7CisgIHRlc3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9u
KHRlc3QpOworfQorYXNzZXJ0LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVu
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVu
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYTEyZmJhNzVlZjEzOGMwMGEzYzIwZGU4NzlmMWUxMWVhNTI3MmZj
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRo
LWNvbnN0YW50LWlkZW50LmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10
cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQor
ICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQor
T2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBm
b3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0
cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVy
cm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJv
clR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtl
fWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0
byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworbGV0
IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGlu
aXQoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxk
ID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7
CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBl
LnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJv
dG90eXBlLnNldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxk
KCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTEyZmJhNzVlZjEzOGMwMGEzYzIwZGU4Nzlm
MWUxMWVhNTI3MmZjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZh
dGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDUzIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7Cisg
IGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVz
c2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4
cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JU
eXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
aWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGlu
c3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0g
YnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNl
LCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAg
fQorfSk7CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0
KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlz
LmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAg
c2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0
RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGlu
ZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
Citub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cisg
ICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgp
LCAnZm9vJyArIGkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUt
bmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0
ZS1uYW1lLXdpdGgtZGlmZmVyZW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTFhM2ZkYTJkZTc2
MGJjZWE1MjI2MjFiMDNjZDUyYzNiOTdmM2NjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMKQEAgLTAsMCAr
MSw1NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoZXhw
ciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRp
b24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBl
cXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVk
LCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0
aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAg
ICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7
ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQor
ICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24uYCk7CisgIH0KK30pOworCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisKKyAgICAgICAgc2V0RmllbGQodikgewor
ICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0Rmll
bGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7CisgICAgbm9GVEwoQy5wcm90
b3R5cGUuY29uc3RydWN0b3IpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsK
KyAgICBub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworICAgIAorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKwor
ICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CitsZXQgQzEgPSBj
bGFzc0RlY2xhcmF0aW9uKCk7CitsZXQgQzIgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gaSAlIDIgPyBuZXcgQzEg
OiBuZXcgQzI7CisgICAgYy5zZXRGaWVsZCgndGVzdCcgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxz
KGMuZ2V0RmllbGQoKSwgJ3Rlc3QnICsgaSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411977</attachid>
            <date>2020-10-21 06:14:00 -0700</date>
            <delta_ts>2020-10-21 07:06:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214861-20201021091359.patch</filename>
            <type>text/plain</type>
            <size>73558</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTNjMDFjY2I0Yzc3NjJmMjY0Y2YwZDM5YWNkNzQ3MDJiOWJkMDIzLi4wZTVjNWNjMzMzNjRiZWUx
M2Q2MmZlZTBhNTk4NmEwYWZjNzFjODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMC0xMC0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgb3BfZ2V0X3ByaXZhdGVfbmFtZSBpbiBERkcgYW5k
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
ODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgQWRkcyBE
RkcvRlRMIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUuCisKKyAgICAgICAgRHVyaW5n
IERGRyBieXRlY29kZSBwYXJzaW5nLCB3ZSB3aWxsIGF0dGVtcHQsIGlmIGRlZW1lZCBwb3NzaWJs
ZSBieQorICAgICAgICB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCB0byBvdXRwdXQgYSBHZXRC
eU9mZnNldCBvcGVyYXRpb24uIElmIGEKKyAgICAgICAgc2luZ2xlIHByaXZhdGUgZmllbGQgaWRl
bnRpZmllciBpcyB1c2VkIGluIGFsbCBjYXNlcyAodGhlIGNvbW1vbiBjYXNlKSwKKyAgICAgICAg
YnV0IHRoZXJlIGFyZSB0b28gbWFueSBzdHJ1Y3R1cmUgdmFyaWFudHMsIGEgR2V0UHJpdmF0ZU5h
bWVCeUlkCisgICAgICAgIG9wZXJhdGlvbiBpcyBlbWl0dGVkIGluc3RlYWQuIEZhaWxpbmcgdGhh
dCwgdGhlIEdldFByaXZhdGVOYW1lCisgICAgICAgIG9wZXJhdGlvbiBpcyBwcm9kdWNlZCwgd2hp
Y2ggcHJvZHVjZXMgYSBHZXRCeVZhbCBJQyBsaWtlIGluIHRoZQorICAgICAgICBiYXNlbGluZSBK
SVQuCisKKyAgICAgICAgSW4gRlRMLCBHZXRQcml2YXRlTmFtZUJ5SUQgY2FuIGJlIHJlZHVjZWQg
dG8gW011bHRpXUdldEJ5T2Zmc2V0IGluIHRoZQorICAgICAgICBERkdDb25zdGFudEZvbGRpbmdQ
aGFzZSwgb3IgYSBHZXRCeUlEIElDIHdoZW4gbG93ZXJpbmcgdG8gQjMuCisKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlHZXRCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRG
b2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9H
ZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlHZXRC
eU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FjaGVhYmxlSWRlbnRpZmll
cik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRQcml2YXRlTmFtZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2YXRlTmFt
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcml2
YXRlTmFtZUJ5SWQpOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJv
cHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0
ZUdldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKwogMjAy
MC0xMC0yMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24n
dCBPU1IgZXhpdCB0byBiYyMwIGZvciBGVEwgYXJndW1lbnQgdHlwZSBjaGVja3MgZHVyaW5nIGxv
b3AgT1NSIGVudHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3Rh
dHVzLmNwcAppbmRleCAxNTgwMjFmMzk5MjNmMmMwMjU5YmNiOGZlZGM4NTRiZTZiMzc1ZWMyLi5h
ZGYyMWRlZTc5ZDAzZGNlZjgzNzUzYjQwZjFhZjQ0NmE1ZTkwNDVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTEwOCw2ICsxMDgsMTEg
QEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgdXNp
bmcgTExJbnQgY2FjaGVzIG9yIElDIGluZm9ybWF0aW9uIHRvIHBvcHVsYXRlIEdldEJ5U3RhdHVz
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcy
NDUKKyAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKwog
ICAgIGRlZmF1bHQ6IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDYwNDhjZDA0
MjhlOTM3ZDRkMzM0MDM5NjMwMzQ3YzlkOWI3MmUxNjUuLjg5ZGY0ZDdiMTI4Y2NiYzA0OTZkMTVl
ZGQ2MjY2Y2ZlN2QyMjhjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC00MDQsNiArNDA0LDggQEAgaW5saW5lIGF1dG8g
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKEFjY2Vzc1R5cGUgdHlwZSkgLT4g
ZGVjbHR5cGUoJm8KICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsK
ICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Q6CiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGlt
aXplOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOgogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDIwLDYgKzQyMiw4IEBAIGlubGlu
ZSBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbihBY2Nlc3NUeXBlIHR5cGUp
IC0+IGRlY2x0eXBlKCZvcGVyCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkR2Vu
ZXJpYzsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Q6CiAgICAgICAgIHJldHVy
biBvcGVyYXRpb25HZXRCeUlkRGlyZWN0R2VuZXJpYzsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlk
R2VuZXJpYzsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCA4YjA1ZDVmOTc2MDVlNmU0Yjk4NWVhOTcwZTkxNDk5ODdiYzA0MGQ5Li4xYzM3MjM4YTkwN2M2
OTI1YTk2ZjBiNDQ0NjVhZmE2OWI0ZTdhYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMzQ4
LDYgKzMzNDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBtYWtlSGVhcFRv
cEZvck5vZGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRQcml2YXRlTmFt
ZUJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRGlyZWN0OgogICAgIGNhc2UgR2V0QnlJZERpcmVjdEZs
dXNoOgogICAgIGNhc2UgR2V0QnlJZDoKQEAgLTMzODMsNiArMzM4NCw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0UHJpdmF0
ZU5hbWU6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgR2V0QnlJZFdpdGhU
aGlzOgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggOGU5M2I3YjI2NjRiMmNiMWRlNDZlZmU1
NWI4YWYzYmQ0MDM1M2I4MS4uZTcyMDdlYTgzMjZiMGVmOWM3YmQ4NDI1NzkyOWE2Y2RhM2M3MTk3
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKQEAgLTI0NCw4ICsyNDQsMTEgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgogICAgIHZvaWQgcGFyc2VHZXRCeUlkKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgdm9p
ZCBzaW1wbGlmeUdldEJ5U3RhdHVzKE5vZGUqIGJhc2UsIEdldEJ5U3RhdHVzJik7CiAgICAgdm9p
ZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNw
ZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cywgQWNjZXNzVHlwZSwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZXgpOworICAgIHZvaWQgaGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAorICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIEdldEJ5U3RhdHVzKTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAogICAgICAgICBOb2RlKiBi
YXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5SWRTdGF0
dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKApA
QCAtNDUzMCw5ICs0NTMzLDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OnN0b3JlKE5vZGUqIGJh
c2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFB1dEJ5SWRWYXJpYW4KICAgICByZXR1cm4g
aGFuZGxlUHV0QnlPZmZzZXQoYmFzZSwgaWRlbnRpZmllciwgdmFyaWFudC5vZmZzZXQoKSwgdmFs
dWUpOwogfQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAotICAgIFZpcnR1
YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZSog
YmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLAotICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlIHR5cGUsIEJ5
dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KQordm9pZCBCeXRlQ29kZVBhcnNlcjo6c2ltcGxpZnlH
ZXRCeVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyYgZ2V0QnlTdGF0dXMpCiB7CiAgICAg
Ly8gQXR0ZW1wdCB0byByZWR1Y2UgdGhlIHNldCBvZiB0aGluZ3MgaW4gdGhlIEdldEJ5U3RhdHVz
LgogICAgIGlmIChiYXNlLT5vcCgpID09IE5ld09iamVjdCkgewpAQCAtNDU0OSw2ICs0NTUwLDEz
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGlmIChvaykK
ICAgICAgICAgICAgIGdldEJ5U3RhdHVzLmZpbHRlcihiYXNlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7
CiAgICAgfQorfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAorICAgIFZp
cnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9k
ZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLAorICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlIHR5cGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KQoreworICAgIHNpbXBsaWZ5R2V0QnlTdGF0dXMo
YmFzZSwgZ2V0QnlTdGF0dXMpOwogICAgIAogICAgIE5vZGVUeXBlIGdldEJ5SWQ7CiAgICAgaWYg
KHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCkKQEAgLTQ3MTYsNiArNDcyNCw3NiBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBnZXR0ZXIsIG51bWJlck9m
UGFyYW1ldGVycyAtIDEsIHJlZ2lzdGVyT2Zmc2V0LCAqdmFyaWFudC5jYWxsTGlua1N0YXR1cygp
LCBwcmVkaWN0aW9uKTsKIH0KIAorLy8gQSB2YXJpYW50IG9uIGhhbmRsZUdldEJ5SWQgd2hpY2gg
aXMgbW9yZSBsaW1pdGVkIGluIHNjb3BlCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQ
cml2YXRlTmFtZUJ5SWQoCisgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVz
KQoreworICAgIHNpbXBsaWZ5R2V0QnlTdGF0dXMoYmFzZSwgZ2V0QnlTdGF0dXMpOworCisgICAg
QVNTRVJUKCFnZXRCeVN0YXR1cy5pc0N1c3RvbSgpKTsKKyAgICBBU1NFUlQoIWdldEJ5U3RhdHVz
Lm1ha2VzQ2FsbHMoKSk7CisgICAgaWYgKCFnZXRCeVN0YXR1cy5pc1NpbXBsZSgpIHx8ICFnZXRC
eVN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7
CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJp
dmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFz
ZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGdldEJ5U3Rh
dHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CisgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNG
VEwoKQorICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmcoKQorICAgICAgICAgICAgfHwgZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6
Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBz
ZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2YXRlTmFt
ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBudWxs
cHRyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhZGRUb0dy
YXBoKEZpbHRlckdldEJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0
dXNlcygpLmFkZEdldEJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5U3RhdHVzKSks
IGJhc2UpOworCisgICAgICAgIFZlY3RvcjxNdWx0aUdldEJ5T2Zmc2V0Q2FzZSwgMj4gY2FzZXM7
CisKKyAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IGdldEJ5U3Rh
dHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmludHJpbnNpYygp
ID09IE5vSW50cmluc2ljKTsKKyAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmNvbmRpdGlvblNl
dCgpLmlzRW1wdHkoKSk7CisKKyAgICAgICAgICAgIEdldEJ5T2Zmc2V0TWV0aG9kIG1ldGhvZCA9
IEdldEJ5T2Zmc2V0TWV0aG9kOjpsb2FkKHZhcmlhbnQub2Zmc2V0KCkpOworICAgICAgICAgICAg
Y2FzZXMuYXBwZW5kKE11bHRpR2V0QnlPZmZzZXRDYXNlKCptX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgbWV0aG9kKSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3Jh
cGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKworICAgICAgICAvLyAy
KSBFbWl0IGEgTXVsdGlHZXRCeU9mZnNldAorICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0RGF0YSog
ZGF0YSA9IG1fZ3JhcGgubV9tdWx0aUdldEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0
YS0+Y2FzZXMgPSBjYXNlczsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50
aWZpZXJOdW1iZXI7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoTXVsdGlHZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiks
IGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBJZiB3ZSB1
c2UgdGhlIEdldEJ5U3RhdHVzIGZvciBhbnl0aGluZyB0aGVuIHdlIHNob3VsZCByZWNvcmQgaXQg
YW5kIGluc2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBldmVyeXRoaW5nIGVsc2UgKGxpa2UgdGhl
IEdldEJ5T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdpbGwgZmlsdGVyIHRoZSByZWNvcmRlZAor
ICAgIC8vIEdldEJ5U3RhdHVzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGNvbnN0YW50IGZvbGRlciBh
bHNvIG5lZWRzIHRvIGRvIHRoZSBzYW1lIQorICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkR2V0QnlTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0QnlTdGF0dXMpKSwgYmFzZSk7CisKKyAgICBBU1NF
UlQoZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKKyAgICBHZXRCeUlkVmFyaWFudCB2
YXJpYW50ID0gZ2V0QnlTdGF0dXNbMF07CisKKyAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQo
cHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CisgICAgaWYgKCFs
b2FkZWRWYWx1ZSkgeworICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRU
b0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJl
ZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICBtX2dyYXBoLmNv
bXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CisKKyAgICBBU1NFUlQoIXZhcmlh
bnQuY2FsbExpbmtTdGF0dXMoKSk7CisgICAgaWYgKHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9J
bnRyaW5zaWMpCisgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOworfQorCiB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdpc3Rl
ciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LAogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5
U3RhdHVzLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTYzNDUsNiArNjQyMyw0MSBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfcHV0X3NldHRlcl9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2Fz
ZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOwor
ICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAg
ICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAg
ICBib29sIGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICAgICAgICAgIEdl
dEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFw
LCBtX2ljQ29udGV4dFN0YWNrLCBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciA9IDA7CisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAg
ICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25z
dGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGdldEJ5U3RhdHVz
LnNpbmdsZUlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllcikgewor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZy
b3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZVNpbmdsZUlkZW50
aWZpZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGhhbmRs
ZUdldFByaXZhdGVOYW1lQnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRl
bnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMpOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5h
bWUsIE9wSW5mbygpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKKyAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNldChieXRlY29k
ZS5tX2RzdCwgbm9kZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfcHJpdmF0ZV9uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5
X2lkOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcERlbEJ5SWQ+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1f
YmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI1
YjExNjY3ODRiNzMxY2E0NTQ3ZTE5NzZjZjk5YzBkNjUyMWZjYzIuLjNmMzczZjNmOGQwNjUwYjkx
NTNjM2RkMjAzMzBlZjgxNzY1N2M0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC02NzMsNiArNjczLDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAg
Y2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBj
YXNlIEdldFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAg
ICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAppbmRleCA2NzdmNjRjYmM5YzEwZDZkNjgwZGVjNDc2OWU4ZTRjM2YyM2QzZjlhLi5lYmFi
YWMxMWQ5NTliZWNhOWYzMGRkMTI3YzY4MGNlMGEzZWEyZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNTk5
LDcgKzU5OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3Q6CiAg
ICAgICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNhc2UgR2V0
QnlJZDoKLSAgICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CisgICAgICAgICAgICBjYXNl
IEdldEJ5SWRGbHVzaDoKKyAgICAgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CiAg
ICAgICAgICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAg
ICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1MTJmOTNjNmEz
MTM2ZDgyYzNkYjljNzhmNGU3NGNhZDA2NjFhNzNmLi4yNDI3ZDIwOGJlMzY2YjNjNGU5NTJmMjEz
NjM1YzA1NThiZWNmMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CkBAIC0zMjQsNiArMzI0LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAg
IGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQ
dXRUb0FyZ3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBhY2UzZjE3OTk3NTNhZjI3Y2ZiNjlhNjhh
OTA2OWYxNWY5MmY2ZTZjLi5kNjdlNTc4OWRhZGE0M2QyZTIwMDUyMzYwYjAzNjNjYzkwNGJhNzdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3
ODAsNiArMTc4MCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVO
YW1lQnlJZDoKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
Q2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgICAgICBpZiAoIW5vZGUtPmhhc0NhY2hlYWJsZUlk
ZW50aWZpZXIoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDog
ewogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkp
IHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMDRlMDI1YWIyZjExYmUyODY1NmE1OWI1
NzEyNjUwY2Y1ODdkM2JiNS4uODk3Yjk5OWU5NTQ0ZTI5Y2YwMDZmOWQ4NmM0MjdlNTY5MzNkNWRm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTU5Nyw3ICs1OTcsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9HZXRCeU9mZnNldChTdG9yYWdlQWNjZXNz
RGF0YSYgZGF0YSwgRWRnZSBzdG9yYWdlLCBFZGdlIGJhc2UpCiAgICAgewotICAgICAgICBBU1NF
UlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gR2V0
QnlJZERpcmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVzaCB8fCBtX29wID09IE11bHRp
R2V0QnlPZmZzZXQpOworICAgICAgICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0g
R2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gR2V0QnlJZERpcmVjdCB8fCBtX29wID09IEdldEJ5SWRE
aXJlY3RGbHVzaCB8fCBtX29wID09IEdldFByaXZhdGVOYW1lQnlJZCB8fCBtX29wID09IE11bHRp
R2V0QnlPZmZzZXQpOwogICAgICAgICBtX29wSW5mbyA9ICZkYXRhOwogICAgICAgICBjaGlsZHJl
bi5zZXRDaGlsZDEoc3RvcmFnZSk7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMihiYXNlKTsK
QEAgLTYwNyw3ICs2MDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9NdWx0
aUdldEJ5T2Zmc2V0KE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhKQogICAgIHsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8
IG1fb3AgPT0gR2V0QnlJZERpcmVjdCB8fCBtX29wID09IEdldEJ5SWREaXJlY3RGbHVzaCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRG
bHVzaCB8fCBtX29wID09IEdldEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBHZXRCeUlkRGlyZWN0Rmx1
c2ggfHwgbV9vcCA9PSBHZXRQcml2YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9IGRh
dGE7CiAgICAgICAgIGNoaWxkMSgpLnNldFVzZUtpbmQoQ2VsbFVzZSk7CiAgICAgICAgIG1fb3Ag
PSBNdWx0aUdldEJ5T2Zmc2V0OwpAQCAtMTA4Miw2ICsxMDgyLDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0OgogICAg
ICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFt
ZUJ5SWQ6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBJbkJ5SWQ6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZDoKQEAgLTE3NjYsNiArMTc2Nyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNl
IEdldEJ5VmFsV2l0aFRoaXM6CisgICAgICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CisgICAgICAg
IGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNh
c2UgRGlyZWN0Q2FsbDoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggY2M0ZmZiZWFkNjhlYjAyYTU4
MTZlYWJiNTVjNGI5MTIwOTUwMTkyMy4uODE4Njc4YWNkYTE3Mzg5NTY4OTU2M2YxYWZlZjRiYmQ0
MGVlZWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjQy
LDYgKzI0Miw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhO
dWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oQ2hlY2tBcnJheSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrQXJyYXlP
ckVtcHR5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0UHJpdmF0ZU5hbWUsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRQcml2YXRlTmFt
ZUJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBUaGlzIGNo
ZWNrcyBpZiB0aGUgZWRnZSBpcyBhIHR5cGVkIGFycmF5IGFuZCBpZiBpdCBpcyBuZXV0ZXJlZC4g
Ki8gXAogICAgIG1hY3JvKENoZWNrTmV1dGVyZWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhBcnJheWlmeSwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApp
bmRleCBmZjU0MzhhYWE2OWQ2NzczNTI5MjQ1NTI1MGQxMTFlZGQ3NDZlNWQzLi45MTQ1NzYzNTI3
ZjEyOTI0NjliNTkzODQwMjEwNTg2ZThhNmNkZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApA
QCAtODc1LDYgKzg3NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAg
ICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0Ogor
ICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIEdldFByaXZhdGVOYW1l
QnlJZDoKICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIEdldERp
cmVjdFBuYW1lOgogICAgICAgICBjYXNlIENhbGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDgzZDRjMjI2MGViZjYzNmEyMzZmNjdlMDZiNjg1
MGU5YjQ2NWIwMzAuLjkwMzkwMzY2NDFmNTRkZTdmNmI5NmU4YTAxYzBlOGYwNjY0ZTE3ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01Mjks
NiArNTI5LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1dFNldHRlckJ5
VmFsOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5
SWQ6CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJ
ZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29y
UHJvcGVydHk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMTQwYmE5ZTk0Mzk3NThhNTYzMjA5ZGM2
NzI5ZDhhMDRjNjEyMDM3YS4uNWJhYTk4N2I0NmE2YjM4YzZlZTg0ZDVhNzQwOWRmMWJkODgzYzcx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKQEAgLTM0NjgsNiArMzQ2OCwxMDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsRm9yT2JqZWN0V2l0aFN5bWJvbChOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQ
cml2YXRlTmFtZShOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5oYXNDYWNoZWFibGVJZGVu
dGlmaWVyKCkpCisgICAgICAgIHJldHVybiBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKG5vZGUp
OworCisgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgeworICAg
IGNhc2UgQ2VsbFVzZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBw
cm9wZXJ0eSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKworICAgICAgICBjb21waWxl
R2V0UHJpdmF0ZU5hbWVCeVZhbChub2RlLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5n
cHIoKSksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShwcm9wZXJ0eS5ncHIoKSkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7CisgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOwor
CisgICAgICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKG5vZGUsIGJhc2UuanNWYWx1ZVJl
Z3MoKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHByb3BlcnR5LmdwcigpKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3Jh
cGgoKSwgbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgIH0KK30KKwordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHkpCit7CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBub2RlLT5vcCgpID09IEdldFByaXZhdGVOYW1lKTsKKyAgICBERkdfQVNTRVJU
KG1faml0LmdyYXBoKCksIG5vZGUsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09
IFN5bWJvbFVzZSk7CisgICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkp
OworCisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIENvZGVPcmln
aW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRs
aW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJl
Z2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBK
SVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGNvbnN0IGJvb2wgYmFzZUlzS25v
d25DZWxsID0gbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpLmlzVHlwZShT
cGVjQ2VsbCk7CisgICAgaWYgKCFiYXNlSXNLbm93bkNlbGwpCisgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKKworICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
YmFzZSwgcHJvcGVydHksIHJlc3VsdC5yZWdzKCkpOworICAgIGdlbi5zdHViSW5mbygpLT5wcm9w
ZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisK
KyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBhdXRvIG1h
a2VTbG93UGF0aENhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAgICAgIHJldHVybiBzbG93UGF0
aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUsCisgICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLAorICAgICAgICAgICAgYmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93bkNlbGwKKyAgICAgICAg
PyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQ
UigpKSkKKyAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOworCisgICAgbV9qaXQuYWRk
R2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
V1RGTW92ZShzbG93UGF0aCkpOworCisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQucmVncygpLCBu
b2RlLCBEYXRhRm9ybWF0SlMpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxk
KG5vZGUsIDApLnVzZUtpbmQoKSkgeworICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOworICAg
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisg
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2UuZ3ByKCkpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKKworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6
Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKworICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOworICAgICAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKKworICAg
ICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3Vs
dFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGws
IEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQmFk
IHVzZSBraW5kIik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSogbm9kZSwgRWRnZSYg
Y2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMykKIHsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBhcmcxKHRoaXMsIGNoaWxkMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZjA4ZGZlNzYyNzJhYjQ0ODUyYmU0MGQxZmRjY2Vk
NzJkMzg4MjBmOC4uYWYwNDI2ZTI4MGIwMGQzMTUzMjhlOTdhYTBjMTBiN2JjM2YzMTgwMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI4
Miw3ICsxMjgyLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25EaXJl
Y3RBcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1
bWVudHMoTm9kZSopOwotICAgIAorCisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWUoTm9k
ZSopOworICAgIHZvaWQgY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChOb2RlKik7CisgICAgdm9p
ZCBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcHJvcGVydHkpOworCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZVNraXBTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0R2xv
YmFsT2JqZWN0KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGZjMjJkYWE0Njc2MDI5NjA1MTk2OGIyZjlk
NmJmMmJjOTQ0NGNmMTUuLjE3NGNjMzc2YzA1MmY5ZjAxOGVjZDMwNzE2OWNmYWM1YjExODY3NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMjI0MSw2ICsyMjQxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRQ
cml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICBjb21w
aWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkp
IHsKICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDU3
Mjk5Y2YyN2U0ZWFjYjAxNjZlMDdkY2IzN2EyMzJjNTE4MjFlMzYuLjNjNjM4MTNhZjg0Y2IyOWFj
ZWY2NWIwOTY5NGMwOTZlNDBmMmUwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjYxNyw2ICsyNjE3LDEyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJ
ZDogeworICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5h
cnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6QW55VHlwZWRBcnJheToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBh
Yzg3ZjZhNWQ2ZjI1Yjg0NWIwZjk5ZTBkYjIxNGE1ZWZkMTZiODg2Li5hMjY4OWUwYzE5MTI2NjA0
ZGRkYWRlNzZiNGVlNzMzZGEyYjM2Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTcsNiArMzk3LDggQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlz
OgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6
CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoK
ICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBiMmY3YjY3Y2IyNTM4Y2U4Njg5NjJhM2I3NDhi
YzQxNWM3NjIzNzhiLi41ZDMwODdhYjAwNDUxMTU2ODc4MDAxOTY3ZWEwN2Y3MDczMDQwMGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05
NDgsNiArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNo
OgogICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKKyAgICAg
ICAgICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICAgICAgY29tcGlsZUdldFByaXZh
dGVOYW1lQnlJZCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW5CeUlkOgog
ICAgICAgICAgICAgY29tcGlsZUluQnlJZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zOTQx
LDYgKzM5NDcsMTM4IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAg
ICB9CiAKKyAgICBMVmFsdWUgZ2V0UHJpdmF0ZU5hbWUoTFZhbHVlIGJhc2UsIExWYWx1ZSBwcm9w
ZXJ0eSkKKyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CisgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm9wZXJ0eSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwor
CisgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5k
bGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisKKyAgICAg
ICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIGJvb2wgYmFzZUlzQ2VsbCA9
IGFic3RyYWN0VmFsdWUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7CisgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAg
ICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21t
b24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdl
dCBmb3Igb3BlcmF0aW9uIGNhbGxzLgorICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVh
dGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOworCisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgZXhpdCBmb3IgY2FsbCBJQydzIGNyZWF0ZWQgYnkgdGhlIElDIGZvciBnZXR0ZXJzLiBXZSBk
b24ndCBoYXZlCisgICAgICAgICAgICAgICAgLy8gdG8gZG8gYW55dGhpbmcgd2VpcmQgb3RoZXIg
dGhhbiBjYWxsIHRoaXMsIHNpbmNlIGl0IHdpbGwgYXNzb2NpYXRlIHRoZSBleGl0IHdpdGgKKyAg
ICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCisgICAgICAgICAgICAgICAgZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxT
aXRlSW5kZXgpOworCisgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1sw
XS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIo
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7
CisKKyAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVy
YXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSk7CisKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90
Q2VsbDsKKyAgICAgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCisgICAgICAgICAgICAgICAg
ICAgIG5vdENlbGwgPSBqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VHUFIpOworCisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CisKKyAgICAgICAgICAgICAg
ICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgaml0
Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKwor
ICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxp
bmtCdWZmZXIsIGxpbmtCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHBh
dGNocG9pbnQ7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0UHJpdmF0ZU5hbWUoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpCisg
ICAgICAgICAgICBzZXRKU1ZhbHVlKGdldFByaXZhdGVOYW1lKGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKTsK
KworICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmFzZUNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICBpc0NlbGwo
YmFzZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShiYXNlQ2VsbENhc2Up
LCB1bnN1cmUobm90Q2VsbENhc2UpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyhiYXNlQ2VsbENhc2UsIG5vdENlbGxDYXNlKTsKKworICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihnZXRQcml2YXRl
TmFtZShiYXNlLCBwcm9wZXJ0eSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwgY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAgICAgICAg
ICAgICBJbnQ2NCwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUsCisgICAgICAgICAgICAgICAgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIGJhc2UsCisgICAg
ICAgICAgICAgICAgcHJvcGVydHkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgY2VsbFJlc3VsdCwg
bm90Q2VsbFJlc3VsdCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0
UHJpdmF0ZU5hbWVCeUlkKCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQorICAg
ICAgICAgICAgc2V0SlNWYWx1ZShnZXRCeUlkKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
TFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBiYXNlQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgIGlzQ2VsbChiYXNlLCBwcm92ZW5U
eXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGJhc2VDZWxsQ2FzZSksIHVuc3VyZShub3RD
ZWxsQ2FzZSkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGJhc2VDZWxsQ2FzZSwgbm90Q2VsbENhc2UpOworCisgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdldEJ5SWQoYmFzZSwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90Q2VsbENhc2UsIGNvbnRpbnVhdGlv
bik7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKHZtQ2FsbCgKKyAgICAgICAgICAgICAgICBJbnQ2NCwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVCeUlkR2VuZXJpYywKKyAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBiYXNlLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgY2VsbFJl
c3VsdCwgbm90Q2VsbFJlc3VsdCkpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjb21w
aWxlUHV0QnlJZFdpdGhUaGlzKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDljMmVlMTkzNGUwZWRjYjM4OGEzNDY5
NDZlY2FjMTFkZWZmMWUwOGMuLjk0ZDFmOTI2Y2YyYWYxN2VhYTI4OTRiY2FhNWRmMzU5N2JlMTVm
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03Miw3ICs3MiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpIFwKICAgICBtYWNybyhE
ZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5lcmlj
KSBcCi0gICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSkKKyAgICBtYWNy
byhPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVCeUlkKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVC
eUlkT3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5l
cmljKQogCiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDFmMjJlYzFiNjkwODIwNDhkMDA4ZWE0NTExYTMy
MGNiNzBmODUzYzMuLjIzNjY5MmM4NTI4ZjlmNzAwMGIxY2Y4NTQ4MTU2MDA1NTEzNWNkZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjI2MSw2
ICsyMjYxLDI0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5hbWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgcmV0dXJuIHNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpOwogfQogCitBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSWRlbnRpZmllciBmaWVsZE5h
bWUpCit7CisgICAgQVNTRVJUKGZpZWxkTmFtZS5pc1ByaXZhdGVOYW1lKCkpOworICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBiYXNlVmFsdWUu
cmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgYmFz
ZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIHNsb3Qu
Z2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpOworfQorCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmll
bGROYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yMjgwLDcg
KzIyOTgsNiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsbwogICAgICAgICBBU1NFUlQoZmllbGRO
YW1lLmlzU3ltYm9sKCkpOwogCiAgICAgICAgIEpTT2JqZWN0KiBiYXNlID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oYmFzZVZhbHVlLmFzQ2VsbCgpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAg
ICAgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90
KTsKQEAgLTIzMDYsMTEgKzIzMjMsODMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWMKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgSlNW
YWx1ZSBmaWVsZE5hbWVWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRmllbGROYW1lKTsK
IAotICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworICAgIGlmIChzdHViSW5mbykK
KyAgICAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNl
VmFsdWUsIGZpZWxkTmFtZVZhbHVlKSk7CiB9CiAKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikpCit7CisgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIElkZW50aWZpZXIg
ZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CisK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZSk7CisKKyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJh
dGlvbkdldFByaXZhdGVOYW1lQnlJZCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIGZp
ZWxkTmFtZSwgdHJ1ZSkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlk
T3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRy
X3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgYXV0byBmaWVsZE5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKKworICAgIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgeworICAgICAgICBKU09iamVjdCogYmFzZSA9IGpzQ2FzdDxKU09iamVjdCo+
KGJhc2VWYWx1ZS5hc0NlbGwoKSk7CisKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICAg
ICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisK
KyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
ICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0pLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0
Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBz
bG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1l
KSk7CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpKTsKK30KKworSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpKQoreworICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoYmFzZSk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmll
cik7CisgICAgSWRlbnRpZmllciBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBp
ZGVudGlmaWVyLnVpZCgpKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0UHJpdmF0ZU5hbWUo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKTsKKworICAgIExP
R19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywgYmFzZVZh
bHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwgdHJ1ZSkpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKiBieVZhbEluZm8pKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNmYwMWUzNjRiZWExMWMyNzRiNWY4Y2I1ODdmN2M4NjI1
MjE5MzZkOC4uYjc1YTdiMTBlNjZhODIxZTcwNWMxNDk0MzcxMDdlMTU2MDYxNjBlMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI2OSw2ICsyNjksOSBA
QCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBD
YWxsRnJhbWUqLCAoSlNHbG9iYWxPYmplYwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkT3B0
aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpKTsKIAogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJ
bmRleCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hJbW1XaXRo
VW5rbm93bktleVR5cGUsIGNoYXIqLCAoVk0qLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0
YWJsZUluZGV4KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAxNWQ5
YThiNGNlMTNjYzMwOWEyNWQwMDNmY2NkY2FiMGRjMjIxZWVkLi4wNzcxMTYxYzE1YzllMTc1OTJk
NjViNmRhYTgxNGJhZDJkM2EzNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKQEAgLTE2NSw2ICsxNjUsOCBAQCBpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZAogICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKICAgICBjYXNlIEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWU6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
OworICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgIHJldHVybiBv
cGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsKICAgICB9CiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE4NCw2ICsxODYsOCBAQCBpbmxpbmUgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oR2V0QnlLaW5k
IGtpbmQpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWM7CiAgICAgY2Fz
ZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWU7CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZDsKICAgICB9CiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTIwMyw3ICsyMDcsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqCiAgICAgICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFs
dWUuYXNDZWxsKCk7Ci0gICAgICAgIGNvbnN0IGJvb2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRC
eUtpbmQ6OlByaXZhdGVOYW1lOworICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQg
PT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZSB8fCBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5h
bWVCeUlkOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDA4M2EzZDVkNjg0Y2FiZGZiMTRj
Y2FlYjc0NWZlYzc2M2RmYmNhMjEuLjVkZDIwYzYzNmEwNTE2ODdkOTE2ZTgwYWI3ODNiMGU5ZTY2
ZDMxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00MCw2ICs0MCw3IEBA
IGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBXaXRoVGhpcywKICAgICBEaXJlY3QsCiAgICAg
UHJpdmF0ZU5hbWUsCisgICAgUHJpdmF0ZU5hbWVCeUlkLAogfTsKIAogZW51bSBjbGFzcyBEZWxC
eUtpbmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5k
ZXggODJkM2IxOTRlMzAwMGY0NTEwNTcxNmI0MTIzMDJlMzAyODVlZDUwNS4uYTlkZjU1ZWJkMjc2
Y2UxNGRkYzliODdjZDAxZTZlYmM3ZjJmNzdmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01NzEsNyArNTcxLDcgQEAgZW51bSBFeHBlcmltZW50
YWxPcHRpb25GbGFncyB7CiB9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19FWFBFUklNRU5UQUxf
T1BUSU9OKHYpIFwKLSAgICB2KHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgTExJbnRBbmRCYXNlbGlu
ZU9ubHksICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwg
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQorICAgIHYo
dXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBTdXBwb3J0c0ZUTCB8IFN1cHBvcnRzREZHLCAiaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKIAogY29uc3RleHByIHNpemVfdCBj
b3VudE51bWJlck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA5OGM3Mzg2NWE2M2ExYzhhNWM2OGMyMWEzYmI2
YzQxZmMzNGYyMDQuLjBhYWZjMmMxZmMxZWZjNWRkZmUzZWY4NDdiYWM0ZGM2NTAyNDMyOGIgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMjAtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBzdXBwb3J0IG9wX2dldF9wcml2YXRlX25hbWUgaW4gREZHIGFu
ZCBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL21vbm9tb3JwaGljLWdldC1wcml2YXRl
LWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRz
LXByaXZhdGUvcG9seW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC1nZW5lcmljLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtb3NyLWJhZC1pZGVu
dGlmaWVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUt
YnktaWQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1i
eS1vZmZzZXQtb3NyLWJhZC1pZGVudGlmaWVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
ZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0dXJlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktdmFsLWdlbmVy
aWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1p
ZC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9m
ZnNldC1tdWx0aS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2dldC1wcml2YXRlLW5hbWUt
d2l0aC1jb25zdGFudC1pZGVudC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2dldC1wcml2
YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LXN5bWJvbC5qczogQWRkZWQuCisKIDIw
MjAtMTAtMjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9u
J3QgT1NSIGV4aXQgdG8gYmMjMCBmb3IgRlRMIGFyZ3VtZW50IHR5cGUgY2hlY2tzIGR1cmluZyBs
b29wIE9TUiBlbnRyeQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJp
dmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWQ4MTE5NTllN2VmNDM3YmZiYWI0OTkzOGExZGE1
ZTA1MTcxYjZjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKQEAgLTAs
MCArMSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10
cnVlIikKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgY29uc3RydWN0b3IoaSkgewor
ICAgICAgICB0aGlzLiNmaWVsZCA9IGk7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMoInRlc3QiKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwg
NTAwMDAwMDsgaSsrKSB7CisgICAgaWYgKGMuZ2V0RmllbGQoKSAhPT0gInRlc3QiKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3Jw
aGljLWdldC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjA0MWU4MmE2ZjhkNzI3MWZjNjgzMWQyZTM5NDZkNGIzZDk2MTc0MgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHlt
b3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2NsYXNzIEMgeworICAg
ICNmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0g
dmFsdWU7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNm
aWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBj
MSA9IG5ldyBDKCk7CitjMS5mb28gPSAwOworYzEuc2V0RmllbGQoImEiKTsKKworbGV0IGMyID0g
bmV3IEMoKTsKK2MyLmJhciA9IDA7CitjMi5zZXRGaWVsZCgiYiIpOworCitsZXQgYzMgPSBuZXcg
QygpOworYzMuYmF6ID0gMDsKK2MzLnNldEZpZWxkKCJjIik7CisKK2xldCBhcnIgPSBbYzEsIGMy
LCBjM107CitsZXQgdmFsdWVzID0gWyJhIiwgImIiLCAiYyJdOworZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDAwMDAwOyBpKyspIHsKKyAgICBpZiAoYXJyW2kgJSBhcnIubGVuZ3RoXS5nZXRGaWVsZCgp
ICE9PSB2YWx1ZXNbaSAlIHZhbHVlcy5sZW5ndGhdKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
InVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3RyZXNz
L2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFlODQ0
MTM5OTZkNWI4NjkyMTg3Y2ZkMzk2NTc3NmM5MjZlMGViOAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLWdlbmVyaWMuanMKQEAgLTAs
MCArMSw3NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10
cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHBy
b2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRQcml2
YXRlTmFtZUJ5SWQuIEdldEJ5SWQKKy8vIHdpbGwgbmV2ZXIgT1NSIGhlcmUgZHVlIHRvIGJhZCBz
dHJ1Y3R1cmVzLCBidXQgd2lsbCBpbnN0ZWFkIHJlcGF0Y2ggdG8gdGhlIGdlbmVyaWMgY2FzZS4K
KworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAg
aWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1
dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1l
fSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdF
eGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93
IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitj
bGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIGlmIChpICYgMikgCisg
ICAgICAgICAgICB0aGlzLmNvbW1vbkV4dHJhU3R1ZmYgPSB0cnVlOworICAgICAgICBpZiAoaSAm
IDQpCisgICAgICAgICAgICB0aGlzLm1lZ2FFeHRyYVN0dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYg
KGkgPiAxMDAwMCkgeworICAgICAgICAgICAgaWYgKGkgJiAxKQorICAgICAgICAgICAgICAgIHRo
aXMuc3VwZXJXaGF0ZXZlciA9IHRydWU7CisgICAgICAgIH0KKworICAgIH0KK30KKworY2xhc3Mg
QyBleHRlbmRzIEJhc2UgeworICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIGNvbnN0cnVjdG9y
KGkpIHsKKyAgICAgICAgc3VwZXIoaSk7CisgICAgICAgIGlmIChpID4gNTAwMCkKKyAgICAgICAg
ICAgIHRoaXMuZXh0cmFTdHVmZiA9IHRydWU7CisgICAgICAgIGlmIChpID09PSA5OTk5KQorICAg
ICAgICAgICAgdGhpcy5tb3JlU3R1ZmYgPSB0cnVlOworICAgIH0KKworICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5
cGUuY29uc3RydWN0b3IpOworbm9ERkcoQy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9GVEwo
Qy5wcm90b3R5cGUuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
Oworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwOyArK2kpIHsKKyAgICBsZXQgYyA9IG5ldyBDKGkpOworICAgIGFzc2VydC5lcXVh
bHMoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAg
ICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IGMgPSBu
ZXcgQygxMDApOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IGMuZ2V0RmllbGQuY2Fs
bCh7fSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUt
YnktaWQtb3NyLWJhZC1pZGVudGlmaWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2
YXRlLW5hbWUtYnktaWQtb3NyLWJhZC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NGM5NWQy
YjFlMzRhMjY5Mjg4NDBlYzY4NDI3MzJkZjMxNzE0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1pZC1vc3ItYmFkLWlkZW50aWZpZXIu
anMKQEAgLTAsMCArMSw3NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252
b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50
byBHZXRQcml2YXRlTmFtZUJ5SWQsIGFuZCB0aGVuIE9TUkV4aXQKKy8vIGZyb20gZ2V0RmllbGQo
KSBkdWUgdG8gYSBDaGVja0lzQ29uc3RhbnQgZmFpbHVyZSB3aGVuIGEgZGlmZmVyZW50IGlkZW50
aWZpZXIgaXMgdXNlZC4KKworbGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChh
LCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4
cGVjdGVkOiAke2V9IGJ1dCBnb3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rp
b24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9u
KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAk
e2V4Y2VwdGlvbi5uYW1lfSBidXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4
cGVjdGVkIHRvIHRocm93IGEgJHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsK
KyAgICB9Cit9OworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAg
IGlmIChpICYgMSkKKyAgICAgICAgICAgIHRoaXMuZGlmZmVyZW50U3RydWN0dXJlID0gYGV4dHJh
JHtpfWA7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3Mg
QyBleHRlbmRzIEJhc2UgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAg
IHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQor
ICAgIAorICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVs
ZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7
CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90
eXBlLnNldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKKyAgICBy
ZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQuZXF1
YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7Cisg
ICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBDMiA9
IGZhY3RvcnlDbGFzcygpOyAvLyBpbnZhbGlkYXRlIGZpcnN0IHZlcnNpb24gb2Ygc2V0RmllbGQg
ZHVlIHRvIFNjb3BlIGludmFsaWRhdGlvbiBwb2ludAorCisvLyBUcmlnZ2VycyBuZXcgdmVyc2lv
biB3aXRob3V0IGZvbGRpbmcgZ2V0X2Zyb21fc2NvcGUKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdl
dEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2Vy
dC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgYzIgPSBuZXcgQzIo
KTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzIuZ2V0Rmll
bGQuY2FsbChuZXcgQygpKTsgLy8gdHJpZ2dlciBPU1IgZXhpdCBkdWUgdG8gYmFkIGNvbnN0YW50
IHZhbHVlCit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1u
YW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktaWQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGZkYzRiOWIyZmZiZDllNjA5YTY4NDBiYTczYzIyZDQwZjA2YWY4MQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5
LWlkLmpzCkBAIC0wLDAgKzEsOTggQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBX
aXRoIG1hbnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0ZXN0IGNoZWNr
cyB0aGUgR2V0UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJlZHVjaW5nIHRv
IEdldEJ5T2Zmc2V0IGlzIG5vdCBwb3NzaWJsZS4KKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1l
c3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZh
aWxlZDogJHttZXNzYWdlfWApOworfQorT2JqZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxz
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4
cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3VuZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dz
KGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkgeworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICBpZiAodHlwZW9mIGVycm9yVHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAg
YXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9y
VHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBh
c3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhy
b3duLmApOworICB9Cit9KTsKKworCitsZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAg
IGE6IDEsCisgIH0sCisgIHsKKyAgICBiOiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBj
OiAxLAorICAgIGQ6IDIsCisgICAgYTogMywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAgejog
MSwKKyAgICBhOiAyLAorICAgIGI6IDMsCisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEs
CisgICAgZDogMiwKKyAgICB6OiAzLAorICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKKyAgewor
ICAgIGc6IDEsCisgICAgYjogMiwKKyAgICBkOiAzLAorICAgIHE6IDQsCisgICAgeDogNSwKKyAg
ICBkOiA2LAorICB9CitdOworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICBp
ZiAoaSA8IDEwMCkKKyAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICYgM10p
OworICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBiYXNlc1tpICUgYmFzZXMubGVuZ3RoXSk7
CisgIH0KK30KK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgI3ByaXZhdGUgPSAicHJpdmF0ZSI7
CisgIGdldFByaXZhdGUoKSB7IHJldHVybiB0aGlzLiNwcml2YXRlOyB9Cit9Citub0lubGluZShD
LmNvbnN0cnVjdG9yKTsKK25vREZHKEMuY29uc3RydWN0b3IpOworbm9GVEwoQy5jb25zdHJ1Y3Rv
cik7Citub0ZUTChDLnByb3RvdHlwZS5nZXRQcml2YXRlKTsKK25vSW5saW5lKEMucHJvdG90eXBl
LmdldFByaXZhdGUpOworCitsZXQgZ2V0UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7
CisKK2Z1bmN0aW9uIHRlc3QobykgeworICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChv
KSwgInByaXZhdGUiKTsKK30KKwordGVzdChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAw
KTsKK3Rlc3QobmV3IEMoMCksIDApOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgdGVzdChuZXcgQyhpKSk7CisgIG9wdGltaXplTmV4dEludm9jYXRpb24odGVzdCk7Cit9Cith
c3NlcnQudGhyb3dzKCgpID0+IHsKKyAgdGVzdCh7fSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtaWRlbnRpZmll
ci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3It
YmFkLWlkZW50aWZpZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczMjBhZjZjMDRiN2VkNzlkOGU5ZDljZjYy
ZTE2ZmQzMzAxODhjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQt
cHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1vc3ItYmFkLWlkZW50aWZpZXIuanMKQEAgLTAsMCArMSw2
OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwg
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dyYW0g
d2hpY2ggd2lsbCBjb21waWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRCeU9mZnNldCwg
YW5kIHRoZW4gT1NSRXhpdAorLy8gZnJvbSBnZXRGaWVsZCgpIGR1ZSB0byBhIENoZWNrSXNDb25z
dGFudCBmYWlsdXJlIHdoZW4gYSBkaWZmZXJlbnQgaWRlbnRpZmllciBpcyB1c2VkLgorCitsZXQg
YXNzZXJ0ID0geworICAgIGVxdWFsczogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQ6ICR7ZX0gYnV0IGdvdDog
JHthfWApOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3Ip
IHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAg
ICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7ZXhjZXB0aW9uLm5hbWV9IGJ1dCBp
dCB0aHJldzogJHtlfWApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlv
bikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4
Y2VwdGlvbi5uYW1lfSBidXQgZGlkIG5vdCB0aHJvd2ApOworICAgIH0KK307CisKK2Z1bmN0aW9u
IGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3Qn
OworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9
IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbm9JbmxpbmUoQy5wcm90
b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAg
ICBub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7CisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxk
KCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOyAvLyBpbnZhbGlkYXRlIGZpcnN0IHZlcnNp
b24gb2Ygc2V0RmllbGQgZHVlIHRvIFNjb3BlIGludmFsaWRhdGlvbiBwb2ludAorCisvLyBUcmln
Z2VycyBuZXcgdmVyc2lvbiB3aXRob3V0IGZvbGRpbmcgZ2V0X2Zyb21fc2NvcGUKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3Nl
cnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsg
aSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xl
dCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsK
KyAgICBjMi5nZXRGaWVsZC5jYWxsKG5ldyBDKCkpOyAvLyB0cmlnZ2VyIE9TUiBleGl0IGR1ZSB0
byBiYWQgY29uc3RhbnQgdmFsdWUKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZn
LWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0dXJlLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LW9zci1iYWQtc3RydWN0dXJl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM1OTc3YjFhYWZiZDU2Njc2NWQzOTZjMjY4OTE3NWY1M2RiZTBlNWYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1i
eS1vZmZzZXQtb3NyLWJhZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw2MiBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPXRydWUiKQorCisvLyBDb252b2x1dGVkIHByb2dyYW0gd2hpY2ggd2lsbCBjb21w
aWxlIHR1cm4gR2V0UHJpdmF0ZU5hbWUgaW50byBHZXRCeU9mZnNldCwgYW5kIHRoZW4gT1NSRXhp
dAorLy8gZnJvbSBnZXRGaWVsZCgpIGR1ZSB0byBhIENoZWNrU3RydWN0dXJlIGZhaWx1cmUKKwor
bGV0IGFzc2VydCA9IHsKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYg
KGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAke2V9IGJ1dCBn
b3Q6ICR7YX1gKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5j
dG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBi
dXQgaXQgdGhyZXc6ICR7ZX1gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNl
cHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEg
JHtleGNlcHRpb24ubmFtZX0gYnV0IGRpZCBub3QgdGhyb3dgKTsKKyAgICB9Cit9OworCitjbGFz
cyBDIHsKKyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAg
ICAgIGlmIChpID4gNTAwMCkKKyAgICAgICAgICAgIHRoaXMuZXh0cmFTdHVmZiA9IHRydWU7IC8v
IEludmFsaWRhdGUgbG9vcCBkdWUgdG8gc3RydWN0dXJlIGNoYW5nZQorICAgICAgICBpZiAoaSA9
PT0gOTk5OSkKKyAgICAgICAgICAgIHRoaXMubW9yZVN0dWZmID0gdHJ1ZTsgLy8gVHJpZ2dlciBh
IEJhZENhY2hlIE9TUiBvbiBnZXRfcHJpdmF0ZV9uYW1lCisgICAgfQorCisgICAgc2V0RmllbGQo
dikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3Rv
dHlwZS5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0ZU
TChDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5z
ZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgeworICAgIGxldCBjID0gbmV3IEMoaSk7CisgICAgYXNzZXJ0LmVx
dWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOwor
ICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCisvLyBDaGVj
ayBzZW1hbnRpYyBmYWlsdXJlIHN0aWxsIGZ1bmN0aW9ucworbGV0IGMgPSBuZXcgQygxMDApOwor
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IGMuZ2V0RmllbGQuY2FsbCh7fSkpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvZGZnLWdldC1wcml2YXRlLW5hbWUtYnktb2Zmc2V0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQxYmE0MmRhYzU2ZmQ1MWNmYzAyZTIwZTRlYmQ2OTkyZDk0YmVmNGUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQu
anMKQEAgLTAsMCArMSw2MiBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKKy8vIFdpdGgg
bm8gaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgR2V0UHJpdmF0ZU5hbWUgaXMgY29u
dmVydGVkIHRvIEdldEJ5T2Zmc2V0CisvLyBkdXJpbmcgYnl0ZWNvZGUgcGFyc2luZy4gV2UgdGVz
dCB0aGF0IGl0J3Mgc3RpbGwgc2VtYW50aWNhbGx5IHZhbGlkLgorCitmdW5jdGlvbiBhc3NlcnQo
ZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3Nl
cnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgewor
ICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVj
dGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAor
ICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQor
ICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93
ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAg
fQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9u
IHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCitjbGFzcyBDIHsKKyAgI3ByaXZhdGUgPSAicHJp
dmF0ZSI7CisgIGdldFByaXZhdGUobykgeyByZXR1cm4gby4jcHJpdmF0ZTsgfQorICBjb25zdHJ1
Y3RvcihpKSB7CisgICAgaWYgKGkgPT09IDk5NSkKKyAgICAgIHJldHVybiB7fTsKKyAgfQorfQor
bm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMu
Y29uc3RydWN0b3IpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7CisKK2xldCBnZXRQ
cml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24gdGVzdChvKSB7Cisg
IHJldHVybiBnZXRQcml2YXRlKG8pOworfQorbmV2ZXJJbmxpbmVGdW5jdGlvbih0ZXN0KTsKKwor
Ly8gV2FybXVwCit0ZXN0KG5ldyBDLCAwKTsKK3Rlc3QobmV3IEMsIDApOwordGVzdChuZXcgQywg
MCk7CisKK3ZhciBpOworZm9yICh2YXIgaiA9IDA7IGogPCAyOyArK2opIHsKKyAgYXNzZXJ0LnRo
cm93cygoKSA9PiB7CisgICAgZm9yIChpID0gMDsgaSA8IDIwMDA7ICsraSkgeworICAgICAgYXNz
ZXJ0LmVxdWFscyh0ZXN0KG5ldyBDKGkpKSwgInByaXZhdGUiKTsKKyAgICAgIG9wdGltaXplTmV4
dEludm9jYXRpb24odGVzdCk7CisgICAgfQorICB9LCBUeXBlRXJyb3IpOworCisgIC8vIFdlIHNo
b3VsZCB0aHJvdyBvbiBpdGVyYXRpb24gOTk1LCBiZWNhdXNlIHRoaXMgd2lsbCByZXN1bHQgaW4g
YW4gaW52YWxpZCBsb2FkLgorICBhc3NlcnQuZXF1YWxzKGksIDk5NSk7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12YWwtZ2VuZXJpYy5qcyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1nZXQtcHJpdmF0ZS1uYW1lLWJ5LXZhbC1nZW5lcmljLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY2MjU3NjE1OTg4NTA5MWQ4ZjU0NTRhYTJkNmYzY2RhM2MyNjNiY2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctZ2V0LXByaXZhdGUtbmFtZS1ieS12YWwt
Z2VuZXJpYy5qcwpAQCAtMCwwICsxLDc1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dV
bnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisK
Ky8vIENvbnZvbHV0ZWQgcHJvZ3JhbSB3aGljaCB3aWxsIGNvbXBpbGUgdHVybiBHZXRQcml2YXRl
TmFtZSBpbnRvIEpJVEdldEJ5VmFsIElDLiBHZXRCeVZhbAorLy8gd2lsbCBuZXZlciBPU1IgaGVy
ZSBkdWUgdG8gYmFkIHN0cnVjdHVyZXMsIGJ1dCB3aWxsIGluc3RlYWQgcmVwYXRjaCB0byB0aGUg
Z2VuZXJpYyBjYXNlLgorCitsZXQgYXNzZXJ0ID0geworICAgIGVxdWFsczogZnVuY3Rpb24gKGEs
IGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhw
ZWN0ZWQ6ICR7ZX0gYnV0IGdvdDogJHthfWApOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlv
bihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4
Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24p
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7
ZXhjZXB0aW9uLm5hbWV9IGJ1dCBpdCB0aHJldzogJHtlfWApOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhw
ZWN0ZWQgdG8gdGhyb3cgYSAke2V4Y2VwdGlvbi5uYW1lfSBidXQgZGlkIG5vdCB0aHJvd2ApOwor
ICAgIH0KK307CisKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKGkpIHsKKyAgICAgICAg
aWYgKGkgJiAxKQorICAgICAgICAgICAgdGhpcy5tZWdhQ29tbW9uRXh0cmFTdHVmZiA9IHRydWU7
CisgICAgICAgIGlmIChpICYgMikgCisgICAgICAgICAgICB0aGlzLmNvbW1vbkV4dHJhU3R1ZmYg
PSB0cnVlOworICAgICAgICBpZiAoaSAmIDQpCisgICAgICAgICAgICB0aGlzLm1vcmVFeHRyYVN0
dWZmID0gdHJ1ZTsKKyAgICAgICAgaWYgKGkgJiA4KQorICAgICAgICAgICAgdGhpcy5zb011Y2hF
eHRyYVN0dWZmID0gdHJ1ZTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAg
ICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBjb25zdHJ1Y3RvcihpKSB7CisgICAgICAgIHN1cGVy
KGkpOworICAgICAgICBpZiAoaSA+IDUwMDApCisgICAgICAgICAgICB0aGlzLmV4dHJhU3R1ZmYg
PSB0cnVlOworICAgICAgICBpZiAoaSA9PT0gOTk5OSkKKyAgICAgICAgICAgIHRoaXMubW9yZVN0
dWZmID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2Zp
ZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
I2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25v
REZHKEMucHJvdG90eXBlLmNvbnN0cnVjdG9yKTsKK25vRlRMKEMucHJvdG90eXBlLmNvbnN0cnVj
dG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vRlRMKEMucHJv
dG90eXBlLnNldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgbGV0IGMgPSBuZXcgQyhpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rl
c3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdl
dEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBjID0gbmV3IEMoMTAwKTsKK2Fzc2VydC50
aHJvd3MoVHlwZUVycm9yLCAoKSA9PiBjLmdldEZpZWxkLmNhbGwoe30pKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9z
dHJlc3MvZnRsLWdldC1wcml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdjMTc4OTgz
ZmRlNjQyNjUyZGYzMzgzYmFhMTY4NzFjM2Y4OTVkMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsMTA3IEBA
CisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQor
CisvLyBXaXRoIG1hbnkgaW5jb21wYXRpYmxlIHN0cnVjdHVyZSB2YXJpYW50cywgdGhpcyB0ZXN0
IGNoZWNrcyB0aGUgR2V0UHJpdmF0ZU5hbWUgbG93ZXJpbmcgaW4gREZHIHdoZW4KKy8vIHJlZHVj
aW5nIHRvIEdldEJ5T2Zmc2V0IGlzIG5vdCBwb3NzaWJsZS4KKy8vIFRoaXMgdGVzdCBkaXNhYmxl
cyBpbmxpbmluZyBsb2FkcyB0byBHZXRCeU9mZnNldCBpbiBvcmRlciB0byBwcmV2ZW50IHJlZHVj
aW5nIHRoZSBHZXRQcml2YXRlTmFtZUJ5SWQgdG8gTXVsdGlHZXRCeU9mZnNldCBpbiB0aGUKKy8v
IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLiBJdCBpcyBjb25jZWl2YWJseSBwb3NzaWJsZSBmb3Ig
dGhpcyBzY2VuYXJpbyB0byBiZSBlbmNvdW50ZXJlZCB3aXRob3V0IGRpc2FibGluZyBpbmxpbmUg
YWNjZXNzLgorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBpZiAoIWV4cHIp
CisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9
CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0
IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlwZSkgeworICAg
IHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlmICh0eXBlb2Yg
ZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVy
cm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAk
e2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwgYGV4cGVjdGVk
IHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0KK30pOworCits
ZXQgYmFzZXMgPSBbCisgIHsKKyAgfSwKKyAgeworICAgIGE6IDEsCisgIH0sCisgIHsKKyAgICBi
OiAxLAorICAgIGE6IDIsCisgIH0sCisgIHsKKyAgICBjOiAxLAorICAgIGQ6IDIsCisgICAgYTog
MywKKyAgfSwKKyAgeworICB9LAorICB7CisgICAgejogMSwKKyAgICBhOiAyLAorICAgIGI6IDMs
CisgICAgcTogNCwKKyAgfSwKKyAgeworICAgIGE6IDEsCisgICAgZDogMiwKKyAgICB6OiAzLAor
ICAgIHg6IDQsCisgICAgZjogNSwKKyAgfSwKKyAgeworICAgIGc6IDEsCisgICAgYjogMiwKKyAg
ICBkOiAzLAorICAgIHE6IDQsCisgICAgeDogNSwKKyAgICBkOiA2LAorICB9LAorICB7CisgICAg
ejogMSwKKyAgICBxOiAyLAorICAgIGY6IDMsCisgICAgeTogNCwKKyAgICBhOiA1LAorICAgIDA6
IDYsCisgICAgazogNywKKyAgfSwKK107CitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoaSkg
eworICAgIGlmIChpIDwgMTAwKQorICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2Vz
W2kgJiAzXSk7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGJhc2VzW2kgJSBiYXNlcy5s
ZW5ndGhdKTsKKyAgfQorfQorY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAjcHJpdmF0ZSA9ICJw
cml2YXRlIjsKKyAgZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIHRoaXMuI3ByaXZhdGU7IH0KK30KK25v
SW5saW5lKEMuY29uc3RydWN0b3IpOworbm9ERkcoQy5jb25zdHJ1Y3Rvcik7Citub0ZUTChDLmNv
bnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldFByaXZhdGUpOworCitsZXQgZ2V0
UHJpdmF0ZSA9IEMucHJvdG90eXBlLmdldFByaXZhdGU7CisKK2Z1bmN0aW9uIHRlc3Qobykgewor
ICBhc3NlcnQuZXF1YWxzKGdldFByaXZhdGUuY2FsbChvKSwgInByaXZhdGUiKTsKK30KKwordGVz
dChuZXcgQygwKSwgMCk7Cit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwor
Zm9yICh2YXIgaSA9IDA7ICFpc0ZpbmFsVGllcih0ZXN0KSAmJiBpIDwgMTAwMDA7ICsraSkgewor
ICB0ZXN0KG5ldyBDKGkpKTsKKyAgb3B0aW1pemVOZXh0SW52b2NhdGlvbih0ZXN0KTsKK30KK2Fz
c2VydC50aHJvd3MoKCkgPT4geworICB0ZXN0KHt9KQorfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9mdGwtZ2V0LXByaXZhdGUtbmFtZS1ieS1vZmZzZXQtbXVsdGkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzU3ZDM2NGU1OGNhMjVlNDVjNjQxYTJjZTVhYmI3YWVhMTU5YzgwNgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1nZXQtcHJpdmF0ZS1uYW1lLWJ5LW9mZnNldC1tdWx0
aS5qcwpAQCAtMCwwICsxLDg3IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9y
dGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworLy8gV2l0
aCBtYW55IGluY29tcGF0aWJsZSBzdHJ1Y3R1cmUgdmFyaWFudHMsIHRoaXMgdGVzdCB3aWxsIGZh
aWwgdG8gZ2VuZXJhdGUgR2V0QnlPZmZzZXQgZHd1cmluZyBERkdCeXRlQ29kZVBhcnNpbmcuCisv
LyBEdXJpbmcgRlRMIGNvbXBpbGF0aW9uLCBpdCB3aWxsIHRyeSBhZ2FpbiBpbiBERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS4KK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICgh
ZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1g
KTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVk
fSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7
CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5
cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNl
b2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRo
cmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhw
ZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7
CisKK2xldCBiYXNlcyA9IFsKKyAgeworICB9LAorICB7CisgICAgYTogMSwKKyAgfSwKKyAgewor
ICAgIGI6IDEsCisgICAgYTogMiwKKyAgfSwKKyAgeworICAgIGM6IDEsCisgICAgZDogMiwKKyAg
ICBhOiAzLAorICB9LAorICB7CisgIH0sCisgIHsKKyAgICB6OiAxLAorICAgIGE6IDIsCisgICAg
YjogMywKKyAgICBxOiA0LAorICB9LAorICB7CisgICAgYTogMSwKKyAgICBkOiAyLAorICAgIHo6
IDMsCisgICAgeDogNCwKKyAgICBmOiA1LAorICB9LAorXTsKK2NsYXNzIEJhc2UgeworICBjb25z
dHJ1Y3RvcihpKSB7CisgICAgaWYgKGkgPCAxMDApCisgICAgICByZXR1cm4gT2JqZWN0LmFzc2ln
bih7fSwgYmFzZXNbaSAmIDNdKTsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgYmFzZXNb
aSAlIGJhc2VzLmxlbmd0aF0pOworICB9Cit9CitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICNw
cml2YXRlID0gInByaXZhdGUiOworICBnZXRQcml2YXRlKCkgeyByZXR1cm4gdGhpcy4jcHJpdmF0
ZTsgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0RGRyhDLmNvbnN0cnVjdG9yKTsK
K25vRlRMKEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZSk7
CisKK2xldCBnZXRQcml2YXRlID0gQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZTsKKworZnVuY3Rpb24g
dGVzdChvKSB7CisgIGFzc2VydC5lcXVhbHMoZ2V0UHJpdmF0ZS5jYWxsKG8pLCAicHJpdmF0ZSIp
OworfQorCit0ZXN0KG5ldyBDKDApLCAwKTsKK3Rlc3QobmV3IEMoMCksIDApOwordGVzdChuZXcg
QygwKSwgMCk7Citmb3IgKHZhciBpID0gMDsgIWlzRmluYWxUaWVyKHRlc3QpICYmIGkgPCAxMDAw
MDsgKytpKSB7CisgIHRlc3QobmV3IEMoaSkpOworICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHRl
c3QpOworfQorYXNzZXJ0LnRocm93cygoKSA9PiB7CisgIHRlc3Qoe30pCit9KTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVudC5q
cyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1pZGVudC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYTEyZmJhNzVlZjEzOGMwMGEzYzIwZGU4NzlmMWUxMWVhNTI3MmZjCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LWlkZW50LmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1h
bGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVl
IikKKworZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UpIHsKKyAgaWYgKCFleHByKQorICAg
IHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIEZhaWxlZDogJHttZXNzYWdlfWApOworfQorT2Jq
ZWN0LmFzc2lnbihhc3NlcnQsIHsKKyAgZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBh
c3NlcnQoYWN0dWFsID09PSBleHBlY3RlZCwgYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBmb3Vu
ZCAke2FjdHVhbH1gKTsKKyAgfSwKKyAgdGhyb3dzKGZuLCBlcnJvclR5cGUpIHsKKyAgICB0cnkg
eworICAgICAgZm4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAodHlwZW9mIGVycm9y
VHlwZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBlcnJvclR5
cGUsIGBleHBlY3RlZCB0byB0aHJvdyAke2Vycm9yVHlwZS5uYW1lfSBidXQgdGhyZXcgJHtlfWAp
OworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZmFsc2UsIGBleHBlY3RlZCB0byB0
aHJvdywgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLmApOworICB9Cit9KTsKKworbGV0IGkg
PSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQo
KSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxkID0g
aTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7Cisg
ICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90
eXBlLnNldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkg
PCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAg
ICBhc3NlcnQuZXF1YWxzKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdm
b28nICsgaSk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3Rh
bnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0
YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTEyZmJhNzVlZjEzOGMwMGEzYzIwZGU4NzlmMWUx
MWVhNTI3MmZjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUt
bmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDUzIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlm
ICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2Fn
ZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVj
dGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBl
KSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYg
KHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3Rh
bmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0
IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBg
ZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQor
fSk7CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7
CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFu
b3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0
RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0Rmll
bGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShD
LnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citu
b0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5zZXRGaWVsZCk7
CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgYXNzZXJ0LmVxdWFscyhjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAg
Yy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5lcXVhbHMoYy5nZXRGaWVsZCgpLCAn
Zm9vJyArIGkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFt
ZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1u
YW1lLXdpdGgtZGlmZmVyZW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTFhM2ZkYTJkZTc2MGJj
ZWE1MjI2MjFiMDNjZDUyYzNiOTdmM2NjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1zeW1ib2wuanMKQEAgLTAsMCArMSw1
NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwg
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwg
bWVzc2FnZSkgeworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24g
RmFpbGVkOiAke21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVh
bHMoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBg
ZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJv
d3MoZm4sIGVycm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAg
ICBhc3NlcnQoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJy
b3JUeXBlLm5hbWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IGFzc2VydChmYWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24uYCk7CisgIH0KK30pOworCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKCkgeworICAg
IGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisKKyAgICAgICAgc2V0RmllbGQodikgeworICAg
ICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQo
KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBub0RGRyhDLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7CisgICAgbm9GVEwoQy5wcm90b3R5
cGUuY29uc3RydWN0b3IpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAg
ICBub0RGRyhDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworICAgIAorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAg
IHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CitsZXQgQzEgPSBjbGFz
c0RlY2xhcmF0aW9uKCk7CitsZXQgQzIgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CisKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gaSAlIDIgPyBuZXcgQzEgOiBu
ZXcgQzI7CisgICAgYy5zZXRGaWVsZCgndGVzdCcgKyBpKTsKKyAgICBhc3NlcnQuZXF1YWxzKGMu
Z2V0RmllbGQoKSwgJ3Rlc3QnICsgaSk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>