<?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>190047</bug_id>
          
          <creation_ts>2018-09-27 11:12:19 -0700</creation_ts>
          <short_desc>[JSC] Optimize Object.keys by caching own keys results in StructureRareData</short_desc>
          <delta_ts>2019-01-30 14:35:28 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=194050</see_also>
          <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>192715</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1464065</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-27 11:12:19 -0700</bug_when>
    <thetext>Let&apos;s cache the own keys in StructureRareData and reuse it to optimize Object.keys.
We will put JSImmutableButterfly in StructureRareData. And Object.keys will generate JSArray wrapping it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464066</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-27 11:13:04 -0700</bug_when>
    <thetext>Object.keys are super heavily called in web-tooling-benchmarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464074</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-27 11:32:48 -0700</bug_when>
    <thetext>When is it safe to cache this? Object.keys is just self keys, right? Not prototype chain? So I guess if we&apos;re not a dictionary we can cache?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464075</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-27 11:33:04 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #2)
&gt; When is it safe to cache this? Object.keys is just self keys, right? Not
&gt; prototype chain? So I guess if we&apos;re not a dictionary we can cache?

We should also have some story of cleaning up this value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464343</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-28 01:11:02 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; (In reply to Saam Barati from comment #2)
&gt; &gt; When is it safe to cache this? Object.keys is just self keys, right? Not
&gt; &gt; prototype chain? So I guess if we&apos;re not a dictionary we can cache?
&gt; 
&gt; We should also have some story of cleaning up this value.

I think we can align the lifetime of the cache to the JSPropertyEnumerator cache (for-in cache).
But currently, we do not clear JSPropertyEnumerator cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464359</commentid>
    <comment_count>5</comment_count>
      <attachid>351069</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-28 05:56:34 -0700</bug_when>
    <thetext>Created attachment 351069
WIP

Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464361</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-28 06:08:39 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #4)
&gt; (In reply to Saam Barati from comment #3)
&gt; &gt; (In reply to Saam Barati from comment #2)
&gt; &gt; &gt; When is it safe to cache this? Object.keys is just self keys, right? Not
&gt; &gt; &gt; prototype chain? So I guess if we&apos;re not a dictionary we can cache?
&gt; &gt; 
&gt; &gt; We should also have some story of cleaning up this value.
&gt; 
&gt; I think we can align the lifetime of the cache to the JSPropertyEnumerator
&gt; cache (for-in cache).
&gt; But currently, we do not clear JSPropertyEnumerator cache.

Possible ways.

1. Do not add clearing path.

Anyway, when Structure is collected, the cache is also collected.
This is the same lifetime to the existing for-in cache.

2. Use Weak.

Once the cached JSImmutableButterfly is not reachable from elsewhere, it will be collected.

3. Clear cache in Heap::finalize()

It would be a bit costly to iterate StructureRareData (iterating IsoHeap), but we can clear these data when finalizing the collector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464362</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-28 06:09:26 -0700</bug_when>
    <thetext>This is an initial attempt. It improves two benchmarks in SixSpeed since both use Object.keys.

                            baseline                  patched

object-assign.es5      333.2122+-4.8252     ^    219.6000+-3.3567        ^ definitely 1.5174x faster
for-of-object.es6      272.0637+-3.3468     ^    128.9627+-3.7837        ^ definitely 2.1096x faster

And it improves web-tooling-benchmark/lebab since it heavily uses Object.keys.

Before:  lebab:  5.76 runs/s
After:   lebab:  6.84 runs/s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464363</commentid>
    <comment_count>8</comment_count>
      <attachid>351070</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-28 06:11:00 -0700</bug_when>
    <thetext>Created attachment 351070
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486439</commentid>
    <comment_count>9</comment_count>
      <attachid>356924</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-09 09:53:05 -0800</bug_when>
    <thetext>Created attachment 356924
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486533</commentid>
    <comment_count>10</comment_count>
      <attachid>356953</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-10 03:14:24 -0800</bug_when>
    <thetext>Created attachment 356953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487112</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-11 21:19:20 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487270</commentid>
    <comment_count>12</comment_count>
      <attachid>356953</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-12-12 10:45:39 -0800</bug_when>
    <thetext>Comment on attachment 356953
Patch

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

r=me. Although, I agree with Saam that we should probably have a story for collecting stale enumerations. Can you file a bug?

Maybe something like: clear on FullGC + Structure is only referenced via a transition? Not sure how we would determine the latter though...

&gt; Source/JavaScriptCore/runtime/StructureRareDataInlines.h:62
&gt; +    return m_cachedOwnKeys.get();

Do we have an ASSERT(!compilationOrGCThread())?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487511</commentid>
    <comment_count>13</comment_count>
      <attachid>356953</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-12 23:12:25 -0800</bug_when>
    <thetext>Comment on attachment 356953
Patch

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

Thanks. I&apos;ve opened the bug for tracking GC enhancement. https://bugs.webkit.org/show_bug.cgi?id=192659

&gt;&gt; Source/JavaScriptCore/runtime/StructureRareDataInlines.h:62
&gt;&gt; +    return m_cachedOwnKeys.get();
&gt; 
&gt; Do we have an ASSERT(!compilationOrGCThread())?

Sounds nice! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487512</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-12 23:13:43 -0800</bug_when>
    <thetext>Committed r239153: &lt;https://trac.webkit.org/changeset/239153&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487513</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-12 23:14:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/46688655&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487521</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-13 00:06:35 -0800</bug_when>
    <thetext>Committed r239154: &lt;https://trac.webkit.org/changeset/239154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487531</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-13 00:37:40 -0800</bug_when>
    <thetext>Committed r239155: &lt;https://trac.webkit.org/changeset/239155&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487539</commentid>
    <comment_count>18</comment_count>
      <attachid>356953</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-13 01:38:18 -0800</bug_when>
    <thetext>Comment on attachment 356953
Patch

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

I have a few comments.

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:769
&gt; +            case ObjectKeys: {

I really wish we had a way of duplicating less code between AI and constant folding

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:956
&gt; +                            structure-&gt;setCachedOwnKeys(vm, jsCast&lt;JSImmutableButterfly*&gt;(vm.sentinelImmutableButterfly.get()));

Is the whole point of this just to cache after we ask for keys more than once? Why not just store a sentinel using the number 1? The getter can then just return nullptr to people when it’s really 1. You could then get a rid of a lot of pointer compares to this sentinel value too

&gt; Source/JavaScriptCore/runtime/Structure.h:331
&gt; +        WTF::loadLoadFence();

Why? All your loads are dependent loads based off of this

&gt; Source/JavaScriptCore/runtime/StructureRareDataInlines.h:68
&gt; +    WTF::loadLoadFence();

Ditto as to why

&gt; Source/JavaScriptCore/runtime/StructureRareDataInlines.h:74
&gt; +    WTF::storeStoreFence();

This one makes sense and is required</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487542</commentid>
    <comment_count>19</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-13 01:52:04 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #12)
&gt; Comment on attachment 356953 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=356953&amp;action=review
&gt; 
&gt; r=me. Although, I agree with Saam that we should probably have a story for
&gt; collecting stale enumerations. Can you file a bug?
&gt; 
&gt; Maybe something like: clear on FullGC + Structure is only referenced via a
&gt; transition? Not sure how we would determine the latter though...
We could do an even simpler thing:
Delete it if it hasn’t been used since the last GC. We just need to store a bit when we use it.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StructureRareDataInlines.h:62
&gt; &gt; +    return m_cachedOwnKeys.get();
&gt; 
&gt; Do we have an ASSERT(!compilationOrGCThread())?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488032</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-14 13:30:33 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 192715</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488042</commentid>
    <comment_count>21</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-12-14 13:40:39 -0800</bug_when>
    <thetext>*** Bug 192673 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488278</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-15 04:43:27 -0800</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #21)
&gt; *** Bug 192673 has been marked as a duplicate of this bug. ***

OK, I think I found the issue.
When executing Object.keys, we first create JSImmutableButterfly, then store JSString keys into this immutable butterfly.
The problem is that we allocates JSString* after creating JSImmutableButterfly.
So, when the collector is waken up in this JSString* allocation, it will see JSImmutableButterfly which holds many uninitialized hidden fields.
If the marker want to mark them, then we have a bad time.

I think calling `setStartingValue(JSValue())` for Contiguous shape case would be good way to fix the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488282</commentid>
    <comment_count>23</comment_count>
      <attachid>356953</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-15 05:23:24 -0800</bug_when>
    <thetext>Comment on attachment 356953
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:956
&gt;&gt; +                            structure-&gt;setCachedOwnKeys(vm, jsCast&lt;JSImmutableButterfly*&gt;(vm.sentinelImmutableButterfly.get()));
&gt; 
&gt; Is the whole point of this just to cache after we ask for keys more than once? Why not just store a sentinel using the number 1? The getter can then just return nullptr to people when it’s really 1. You could then get a rid of a lot of pointer compares to this sentinel value too

This a bit simplifies the marking code in StructureRareData::visitChildren and the user code of cachedOwnKeys.
I&apos;ll attempt to change it to some dummy value.

&gt;&gt; Source/JavaScriptCore/runtime/Structure.h:331
&gt;&gt; +        WTF::loadLoadFence();
&gt; 
&gt; Why? All your loads are dependent loads based off of this

Right, removed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureRareDataInlines.h:68
&gt;&gt; +    WTF::loadLoadFence();
&gt; 
&gt; Ditto as to why

Ah, after considering about it, I think it is not necessary. No load-load barrier is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488283</commentid>
    <comment_count>24</comment_count>
      <attachid>357399</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-15 05:43:42 -0800</bug_when>
    <thetext>Created attachment 357399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488302</commentid>
    <comment_count>25</comment_count>
      <attachid>357399</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-15 12:02:49 -0800</bug_when>
    <thetext>Comment on attachment 357399
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2587
&gt; +            if (structureSet.isFinite() &amp;&amp; structureSet.size() == 1) {

Do we ever think we’d see two structures with the same ownKeys array? We could serialize this across &gt;1 structure somehow if we ever found it useful

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2590
&gt; +                    auto* immutableButterfly = rareData-&gt;cachedOwnKeysConcurrently();

Why not just make the getter return nullptr if it’s the sentinel? Then you could have some function like getIgnoringSentinel for the only getter you call that cares if it’s actually the sentinel value

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2695
&gt; +    case ObjectKeysIntrinsic: {

Is Object.keys observable if the input isn’t a Proxy?

&gt; Source/JavaScriptCore/dfg/DFGNode.cpp:229
&gt; +    setOpAndDefaultFlags(NewArrayBuffer);

Does this node do the right thing if we’re having a bad time?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12394
&gt; +            slowCases.append(m_jit.branch32(CCallHelpers::Equal, CCallHelpers::Address(scratchGPR, JSCell::structureIDOffset()), TrustedImm32(bitwise_cast&lt;int32_t&gt;(m_jit.vm()-&gt;structureStructure-&gt;structureID()))));

This is how we determine its RareData? Does StructureRareData have a a JSType?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12399
&gt; +            slowCases.append(m_jit.branchPtr(CCallHelpers::Equal, scratchGPR, TrustedImmPtr(bitwise_cast&lt;void*&gt;(StructureRareData::cachedOwnKeysSentinel()))));

You can combine both branches here if you assert the sentinel is “1”, and branch BelowOrEqual

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5531
&gt; +                m_out.branch(m_out.notEqual(cachedOwnKeys, m_out.constIntPtr(bitwise_cast&lt;void*&gt;(StructureRareData::cachedOwnKeysSentinel()))), unsure(useCacheCase), unsure(slowCase));

Ditto about combining branches

&gt; Source/JavaScriptCore/runtime/JSImmutableButterfly.h:123
&gt; +        if (hasContiguous(indexingType())) {

Why is this needed?

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:939
&gt; +                        auto* cachedButterfly = structure-&gt;cachedOwnKeys();

Based on earlier comment, this would be the only call to something like “cachedOwnKeysIgnorningSentinel”</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488342</commentid>
    <comment_count>26</comment_count>
      <attachid>357399</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-15 20:40:35 -0800</bug_when>
    <thetext>Comment on attachment 357399
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2587
&gt;&gt; +            if (structureSet.isFinite() &amp;&amp; structureSet.size() == 1) {
&gt; 
&gt; Do we ever think we’d see two structures with the same ownKeys array? We could serialize this across &gt;1 structure somehow if we ever found it useful

Currently, I think we do not have the use cases that receive benefit from it. Once it is required, we need to consider the optimization.
But even in that case, ObjectKeys is accelerated if the given Structure has the cache.

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2590
&gt;&gt; +                    auto* immutableButterfly = rareData-&gt;cachedOwnKeysConcurrently();
&gt; 
&gt; Why not just make the getter return nullptr if it’s the sentinel? Then you could have some function like getIgnoringSentinel for the only getter you call that cares if it’s actually the sentinel value

Interesting. Basically, all the concurrent functions do not care about sentinel since they do not set a new JSImmutableButterfly. So, only the function called from the main thread matters.
Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2695
&gt;&gt; +    case ObjectKeysIntrinsic: {
&gt; 
&gt; Is Object.keys observable if the input isn’t a Proxy?

No, it&apos;s not observable if the input isn&apos;t a Proxy. But as a first step, I think the current implementation is OK.
We could optimize it further by adding special care to clobberizing rules in the subsequent patch.

Moreover, if ObjectKeys only takes one Structure which is proven in AI, then it is converted into NewArrayBuffer, which tells us that it does not have any side effect.
So, I think large part of the use cases is already covered by this.

&gt;&gt; Source/JavaScriptCore/dfg/DFGNode.cpp:229
&gt;&gt; +    setOpAndDefaultFlags(NewArrayBuffer);
&gt; 
&gt; Does this node do the right thing if we’re having a bad time?

We convert ObjectKeys into NewArrayBuffer only when we can watch the HavingABadTimeWatchpoint.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12394
&gt;&gt; +            slowCases.append(m_jit.branch32(CCallHelpers::Equal, CCallHelpers::Address(scratchGPR, JSCell::structureIDOffset()), TrustedImm32(bitwise_cast&lt;int32_t&gt;(m_jit.vm()-&gt;structureStructure-&gt;structureID()))));
&gt; 
&gt; This is how we determine its RareData? Does StructureRareData have a a JSType?

Yes. You can see Structure::isRareData function. And StructureRareData does not have a JSType.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12399
&gt;&gt; +            slowCases.append(m_jit.branchPtr(CCallHelpers::Equal, scratchGPR, TrustedImmPtr(bitwise_cast&lt;void*&gt;(StructureRareData::cachedOwnKeysSentinel()))));
&gt; 
&gt; You can combine both branches here if you assert the sentinel is “1”, and branch BelowOrEqual

Nice. fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5531
&gt;&gt; +                m_out.branch(m_out.notEqual(cachedOwnKeys, m_out.constIntPtr(bitwise_cast&lt;void*&gt;(StructureRareData::cachedOwnKeysSentinel()))), unsure(useCacheCase), unsure(slowCase));
&gt; 
&gt; Ditto about combining branches

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSImmutableButterfly.h:123
&gt;&gt; +        if (hasContiguous(indexingType())) {
&gt; 
&gt; Why is this needed?

If this does not exist, the storage of JSImmutableButterfly (Contiguous) remains uninitialized when it is created.
This leads to the crash if we perform allocation after JSImmutableButterfly is created and before all the storage is filled.
This patch is rolled out because of this GC issue.

Two possible fixes are considered,
(1) Put DeferGC on ObjectKeys&apos; appropriate path. But since ObjectKeys would create so many JSString*, it is not so desirable.
(2) Fill JSImmutableButterfly Contiguous storage fields.

In this patch, I took (2). This approach can fix the above scenario, which can easily happen.
And since JSValue() is JSEmpty (nullptr in 64bit), the following code could be compiled into very efficient one.

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:939
&gt;&gt; +                        auto* cachedButterfly = structure-&gt;cachedOwnKeys();
&gt; 
&gt; Based on earlier comment, this would be the only call to something like “cachedOwnKeysIgnorningSentinel”

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488343</commentid>
    <comment_count>27</comment_count>
      <attachid>357412</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-15 21:15:39 -0800</bug_when>
    <thetext>Created attachment 357412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488390</commentid>
    <comment_count>28</comment_count>
      <attachid>357427</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-16 21:05:00 -0800</bug_when>
    <thetext>Created attachment 357427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488600</commentid>
    <comment_count>29</comment_count>
      <attachid>357427</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-17 14:40:02 -0800</bug_when>
    <thetext>Comment on attachment 357427
Patch

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

r=me. Nice!

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2591
&gt; +                    auto* immutableButterfly = rareData-&gt;cachedOwnKeysConcurrently();
&gt; +                    if (immutableButterfly &amp;&amp; immutableButterfly != StructureRareData::cachedOwnKeysSentinel()) {

This should now just be:
if (auto* immutableButterfly = rareData-&gt;cachedOwnKeysConcurrently()) { ... }

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:776
&gt; +                            auto* immutableButterfly = rareData-&gt;cachedOwnKeysConcurrently();
&gt; +                            if (immutableButterfly &amp;&amp; immutableButterfly != StructureRareData::cachedOwnKeysSentinel()) {

ditto

&gt; Source/JavaScriptCore/runtime/JSImmutableButterfly.h:126
&gt; +        if (hasContiguous(indexingType())) {
&gt; +            for (unsigned index = 0; index &lt; length; ++index)
&gt; +                toButterfly()-&gt;contiguous().at(this, index).setStartingValue(JSValue());
&gt; +        }

Why not only do this for Object.keys? Seems like this might affect other callers too? Seems like there should be some kind of ::create that has this in its name?

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:939
&gt; +                            // Cache the immutable butterfly!

nit: This comment has no purpose.

&gt; Source/JavaScriptCore/runtime/StructureRareDataInlines.h:85
&gt; +    WTF::storeStoreFence();

nit: Only needs to be done on the &quot;else&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488806</commentid>
    <comment_count>30</comment_count>
      <attachid>357427</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-17 22:51:52 -0800</bug_when>
    <thetext>Comment on attachment 357427
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2591
&gt;&gt; +                    if (immutableButterfly &amp;&amp; immutableButterfly != StructureRareData::cachedOwnKeysSentinel()) {
&gt; 
&gt; This should now just be:
&gt; if (auto* immutableButterfly = rareData-&gt;cachedOwnKeysConcurrently()) { ... }

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:776
&gt;&gt; +                            if (immutableButterfly &amp;&amp; immutableButterfly != StructureRareData::cachedOwnKeysSentinel()) {
&gt; 
&gt; ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSImmutableButterfly.h:126
&gt;&gt; +        }
&gt; 
&gt; Why not only do this for Object.keys? Seems like this might affect other callers too? Seems like there should be some kind of ::create that has this in its name?

I think this is not bad. If the code creates JSImmutableButterfly and does some allocations before filling up the storage, then we have a bad time if this code does not exist.
If we would like to remove this code, I think we should put `DisallowGC` on all the places creating JSImmutableButterfly, putting some optimized path for that use cases.

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:939
&gt;&gt; +                            // Cache the immutable butterfly!
&gt; 
&gt; nit: This comment has no purpose.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureRareDataInlines.h:85
&gt;&gt; +    WTF::storeStoreFence();
&gt; 
&gt; nit: Only needs to be done on the &quot;else&quot;

OK, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488807</commentid>
    <comment_count>31</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-17 22:54:54 -0800</bug_when>
    <thetext>Committed r239324: &lt;https://trac.webkit.org/changeset/239324&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351069</attachid>
            <date>2018-09-28 05:56:34 -0700</date>
            <delta_ts>2018-09-28 06:10:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-190047-20180928215632.patch</filename>
            <type>text/plain</type>
            <size>45350</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZTVlOGFiZTFlNDI4NzU4ZDYwZmE5ZjQ3NzUyODc0Zjk3MzMzOTQ5Li4wOGJiMjY1MWY3ZTM4Y2Zi
NDg5ZDFhNDA0N2RiYTQ0NmQ3YjY0YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxOC0wOS0yOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5rZXlzIGJ5IGNhY2hp
bmcgb3duIGtleXMgcmVzdWx0cyBpbiBTdHJ1Y3R1cmVSYXJlRGF0YQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9s
ZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTmV3QXJyYXlCdWZmZXIp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
T2JqZWN0S2V5cyk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAo
SlNDOjppbnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJ
bW11dGFibGVCdXR0ZXJmbHk6OmNyZWF0ZVNlbnRpbmVsKToKKyAgICAgICAgKiBydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b3duUHJvcGVydHlLZXlzKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OmNhbkNhY2hlT3duS2V5cyBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRh
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hl
ZFByb3BlcnR5TmFtZUVudW1lcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5cyBjb25zdCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRPd25LZXlzKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnByZXZpb3VzSUQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wOS0yNyAgU2FhbSBiYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBWZXJpZnkgdGhlIGNvbnRlbnRzIG9mIEFzc2VtYmxlckJ1
ZmZlciBvbiBhcm02NGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBmODQ1YzU4MTk3MTllZDhkZmQw
ZDY0N2Y5YzIwMzJhNTlkNjFlNGFjLi4yMWE0MjUzZTEwN2IwYzJkN2Y4YTJiNjdiYjFmMWVhMDAz
NTZhNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJp
bmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvQm9vbGVhbkxhdHRpY2UuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KIApAQCAtMjUzMyw2ICsyNTM0LDI4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgeworICAgICAgICAgICAg
YXV0byYgc3RydWN0dXJlU2V0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmU7
CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlU2V0LmlzRmluaXRlKCkgJiYgc3RydWN0dXJlU2V0
LnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmVTZXQub25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgIGF1
dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkT3duS2V5cygpOworICAg
ICAgICAgICAgICAgIGlmIChpbW11dGFibGVCdXR0ZXJmbHkgJiYgaW1tdXRhYmxlQnV0dGVyZmx5
ICE9IG1fdm0uc2VudGluZWxJbW11dGFibGVCdXR0ZXJmbHkuZ2V0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChu
b2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50
cyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNBcnJheSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNs
b2JiZXJXb3JsZCgpOworICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQXJyYXkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNhc2UgQ2Fs
bE9iamVjdENvbnN0cnVjdG9yOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBmMTA2MTQ5ZmJmMDU5ZDJjMjkzOGZhMjkwOGJkMTY5
MTFjYTA4YzdhLi41ZjdjOGM3MjcwMzdlZmVhN2JjOTczNjkxMTBiZGQ4YmMxNmQ3MmZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MjY3NSw2ICsyNjc1LDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5c0ludHJpbnNpYzogeworICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAyKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygpOworICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKE9iamVjdEtleXMsIGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2lj
OiB7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAppbmRleCA0ZmQ5ZGI2MWE4YTgxMmUxN2IyNzExMzRmOTMwZWUyMTQ2NmIzYzRlLi5hZWJm
NjNiN2MyZWE3Zjg1ODk0YWQyMDAyOTNjOWQzNGY2N2U3NDc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjUzLDYgKzY1Myw3IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBj
b25zdCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgSW5zdGFuY2VPZjoK
ICAgICBjYXNlIFN0cmluZ1ZhbHVlT2Y6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgICAgICBy
ZWFkKFdvcmxkKTsKICAgICAgICAgd3JpdGUoSGVhcCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1
MTQsNyArMTUxNSw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAgICB9
CiAKLQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2Ug
TmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBmYjFmNmRjMjMxYWJlNDQ4ZDVmOTE2YzYz
NDhmZDFmMTM3ZmJhMDIzLi43YjZiYzMwMzY0OWJkMGJjYWI2NzhiMWRhMGJiYTRmM2VhYzcwYjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcApAQCAtNzY2LDYgKzc2NiwyNCBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV9zdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVTZXQuaXNG
aW5pdGUoKSAmJiBzdHJ1Y3R1cmVTZXQuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0Lm9ubHlT
dHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltbXV0YWJsZUJ1dHRl
cmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkT3duS2V5cygpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGltbXV0YWJsZUJ1dHRlcmZseSAmJiBpbW11dGFibGVCdXR0ZXJmbHkgIT0gbV9ncmFw
aC5tX3ZtLnNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5LmdldCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludChub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9OZXdBcnJheUJ1ZmZlcihtX2dyYXBoLmZyZWV6ZShpbW11dGFibGVCdXR0ZXJmbHkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgY2FzZSBUb051bWJlcjogewogICAgICAgICAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjQnl0ZWNvZGVOdW1iZXIp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IGNiMTY3ZjAyOWNlMzAyM2VkM2EwZTMyMzdmMzFhZmE1NTdhNjZjNjEu
LjViNmYzNTE5ZDM0Yzc0NTljNmQ3YTgwYWQ3MTg0ZGYwYmIyMGJmZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMzMyw2ICszMzMsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBD
cmVhdGVUaGlzOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoK
ICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggN2M3MmYwM2M3MTE3NDNkNWRiNjQyMjYyZDA4
NjgzYzM4NjI3MjY1OS4uZTg2NjgyYWM2MTMzY2IwNmY5Y2Y3NGQzNjZkMmZkNWZkMjhhMzg4MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDU1
LDYgKzE0NTUsMTQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgT2JqZWN0S2V5czogeworICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgewor
ICAgICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lk
ZW50OiB7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
CmluZGV4IGRkOTY3YzhhZDIzNzIwYzg4NTY2NzU4NzM1MDZlNTJkMTUwZmI3NzEuLjNkMWMzYmEx
Mzc2MjFlM2IyZjAzNDE1YmI5MWQxNDEyMzYzY2U0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAj
aW5jbHVkZSAiREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCkBAIC0yMjMsNiArMjI0LDE3IEBAIHZvaWQgTm9kZTo6Y29udmVy
dFRvTGF6eUpTQ29uc3RhbnQoR3JhcGgmIGdyYXBoLCBMYXp5SlNWYWx1ZSB2YWx1ZSkKICAgICBj
aGlsZHJlbi5yZXNldCgpOwogfQogCit2b2lkIE5vZGU6OmNvbnZlcnRUb05ld0FycmF5QnVmZmVy
KEZyb3plblZhbHVlKiBpbW11dGFibGVCdXR0ZXJmbHkpCit7CisgICAgc2V0T3BBbmREZWZhdWx0
RmxhZ3MoTmV3QXJyYXlCdWZmZXIpOworICAgIE5ld0FycmF5QnVmZmVyRGF0YSBkYXRhIHsgfTsK
KyAgICBkYXRhLmluZGV4aW5nTW9kZSA9IGltbXV0YWJsZUJ1dHRlcmZseS0+Y2FzdDxKU0ltbXV0
YWJsZUJ1dHRlcmZseSo+KCktPmluZGV4aW5nTW9kZSgpOworICAgIGRhdGEudmVjdG9yTGVuZ3Ro
SGludCA9IGltbXV0YWJsZUJ1dHRlcmZseS0+Y2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCkt
PnRvQnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpOworICAgIGNoaWxkcmVuLnJlc2V0KCk7Cisg
ICAgbV9vcEluZm8gPSBpbW11dGFibGVCdXR0ZXJmbHk7CisgICAgbV9vcEluZm8yID0gZGF0YS5h
c1F1YWRXb3JkOworfQorCiB2b2lkIE5vZGU6OmNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVuVmFs
dWUqIGV4ZWN1dGFibGUpCiB7CiAgICAgTm9kZVR5cGUgbmV3T3AgPSBMYXN0Tm9kZVR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDdkNTg5MzBiNWI3YzhkMTViNjI4Zjll
ZWJlYzk4NDc1MjZlYTczNmMuLjNjYThiYTAwOTM2NTVhNWQ2NDU2ZDc1NTFhMDYyNGU3MDc5ODhh
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC03NjEsNiArNzYxLDggQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5mbyA9IHN0cnVjdHVyZTsKICAgICAgICAgbV9v
cEluZm8yID0gT3BJbmZvV3JhcHBlcigpOwogICAgIH0KKworICAgIHZvaWQgY29udmVydFRvTmV3
QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUqIGltbXV0YWJsZUJ1dHRlcmZseSk7CiAgICAgCiAgICAg
dm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkMzBjOTI1ZDk4ZjQ0NWJhMDgwYTlhMmNjODA5
MTdkYjQ0OGE3NDcwLi5kMGYyNzkxY2M1MzkwZTI4OTVkMTdjYzNhZTA3MmE0YWRkNTk4Nzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNTcsNiArMjU3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFBhcnNlSW50LCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0UHJvdG90eXBl
T2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RD
cmVhdGUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhPYmpl
Y3RLZXlzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8q
IEF0b21pY3Mgb2JqZWN0IGZ1bmN0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXRvbWljc0FkZCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyYzAxMWU4OTMyNjdj
NjY2MmJlN2VjMDIyZTc0NDU2MTM5MGM3ZmRjLi5jOThhMmQ0MDZiMjhlMTBkNzNhNTk0MjI2NDA0
Y2VkMTg4NWQ1M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTI0OCw2ICsyNDgsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ub1RoaXNTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWwKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhl
eGVjLCBTdHJpY3RNb2RlKSk7CiB9CiAKK0pTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
T2JqZWN0S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3Qp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT2Jq
ZWN0KS50b09iamVjdChleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG93blByb3BlcnR5S2V5cyhl
eGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGll
c01vZGU6OkV4Y2x1ZGUpOworfQorCitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9i
amVjdEtleXNPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9w
ZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKTsK
K30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90b3R5cGUpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
aW5kZXggNmNiNTE1Y2RlMDM2ZTNhMmZmYWRmYWFkYWFmMGExMjAxYzU5N2U5OC4uNzgyZmFlMWM2
MjdkODEzMGYwMDY3NTFkZjhlMGMzYTcxZDkzNzM4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTQzLDYgKzQzLDggQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkKEV4ZWNTdGF0ZSos
IEVuY28KIC8vIFRoZXNlIHJvdXRpbmVzIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1w
bGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQsIFVuaXF1ZWRTdHJp
bmdJbXBsKikgV1RGX0lOVEVSTkFMOworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25P
YmplY3RLZXlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0Fy
cmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QoRXhlY1N0YXRlKiwg
SlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
T2JqZWN0Q3JlYXRlKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2JqZWN0KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJf
dCBpbmxpbmVDYXBhY2l0eSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRl
eCBmMzdmZDA2Mzk1MTQ0YzQxZjQ5NTI4MTgwNGYzYjQzMDNlODI3YzIyLi45ZDA1NTZhZWI0NTg3
OTcxMzA5YWM4Zjg1NGFlNjBlZTg4MzJiY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
OTI5LDcgKzkyOSw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAgY2FzZSBOZXdBcnJheVdp
dGhTaXplOgogICAgICAgICBjYXNlIENyZWF0ZVJlc3Q6Ci0gICAgICAgIGNhc2UgTmV3QXJyYXlC
dWZmZXI6IHsKKyAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKKyAgICAgICAgY2FzZSBPYmpl
Y3RLZXlzOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNBcnJheSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAppbmRleCA2MDgwMWQwNjQ5NjA4MDllNzJlY2RjODc1MzAzZmY3NTFlMDdh
MDEyLi44N2ZmNjI0YzRhZmZkYzk2NmJlNmQxNTdlYTNjZTEyM2E0M2Q4MDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTc4LDYgKzE3OCw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBD
cmVhdGVUaGlzOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoK
ICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIFNldENhbGxlZToKICAgICBjYXNlIEdldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0Yjc4ZDExMjA3ZDZhNWE2OGJkOWI1ZTM2ZjI1
NTZhOWI1M2EzMzExLi5iNmE5OTU5ZmNjMGRlN2UxNzE2OWExNjRmNWQ5N2NiNmIwNjFiZDA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMTIxOTksNiArMTIxOTksOTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvVGhp
cyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5vZGUpOwogfQogCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2RlKQoreworICAg
IHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBPYmplY3RVc2U6
IHsKKyAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2lu
dChub2RlKSkgeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb2JqZWN0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhp
cyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMyh0aGlzKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisK
KyAgICAgICAgICAgIEdQUlJlZyBvYmplY3RHUFIgPSBvYmplY3QuZ3ByKCk7CisgICAgICAgICAg
ICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOworICAgICAgICAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDNHUFIg
PSBzY3JhdGNoMy5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CisKKyAgICAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDEoKSwgb2Jq
ZWN0R1BSKTsKKworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CisgICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSgqbV9qaXQudm0oKSwgb2JqZWN0
R1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnByZXZpb3Vz
T3JSYXJlRGF0YU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2hH
UFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpFcXVhbCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihtX2ppdC52bSgpLT5zdHJ1Y3R1cmVT
dHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSk7CisKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZz
ZXRPZkNhY2hlZE93bktleXMoKSksIHNjcmF0Y2hHUFIpOworCisgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNo
R1BSKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2Fs
bEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBtX2ppdC52bSgpLT5zZW50aW5lbEltbXV0YWJsZUJ1dHRlcmZseS5nZXQo
KSkpKTsKKworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dCdXRBcnJh
eUJ1ZmZlckNhc2VzOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlTdHJ1Y3R1cmUgPSBtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91
cykpOworCisgICAgICAgICAgICBtX2ppdC5tb3ZlKHNjcmF0Y2hHUFIsIHNjcmF0Y2gzR1BSKTsK
KyAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tUHRyKEpTSW1tdXRhYmxlQnV0dGVy
Zmx5OjpvZmZzZXRPZkRhdGEoKSksIHNjcmF0Y2hHUFIpOworCisgICAgICAgICAgICBlbWl0QWxs
b2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoYXJyYXlTdHJ1
Y3R1cmUpLCBzY3JhdGNoR1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2gyR1BSLCBzbG93QnV0QXJy
YXlCdWZmZXJDYXNlcyk7CisKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93QnV0QXJyYXlCdWZmZXJDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlC
dWZmZXIsIHJlc3VsdEdQUiwgYXJyYXlTdHJ1Y3R1cmUsIHNjcmF0Y2gzR1BSKSk7CisKKyAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIHJlc3VsdEdQUiwgb2JqZWN0R1BSKSk7CisKKyAg
ICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb2JqZWN0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBHUFJSZWcgb2JqZWN0R1BSID0gb2JqZWN0Lmdw
cigpOworCisgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDEoKSwgb2JqZWN0R1BS
KTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCwgcmVz
dWx0R1BSLCBvYmplY3RHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9iamVj
dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgSlNWYWx1ZVJlZ3Mgb2JqZWN0UmVn
cyA9IG9iamVjdC5qc1ZhbHVlUmVncygpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25PYmplY3RLZXlzLCByZXN1bHRHUFIsIG9iamVjdFJlZ3MpOworICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOworCisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNo
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlNWMzMGFmMzUyMTBiM2JhMDQ0NGExODRkMjRh
MzIyZGNjZWQ1Y2M3Li40YmExNTUzNWQ4YzVlNDExMWI3MmU2MWE1MzA1YzJkZDRmMzcyZGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0x
NDcyLDYgKzE0NzIsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxl
TmV3QXJyYXlXaXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheShO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9UaGlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVP
YmplY3RLZXlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld09i
amVjdChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxNjZlNGE0Yzg4NDRmMmY4OTM3NjEwNmUzNzg5Y2Qz
NmZkMTE5YjIyLi5iNWU4NTAxMTRmN2MxMGQ0MmY0ODIzOTRkNjdmMTI5NTc1NzNiMDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKQEAgLTMxMzksNiArMzEzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5
czogeworICAgICAgICBjb21waWxlT2JqZWN0S2V5cyhub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBDcmVhdGVUaGlzOiB7CiAgICAgICAgIGNvbXBpbGVDcmVhdGVUaGlz
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM3MDhjOWM0NGE2YWUxMWQwOTY5YjA2ZmVj
ZjBmOWFjZWRlMDJhN2MuLmYyYTIxNjZjNzk0MWUyMTlmZWEzMzlmNjU0ODE3OTg1YmQ2NmYyOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtMzM4MSw2ICszMzgxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBPYmplY3RLZXlz
OiB7CisgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKICAgICBjYXNlIENyZWF0ZVRoaXM6IHsKICAgICAgICAgY29tcGlsZUNyZWF0ZVRoaXMo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCA4YzI0YTQ0MGM2NTJkYzU0NjYz
Nzg0YWM3ODg2MGZmYWQ4YTZlYWYzLi42MjQ0OTcyODA4ODdiZTBkMTRiZDU5YjYwZjM3ZGViNmE5
Y2RmZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtMTE2LDggKzExNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9pbmRleGlu
Z01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBhY2l0eSwgU3Ry
dWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX3By
ZXZpb3VzT3JSYXJlRGF0YSwgU3RydWN0dXJlOjpwcmV2aW91c09yUmFyZURhdGFPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZE93
bktleXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZE93bktleXMoKSkgXAogICAg
IG1hY3JvKEhhc2hNYXBJbXBsX2NhcGFjaXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhh
c2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhh
c2hNYXBJbXBsX2J1ZmZlciwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tl
dERhdGFLZXk+Pjo6b2Zmc2V0T2ZCdWZmZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hl
YWQsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9m
ZnNldE9mSGVhZCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKaW5kZXggM2U0YWZhZDBjNDZjYWI4ZDc4OTczODA4Y2Y4NTQ4ZGQxOGNjNmJkYS4u
ZGJmNjY4Y2U2YTgwM2JiZmM0MTgxNGMxZTAxZTNhNmE0MTA4NTYwZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTkzLDYgKzE5Myw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
Q2FsbE9iamVjdENvbnN0cnVjdG9yOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgog
ICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIE1h
a2VSb3BlOgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIFRyeUdldEJ5SWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
NzA3YmQ3NzNkNzE3ZmJiNDRiZThmODdkMjYzNmQ2YjA4NDE3NTY5Ni4uOWRjNDZmNmM2NTJkMDRl
N2I3ZGYzOGM0ZWIyNmY1MTVmZTYyMGE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtODQ0LDYgKzg0NCw5IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgICAgICAgICAgY29tcGlsZU9i
amVjdENyZWF0ZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT2JqZWN0S2V5
czoKKyAgICAgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBjb21waWxlTmV3T2JqZWN0KCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTUzODMsNiArNTM4Niw3NSBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBzZXRJbnQzMihtX291dC5waGkoSW50MzIsIHplcm9MZW5ndGhSZXN1
bHQsIG5vblplcm9MZW5ndGhSZXN1bHQpKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVPYmpl
Y3RLZXlzKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpIHsKKyAgICAgICAgY2FzZSBPYmplY3RVc2U6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBo
LmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobV9ub2RlKSkgeworICAgICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayByYXJlRGF0YUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxDYWNoZUNhc2UgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHVzZUNhY2hlQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0J1dEFycmF5QnVm
ZmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sg
c2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgICAgICBMVmFs
dWUgb2JqZWN0ID0gbG93T2JqZWN0KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKG9iamVjdCk7CisgICAgICAgICAgICAg
ICAgTFZhbHVlIHByZXZpb3VzT3JSYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBt
X2hlYXBzLlN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEpOworICAgICAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHByZXZpb3VzT3JSYXJlRGF0YSksIHVuc3VyZShub3RO
dWxsQ2FzZSksIHVuc3VyZShzbG93Q2FzZSkpOworCisgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3ROdWxsQ2FzZSwgcmFyZURhdGFDYXNlKTsK
KyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
Lm5vdEVxdWFsKG1fb3V0LmxvYWQzMihwcmV2aW91c09yUmFyZURhdGEsIG1faGVhcHMuSlNDZWxs
X3N0cnVjdHVyZUlEKSwgbV9vdXQuY29uc3RJbnQzMihtX2dyYXBoLm1fdm0uc3RydWN0dXJlU3Ry
dWN0dXJlLT5zdHJ1Y3R1cmVJRCgpKSksCisgICAgICAgICAgICAgICAgICAgIHVuc3VyZShyYXJl
RGF0YUNhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHJhcmVEYXRhQ2FzZSwgbm90TnVsbENhY2hlQ2FzZSk7CisgICAgICAgICAgICAgICAg
TFZhbHVlIGNhY2hlZE93bktleXMgPSBtX291dC5sb2FkUHRyKHByZXZpb3VzT3JSYXJlRGF0YSwg
bV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzKTsKKyAgICAgICAgICAgICAg
ICBtX291dC5icmFuY2gobV9vdXQubm90TnVsbChjYWNoZWRPd25LZXlzKSwgdW5zdXJlKG5vdE51
bGxDYWNoZUNhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdE51bGxDYWNoZUNhc2UsIHVzZUNhY2hlQ2FzZSk7CisgICAgICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKGNhY2hlZE93bktleXMsIHdlYWtQb2ludGVy
KG1fZ3JhcGgubV92bS5zZW50aW5lbEltbXV0YWJsZUJ1dHRlcmZseS5nZXQoKSkpLCB1bnN1cmUo
dXNlQ2FjaGVDYXNlKSwgdW5zdXJlKHNsb3dDYXNlKSk7CisKKyAgICAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyh1c2VDYWNoZUNhc2UsIHNsb3dCdXRBcnJheUJ1ZmZlckNhc2UpOworICAgICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBhcnJheVN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSk7CisgICAgICAgICAgICAgICAgTFZh
bHVlIGZhc3RBcnJheSA9IGFsbG9jYXRlT2JqZWN0PEpTQXJyYXk+KGFycmF5U3RydWN0dXJlLCBt
X291dC5hZGRQdHIoY2FjaGVkT3duS2V5cywgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9m
RGF0YSgpKSwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSk7CisgICAgICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0QXJyYXkpOworICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKHNsb3dCdXRBcnJheUJ1ZmZlckNhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgc2xvd0FycmF5ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uTmV3QXJyYXlCdWZmZXIpLCBtX2NhbGxGcmFtZSwgd2Vha1N0cnVjdHVyZShhcnJheVN0
cnVjdHVyZSksIGNhY2hlZE93bktleXMpOworICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dCdXRBcnJheUJ1ZmZlclJlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93QXJyYXkpOworICAg
ICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRW
YWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0
IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2Vu
ZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxH
ZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uT2JqZWN0
S2V5c09iamVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBsb2NhdGlvbnNbMV0uZGlyZWN0
R1BSKCkpOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBvYmpl
Y3QpOworICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVy
VHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93QnV0QXJyYXlCdWZmZXJSZXN1bHQsIHNsb3dSZXN1bHQp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0S2V5
c09iamVjdCksIG1fY2FsbEZyYW1lLCBsb3dPYmplY3QobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZToKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uT2JqZWN0S2V5cyksIG1fY2FsbEZyYW1lLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZU9iamVjdENyZWF0ZSgpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRleCBhYmU2ZjE3Mjg2ZTNiZTM5MWUwYzM3
NGMxZjZjNTc0YzViZDg2N2ZiLi5mYmM0ZWYzY2Q4ZjJlYzYyZGE5MzAwZGEyNzFiMTAyMzM5NzQz
NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAg
LTExOSw2ICsxMTksOCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRy
aW5zaWMpCiAgICAgICAgIHJldHVybiAiT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOwog
ICAgIGNhc2UgT2JqZWN0SXNJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiT2JqZWN0SXNJbnRy
aW5zaWMiOworICAgIGNhc2UgT2JqZWN0S2V5c0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJP
YmplY3RLZXlzSW50cmluc2ljIjsKICAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJp
bnNpYzoKICAgICAgICAgcmV0dXJuICJSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOwog
ICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggY2ZiZDE4NDk2MzUyYmI5ZDRlMjZhMDJj
NTY5M2I4YzQ2MDAxOTAyNS4uYjQ3ZjQ2ZDllNGRlMDAxM2RlODM0NmU4MmU2ODE2ZjVmZDAyZjc0
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTcyLDYg
KzcyLDcgQEAgZW51bSBJbnRyaW5zaWMgewogICAgIE9iamVjdENyZWF0ZUludHJpbnNpYywKICAg
ICBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywKICAgICBPYmplY3RJc0ludHJpbnNpYywK
KyAgICBPYmplY3RLZXlzSW50cmluc2ljLAogICAgIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJp
bnNpYywKICAgICBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljLAogICAgIFN0cmluZ1By
b3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAppbmRleCAyODQ3ODNjMGM3NTU5NmFkZGE1
YTFmOThmMzZiMDY5ZTBlYjhlNGExLi4xZmY0ZDI3Njc3NTMyOGJkMGM2Y2EyZTQxNDY3MDM4Mjc1
MTVlOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0
YWJsZUJ1dHRlcmZseS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1t
dXRhYmxlQnV0dGVyZmx5LmgKQEAgLTY3LDYgKzY3LDExIEBAIGNsYXNzIEpTSW1tdXRhYmxlQnV0
dGVyZmx5IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBhcnJheTsKICAgICB9CiAK
KyAgICBzdGF0aWMgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNyZWF0ZVNlbnRpbmVsKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIENvcHlPbldyaXRlQXJyYXlXaXRoQ29u
dGlndW91cywgMCk7CisgICAgfQorCiAgICAgdW5zaWduZWQgcHVibGljTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9oZWFkZXIucHVibGljTGVuZ3RoKCk7IH0KICAgICB1bnNpZ25lZCB2ZWN0b3JM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlci52ZWN0b3JMZW5ndGgoKTsgfQogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyLnB1YmxpY0xlbmd0aCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggM2Y5ZjgxYzM0ZmQyOTZjZTI3YmZiZDcwYzE5N2ViYTA4MjkwYmUwMy4uNTRm
YzA0MWUwZWYyMmRlMGEyYzFkODAzNDQzNTEwY2NhZWNiMTgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNJ
bW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmpl
Y3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKQEAgLTczLDcg
Kzc0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ycyBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZ2V0T3du
UHJvcGVydHlTeW1ib2xzICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9s
cyAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAga2V5cyAgICAgICAgICAgICAgICAgICAgICBv
YmplY3RDb25zdHJ1Y3RvcktleXMgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAga2V5cyAgICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcktleXMg
ICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEgT2JqZWN0S2V5c0ludHJp
bnNpYwogICBkZWZpbmVQcm9wZXJ0eSAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydHkgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICBkZWZpbmVQcm9wZXJ0
aWVzICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMgogICBjcmVhdGUgICAgICAgICAgICAgICAgICAgIG9iamVjdENv
bnN0cnVjdG9yQ3JlYXRlICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMiBP
YmplY3RDcmVhdGVJbnRyaW5zaWMKQEAgLTI3OSw3ICsyODAsNiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNT
dGF0ZSogZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMs
IG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZTo6SW5jbHVkZSkpOwogfQogCi0vLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4K
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtODk5LDExICs4OTks
MjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzYW1l
VmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSkpOwogfQog
Ci0vLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KIEpTQXJyYXkqIG93blByb3Bl
cnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1v
ZGUgcHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3Bl
cnRpZXNNb2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGJvb2wgaXNPYmplY3RLZXlzID0gcHJvcGVy
dHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzICYmIGRvbnRFbnVtUHJvcGVy
dGllc01vZGUgPT0gRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZTsKKyAgICAvLyBXZSBh
dHRlbXB0IHRvIGxvb2sgdXAgb3duIHByb3BlcnR5IGtleXMgY2FjaGUgaW4gT2JqZWN0LmtleXMg
Y2FzZS4KKyAgICBpZiAoaXNPYmplY3RLZXlzKSB7CisgICAgICAgIGlmIChMSUtFTFkoIWdsb2Jh
bE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGlt
bXV0YWJsZUJ1dHRlcmZseSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKS0+Y2FjaGVkT3duS2V5cygp
KSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IDAgc2l6ZT8KKyAgICAgICAgICAgICAgICBp
ZiAoaW1tdXRhYmxlQnV0dGVyZmx5ICE9IHZtLnNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5Lmdl
dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoaW1tdXRh
YmxlQnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU0FycmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxscHRyLCBhcnJheVN0cnVjdHVy
ZSwgaW1tdXRhYmxlQnV0dGVyZmx5LT50b0J1dHRlcmZseSgpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0aWVzKCZ2bSwgcHJvcGVydHlOYW1lTW9kZSwgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4
Y2x1ZGUpOwogICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKGRvbnRFbnVtUHJvcGVy
dGllc01vZGUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAg
LTkyNSw4ICs5NDAsMzEgQEAgSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm8KICAgICBpZiAocHJvcGVy
dHlOYW1lTW9kZSAhPSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scykgewogICAg
ICAgICBBU1NFUlQocHJvcGVydHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
IHx8IHByb3BlcnR5TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scyk7CiAgICAg
ICAgIGlmICghbXVzdEZpbHRlclByb3BlcnR5ICYmIHByb3BlcnRpZXMuc2l6ZSgpIDwgTUlOX1NQ
QVJTRV9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgaWYgKExJS0VMWSghZ2xvYmFs
T2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzT2Jq
ZWN0S2V5cykgeworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9i
amVjdC0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+
Y2FuQ2FjaGVPd25LZXlzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhY2hl
ZEJ1dHRlcmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkT3duS2V5cygpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSB2bS5zZW50aW5lbEltbXV0YWJsZUJ1dHRl
cmZseS5nZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhY2hlIHRoZSBp
bW11dGFibGUgYnV0dGVyZmx5IQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBu
dW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byogbmV3QnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6OmNyZWF0ZSh2
bSwgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzLCBudW1Qcm9wZXJ0aWVzKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRp
ZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBp
ZGVudGlmaWVyID0gcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFpZGVudGlmaWVyLmlzU3ltYm9sKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdCdXR0ZXJmbHktPnNldEluZGV4KHZtLCBpLCBqc093bmVkU3RyaW5nKCZ2
bSwgaWRlbnRpZmllci5zdHJpbmcoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q2FjaGVkT3duS2V5
cyh2bSwgbmV3QnV0dGVyZmx5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmUqIGFycmF5U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlKG5ld0J1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZt
LCBudWxscHRyLCBhcnJheVN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5LT50b0J1dHRlcmZseSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNhY2hlZEJ1dHRlcmZseSA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdHVyZS0+c2V0Q2FjaGVkT3duS2V5cyh2bSwganNDYXN0PEpTSW1tdXRhYmxlQnV0dGVy
Zmx5Kj4odm0uc2VudGluZWxJbW11dGFibGVCdXR0ZXJmbHkuZ2V0KCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHNpemVfdCBu
dW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgSlNBcnJh
eSoga2V5cyA9IEpTQXJyYXk6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpLCBudW1Qcm9wZXJ0
aWVzKTsKICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGJ1ZmZlciA9IGtl
eXMtPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzKCkuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCBjNzNiNWUzZmM1NjM3MzljMzJjYzhhMTA1ZDNl
ZDRkNjQzZTVkNThjLi42OGIwYmI2ZDM0ZDVhODY1NDE5NmMxODA2ZjNlNzg4NGUwZWE5NGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMzgsNyArMzgs
NiBAQAogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlE
QmxvYi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhLmgiCi0jaW5jbHVkZSAiU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
LmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKQEAg
LTQ3NSw2ICs0NzQsMTAgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgYm9vbCBjYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdDsKICAgICBi
b29sIGNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSBjb25zdDsKIAor
ICAgIHZvaWQgc2V0Q2FjaGVkT3duS2V5cyhWTSYsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7Cisg
ICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93bktleXMoKSBjb25zdDsKKyAgICBib29s
IGNhbkNhY2hlT3duS2V5cygpIGNvbnN0OworCiAgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzRnJv
bVN0cnVjdHVyZShWTSYsIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAog
ICAgIEpTU3RyaW5nKiBvYmplY3RUb1N0cmluZ1ZhbHVlKCkKQEAgLTUyMyw2ICs1MjYsMTEgQEAg
Y2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX2lubGluZUNhcGFjaXR5KTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IHByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpCisgICAgeworICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9wcmV2aW91c09yUmFyZURh
dGEpOworICAgIH0KKwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYp
OwogICAgICAgICAKICAgICBib29sIHRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFs
aWRhdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaAppbmRleCAxYzk0NjI4Y2NhYjBlMTYxYzEzNTNlYTEyMjQ5MDU3MzZlNmRl
OGU2Li44OTZlYjZiNDljY2E4ZTIwMjk2ZjQwMWRlYjc2YzZmNmZjZWI1N2VhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yMDUs
NiArMjA1LDI5IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6dHJhbnNpdGl2ZWx5VHJhbnNpdGlv
bmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2lubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0Q2FjaGVkT3duS2V5cyhWTSYgdm0sIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiBvd25LZXlzKQoreworICAgIGVuc3VyZVJhcmVEYXRhKHZtKS0+c2V0
Q2FjaGVkT3duS2V5cyh2bSwgb3duS2V5cyk7Cit9CisKK2lubGluZSBKU0ltbXV0YWJsZUJ1dHRl
cmZseSogU3RydWN0dXJlOjpjYWNoZWRPd25LZXlzKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc1Jh
cmVEYXRhKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiByYXJlRGF0YSgp
LT5jYWNoZWRPd25LZXlzKCk7Cit9CisKK2lubGluZSBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVP
d25LZXlzKCkgY29uc3QKK3sKKyAgICBpZiAodHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaGFzSW5kZXhlZFByb3Bl
cnRpZXMoaW5kZXhpbmdUeXBlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGlz
RGljdGlvbmFyeSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJl
KQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAppbmRleCA4OTg0
Y2U5MTk1NmE4MWQ1MWFkMGQ1MjMzNjMwZTY5OWUzNmRlYjUzLi5kOGIyZjAwZmEyMTM5MTgwNTIx
ZjExYTA2YzExMjQyOWI3MGJlNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiU3RydWN0dXJlUmFyZURhdGEuaCIKIAogI2luY2x1ZGUgIkFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCIKKyNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZs
eS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtNzAsMTYgKzcxLDcgQEAgdm9p
ZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJldmlvdXMp
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0VG9TdHJpbmdWYWx1ZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKTsKLX0KLQotSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmVSYXJlRGF0
YTo6Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvci5nZXQoKTsKLX0KLQotdm9pZCBTdHJ1Y3R1cmVS
YXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYgdm0sIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvcikKLXsKLSAgICBtX2NhY2hlZFByb3BlcnR5TmFt
ZUVudW1lcmF0b3Iuc2V0KHZtLCB0aGlzLCBlbnVtZXJhdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2NhY2hlZE93bktleXMpOwogfQogCiAvLyAtLS0tLS0tLS0tLSBPYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3NlcyAtLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVE
YXRhLmgKaW5kZXggMTFjMTgxZGQ2MWU3ZWI2NzU0ZWJhOTcwNTRiZjEyYTUwM2ZiODhhNy4uZjdk
NjM1ZWU0ZWY5NTlhNmMwZGZkODMyM2UwNmNlYjIwMTIwOTc4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC01OCw3ICs1OCwx
MCBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAKLSAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25z
dDsKKyAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcHJldmlvdXMuZ2V0KCk7CisgICAgfQogICAgIHZvaWQgc2V0UHJldmlvdXNJRChWTSYs
IFN0cnVjdHVyZSopOwogICAgIHZvaWQgY2xlYXJQcmV2aW91c0lEKCk7CiAKQEAgLTY4LDExICs3
MSwxOSBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRv
cigpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopOwogCisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkq
IGNhY2hlZE93bktleXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENhY2hlZE93bktleXMoVk0mLCBK
U0ltbXV0YWJsZUJ1dHRlcmZseSopOworCiAgICAgQm94PElubGluZVdhdGNocG9pbnRTZXQ+IGNv
cHlTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9wb2x5UHJvdG9X
YXRjaHBvaW50OyB9CiAgICAgY29uc3QgQm94PElubGluZVdhdGNocG9pbnRTZXQ+JiBzaGFyZWRQ
b2x5UHJvdG9XYXRjaHBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9wb2x5UHJvdG9XYXRjaHBvaW50
OyB9CiAgICAgdm9pZCBzZXRTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KEJveDxJbmxpbmVXYXRj
aHBvaW50U2V0PiYmIHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQpIHsgbV9wb2x5UHJvdG9XYXRj
aHBvaW50ID0gV1RGTW92ZShzaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KTsgfQogICAgIGJvb2wg
aGFzU2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fcG9seVByb3RvV2F0Y2hwb2ludCk7IH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZDYWNoZWRPd25LZXlzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoU3RydWN0dXJlUmFyZURhdGEsIG1fY2FjaGVkT3duS2V5cyk7CisgICAgfQorCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJpdmF0ZToKQEAgLTg3LDYgKzk4LDcgQEAgY2xhc3Mg
U3RydWN0dXJlUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3ByZXZpb3VzOwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9v
YmplY3RUb1N0cmluZ1ZhbHVlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I+IG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKKyAgICBXcml0ZUJhcnJpZXI8
SlNJbW11dGFibGVCdXR0ZXJmbHk+IG1fY2FjaGVkT3duS2V5czsKIAogICAgIHR5cGVkZWYgSGFz
aE1hcDxQcm9wZXJ0eU9mZnNldCwgUmVmUHRyPFdhdGNocG9pbnRTZXQ+LCBXVEY6OkludEhhc2g8
UHJvcGVydHlPZmZzZXQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPFByb3Bl
cnR5T2Zmc2V0Pj4gUHJvcGVydHlXYXRjaHBvaW50TWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9wZXJ0eVdhdGNocG9pbnRNYXA+IG1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJ
bmxpbmVzLmgKaW5kZXggZTRlMjQ5NmE1NjI0ZGRmN2Q5OTdjYzIwMzJmMDllYTI1MDFkYmE5ZC4u
ODNkYzA0ODVmNDE4YmRmMzI4NjBiNTZjMzFlNmEzMjdiMGNmMWI4OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVz
LmgKQEAgLTI1LDE2ICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkpTSW1t
dXRhYmxlQnV0dGVyZmx5LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlUmFyZURhdGE6
OnByZXZpb3VzSUQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByZXZpb3VzLmdldCgpOwotfQot
CiBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0UHJldmlvdXNJRChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIG1fcHJldmlvdXMuc2V0KHZtLCB0aGlzLCBzdHJ1
Y3R1cmUpOwpAQCAtNTAsNCArNDcsMjQgQEAgaW5saW5lIEpTU3RyaW5nKiBTdHJ1Y3R1cmVSYXJl
RGF0YTo6b2JqZWN0VG9TdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb2JqZWN0VG9T
dHJpbmdWYWx1ZS5nZXQoKTsKIH0KIAoraW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciog
U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdAor
eworICAgIHJldHVybiBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCk7Cit9CisK
K2lubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKFZNJiB2bSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKQorewor
ICAgIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvci5zZXQodm0sIHRoaXMsIGVudW1lcmF0
b3IpOworfQorCitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVEYXRh
OjpjYWNoZWRPd25LZXlzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jYWNoZWRPd25LZXlzLmdl
dCgpOworfQorCitpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkT3duS2V5
cyhWTSYgdm0sIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkpCit7CisgICAgbV9jYWNo
ZWRPd25LZXlzLnNldCh2bSwgdGhpcywgYnV0dGVyZmx5KTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNDdlNjFiODNhMzk3MzA1
Nzc0YTZmMjNkYzQzZTMwZGJkNzA2Y2Q2MC4uYjQ0NWUyODFkNjJjMWZmN2E4YjU3NjNjYTU3Zjc2
YTU1MDg5YzU2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDM0LDYg
KzQzNCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBl
eGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOworICAgIG5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9ncmFtQ29kZUJsb2Nr
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgbW9kdWxlUHJvZ3Jh
bUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBldmFsQ29kZUJsb2NrU3Ry
dWN0dXJlLnNldCgqdGhpcywgRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpAQCAtNDQ3LDggKzQ0OCw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKIAogICAgIHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywgSlNT
ZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxNYXBC
dWNrZXQuc2V0KCp0aGlzLCBKU01hcDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMp
KTsKKyAgICBzZW50aW5lbEltbXV0YWJsZUJ1dHRlcmZseS5zZXQoKnRoaXMsIEpTSW1tdXRhYmxl
QnV0dGVyZmx5OjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwogCi0gICAgbmF0aXZlU3RkRnVuY3Rp
b25DZWxsU3RydWN0dXJlLnNldCgqdGhpcywgTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc21hbGxTdHJpbmdzLmluaXRpYWxp
emVDb21tb25TdHJpbmdzKCp0aGlzKTsKIAogICAgIFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZjk3YWYzNWExNDlkMzU5YjJlNDYwYmY3ZDFh
MWI5OTcxNzcyOGU5ZS4uODY3Y2UxODc3OWI2YzYwNzYxOTc0YTk2N2E3MGRmNWQwMzkxMTUyMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC01NjksNiArNTY5LDcgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2Vk
TGlzdE5vZGU8Vk0+IHsKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFtZUVudW1l
cmF0b3I7CiAgICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxTZXRCdWNrZXQ7CiAgICAgU3Ryb25n
PEpTQ2VsbD4gc2VudGluZWxNYXBCdWNrZXQ7CisgICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxJ
bW11dGFibGVCdXR0ZXJmbHk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZURlZmVycmVk
VGltZXI+IHByb21pc2VEZWZlcnJlZFRpbWVyOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351070</attachid>
            <date>2018-09-28 06:11:00 -0700</date>
            <delta_ts>2018-12-09 09:53:03 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-190047-20180928221058.patch</filename>
            <type>text/plain</type>
            <size>45373</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZTVlOGFiZTFlNDI4NzU4ZDYwZmE5ZjQ3NzUyODc0Zjk3MzMzOTQ5Li4wOGJiMjY1MWY3ZTM4Y2Zi
NDg5ZDFhNDA0N2RiYTQ0NmQ3YjY0YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxOC0wOS0yOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5rZXlzIGJ5IGNhY2hp
bmcgb3duIGtleXMgcmVzdWx0cyBpbiBTdHJ1Y3R1cmVSYXJlRGF0YQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9s
ZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTmV3QXJyYXlCdWZmZXIp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
T2JqZWN0S2V5cyk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAo
SlNDOjppbnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJ
bW11dGFibGVCdXR0ZXJmbHk6OmNyZWF0ZVNlbnRpbmVsKToKKyAgICAgICAgKiBydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b3duUHJvcGVydHlLZXlzKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OmNhbkNhY2hlT3duS2V5cyBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRh
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hl
ZFByb3BlcnR5TmFtZUVudW1lcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5cyBjb25zdCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRPd25LZXlzKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnByZXZpb3VzSUQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wOS0yNyAgU2FhbSBiYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBWZXJpZnkgdGhlIGNvbnRlbnRzIG9mIEFzc2VtYmxlckJ1
ZmZlciBvbiBhcm02NGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBmODQ1YzU4MTk3MTllZDhkZmQw
ZDY0N2Y5YzIwMzJhNTlkNjFlNGFjLi4yMWE0MjUzZTEwN2IwYzJkN2Y4YTJiNjdiYjFmMWVhMDAz
NTZhNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJp
bmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvQm9vbGVhbkxhdHRpY2UuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KIApAQCAtMjUzMyw2ICsyNTM0LDI4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgeworICAgICAgICAgICAg
YXV0byYgc3RydWN0dXJlU2V0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmU7
CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlU2V0LmlzRmluaXRlKCkgJiYgc3RydWN0dXJlU2V0
LnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmVTZXQub25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgIGF1
dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkT3duS2V5cygpOworICAg
ICAgICAgICAgICAgIGlmIChpbW11dGFibGVCdXR0ZXJmbHkgJiYgaW1tdXRhYmxlQnV0dGVyZmx5
ICE9IG1fdm0uc2VudGluZWxJbW11dGFibGVCdXR0ZXJmbHkuZ2V0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChu
b2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50
cyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNBcnJheSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNs
b2JiZXJXb3JsZCgpOworICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQXJyYXkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNhc2UgQ2Fs
bE9iamVjdENvbnN0cnVjdG9yOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBmMTA2MTQ5ZmJmMDU5ZDJjMjkzOGZhMjkwOGJkMTY5
MTFjYTA4YzdhLi41ZjdjOGM3MjcwMzdlZmVhN2JjOTczNjkxMTBiZGQ4YmMxNmQ3MmZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MjY3NSw2ICsyNjc1LDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5c0ludHJpbnNpYzogeworICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAyKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygpOworICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKE9iamVjdEtleXMsIGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2lj
OiB7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAppbmRleCA0ZmQ5ZGI2MWE4YTgxMmUxN2IyNzExMzRmOTMwZWUyMTQ2NmIzYzRlLi5hZWJm
NjNiN2MyZWE3Zjg1ODk0YWQyMDAyOTNjOWQzNGY2N2U3NDc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjUzLDYgKzY1Myw3IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBj
b25zdCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgSW5zdGFuY2VPZjoK
ICAgICBjYXNlIFN0cmluZ1ZhbHVlT2Y6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgICAgICBy
ZWFkKFdvcmxkKTsKICAgICAgICAgd3JpdGUoSGVhcCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1
MTQsNyArMTUxNSw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAgICB9
CiAKLQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2Ug
TmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBmYjFmNmRjMjMxYWJlNDQ4ZDVmOTE2YzYz
NDhmZDFmMTM3ZmJhMDIzLi43YjZiYzMwMzY0OWJkMGJjYWI2NzhiMWRhMGJiYTRmM2VhYzcwYjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcApAQCAtNzY2LDYgKzc2NiwyNCBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV9zdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVTZXQuaXNG
aW5pdGUoKSAmJiBzdHJ1Y3R1cmVTZXQuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0Lm9ubHlT
dHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltbXV0YWJsZUJ1dHRl
cmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkT3duS2V5cygpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGltbXV0YWJsZUJ1dHRlcmZseSAmJiBpbW11dGFibGVCdXR0ZXJmbHkgIT0gbV9ncmFw
aC5tX3ZtLnNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5LmdldCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludChub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9OZXdBcnJheUJ1ZmZlcihtX2dyYXBoLmZyZWV6ZShpbW11dGFibGVCdXR0ZXJmbHkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgY2FzZSBUb051bWJlcjogewogICAgICAgICAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjQnl0ZWNvZGVOdW1iZXIp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IGNiMTY3ZjAyOWNlMzAyM2VkM2EwZTMyMzdmMzFhZmE1NTdhNjZjNjEu
LjViNmYzNTE5ZDM0Yzc0NTljNmQ3YTgwYWQ3MTg0ZGYwYmIyMGJmZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMzMyw2ICszMzMsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBD
cmVhdGVUaGlzOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoK
ICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggN2M3MmYwM2M3MTE3NDNkNWRiNjQyMjYyZDA4
NjgzYzM4NjI3MjY1OS4uZTg2NjgyYWM2MTMzY2IwNmY5Y2Y3NGQzNjZkMmZkNWZkMjhhMzg4MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDU1
LDYgKzE0NTUsMTQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgT2JqZWN0S2V5czogeworICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgewor
ICAgICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lk
ZW50OiB7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
CmluZGV4IGRkOTY3YzhhZDIzNzIwYzg4NTY2NzU4NzM1MDZlNTJkMTUwZmI3NzEuLjNkMWMzYmEx
Mzc2MjFlM2IyZjAzNDE1YmI5MWQxNDEyMzYzY2U0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAj
aW5jbHVkZSAiREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCkBAIC0yMjMsNiArMjI0LDE3IEBAIHZvaWQgTm9kZTo6Y29udmVy
dFRvTGF6eUpTQ29uc3RhbnQoR3JhcGgmIGdyYXBoLCBMYXp5SlNWYWx1ZSB2YWx1ZSkKICAgICBj
aGlsZHJlbi5yZXNldCgpOwogfQogCit2b2lkIE5vZGU6OmNvbnZlcnRUb05ld0FycmF5QnVmZmVy
KEZyb3plblZhbHVlKiBpbW11dGFibGVCdXR0ZXJmbHkpCit7CisgICAgc2V0T3BBbmREZWZhdWx0
RmxhZ3MoTmV3QXJyYXlCdWZmZXIpOworICAgIE5ld0FycmF5QnVmZmVyRGF0YSBkYXRhIHsgfTsK
KyAgICBkYXRhLmluZGV4aW5nTW9kZSA9IGltbXV0YWJsZUJ1dHRlcmZseS0+Y2FzdDxKU0ltbXV0
YWJsZUJ1dHRlcmZseSo+KCktPmluZGV4aW5nTW9kZSgpOworICAgIGRhdGEudmVjdG9yTGVuZ3Ro
SGludCA9IGltbXV0YWJsZUJ1dHRlcmZseS0+Y2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCkt
PnRvQnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpOworICAgIGNoaWxkcmVuLnJlc2V0KCk7Cisg
ICAgbV9vcEluZm8gPSBpbW11dGFibGVCdXR0ZXJmbHk7CisgICAgbV9vcEluZm8yID0gZGF0YS5h
c1F1YWRXb3JkOworfQorCiB2b2lkIE5vZGU6OmNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVuVmFs
dWUqIGV4ZWN1dGFibGUpCiB7CiAgICAgTm9kZVR5cGUgbmV3T3AgPSBMYXN0Tm9kZVR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDdkNTg5MzBiNWI3YzhkMTViNjI4Zjll
ZWJlYzk4NDc1MjZlYTczNmMuLjNjYThiYTAwOTM2NTVhNWQ2NDU2ZDc1NTFhMDYyNGU3MDc5ODhh
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC03NjEsNiArNzYxLDggQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5mbyA9IHN0cnVjdHVyZTsKICAgICAgICAgbV9v
cEluZm8yID0gT3BJbmZvV3JhcHBlcigpOwogICAgIH0KKworICAgIHZvaWQgY29udmVydFRvTmV3
QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUqIGltbXV0YWJsZUJ1dHRlcmZseSk7CiAgICAgCiAgICAg
dm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkMzBjOTI1ZDk4ZjQ0NWJhMDgwYTlhMmNjODA5
MTdkYjQ0OGE3NDcwLi5kMGYyNzkxY2M1MzkwZTI4OTVkMTdjYzNhZTA3MmE0YWRkNTk4Nzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNTcsNiArMjU3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFBhcnNlSW50LCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0UHJvdG90eXBl
T2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RD
cmVhdGUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhPYmpl
Y3RLZXlzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8q
IEF0b21pY3Mgb2JqZWN0IGZ1bmN0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXRvbWljc0FkZCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyYzAxMWU4OTMyNjdj
NjY2MmJlN2VjMDIyZTc0NDU2MTM5MGM3ZmRjLi5jOThhMmQ0MDZiMjhlMTBkNzNhNTk0MjI2NDA0
Y2VkMTg4NWQ1M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTI0OCw2ICsyNDgsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ub1RoaXNTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWwKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhl
eGVjLCBTdHJpY3RNb2RlKSk7CiB9CiAKK0pTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
T2JqZWN0S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3Qp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT2Jq
ZWN0KS50b09iamVjdChleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG93blByb3BlcnR5S2V5cyhl
eGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGll
c01vZGU6OkV4Y2x1ZGUpOworfQorCitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9i
amVjdEtleXNPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9w
ZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKTsK
K30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90b3R5cGUpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
aW5kZXggNmNiNTE1Y2RlMDM2ZTNhMmZmYWRmYWFkYWFmMGExMjAxYzU5N2U5OC4uNzgyZmFlMWM2
MjdkODEzMGYwMDY3NTFkZjhlMGMzYTcxZDkzNzM4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTQzLDYgKzQzLDggQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkKEV4ZWNTdGF0ZSos
IEVuY28KIC8vIFRoZXNlIHJvdXRpbmVzIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1w
bGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQsIFVuaXF1ZWRTdHJp
bmdJbXBsKikgV1RGX0lOVEVSTkFMOworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25P
YmplY3RLZXlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0Fy
cmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QoRXhlY1N0YXRlKiwg
SlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
T2JqZWN0Q3JlYXRlKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2JqZWN0KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJf
dCBpbmxpbmVDYXBhY2l0eSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRl
eCBmMzdmZDA2Mzk1MTQ0YzQxZjQ5NTI4MTgwNGYzYjQzMDNlODI3YzIyLi45ZDA1NTZhZWI0NTg3
OTcxMzA5YWM4Zjg1NGFlNjBlZTg4MzJiY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
OTI5LDcgKzkyOSw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAgY2FzZSBOZXdBcnJheVdp
dGhTaXplOgogICAgICAgICBjYXNlIENyZWF0ZVJlc3Q6Ci0gICAgICAgIGNhc2UgTmV3QXJyYXlC
dWZmZXI6IHsKKyAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKKyAgICAgICAgY2FzZSBPYmpl
Y3RLZXlzOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNBcnJheSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAppbmRleCA2MDgwMWQwNjQ5NjA4MDllNzJlY2RjODc1MzAzZmY3NTFlMDdh
MDEyLi44N2ZmNjI0YzRhZmZkYzk2NmJlNmQxNTdlYTNjZTEyM2E0M2Q4MDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTc4LDYgKzE3OCw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBD
cmVhdGVUaGlzOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoK
ICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIFNldENhbGxlZToKICAgICBjYXNlIEdldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0Yjc4ZDExMjA3ZDZhNWE2OGJkOWI1ZTM2ZjI1
NTZhOWI1M2EzMzExLi5mMmQwMmM0YWU0MzJmMGEwNDBlNGNjMjgzYTFjZjZlNDBmMGNhYTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMTIxOTksNiArMTIxOTksOTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvVGhp
cyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5vZGUpOwogfQogCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2RlKQoreworICAg
IHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBPYmplY3RVc2U6
IHsKKyAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2lu
dChub2RlKSkgeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb2JqZWN0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhp
cyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMyh0aGlzKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisK
KyAgICAgICAgICAgIEdQUlJlZyBvYmplY3RHUFIgPSBvYmplY3QuZ3ByKCk7CisgICAgICAgICAg
ICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOworICAgICAgICAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDNHUFIg
PSBzY3JhdGNoMy5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CisKKyAgICAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDEoKSwgb2Jq
ZWN0R1BSKTsKKworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CisgICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSgqbV9qaXQudm0oKSwgb2JqZWN0
R1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnByZXZpb3Vz
T3JSYXJlRGF0YU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2hH
UFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpFcXVhbCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
bV9qaXQudm0oKS0+c3RydWN0dXJlU3RydWN0dXJlLT5zdHJ1Y3R1cmVJRCgpKSkpKTsKKworICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
U3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkT3duS2V5cygpKSwgc2NyYXRjaEdQUik7
CisKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LnZtKCktPnNlbnRpbmVs
SW1tdXRhYmxlQnV0dGVyZmx5LmdldCgpKSkpOworCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3Qgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXM7CisKKyAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBh
cnJheVN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQ29weU9u
V3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSk7CisKKyAgICAgICAgICAgIG1faml0Lm1vdmUoc2Ny
YXRjaEdQUiwgc2NyYXRjaDNHUFIpOworICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW1QdHIoSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgc2NyYXRjaEdQUik7
CisKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cihhcnJheVN0cnVjdHVyZSksIHNjcmF0Y2hHUFIsIHN0cnVjdHVyZUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dCdXRBcnJheUJ1ZmZlckNhc2VzKTsKKworICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dCdXRBcnJheUJ1ZmZlckNhc2VzLCB0
aGlzLCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0R1BSLCBhcnJheVN0cnVjdHVyZSwg
c2NyYXRjaDNHUFIpKTsKKworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCwgcmVzdWx0
R1BSLCBvYmplY3RHUFIpKTsKKworICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIEdQUlJl
ZyBvYmplY3RHUFIgPSBvYmplY3QuZ3ByKCk7CisKKyAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5v
ZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25PYmplY3RLZXlzT2JqZWN0LCByZXN1bHRHUFIsIG9iamVjdEdQUik7CisgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgb2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAg
ICBKU1ZhbHVlUmVncyBvYmplY3RSZWdzID0gb2JqZWN0LmpzVmFsdWVSZWdzKCk7CisKKyAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEtleXMsIHJlc3VsdEdQUiwgb2JqZWN0UmVn
cyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0
OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9k
ZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGU1YzMw
YWYzNTIxMGIzYmEwNDQ0YTE4NGQyNGEzMjJkY2NlZDVjYzcuLjRiYTE1NTM1ZDhjNWU0MTExYjcy
ZTYxYTUzMDVjMmRkNGYzNzJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTE0NzIsNiArMTQ3Miw3IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJheVdpdGhTaXplKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1RoaXMoTm9k
ZSopOworICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXMoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZU9iamVjdENyZWF0ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcyhOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlTmV3T2JqZWN0KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDE2NmU0YTRj
ODg0NGYyZjg5Mzc2MTA2ZTM3ODljZDM2ZmQxMTliMjIuLmI1ZTg1MDExNGY3YzEwZDQyZjQ4MjM5
NGQ2N2YxMjk1NzU3M2IwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzEzOSw2ICszMTM5LDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzKG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIENyZWF0ZVRoaXM6IHsKICAg
ICAgICAgY29tcGlsZUNyZWF0ZVRoaXMobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYzcw
OGM5YzQ0YTZhZTExZDA5NjliMDZmZWNmMGY5YWNlZGUwMmE3Yy4uZjJhMjE2NmM3OTQxZTIxOWZl
YTMzOWY2NTQ4MTc5ODViZDY2ZjI5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zMzgxLDYgKzMzODEsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIE9iamVjdEtleXM6IHsKKyAgICAgICAgY29tcGlsZU9iamVjdEtleXMobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ3JlYXRlVGhpczogewogICAg
ICAgICBjb21waWxlQ3JlYXRlVGhpcyhub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmlu
ZGV4IDhjMjRhNDQwYzY1MmRjNTQ2NjM3ODRhYzc4ODYwZmZhZDhhNmVhZjMuLjYyNDQ5NzI4MDg4
N2JlMGQxNGJkNTliNjBmMzdkZWI2YTljZGZmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0xMTYsOCArMTE2
LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhTdHJ1Y3R1
cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSBcCiAgICAg
bWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIFN0cnVjdHVyZTo6
aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0
dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpIFwK
KyAgICBtYWNybyhTdHJ1Y3R1cmVfcHJldmlvdXNPclJhcmVEYXRhLCBTdHJ1Y3R1cmU6OnByZXZp
b3VzT3JSYXJlRGF0YU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwg
U3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1
Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3Ry
dWN0dXJlUmFyZURhdGFfY2FjaGVkT3duS2V5cywgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9m
Q2FjaGVkT3duS2V5cygpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfY2FwYWNpdHksIEhhc2hN
YXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZDYXBh
Y2l0eSgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfYnVmZmVyLCAgSGFzaE1hcEltcGw8SGFz
aE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkJ1ZmZlcigpKSBcCiAg
ICAgbWFjcm8oSGFzaE1hcEltcGxfaGVhZCwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFz
aE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZIZWFkKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAzZTRhZmFkMGM0NmNhYjhkNzg5
NzM4MDhjZjg1NDhkZDE4Y2M2YmRhLi5kYmY2NjhjZTZhODAzYmJmYzQxODE0YzFlMDFlM2E2YTQx
MDg1NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAgICAgY2FzZSBD
YWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CisgICAgY2FzZSBP
YmplY3RLZXlzOgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXpl
OgogICAgIGNhc2UgVHJ5R2V0QnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCA3MDdiZDc3M2Q3MTdmYmI0NGJlOGY4N2QyNjM2ZDZiMDg0
MTc1Njk2Li45ZGM0NmY2YzY1MmQwNGU3YjdkZjM4YzRlYjI2ZjUxNWZlNjIwYThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC04NDQsNiAr
ODQ0LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBPYmplY3RDcmVhdGU6
CiAgICAgICAgICAgICBjb21waWxlT2JqZWN0Q3JlYXRlKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBPYmplY3RLZXlzOgorICAgICAgICAgICAgY29tcGlsZU9iamVjdEtleXMo
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAg
ICAgIGNvbXBpbGVOZXdPYmplY3QoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTM4Myw2ICs1
Mzg2LDc1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBo
aShJbnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwogICAgIH0K
IAorICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXMoKQorICAgIHsKKyAgICAgICAgc3dpdGNoICht
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIE9iamVjdFVzZTogewor
ICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2lu
dChtX25vZGUpKSB7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbENhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJhcmVEYXRhQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVs
bENhY2hlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgdXNlQ2FjaGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBzbG93QnV0QXJyYXlCdWZmZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
KworICAgICAgICAgICAgICAgIExWYWx1ZSBvYmplY3QgPSBsb3dPYmplY3QobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUo
b2JqZWN0KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHJldmlvdXNPclJhcmVEYXRhID0gbV9v
dXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX3ByZXZpb3VzT3JSYXJlRGF0
YSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwocHJldmlvdXNP
clJhcmVEYXRhKSwgdW5zdXJlKG5vdE51bGxDYXNlKSwgdW5zdXJlKHNsb3dDYXNlKSk7CisKKyAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdE51
bGxDYXNlLCByYXJlRGF0YUNhc2UpOworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwobV9vdXQubG9hZDMyKHByZXZpb3VzT3JS
YXJlRGF0YSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLCBtX291dC5jb25zdEludDMyKG1f
Z3JhcGgubV92bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSwKKyAgICAgICAg
ICAgICAgICAgICAgdW5zdXJlKHJhcmVEYXRhQ2FzZSksIHVuc3VyZShzbG93Q2FzZSkpOworCisg
ICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmFyZURhdGFDYXNlLCBub3ROdWxsQ2FjaGVD
YXNlKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgY2FjaGVkT3duS2V5cyA9IG1fb3V0LmxvYWRQ
dHIocHJldmlvdXNPclJhcmVEYXRhLCBtX2hlYXBzLlN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZE93
bktleXMpOworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKGNhY2hl
ZE93bktleXMpLCB1bnN1cmUobm90TnVsbENhY2hlQ2FzZSksIHVuc3VyZShzbG93Q2FzZSkpOwor
CisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90TnVsbENhY2hlQ2FzZSwgdXNlQ2Fj
aGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwoY2Fj
aGVkT3duS2V5cywgd2Vha1BvaW50ZXIobV9ncmFwaC5tX3ZtLnNlbnRpbmVsSW1tdXRhYmxlQnV0
dGVyZmx5LmdldCgpKSksIHVuc3VyZSh1c2VDYWNoZUNhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsK
KworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHVzZUNhY2hlQ2FzZSwgc2xvd0J1dEFy
cmF5QnVmZmVyQ2FzZSk7CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMp
KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEFycmF5ID0gYWxsb2NhdGVPYmplY3Q8SlNB
cnJheT4oYXJyYXlTdHJ1Y3R1cmUsIG1fb3V0LmFkZFB0cihjYWNoZWRPd25LZXlzLCBKU0ltbXV0
YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkpLCBzbG93QnV0QXJyYXlCdWZmZXJDYXNlKTsK
KyAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9y
KGZhc3RBcnJheSk7CisgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSwg
c2xvd0Nhc2UpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93QXJyYXkgPSB2bUNhbGwoSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1l
LCB3ZWFrU3RydWN0dXJlKGFycmF5U3RydWN0dXJlKSwgY2FjaGVkT3duS2V5cyk7CisgICAgICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0J1dEFycmF5QnVmZmVyUmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHNsb3dBcnJheSk7CisgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVh
dGlvbik7CisgICAgICAgICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAg
ICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBS
ZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BS
KCksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgIG9iamVjdCk7CisgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgICAgIHNldEpT
VmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dCdXRBcnJheUJ1
ZmZlclJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KSwgbV9jYWxsRnJhbWUsIGxvd09iamVjdCht
X25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBVbnR5cGVkVXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RLZXlzKSwgbV9jYWxsRnJhbWUsIGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlT2JqZWN0
Q3JlYXRlKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4
IGFiZTZmMTcyODZlM2JlMzkxZTBjMzc0YzFmNmM1NzRjNWJkODY3ZmIuLmZiYzRlZjNjZDhmMmVj
NjJkYTkzMDBkYTI3MWIxMDIzMzk3NDM0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMTE5LDYgKzExOSw4IEBAIGNvbnN0IGNoYXIqIGludHJp
bnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJPYmplY3RHZXRQ
cm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBPYmplY3RJc0ludHJpbnNpYzoKICAgICAg
ICAgcmV0dXJuICJPYmplY3RJc0ludHJpbnNpYyI7CisgICAgY2FzZSBPYmplY3RLZXlzSW50cmlu
c2ljOgorICAgICAgICByZXR1cm4gIk9iamVjdEtleXNJbnRyaW5zaWMiOwogICAgIGNhc2UgUmVm
bGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIlJlZmxlY3RHZXRQ
cm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50
cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCBj
ZmJkMTg0OTYzNTJiYjlkNGUyNmEwMmM1NjkzYjhjNDYwMDE5MDI1Li5iNDdmNDZkOWU0ZGUwMDEz
ZGU4MzQ2ZTgyZTY4MTZmNWZkMDJmNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuaApAQCAtNzIsNiArNzIsNyBAQCBlbnVtIEludHJpbnNpYyB7CiAgICAgT2Jq
ZWN0Q3JlYXRlSW50cmluc2ljLAogICAgIE9iamVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLAog
ICAgIE9iamVjdElzSW50cmluc2ljLAorICAgIE9iamVjdEtleXNJbnRyaW5zaWMsCiAgICAgUmVm
bGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJ
bnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlUmVwbGFjZUludHJpbnNpYywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCmlu
ZGV4IDI4NDc4M2MwYzc1NTk2YWRkYTVhMWY5OGYzNmIwNjllMGViOGU0YTEuLjFmZjRkMjc2Nzc1
MzI4YmQwYzZjYTJlNDE0NjcwMzgyNzUxNWU4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaApAQCAtNjcsNiArNjcsMTEg
QEAgY2xhc3MgSlNJbW11dGFibGVCdXR0ZXJmbHkgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
cmV0dXJuIGFycmF5OwogICAgIH0KIAorICAgIHN0YXRpYyBKU0ltbXV0YWJsZUJ1dHRlcmZseSog
Y3JlYXRlU2VudGluZWwoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwg
Q29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzLCAwKTsKKyAgICB9CisKICAgICB1bnNpZ25l
ZCBwdWJsaWNMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlci5wdWJsaWNMZW5ndGgoKTsg
fQogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyLnZl
Y3Rvckxlbmd0aCgpOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9o
ZWFkZXIucHVibGljTGVuZ3RoKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAzZjlmODFjMzRmZDI5NmNlMjdiZmJk
NzBjMTk3ZWJhMDgyOTBiZTAzLi41NGZjMDQxZTBlZjIyZGUwYTJjMWQ4MDM0NDM1MTBjY2FlY2Ix
ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5
RGVzY3JpcHRvci5oIgpAQCAtNzMsNyArNzQsNyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQog
ICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9ycyAgRG9udEVudW18RnVuY3Rpb24gMQogICBnZXRPd25Qcm9wZXJ0eU5hbWVz
ICAgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQogICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgICAgIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlTeW1ib2xzICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBrZXlz
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yS2V5cyAgICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBrZXlzICAgICAgICAgICAgICAgICAgICAg
IG9iamVjdENvbnN0cnVjdG9yS2V5cyAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMSBPYmplY3RLZXlzSW50cmluc2ljCiAgIGRlZmluZVByb3BlcnR5ICAgICAgICAgICAg
b2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAzCiAgIGRlZmluZVByb3BlcnRpZXMgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JEZWZp
bmVQcm9wZXJ0aWVzICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgIGNyZWF0ZSAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUgICAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyIE9iamVjdENyZWF0ZUludHJpbnNpYwpAQCAtMjc5LDcgKzI4
MCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eVN5bWJvbHMoRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xz
LCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiB9CiAKLS8vIEZJWE1FOiBVc2Ug
dGhlIGVudW1lcmF0aW9uIGNhY2hlLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CkBAIC04OTksMTEgKzg5OSwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9ySXMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhl
Yy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKLS8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNh
Y2hlLgogSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVNb2RlLCBEb250RW51bVByb3Bl
cnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGllc01vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgYm9v
bCBpc09iamVjdEtleXMgPSBwcm9wZXJ0eU5hbWVNb2RlID09IFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3MgJiYgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9PSBEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpFeGNsdWRlOworICAgIC8vIFdlIGF0dGVtcHQgdG8gbG9vayB1cCBvd24gcHJvcGVydHkga2V5
cyBjYWNoZSBpbiBPYmplY3Qua2V5cyBjYXNlLgorICAgIGlmIChpc09iamVjdEtleXMpIHsKKyAg
ICAgICAgaWYgKExJS0VMWSghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gb2JqZWN0LT5zdHJ1Y3R1
cmUodm0pLT5jYWNoZWRPd25LZXlzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogMCBz
aXplPworICAgICAgICAgICAgICAgIGlmIChpbW11dGFibGVCdXR0ZXJmbHkgIT0gdm0uc2VudGlu
ZWxJbW11dGFibGVCdXR0ZXJmbHkuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBhcnJheVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZShpbW11dGFibGVCdXR0ZXJmbHktPmluZGV4aW5nTW9kZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0s
IG51bGxwdHIsIGFycmF5U3RydWN0dXJlLCBpbW11dGFibGVCdXR0ZXJmbHktPnRvQnV0dGVyZmx5
KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoJnZtLCBwcm9wZXJ0eU5hbWVNb2Rl
LCBQcml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJh
dGlvbk1vZGUoZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwpAQCAtOTI1LDggKzk0MCwzMSBAQCBKU0FycmF5KiBvd25Qcm9w
ZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVN
b2RlIHBybwogICAgIGlmIChwcm9wZXJ0eU5hbWVNb2RlICE9IFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3NBbmRTeW1ib2xzKSB7CiAgICAgICAgIEFTU0VSVChwcm9wZXJ0eU5hbWVNb2RlID09IFBy
b3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MgfHwgcHJvcGVydHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5h
bWVNb2RlOjpTeW1ib2xzKTsKICAgICAgICAgaWYgKCFtdXN0RmlsdGVyUHJvcGVydHkgJiYgcHJv
cGVydGllcy5zaXplKCkgPCBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBh
dXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgICAg
ICAgICBpZiAoTElLRUxZKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNPYmplY3RLZXlzKSB7CisgICAgICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5jYW5DYWNoZU93bktleXMoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byogY2FjaGVkQnV0dGVyZmx5ID0gc3RydWN0dXJlLT5jYWNoZWRPd25L
ZXlzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkQnV0dGVyZmx5ID09IHZt
LnNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5LmdldCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gQ2FjaGUgdGhlIGltbXV0YWJsZSBidXR0ZXJmbHkhCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBuZXdCdXR0ZXJmbHkgPSBKU0ltbXV0
YWJsZUJ1dHRlcmZseTo6Y3JlYXRlKHZtLCBDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMs
IG51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgPSBwcm9wZXJ0aWVzW2ldOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWlkZW50aWZpZXIuaXNTeW1ib2woKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0J1dHRlcmZseS0+c2V0SW5kZXgo
dm0sIGksIGpzT3duZWRTdHJpbmcoJnZtLCBpZGVudGlmaWVyLnN0cmluZygpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0dXJlLT5zZXRDYWNoZWRPd25LZXlzKHZtLCBuZXdCdXR0ZXJmbHkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3Qt
Pm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUobmV3QnV0dGVyZmx5LT5pbmRl
eGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQXJyYXk6
OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIG51bGxwdHIsIGFycmF5U3RydWN0dXJlLCBuZXdCdXR0
ZXJmbHktPnRvQnV0dGVyZmx5KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkQnV0dGVyZmx5ID09IG51bGxwdHIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDYWNoZWRPd25LZXlzKHZtLCBq
c0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPih2bS5zZW50aW5lbEltbXV0YWJsZUJ1dHRlcmZs
eS5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsK
ICAgICAgICAgICAgICAgICBKU0FycmF5KiBrZXlzID0gSlNBcnJheTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRo
Q29udGlndW91cyksIG51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiogYnVmZmVyID0ga2V5cy0+YnV0dGVyZmx5KCktPmNvbnRpZ3VvdXMoKS5kYXRh
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGM3M2I1
ZTNmYzU2MzczOWMzMmNjOGExMDVkM2VkNGQ2NDNlNWQ1OGMuLjY4YjBiYjZkMzRkNWE4NjU0MTk2
YzE4MDZmM2U3ODg0ZTBlYTk0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90Lmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlSURCbG9iLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURh
dGEuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCIKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5j
bHVkZSAiV2F0Y2hwb2ludC5oIgpAQCAtNDc1LDYgKzQ3NCwxMCBAQCBjbGFzcyBTdHJ1Y3R1cmUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGNhbkNhY2hlUHJvcGVydHlOYW1lRW51
bWVyYXRvcigpIGNvbnN0OwogICAgIGJvb2wgY2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHlGb3JF
bnVtZXJhdGlvbigpIGNvbnN0OwogCisgICAgdm9pZCBzZXRDYWNoZWRPd25LZXlzKFZNJiwgSlNJ
bW11dGFibGVCdXR0ZXJmbHkqKTsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3du
S2V5cygpIGNvbnN0OworICAgIGJvb2wgY2FuQ2FjaGVPd25LZXlzKCkgY29uc3Q7CisKICAgICB2
b2lkIGdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogCiAgICAgSlNTdHJpbmcqIG9iamVjdFRvU3RyaW5nVmFsdWUo
KQpAQCAtNTIzLDYgKzUyNiwxMSBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1faW5saW5l
Q2FwYWNpdHkpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJldmlvdXNPclJhcmVE
YXRhT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0
dXJlLCBtX3ByZXZpb3VzT3JSYXJlRGF0YSk7CisgICAgfQorCiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJik7CiAgICAgICAgIAogICAgIGJvb2wgdHJhbnNpdGlvbldh
dGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IDFjOTQ2MjhjY2FiMGUx
NjFjMTM1M2VhMTIyNDkwNTczNmU2ZGU4ZTYuLjg5NmViNmI0OWNjYThlMjAyOTZmNDAxZGViNzZj
NmY2ZmNlYjU3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKQEAgLTIwNSw2ICsyMDUsMjkgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJl
Ojp0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5k
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRDYWNo
ZWRPd25LZXlzKFZNJiB2bSwgSlNJbW11dGFibGVCdXR0ZXJmbHkqIG93bktleXMpCit7CisgICAg
ZW5zdXJlUmFyZURhdGEodm0pLT5zZXRDYWNoZWRPd25LZXlzKHZtLCBvd25LZXlzKTsKK30KKwor
aW5saW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMoKSBj
b25zdAoreworICAgIGlmICghaGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZE93bktleXMoKTsKK30KKworaW5saW5lIGJv
b2wgU3RydWN0dXJlOjpjYW5DYWNoZU93bktleXMoKSBjb25zdAoreworICAgIGlmICh0eXBlSW5m
bygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoaXNEaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3RvdHlw
ZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzT2Jq
ZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuY3BwCmluZGV4IDg5ODRjZTkxOTU2YTgxZDUxYWQwZDUyMzM2MzBlNjk5ZTM2ZGVi
NTMuLmQ4YjJmMDBmYTIxMzkxODA1MjFmMTFhMDZjMTEyNDI5YjcwYmU3NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YS5oIgogCiAjaW5jbHVk
ZSAiQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oIgorI2luY2x1
ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CkBAIC03MCwxNiArNzEsNyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9wcmV2aW91cyk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9vYmplY3RUb1N0cmluZ1ZhbHVlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOwotfQotCi1KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IqIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmdldCgp
OwotfQotCi12b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKFZNJiB2bSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKQotewot
ICAgIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvci5zZXQodm0sIHRoaXMsIGVudW1lcmF0
b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVkT3duS2V5cyk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKSBoZWxwZXIgd2F0
Y2hwb2ludCBjbGFzc2VzIC0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAppbmRleCAxMWMxODFkZDYxZTdlYjY3NTRlYmE5
NzA1NGJmMTJhNTAzZmI4OGE3Li5mN2Q2MzVlZTRlZjk1OWE2YzBkZmQ4MzIzZTA2Y2ViMjAxMjA5
NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmgKQEAgLTU4LDcgKzU4LDEwIEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKIAotICAgIFN0cnVj
dHVyZSogcHJldmlvdXNJRCgpIGNvbnN0OworICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsKKyAgICB9CiAgICAg
dm9pZCBzZXRQcmV2aW91c0lEKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBjbGVhclByZXZp
b3VzSUQoKTsKIApAQCAtNjgsMTEgKzcxLDE5IEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBjYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDYWNoZWRQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKik7CiAKKyAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5cygpIGNvbnN0OworICAgIHZvaWQg
c2V0Q2FjaGVkT3duS2V5cyhWTSYsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7CisKICAgICBCb3g8
SW5saW5lV2F0Y2hwb2ludFNldD4gY29weVNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25z
dCB7IHJldHVybiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7IH0KICAgICBjb25zdCBCb3g8SW5saW5l
V2F0Y2hwb2ludFNldD4mIHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVy
biBtX3BvbHlQcm90b1dhdGNocG9pbnQ7IH0KICAgICB2b2lkIHNldFNoYXJlZFBvbHlQcm90b1dh
dGNocG9pbnQoQm94PElubGluZVdhdGNocG9pbnRTZXQ+JiYgc2hhcmVkUG9seVByb3RvV2F0Y2hw
b2ludCkgeyBtX3BvbHlQcm90b1dhdGNocG9pbnQgPSBXVEZNb3ZlKHNoYXJlZFBvbHlQcm90b1dh
dGNocG9pbnQpOyB9CiAgICAgYm9vbCBoYXNTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wb2x5UHJvdG9XYXRjaHBvaW50KTsgfQog
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE93bktleXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVSYXJlRGF0YSwgbV9jYWNoZWRP
d25LZXlzKTsKKyAgICB9CisKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcml2YXRlOgpA
QCAtODcsNiArOTgsNyBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJldmlvdXM7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTU3RyaW5nPiBtX29iamVjdFRvU3RyaW5nVmFsdWU7CiAgICAgV3JpdGVCYXJy
aWVyPEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOworICAgIFdyaXRlQmFycmllcjxKU0ltbXV0YWJsZUJ1dHRlcmZseT4gbV9jYWNoZWRPd25L
ZXlzOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFByb3BlcnR5T2Zmc2V0LCBSZWZQdHI8V2F0Y2hw
b2ludFNldD4sIFdURjo6SW50SGFzaDxQcm9wZXJ0eU9mZnNldD4sIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8UHJvcGVydHlPZmZzZXQ+PiBQcm9wZXJ0eVdhdGNocG9pbnRNYXA7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb3BlcnR5V2F0Y2hwb2ludE1hcD4gbV9yZXBsYWNlbWVu
dFdhdGNocG9pbnRTZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaAppbmRleCBlNGUyNDk2YTU2MjRkZGY3ZDk5
N2NjMjAzMmYwOWVhMjUwMWRiYTlkLi44M2RjMDQ4NWY0MThiZGYzMjg2MGI1NmMzMWU2YTMyN2Iw
Y2YxYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaApAQCAtMjUsMTYgKzI1LDEzIEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKKyNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgU3RydWN0
dXJlKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6cHJldmlvdXNJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fcHJldmlvdXMuZ2V0KCk7Ci19Ci0KIGlubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpz
ZXRQcmV2aW91c0lEKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgbV9wcmV2
aW91cy5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7CkBAIC01MCw0ICs0NywyNCBAQCBpbmxpbmUg
SlNTdHJpbmcqIFN0cnVjdHVyZVJhcmVEYXRhOjpvYmplY3RUb1N0cmluZ1ZhbHVlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9vYmplY3RUb1N0cmluZ1ZhbHVlLmdldCgpOwogfQogCitpbmxpbmUgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlO
YW1lRW51bWVyYXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlOYW1l
RW51bWVyYXRvci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNl
dENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IqIGVudW1lcmF0b3IpCit7CisgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LnNldCh2bSwgdGhpcywgZW51bWVyYXRvcik7Cit9CisKK2lubGluZSBKU0ltbXV0YWJsZUJ1dHRl
cmZseSogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NhY2hlZE93bktleXMuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkIFN0cnVjdHVyZVJh
cmVEYXRhOjpzZXRDYWNoZWRPd25LZXlzKFZNJiB2bSwgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1
dHRlcmZseSkKK3sKKyAgICBtX2NhY2hlZE93bktleXMuc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCA0N2U2MWI4M2EzOTczMDU3NzRhNmYyM2RjNDNlMzBkYmQ3MDZjZDYwLi5iNDQ1ZTI4
MWQ2MmMxZmY3YThiNTc2M2NhNTdmNzZhNTUwODljNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCkBAIC00MzQsNiArNDM0LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2Vw
dGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VE
ZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgbmF0aXZlU3RkRnVuY3Rpb25DZWxsU3Ry
dWN0dXJlLnNldCgqdGhpcywgTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQo
KnRoaXMsIFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBtb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFdmFsQ29kZUJsb2NrOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CkBAIC00NDcsOCArNDQ4LDggQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogCiAgICAgc2VudGluZWxT
ZXRCdWNrZXQuc2V0KCp0aGlzLCBKU1NldDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRo
aXMpKTsKICAgICBzZW50aW5lbE1hcEJ1Y2tldC5zZXQoKnRoaXMsIEpTTWFwOjpCdWNrZXRUeXBl
OjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOworICAgIHNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5
LnNldCgqdGhpcywgSlNJbW11dGFibGVCdXR0ZXJmbHk6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7
CiAKLSAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBOYXRpdmVT
dGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoKnRoaXMpOwogCiAgICAgVGhy
ZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4aXN0aW5nRW50cnlB
dG9taWNTdHJpbmdUYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBmOTdh
ZjM1YTE0OWQzNTliMmU0NjBiZjdkMWExYjk5NzE3NzI4ZTllLi44NjdjZTE4Nzc5YjZjNjA3NjE5
NzRhOTY3YTcwZGY1ZDAzOTExNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTU2OSw2ICs1NjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxW
TT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxKU0NlbGw+
IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKICAgICBTdHJvbmc8SlNDZWxsPiBzZW50aW5l
bFNldEJ1Y2tldDsKICAgICBTdHJvbmc8SlNDZWxsPiBzZW50aW5lbE1hcEJ1Y2tldDsKKyAgICBT
dHJvbmc8SlNDZWxsPiBzZW50aW5lbEltbXV0YWJsZUJ1dHRlcmZseTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9taXNlRGVmZXJyZWRUaW1lcj4gcHJvbWlzZURlZmVycmVkVGltZXI7CiAgICAg
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356924</attachid>
            <date>2018-12-09 09:53:05 -0800</date>
            <delta_ts>2018-12-10 03:14:22 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-190047-20181210025303.patch</filename>
            <type>text/plain</type>
            <size>52153</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZmVmNDNhY2I2MDVhNTliMTExMmY4MzA1ZWE5OTAzMzU0M2FkNDNiLi45YWU5OWEzYmMxNTVhZGI4
ODEzNTRlMzlkZDA0MGJhZGVhY2VjNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxOC0xMi0wOSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5rZXlzIGJ5IGNhY2hp
bmcgb3duIGtleXMgcmVzdWx0cyBpbiBTdHJ1Y3R1cmVSYXJlRGF0YQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9s
ZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTmV3QXJyYXlCdWZmZXIp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
T2JqZWN0S2V5cyk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAo
SlNDOjppbnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJ
bW11dGFibGVCdXR0ZXJmbHk6OmNyZWF0ZVNlbnRpbmVsKToKKyAgICAgICAgKiBydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b3duUHJvcGVydHlLZXlzKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNhY2hlZE93bktleXMgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmNhbkNhY2hlT3duS2V5cyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
UmFyZURhdGE6OnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5cyBjb25zdCk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzQ29uY3VycmVudGx5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZE93bktleXMpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6cHJldmlvdXNJRCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
ICogcnVudGltZS9WTS5oOgorCiAyMDE4LTEyLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZWR1Y2Ugc2l6ZSBvZiBQcm9wZXJ0eVNsb3QgYW5kIFB1dFByb3Bl
cnR5U2xvdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAyNTE0NGI1YjE0MjQwYzdkYjJjZTg3MTZi
NzliOWJmYWMzOGI1NDdlLi5lNTk5MzQ4MmY2ODA2ZmIyZDRiNGI2YTNhODNhYjJiMzFjYzI2ODcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJpbmdPYmpl
Y3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvQm9vbGVhbkxhdHRpY2UuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
IApAQCAtMjU2NSw2ICsyNTY2LDMwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgeworICAgICAgICAgICAgYXV0byYg
c3RydWN0dXJlU2V0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmU7CisgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlU2V0LmlzRmluaXRlKCkgJiYgc3RydWN0dXJlU2V0LnNpemUo
KSA9PSAxKSB7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSBzdHJ1Y3R1cmVTZXQub25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgIGlmIChhdXRv
KiByYXJlRGF0YSA9IHN0cnVjdHVyZS0+cmFyZURhdGFDb25jdXJyZW50bHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICBhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSByYXJlRGF0YS0+Y2FjaGVk
T3duS2V5c0NvbmN1cnJlbnRseSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW1tdXRhYmxl
QnV0dGVyZmx5ICYmIGltbXV0YWJsZUJ1dHRlcmZseSAhPSBtX3ZtLnNlbnRpbmVsSW1tdXRhYmxl
QnV0dGVyZmx5LmdldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5p
c1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0FycmF5KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjQXJyYXkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFRv
T2JqZWN0OgogICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOiB7CiAgICAgICAgIEFic3Ry
YWN0VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3MWZjOTJiMTk0
NDlhYjJmN2Y3YzQxMjBmODMyY2EyZTI4NTZiYTc2Li5lMzI0ODk3MzZkNWM1NzI4M2U2MDg3MGFi
NGNjMGFhYjI5NjMxYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtMjY4NCw2ICsyNjg0LDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBJCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5
c0ludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAy
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygpOwor
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKE9iamVjdEtleXMsIGdldCh2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKwogICAgIGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOiB7
CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAppbmRleCA3ODhlZWNjM2MzYmFkMWQ5MTViYTg1N2Y2M2E3NTc4MjU2NzA1YTBjLi5iMmViZjQy
YTdkZDBjYjcwZDBiMzAxNDVlMTgzMmM5MzBkZGM5ZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjY2LDYgKzY2Niw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAg
ICBjYXNlIFN0cmluZ1ZhbHVlT2Y6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgICAgICByZWFk
KFdvcmxkKTsKICAgICAgICAgd3JpdGUoSGVhcCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1Mjcs
NyArMTUyOCw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAgICB9CiAK
LQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3
U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBmYjFmNmRjMjMxYWJlNDQ4ZDVmOTE2YzYzNDhm
ZDFmMTM3ZmJhMDIzLi4wM2Y4NGY1NWZjZjUxZDgxYWRjZTgxMjk0NWUxNThiNDNlYjhmMGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcApAQCAtNzY2LDYgKzc2NiwyNiBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKKyAgICAgICAgICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV9zdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVTZXQuaXNGaW5p
dGUoKSAmJiBzdHJ1Y3R1cmVTZXQuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0Lm9ubHlTdHJ1
Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiByYXJlRGF0YSA9IHN0
cnVjdHVyZS0+cmFyZURhdGFDb25jdXJyZW50bHkoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IHJhcmVEYXRhLT5jYWNoZWRPd25LZXlz
Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltbXV0YWJs
ZUJ1dHRlcmZseSAmJiBpbW11dGFibGVCdXR0ZXJmbHkgIT0gbV9ncmFwaC5tX3ZtLnNlbnRpbmVs
SW1tdXRhYmxlQnV0dGVyZmx5LmdldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05l
d0FycmF5QnVmZmVyKG1fZ3JhcGguZnJlZXplKGltbXV0YWJsZUJ1dHRlcmZseSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBU
b051bWJlcjogewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdHlwZSAmIH5TcGVjQnl0ZWNvZGVOdW1iZXIpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDZhYTI2
M2NmYTJhNDBhOTczZWEyMjlkODNmYTQyMTViOWRlY2FiZDEuLjQzZTNjODY5ZGRhMzExOTAzOTQ1
YjZlNjRiMDAzNjNjYTVkNjhmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2Ug
T2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBj
YXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggOTY0ZTViYzY1OTk4ZDE0YzViZmRmYjllZGYwZGU2ZGZlYjdjZTliOC4uNmVlNjk4
Y2U4MGM1MjhlN2UzMjkxYjhmNjlhZmFlNWQzMzBlZDQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTM3LDYgKzE1MzcsMTQgQEAgY2xhc3Mg
Rml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIHdhdGNo
SGF2aW5nQUJhZFRpbWUobm9kZSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKICAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lkZW50OiB7CiAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4IGRkOTY3YzhhZDIzNzIw
Yzg4NTY2NzU4NzM1MDZlNTJkMTUwZmI3NzEuLjNkMWMzYmExMzc2MjFlM2IyZjAzNDE1YmI5MWQx
NDEyMzYzY2U0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHUHJvbW90ZWRI
ZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbW11
dGFibGVCdXR0ZXJmbHkuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBA
IC0yMjMsNiArMjI0LDE3IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvTGF6eUpTQ29uc3RhbnQoR3Jh
cGgmIGdyYXBoLCBMYXp5SlNWYWx1ZSB2YWx1ZSkKICAgICBjaGlsZHJlbi5yZXNldCgpOwogfQog
Cit2b2lkIE5vZGU6OmNvbnZlcnRUb05ld0FycmF5QnVmZmVyKEZyb3plblZhbHVlKiBpbW11dGFi
bGVCdXR0ZXJmbHkpCit7CisgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3QXJyYXlCdWZmZXIp
OworICAgIE5ld0FycmF5QnVmZmVyRGF0YSBkYXRhIHsgfTsKKyAgICBkYXRhLmluZGV4aW5nTW9k
ZSA9IGltbXV0YWJsZUJ1dHRlcmZseS0+Y2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCktPmlu
ZGV4aW5nTW9kZSgpOworICAgIGRhdGEudmVjdG9yTGVuZ3RoSGludCA9IGltbXV0YWJsZUJ1dHRl
cmZseS0+Y2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCktPnRvQnV0dGVyZmx5KCktPnZlY3Rv
ckxlbmd0aCgpOworICAgIGNoaWxkcmVuLnJlc2V0KCk7CisgICAgbV9vcEluZm8gPSBpbW11dGFi
bGVCdXR0ZXJmbHk7CisgICAgbV9vcEluZm8yID0gZGF0YS5hc1F1YWRXb3JkOworfQorCiB2b2lk
IE5vZGU6OmNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVuVmFsdWUqIGV4ZWN1dGFibGUpCiB7CiAg
ICAgTm9kZVR5cGUgbmV3T3AgPSBMYXN0Tm9kZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDk5NTI4MDY1ODNlNzI3ZGQ3ZjU4MzU3ODg5NmE0OTQ3YjY4MzdiMTYuLmJi
ZjQ5ZjFmNTU0NGExMjExNDFlZTAwNjU0MTA5MjRmNTBhZGNhNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC03NjEsNiArNzYxLDggQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICBtX29wSW5mbyA9IHN0cnVjdHVyZTsKICAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBl
cigpOwogICAgIH0KKworICAgIHZvaWQgY29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFs
dWUqIGltbXV0YWJsZUJ1dHRlcmZseSk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RD
YWxsKEZyb3plblZhbHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAppbmRleCA1MDlmY2M5MDQzYTY5NWQ4ZjlmOTA3ZjY0OTBhNTNhYWI2YzFiMzZmLi43NzM1N2Yx
ZTg0MjEzNjkzM2UxOWJkMDNjNDc4NDNhZjYwMTVhYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNjMsNiArMjYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKFBhcnNlSW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0UHJvdG90eXBlT2YsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RDcmVhdGUsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhPYmplY3RLZXlzLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIEF0b21pY3Mgb2JqZWN0IGZ1bmN0
aW9ucy4gKi9cCiAgICAgbWFjcm8oQXRvbWljc0FkZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCAzZjFmNDk0YTU2YTMwMDEwNTAyNGEwMGQyNzhmZGQzY2Fk
MmUyN2JmLi45NTU1ZjZmZWI4YmM3ZTIxYjQyZDI3N2M0YmFjMDM5ZDEzZGVhYTNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTI0OCw2ICsyNDgs
MjUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXNTdHJpY3Qo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKSk7CiB9
CiAKK0pTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5cyhFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3Qq
IG9iamVjdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT2JqZWN0KS50b09iamVjdChleGVjKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBzY29wZS5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5
TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpOworfQor
CitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIHJldHVy
biBvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
LCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKTsKK30KKwogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk9iamVjdENyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRQcm90b3R5cGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTEyYWMxMTE1M2M4ZmY1
MjJjZjYyNjcxNTUxYjk5NjhkZjQwYzQ0ZS4uZmY1YmVjNGQ5MDhmOGQyZjZmMzc1ZGQ4M2IwMDI5
OTE4MmQ3NmU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
QEAgLTQzLDYgKzQzLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25T
dHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkKEV4ZWNTdGF0ZSosIEVuY28KIC8vIFRoZXNlIHJvdXRp
bmVzIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25zIG9mIG9wZXJh
dGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9iamVjdEtleXNPYmplY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2JqZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KikgV1RGX0lO
VEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0
YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJfdCBpbmxpbmVDYXBhY2l0eSkgV1RG
X0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmODIwOWZiMDQ4YzBiY2MxZWEw
Y2IyM2MyYzE1NTZlNmYwOWE5MjgzLi40M2ViNTZhNmRjMjJlYmNhN2ZmNGU5NWI4Y2VlOTEwOTA2
ZGMxNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTY4LDcgKzk2OCw4IEBAIGNsYXNz
IFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2Fz
ZSBOZXdBcnJheToKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICBjYXNl
IENyZWF0ZVJlc3Q6Ci0gICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsKKyAgICAgICAgY2Fz
ZSBOZXdBcnJheUJ1ZmZlcjoKKyAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7CiAgICAgICAgICAg
ICBzZXRQcmVkaWN0aW9uKFNwZWNBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBi
NDNiN2RmZGE5ZTc3OWZkMjIyZWVjM2VmNTA1ZDA2ZmJkOTkyZDBlLi4wZTA5NzY3MWEyZWEwOTc2
ZGYyNDBhYjc5ZDFjN2E4YTM0YjVkZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTc4LDYgKzE3OCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9v
bCBpZ25vCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2Ug
T2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEdldENhbGxlZToK
ICAgICBjYXNlIFNldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCAyY2RhMDZkZDZlMzc3NzE1NTFkZGVhY2MxNjFjOWYyNWU3Mzc1ODkzLi5lMDU3OGU3
ODE3MGM3NjJiYTc0MWZhYTFlNDkwOGY2ZmNiNDc3NjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTIzMDEsNiArMTIzMDEsOTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvVGhpcyhOb2RlKiBub2RlKQogICAgIGpz
VmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBPYmplY3RVc2U6IHsKKyAgICAgICAgaWYgKG1fZ3Jh
cGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgeworICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
Mih0aGlzKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMyh0aGlzKTsKKyAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgICAgIEdQUlJlZyBv
YmplY3RHUFIgPSBvYmplY3QuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BS
ID0gc3RydWN0dXJlLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3By
KCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDNHUFIgPSBzY3JhdGNoMy5ncHIoKTsKKyAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgICAg
IHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDEoKSwgb2JqZWN0R1BSKTsKKworICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgICAgICAgICBtX2ppdC5l
bWl0TG9hZFN0cnVjdHVyZSgqbV9qaXQudm0oKSwgb2JqZWN0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNj
cmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSwg
c2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
VGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4obV9qaXQudm0oKS0+c3RydWN0dXJl
U3RydWN0dXJlLT5zdHJ1Y3R1cmVJRCgpKSkpKTsKKworICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlUmFyZURhdGE6Om9m
ZnNldE9mQ2FjaGVkT3duS2V5cygpKSwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0
Y2hHUFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKEND
YWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIG1faml0LnZtKCktPnNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5Lmdl
dCgpKSkpOworCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0J1dEFy
cmF5QnVmZmVyQ2FzZXM7CisKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0cnVjdHVyZSA9IG1faml0
LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1
b3VzKSk7CisKKyAgICAgICAgICAgIG1faml0Lm1vdmUoc2NyYXRjaEdQUiwgc2NyYXRjaDNHUFIp
OworICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNJbW11dGFibGVCdXR0
ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgIGVtaXRB
bGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihhcnJheVN0
cnVjdHVyZSksIHNjcmF0Y2hHUFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dCdXRB
cnJheUJ1ZmZlckNhc2VzKTsKKworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dCdXRBcnJheUJ1ZmZlckNhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJh
eUJ1ZmZlciwgcmVzdWx0R1BSLCBhcnJheVN0cnVjdHVyZSwgc2NyYXRjaDNHUFIpKTsKKworICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCwgcmVzdWx0R1BSLCBvYmplY3RHUFIpKTsKKwor
ICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvYmplY3QodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIEdQUlJlZyBvYmplY3RHUFIgPSBvYmplY3Qu
Z3ByKCk7CisKKyAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RH
UFIpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0LCBy
ZXN1bHRHUFIsIG9iamVjdEdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisK
KyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb2Jq
ZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBKU1ZhbHVlUmVncyBvYmplY3RS
ZWdzID0gb2JqZWN0LmpzVmFsdWVSZWdzKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk9iamVjdEtleXMsIHJlc3VsdEdQUiwgb2JqZWN0UmVncyk7CisgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKIHsKICAgICBzd2l0
Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGFkYjNiYTFjOGUxN2MwYTQzNWM3NzJmMGZi
NDBjMzgzNzA3NDU3MWYuLjk4MzYzNmZmMjE0NTUwZmZiMDg1MGViNjJmYzJkYjkwYTIxYzFlNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTE0NzYsNiArMTQ3Niw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBp
bGVOZXdBcnJheVdpdGhTaXplKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1RoaXMoTm9kZSopOworICAgIHZvaWQgY29tcGls
ZU9iamVjdEtleXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU9iamVjdENyZWF0ZShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3
T2JqZWN0KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNlM2UyNjYzNTI0ODk1OWIxOWRmNTY2YzhlZTEy
NTgzOGQ3NThkNWEuLjgyOGE0MGU3YWNjNjRkOWNjNzZlZGI1NWMxZWU1MWFiOWVmMTEyZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtMzE1Myw2ICszMTUzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBPYmplY3RL
ZXlzOiB7CisgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzKG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIENyZWF0ZVRoaXM6IHsKICAgICAgICAgY29tcGlsZUNyZWF0ZVRo
aXMobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZmIxNjFhNzJiNTQwNzRmMTVhYmFkYmZj
NzU1MzU2ZDIwMzgwNTU4ZS4uODIyY2JmZTI2MDYxZjMwMzg3YmZjNjlhNjg0MGNkZTYxOTJkOTk0
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC0zMzk1LDYgKzMzOTUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE9iamVjdEtl
eXM6IHsKKyAgICAgICAgY29tcGlsZU9iamVjdEtleXMobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgQ3JlYXRlVGhpczogewogICAgICAgICBjb21waWxlQ3JlYXRlVGhp
cyhub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDNmZmNhMTcwNDk2NzFjZmM2
ZTQ4MTdmMWVhNTZlZDYxODFkMWE3ZDMuLjU4NDNmYjNkNDk2MmZmMDFmMDRiZDNiNDcxMDY1NmJl
NWVmNDViMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0xMTcsOCArMTE3LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4
aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBT
dHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVf
cHJldmlvdXNPclJhcmVEYXRhLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgp
KSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVP
ZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFfY2FjaGVk
T3duS2V5cywgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkT3duS2V5cygpKSBcCiAg
ICAgbWFjcm8oSGFzaE1hcEltcGxfY2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8
SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8o
SGFzaE1hcEltcGxfYnVmZmVyLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVj
a2V0RGF0YUtleT4+OjpvZmZzZXRPZkJ1ZmZlcigpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxf
aGVhZCwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6
b2Zmc2V0T2ZIZWFkKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAppbmRleCBkYTExMzgxMmUxN2UxZDBiMDQ0YWQyOGM4NmFiOGY4ZTc0Yjc4Yjlm
Li4wZjdlMGE2ZTAzYmE5NTU4ZjExYWNlY2MwZjAwYmQ0MTVlMzY5ZGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xOTgsNiArMTk4LDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6
CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2Ug
TWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgVHJ5R2V0QnlJ
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCBmYjA0Mzk3MzJjNDNhNGIzZDRjYjVhZmEzYTVkZWNhMzkxMGVhOTQ1Li4zYzExMTg4M2U3Mjgx
MGRmNDg1ZGM1OTZiY2QxZGVjN2IyZjQ2ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC04NjAsNiArODYwLDkgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgICAgICAgICBjb21waWxl
T2JqZWN0Q3JlYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPYmplY3RL
ZXlzOgorICAgICAgICAgICAgY29tcGlsZU9iamVjdEtleXMoKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdPYmplY3Qo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTQ3MCw2ICs1NDczLDc1IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgemVyb0xlbmd0aFJl
c3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU9i
amVjdEtleXMoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSkgeworICAgICAgICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChtX25vZGUpKSB7CisgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJhcmVEYXRhQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbENhY2hlQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgdXNlQ2FjaGVDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93QnV0QXJyYXlC
dWZmZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgICAgIExW
YWx1ZSBvYmplY3QgPSBsb3dPYmplY3QobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUob2JqZWN0KTsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgcHJldmlvdXNPclJhcmVEYXRhID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUs
IG1faGVhcHMuU3RydWN0dXJlX3ByZXZpb3VzT3JSYXJlRGF0YSk7CisgICAgICAgICAgICAgICAg
bV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwocHJldmlvdXNPclJhcmVEYXRhKSwgdW5zdXJlKG5v
dE51bGxDYXNlKSwgdW5zdXJlKHNsb3dDYXNlKSk7CisKKyAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdE51bGxDYXNlLCByYXJlRGF0YUNhc2Up
OworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9v
dXQubm90RXF1YWwobV9vdXQubG9hZDMyKHByZXZpb3VzT3JSYXJlRGF0YSwgbV9oZWFwcy5KU0Nl
bGxfc3RydWN0dXJlSUQpLCBtX291dC5jb25zdEludDMyKG1fZ3JhcGgubV92bS5zdHJ1Y3R1cmVT
dHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgdW5zdXJlKHJh
cmVEYXRhQ2FzZSksIHVuc3VyZShzbG93Q2FzZSkpOworCisgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8ocmFyZURhdGFDYXNlLCBub3ROdWxsQ2FjaGVDYXNlKTsKKyAgICAgICAgICAgICAg
ICBMVmFsdWUgY2FjaGVkT3duS2V5cyA9IG1fb3V0LmxvYWRQdHIocHJldmlvdXNPclJhcmVEYXRh
LCBtX2hlYXBzLlN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZE93bktleXMpOworICAgICAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKGNhY2hlZE93bktleXMpLCB1bnN1cmUobm90
TnVsbENhY2hlQ2FzZSksIHVuc3VyZShzbG93Q2FzZSkpOworCisgICAgICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obm90TnVsbENhY2hlQ2FzZSwgdXNlQ2FjaGVDYXNlKTsKKyAgICAgICAgICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwoY2FjaGVkT3duS2V5cywgd2Vha1BvaW50
ZXIobV9ncmFwaC5tX3ZtLnNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5LmdldCgpKSksIHVuc3Vy
ZSh1c2VDYWNoZUNhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKworICAgICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHVzZUNhY2hlQ2FzZSwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSk7CisgICAg
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIGFycmF5U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpKTsKKyAgICAgICAgICAgICAgICBM
VmFsdWUgZmFzdEFycmF5ID0gYWxsb2NhdGVPYmplY3Q8SlNBcnJheT4oYXJyYXlTdHJ1Y3R1cmUs
IG1fb3V0LmFkZFB0cihjYWNoZWRPd25LZXlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0
T2ZEYXRhKCkpLCBzbG93QnV0QXJyYXlCdWZmZXJDYXNlKTsKKyAgICAgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RBcnJheSk7CisgICAgICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSwgc2xvd0Nhc2UpOworICAgICAgICAg
ICAgICAgIExWYWx1ZSBzbG93QXJyYXkgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1lLCB3ZWFrU3RydWN0dXJlKGFycmF5
U3RydWN0dXJlKSwgY2FjaGVkT3duS2V5cyk7CisgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd0J1dEFycmF5QnVmZmVyUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dBcnJheSk7Cisg
ICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd1Jlc3Vs
dFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29u
c3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpH
ZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2Fs
bEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25PYmpl
Y3RLZXlzT2JqZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGxvY2F0aW9uc1sxXS5kaXJl
Y3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIG9i
amVjdCk7CisgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0
LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOworICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dCdXRBcnJheUJ1ZmZlclJlc3VsdCwgc2xvd1Jlc3Vs
dCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RL
ZXlzT2JqZWN0KSwgbV9jYWxsRnJhbWUsIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgor
ICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25PYmplY3RLZXlzKSwgbV9jYWxsRnJhbWUsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlT2JqZWN0Q3JlYXRlKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IGFiZTZmMTcyODZlM2JlMzkxZTBj
Mzc0YzFmNmM1NzRjNWJkODY3ZmIuLmZiYzRlZjNjZDhmMmVjNjJkYTkzMDBkYTI3MWIxMDIzMzk3
NDM0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApA
QCAtMTE5LDYgKzExOSw4IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGlu
dHJpbnNpYykKICAgICAgICAgcmV0dXJuICJPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7
CiAgICAgY2FzZSBPYmplY3RJc0ludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJPYmplY3RJc0lu
dHJpbnNpYyI7CisgICAgY2FzZSBPYmplY3RLZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4g
Ik9iamVjdEtleXNJbnRyaW5zaWMiOwogICAgIGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50
cmluc2ljOgogICAgICAgICByZXR1cm4gIlJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7
CiAgICAgY2FzZSBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCBjZmJkMTg0OTYzNTJiYjlkNGUyNmEw
MmM1NjkzYjhjNDYwMDE5MDI1Li5iNDdmNDZkOWU0ZGUwMDEzZGU4MzQ2ZTgyZTY4MTZmNWZkMDJm
NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtNzIs
NiArNzIsNyBAQCBlbnVtIEludHJpbnNpYyB7CiAgICAgT2JqZWN0Q3JlYXRlSW50cmluc2ljLAog
ICAgIE9iamVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLAogICAgIE9iamVjdElzSW50cmluc2lj
LAorICAgIE9iamVjdEtleXNJbnRyaW5zaWMsCiAgICAgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50
cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMsCiAgICAgU3RyaW5n
UHJvdG90eXBlUmVwbGFjZUludHJpbnNpYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCmluZGV4IDI4NDc4M2MwYzc1NTk2YWRk
YTVhMWY5OGYzNmIwNjllMGViOGU0YTEuLjFmZjRkMjc2Nzc1MzI4YmQwYzZjYTJlNDE0NjcwMzgy
NzUxNWU4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1t
dXRhYmxlQnV0dGVyZmx5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bW11dGFibGVCdXR0ZXJmbHkuaApAQCAtNjcsNiArNjcsMTEgQEAgY2xhc3MgSlNJbW11dGFibGVC
dXR0ZXJmbHkgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgIH0K
IAorICAgIHN0YXRpYyBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY3JlYXRlU2VudGluZWwoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgQ29weU9uV3JpdGVBcnJheVdpdGhD
b250aWd1b3VzLCAwKTsKKyAgICB9CisKICAgICB1bnNpZ25lZCBwdWJsaWNMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2hlYWRlci5wdWJsaWNMZW5ndGgoKTsgfQogICAgIHVuc2lnbmVkIHZlY3Rv
ckxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyLnZlY3Rvckxlbmd0aCgpOyB9CiAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXIucHVibGljTGVuZ3RoKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAppbmRleCA5MGEzNmE5MzU1NzhmMmI4ZTMxMzExM2QyOWQ5MGJhOWQ0NjZhOTQ1Li5m
Y2Y5OWI4ZWNkMjk1ZjE4ZTQ0YTIzMGJmMzA0NjQ0MThiZDE0NTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJK
U0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9i
amVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgpAQCAtNzMs
NyArNzQsNyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogICBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JzIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyAgRG9udEVu
dW18RnVuY3Rpb24gMQogICBnZXRPd25Qcm9wZXJ0eU5hbWVzICAgICAgIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlOYW1lcyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBnZXRP
d25Qcm9wZXJ0eVN5bWJvbHMgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1i
b2xzICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBrZXlzICAgICAgICAgICAgICAgICAgICAg
IG9iamVjdENvbnN0cnVjdG9yS2V5cyAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICBrZXlzICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yS2V5
cyAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBPYmplY3RLZXlzSW50
cmluc2ljCiAgIGRlZmluZVByb3BlcnR5ICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JEZWZp
bmVQcm9wZXJ0eSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgIGRlZmluZVByb3Bl
cnRpZXMgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCiAgIGNyZWF0ZSAgICAgICAgICAgICAgICAgICAgb2JqZWN0
Q29uc3RydWN0b3JDcmVhdGUgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAy
IE9iamVjdENyZWF0ZUludHJpbnNpYwpAQCAtMjcxLDcgKzI3Miw2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRXhl
Y1N0YXRlKiBlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
b3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scywg
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKIH0KIAotLy8gRklYTUU6IFVzZSB0
aGUgZW51bWVyYXRpb24gY2FjaGUuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKQEAgLTg5MiwxMSArODkyLDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JJcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oc2FtZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVj
LT5hcmd1bWVudCgxKSkpKTsKIH0KIAotLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2Fj
aGUuCiBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVy
dGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBib29s
IGlzT2JqZWN0S2V5cyA9IHByb3BlcnR5TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3Ry
aW5ncyAmJiBkb250RW51bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6
OkV4Y2x1ZGU7CisgICAgLy8gV2UgYXR0ZW1wdCB0byBsb29rIHVwIG93biBwcm9wZXJ0eSBrZXlz
IGNhY2hlIGluIE9iamVjdC5rZXlzIGNhc2UuCisgICAgaWYgKGlzT2JqZWN0S2V5cykgeworICAg
ICAgICBpZiAoTElLRUxZKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSBvYmplY3QtPnN0cnVjdHVy
ZSh2bSktPmNhY2hlZE93bktleXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbW11dGFibGVC
dXR0ZXJmbHkgIT0gdm0uc2VudGluZWxJbW11dGFibGVCdXR0ZXJmbHkuZ2V0KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+
b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShpbW11dGFibGVCdXR0ZXJmbHkt
PmluZGV4aW5nTW9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmNy
ZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIG51bGxwdHIsIGFycmF5U3RydWN0dXJlLCBpbW11dGFibGVC
dXR0ZXJmbHktPnRvQnV0dGVyZmx5KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMo
JnZtLCBwcm9wZXJ0eU5hbWVNb2RlLCBQcml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7CiAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtOTE4LDggKzkzMiwz
MSBAQCBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHBybwogICAgIGlmIChwcm9wZXJ0eU5hbWVNb2RlICE9
IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzKSB7CiAgICAgICAgIEFTU0VSVChw
cm9wZXJ0eU5hbWVNb2RlID09IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MgfHwgcHJvcGVydHlO
YW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzKTsKICAgICAgICAgaWYgKCFtdXN0
RmlsdGVyUHJvcGVydHkgJiYgcHJvcGVydGllcy5zaXplKCkgPCBNSU5fU1BBUlNFX0FSUkFZX0lO
REVYKSB7Ci0gICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7CiAgICAgICAgICAgICBpZiAoTElLRUxZKCFnbG9iYWxPYmplY3QtPmlzSGF2
aW5nQUJhZFRpbWUoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3RLZXlzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1Y3R1
cmUodm0pOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5jYW5DYWNoZU93bktl
eXMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogY2FjaGVkQnV0dGVyZmx5ID0g
c3RydWN0dXJlLT5jYWNoZWRPd25LZXlzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y2FjaGVkQnV0dGVyZmx5ID09IHZtLnNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5LmdldCgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIGltbXV0YWJsZSBidXR0
ZXJmbHkhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBu
ZXdCdXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6Y3JlYXRlKHZtLCBDb3B5T25Xcml0
ZUFycmF5V2l0aENvbnRpZ3VvdXMsIG51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgPSBw
cm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWlk
ZW50aWZpZXIuaXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d0J1dHRlcmZseS0+c2V0SW5kZXgodm0sIGksIGpzT3duZWRTdHJpbmcoJnZtLCBpZGVudGlmaWVy
LnN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDYWNoZWRPd25LZXlzKHZtLCBuZXdCdXR0
ZXJmbHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGUobmV3QnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIG51bGxwdHIsIGFy
cmF5U3RydWN0dXJlLCBuZXdCdXR0ZXJmbHktPnRvQnV0dGVyZmx5KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkQnV0dGVy
Zmx5ID09IG51bGxwdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5z
ZXRDYWNoZWRPd25LZXlzKHZtLCBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPih2bS5zZW50
aW5lbEltbXV0YWJsZUJ1dHRlcmZseS5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBrZXlzID0gSlNB
cnJheTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cyksIG51bVByb3BlcnRpZXMpOwogICAgICAg
ICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogYnVmZmVyID0ga2V5cy0+YnV0dGVyZmx5
KCktPmNvbnRpZ3VvdXMoKS5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAppbmRleCA1OGQ4M2JjZTRhZmRhZGU4MDNkMzg0YmE3MTBlMGFiOWQ2YWQw
OTE4Li4zNTQyODI3ZGUzYTI3MDQ1NGZmNmM2MzQwMjY4MmZjMDU4MjM0OGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyNTIsMTcgKzEyNTIs
NyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIFN0cnVjdHVyZTo6Y2FjaGVkUHJvcGVydHlO
YW1lRW51bWVyYXRvcigpIGNvbnN0CiAKIGJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZVByb3BlcnR5
TmFtZUVudW1lcmF0b3IoKSBjb25zdAogewotICAgIGF1dG8gY2FuQ2FjaGUgPSBbXSAoY29uc3Qg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9u
YXJ5KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChoYXNJbmRleGVk
UHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH07Ci0KLSAgICBpZiAoIWNhbkNhY2hlKHRoaXMpKQorICAgIGlmICghdGhp
cy0+Y2FuQ2FjaGVPd25LZXlzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cnVj
dHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiA9IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCk7
CkBAIC0xMjcxLDcgKzEyNjEsNyBAQCBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKCkgY29uc3QKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+Z2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCFj
YW5DYWNoZShzdHJ1Y3R1cmUtPmdldCgpKSkKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmdldCgp
LT5jYW5DYWNoZU93bktleXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
c3RydWN0dXJlKys7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAppbmRleCA4ZGVkODI1YmZiYTkzYTg1MDkwYjYxNDhjMGY1MGRhMTlkZmFjOWI3Li4xZTg0
YzRkMTliNDE1ZGIzNDZkNTJiZjVlNWU1N2ExYjc1MmIwOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlB1
dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlEQmxvYi5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZVJhcmVEYXRhLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiCiAjaW5jbHVkZSAiSlNU
eXBlSW5mby5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKQEAgLTMyNiw2ICszMjUsMTUgQEAg
Y2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmVSYXJlRGF0YSo+KG1fcHJldmlvdXNPclJhcmVEYXRh
LmdldCgpKTsKICAgICB9CiAKKyAgICBjb25zdCBTdHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGFD
b25jdXJyZW50bHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gbV9wcmV2
aW91c09yUmFyZURhdGEuZ2V0KCk7CisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAg
ICAgICBpZiAoaXNSYXJlRGF0YShjZWxsKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxTdHJ1Y3R1cmVSYXJlRGF0YSo+KGNlbGwpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YSogZW5zdXJlUmFyZURhdGEoVk0mIHZtKQogICAg
IHsKICAgICAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQpAQCAtNDcyLDYgKzQ4MCwxMCBAQCBjbGFz
cyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGNhbkNhY2hlUHJv
cGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OwogICAgIGJvb2wgY2FuQWNjZXNzUHJvcGVydGll
c1F1aWNrbHlGb3JFbnVtZXJhdGlvbigpIGNvbnN0OwogCisgICAgdm9pZCBzZXRDYWNoZWRPd25L
ZXlzKFZNJiwgSlNJbW11dGFibGVCdXR0ZXJmbHkqKTsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogY2FjaGVkT3duS2V5cygpIGNvbnN0OworICAgIGJvb2wgY2FuQ2FjaGVPd25LZXlzKCkgY29u
c3Q7CisKICAgICB2b2lkIGdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCiAgICAgSlNTdHJpbmcqIG9iamVjdFRv
U3RyaW5nVmFsdWUoKQpAQCAtNTIwLDYgKzUzMiwxMSBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1
cmUsIG1faW5saW5lQ2FwYWNpdHkpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJl
dmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoU3RydWN0dXJlLCBtX3ByZXZpb3VzT3JSYXJlRGF0YSk7CisgICAgfQorCiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJik7CiAgICAgICAgIAogICAgIGJvb2wg
dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGIz
ZWIxYjQxZTlmMWM3ODFlOTZmMDIyOTA1MTAwMGUwNDI3MDVkNWUuLmFiN2UyMDZkZGU1ZWNlNGY3
MGJhYzdhNGU5MzBlZTU4ZjU1NzVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTIxOSw2ICsyMTksMjkgQEAgaW5saW5lIGJv
b2wgU3RydWN0dXJlOjp0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3Ry
dWN0dXJlVG9GaW5kKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgU3RydWN0
dXJlOjpzZXRDYWNoZWRPd25LZXlzKFZNJiB2bSwgSlNJbW11dGFibGVCdXR0ZXJmbHkqIG93bktl
eXMpCit7CisgICAgZW5zdXJlUmFyZURhdGEodm0pLT5zZXRDYWNoZWRPd25LZXlzKHZtLCBvd25L
ZXlzKTsKK30KKworaW5saW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmU6OmNhY2hl
ZE93bktleXMoKSBjb25zdAoreworICAgIGlmICghaGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZE93bktleXMoKTsKK30K
KworaW5saW5lIGJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZU93bktleXMoKSBjb25zdAoreworICAg
IGlmIChpc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChoYXNJ
bmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAodHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogQUxXQVlTX0lOTElORSBKU1Zh
bHVlIHByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCmluZGV4IDg5ODRjZTkxOTU2YTgxZDUxYWQwZDUyMzM2
MzBlNjk5ZTM2ZGViNTMuLmQ4YjJmMDBmYTIxMzkxODA1MjFmMTFhMDZjMTEyNDI5YjcwYmU3NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YS5o
IgogCiAjaW5jbHVkZSAiQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5oIgorI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCkBAIC03MCwxNiArNzEsNyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcmV2aW91cyk7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9vYmplY3RUb1N0cmluZ1ZhbHVlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOwotfQotCi1KU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmdldCgpOwotfQotCi12b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiB2bSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVt
ZXJhdG9yKQotewotICAgIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvci5zZXQodm0sIHRo
aXMsIGVudW1lcmF0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVk
T3duS2V5cyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmco
KSBoZWxwZXIgd2F0Y2hwb2ludCBjbGFzc2VzIC0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAppbmRleCAxMWMxODFkZDYx
ZTdlYjY3NTRlYmE5NzA1NGJmMTJhNTAzZmI4OGE3Li5mMmQyYWYzZmFkNTc5ZDY3MDVlY2JhNTVm
ZjQ2NDA1MzYzNGUzYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTU4LDcgKzU4LDEwIEBAIGNsYXNzIFN0cnVjdHVyZVJh
cmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsK
IAotICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0OworICAgIFN0cnVjdHVyZSogcHJl
dmlvdXNJRCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsK
KyAgICB9CiAgICAgdm9pZCBzZXRQcmV2aW91c0lEKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9p
ZCBjbGVhclByZXZpb3VzSUQoKTsKIApAQCAtNjgsMTEgKzcxLDIwIEBAIGNsYXNzIFN0cnVjdHVy
ZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKiBjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKik7CiAKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5cygpIGNvbnN0
OworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzQ29uY3VycmVudGx5KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRDYWNoZWRPd25LZXlzKFZNJiwgSlNJbW11dGFibGVCdXR0ZXJm
bHkqKTsKKwogICAgIEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiBjb3B5U2hhcmVkUG9seVByb3Rv
V2F0Y2hwb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAg
IGNvbnN0IEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiYgc2hhcmVkUG9seVByb3RvV2F0Y2hwb2lu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAgIHZvaWQgc2V0
U2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludChCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4mJiBzaGFy
ZWRQb2x5UHJvdG9XYXRjaHBvaW50KSB7IG1fcG9seVByb3RvV2F0Y2hwb2ludCA9IFdURk1vdmUo
c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCk7IH0KICAgICBib29sIGhhc1NoYXJlZFBvbHlQcm90
b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BvbHlQcm90
b1dhdGNocG9pbnQpOyB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkT3du
S2V5cygpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVJh
cmVEYXRhLCBtX2NhY2hlZE93bktleXMpOworICAgIH0KKwogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKIHByaXZhdGU6CkBAIC04Nyw2ICs5OSw3IEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRh
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9w
cmV2aW91czsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fb2JqZWN0VG9TdHJpbmdWYWx1
ZTsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPiBtX2NhY2hlZFBy
b3BlcnR5TmFtZUVudW1lcmF0b3I7CisgICAgV3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVy
Zmx5PiBtX2NhY2hlZE93bktleXM7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UHJvcGVydHlPZmZz
ZXQsIFJlZlB0cjxXYXRjaHBvaW50U2V0PiwgV1RGOjpJbnRIYXNoPFByb3BlcnR5T2Zmc2V0Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxQcm9wZXJ0eU9mZnNldD4+IFByb3Bl
cnR5V2F0Y2hwb2ludE1hcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvcGVydHlXYXRjaHBvaW50
TWFwPiBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCmluZGV4IGU0
ZTI0OTZhNTYyNGRkZjdkOTk3Y2MyMDMyZjA5ZWEyNTAxZGJhOWQuLjg5NmY1OWE1OWUzNWI2YWFl
MDY1OGQ3ZTAxYjkzZjJjY2VlODMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCkBAIC0yNSwxNiArMjUs
MTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5o
IgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGEuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZVJhcmVEYXRhOjpwcmV2aW91c0lEKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsKLX0KLQogaW5saW5lIHZvaWQgU3Ry
dWN0dXJlUmFyZURhdGE6OnNldFByZXZpb3VzSUQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKICAgICBtX3ByZXZpb3VzLnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsKQEAgLTUwLDQg
KzQ3LDMyIEBAIGlubGluZSBKU1N0cmluZyogU3RydWN0dXJlUmFyZURhdGE6Om9iamVjdFRvU3Ry
aW5nVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX29iamVjdFRvU3RyaW5nVmFsdWUuZ2V0KCk7
CiB9CiAKK2lubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIFN0cnVjdHVyZVJhcmVEYXRh
OjpjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
YWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmdldCgpOworfQorCitpbmxpbmUgdm9pZCBTdHJ1
Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYgdm0sIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvcikKK3sKKyAgICBtX2NhY2hlZFByb3Bl
cnR5TmFtZUVudW1lcmF0b3Iuc2V0KHZtLCB0aGlzLCBlbnVtZXJhdG9yKTsKK30KKworaW5saW5l
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5cygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FjaGVkT3duS2V5cy5nZXQoKTsKK30KKworaW5saW5l
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5c0Nv
bmN1cnJlbnRseSgpIGNvbnN0Cit7CisgICAgYXV0byogcmVzdWx0ID0gbV9jYWNoZWRPd25LZXlz
LmdldCgpOworICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2lubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRPd25LZXlzKFZNJiB2
bSwgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKK3sKKyAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOworICAgIG1fY2FjaGVkT3duS2V5cy5zZXQodm0sIHRoaXMsIGJ1dHRlcmZseSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CmluZGV4IDI1NmE1ODM2NzE3NzVhNDFlNmUzYTAzZGRjZmRlMDQxMmRhNGQwNGEuLmE3NzRmYTVm
NzZlMDVhNWRlYjc4OTM3YjkxZGQ2MDM0YWUxMDVhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTQzNCw2ICs0MzQsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgq
dGhpcywgUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIG1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgZXZhbENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEV2YWxDb2RlQmxvY2s6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKQEAgLTQ0Nyw4ICs0NDgsOCBAQCBW
TTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAKICAgICBzZW50aW5lbFNl
dEJ1Y2tldC5zZXQoKnRoaXMsIEpTU2V0OjpCdWNrZXRUeXBlOjpjcmVhdGVTZW50aW5lbCgqdGhp
cykpOwogICAgIHNlbnRpbmVsTWFwQnVja2V0LnNldCgqdGhpcywgSlNNYXA6OkJ1Y2tldFR5cGU6
OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CisgICAgc2VudGluZWxJbW11dGFibGVCdXR0ZXJmbHku
c2V0KCp0aGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6Y3JlYXRlU2VudGluZWwoKnRoaXMpKTsK
IAotICAgIG5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2ZVN0
ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IHNtYWxsU3RyaW5ncy5pbml0aWFsaXplQ29tbW9uU3RyaW5ncygqdGhpcyk7CiAKICAgICBUaHJl
YWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0
b21pY1N0cmluZ1RhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGUxZWY0
Njg3ODQwZjkyYmQ4MDI5ZTA5MGYyZTUxYmJiMmJjMzY4YmYuLjBmYjdiODIxNWM5ZDdmYzRmYWQ1
Nzk5NjQ5YWM1YzQwODZlNGZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
NTcxLDYgKzU3MSw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgU3Ryb25nPEpTQ2VsbD4g
ZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogICAgIFN0cm9uZzxKU0NlbGw+IHNlbnRpbmVs
U2V0QnVja2V0OwogICAgIFN0cm9uZzxKU0NlbGw+IHNlbnRpbmVsTWFwQnVja2V0OworICAgIFN0
cm9uZzxKU0NlbGw+IHNlbnRpbmVsSW1tdXRhYmxlQnV0dGVyZmx5OwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFByb21pc2VEZWZlcnJlZFRpbWVyPiBwcm9taXNlRGVmZXJyZWRUaW1lcjsKICAgICAK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZmNmMGI4ZTdmM2U1NWI2Nzg1MzY4MTMzZjFkMTY3ZjczOWQ0NThlNS4uMzYwMWNiODg3MzdmNmFl
YWE3ZThlYTBiMDRmMTRlNjI5MTJmYzRlZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0xMi0wOSAgWXVz
dWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0Nd
IE9wdGltaXplIE9iamVjdC5rZXlzIGJ5IGNhY2hpbmcgb3duIGtleXMgcmVzdWx0cyBpbiBTdHJ1
Y3R1cmVSYXJlRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzdHJlc3Mvb2JqZWN0LWtleXMtY2FjaGVkLXplcm8uanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1r
ZXlzLWNoYW5nZWQtYXR0cmlidXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWluZGV4
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHRlc3QpOgorCiAyMDE4LTEyLTA2ICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIHN0cmVzcy9iaWctd2FzbS1tZW1vcnkgdGVz
dHMgZmFpbGluZyBvbiAzMi1iaXQgSlNDIGJvdApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWtleXMtY2FjaGVkLXplcm8uanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1j
YWNoZWQtemVyby5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2NjOTZhZmFjZmE4NDhiMTAzMGQ2MzFiNjUzOTE1
N2Q3MDdiOTY1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMt
Y2FjaGVkLXplcm8uanMKQEAgLTAsMCArMSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0
KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5l
KHRlc3QpOworCit2YXIgb2JqZWN0ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytp
KSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQu
bGVuZ3RoLCAwKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVz
dWx0WzBdID0gaTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRC
ZShyZXN1bHRbMF0sIGkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtl
eXMtY2hhbmdlZC1hdHRyaWJ1dGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFu
Z2VkLWF0dHJpYnV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2YxNDNlYzI3ZjAwMjA1OWFlNDE3MjU2OWY5
Yjc0M2MxM2JkMWE2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtl
eXMtY2hhbmdlZC1hdHRyaWJ1dGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5j
dGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30K
K25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0geyBDb2NvYTogNDIgfTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOwor
ICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwg
J0NvY29hJyk7Cit9CisKK1JlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnQ29jb2EnLCB7
CisgICAgZW51bWVyYWJsZTogZmFsc2UKK30pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsg
KytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1
bHQubGVuZ3RoLCAwKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWluZGV4LmpzIGIv
SlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC1pbmRleC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MjNlMDkyNTdiMjlkYTQ1NGJkZjZmM2ZkNzNiYTNiYTZiM2Y3NDc5Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC1pbmRleC5qcwpAQCAtMCwwICsx
LDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBP
YmplY3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7
fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVz
dChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIHNob3VsZEJl
KHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHRbMF0gPSBpOworICAgIHNob3VsZEJl
KHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaSk7Cit9CisKK29i
amVjdFswXSA9IDQyOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciBy
ZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWtleXMtY2hhbmdlZC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNo
YW5nZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQzYTMwNTNmYmU2ZDY0ZDkwMjI5N2IwODNkZmE3MjBkYjQ2
YzI4MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNoYW5n
ZWQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOwor
Cit2YXIgb2JqZWN0ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAg
dmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAw
KTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0g
aTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRb
MF0sIGkpOworfQorCitvYmplY3QuQ29jb2EgPSA0MjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2
OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJl
c3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0NvY29hJyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356953</attachid>
            <date>2018-12-10 03:14:24 -0800</date>
            <delta_ts>2018-12-15 05:43:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190047-20181210201423.patch</filename>
            <type>text/plain</type>
            <size>56275</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZmVmNDNhY2I2MDVhNTliMTExMmY4MzA1ZWE5OTAzMzU0M2FkNDNiLi41NTI0NjM2ODE2YTFmMGFj
YTc0MTFhNjVjNTA1MjRlOWFiNmM3NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAxOC0xMi0xMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5rZXlzIGJ5IGNhY2hp
bmcgb3duIGtleXMgcmVzdWx0cyBpbiBTdHJ1Y3R1cmVSYXJlRGF0YQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT2JqZWN0LmtleXMgaXMgb25lIG9mIHRo
ZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBmdW5jdGlvbiBpbiB3ZWItdG9vbGluZy1iZW5jaG1hcmtz
IChXVEIpLgorICAgICAgICBPYmplY3Qua2V5cyBpcyBkb21pbmFudCBpbiBsZWJhYiBvZiBXVEIs
IGFuZCBmcmVxdWVudGx5IGNhbGxlZCBpbiBiYWJlbCBhbmQgb3RoZXJzLgorICAgICAgICBTaW5j
ZSBvdXIgU3RydWN0dXJlIGtub3dzIHRoZSBzaGFwZSBvZiBKU09iamVjdCwgd2UgY2FuIGNhY2hl
IHRoZSByZXN1bHQgb2YgT2JqZWN0LmtleXMKKyAgICAgICAgaW4gU3RydWN0dXJlIChTdHJ1Y3R1
cmVSYXJlRGF0YSkgYXMgd2UgY2FjaGUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGluIFN0cnVj
dHVyZVJhcmVEYXRhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2FjaGVzIHRoZSByZXN1bHQgb2Yg
T2JqZWN0LmtleXMgaW4gU3RydWN0dXJlUmFyZURhdGEuIFRoZSBjYWNoZWQgYXJyYXkgaXMgY3Jl
YXRlZAorICAgICAgICBhcyBKU0ltbXV0YWJsZUJ1dHRlcmZseS4gQW5kIE9iamVjdC5rZXlzIGNy
ZWF0ZXMgQ29XIGZyb20gdGhpcyBkYXRhLiBDdXJyZW50bHksIHRoZSBsaWZldGltZQorICAgICAg
ICBzdHJhdGVneSBvZiB0aGlzIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGlzIHRoZSBzYW1lIHRvIGNh
Y2hlZCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuIEl0IGlzCisgICAgICAgIHJlZmVyZW5jZWQg
ZnJvbSBTdHJ1Y3R1cmUsIGFuZCBjb2xsZWN0ZWQgd2hlbiBTdHJ1Y3R1cmUgaXMgY29sbGVjdGVk
LgorCisgICAgICAgIFRoaXMgaW1wcm92ZXMgc2V2ZXJhbCBiZW5jaG1hcmtzIGluIFNpeFNwZWVk
LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUgICAg
ICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgICAgIG9iamVjdC1hc3NpZ24uZXM1ICAg
ICAgMzUwLjE3MTArLTMuNjMwMyAgICAgXiAgICAyMjYuMDM2OCstNC43NTU4ICAgICAgICBeIGRl
ZmluaXRlbHkgMS41NDkyeCBmYXN0ZXIKKyAgICAgICAgICAgIGZvci1vZi1vYmplY3QuZXM2ICAg
ICAgMjY5LjE5NDErLTMuMzQzMCAgICAgXiAgICAxMjcuOTMxNystMi4zODc1ICAgICAgICBeIGRl
ZmluaXRlbHkgMi4xMDQyeCBmYXN0ZXIKKworICAgICAgICBBbmQgaXQgaW1wcm92ZXMgV1RCIGxl
YmFiIGJ5IDExLjglLgorCisgICAgICAgICAgICBCZWZvcmU6IGxlYmFiOiAgNi4xMCBydW5zL3MK
KyAgICAgICAgICAgIEFmdGVyOiAgbGViYWI6ICA2LjgyIHJ1bnMvcworCisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZl
cnRUb05ld0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAq
IGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0S2V5cyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU9iamVjdEtleXMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmlu
c2ljLmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGlt
ZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5Lmg6
CisgICAgICAgIChKU0M6OkpTSW1tdXRhYmxlQnV0dGVyZmx5OjpjcmVhdGVTZW50aW5lbCk6Cisg
ICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om93
blByb3BlcnR5S2V5cyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvciBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZXRDYWNoZWRPd25LZXlz
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYWNoZWRPd25LZXlzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93bktleXMgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJl
RGF0YTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpj
YWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXMgY29u
c3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5c0NvbmN1
cnJlbnRseSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNo
ZWRPd25LZXlzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnByZXZpb3VzSUQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0xMi0wOCAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHNpemUgb2YgUHJvcGVy
dHlTbG90IGFuZCBQdXRQcm9wZXJ0eVNsb3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMjUxNDRi
NWIxNDI0MGM3ZGIyY2U4NzE2Yjc5YjliZmFjMzhiNTQ3ZS4uZTU5OTM0ODJmNjgwNmZiMmQ0YjRi
NmEzYTgzYWIyYjMxY2MyNjg3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDMsNiArNDMsNyBA
QAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxp
bmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Jvb2xlYW5MYXR0aWNlLmg+CiAjaW5jbHVkZSA8d3RmL0No
ZWNrZWRBcml0aG1ldGljLmg+CiAKQEAgLTI1NjUsNiArMjU2NiwzMCBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE9iamVjdEtleXM6
IHsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsK
KyAgICAgICAgICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fc3RydWN0dXJlOworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZVNldC5pc0Zpbml0ZSgpICYm
IHN0cnVjdHVyZVNldC5zaXplKCkgPT0gMSkgeworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0Lm9ubHlTdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoYXV0byogcmFyZURhdGEgPSBzdHJ1Y3R1cmUtPnJhcmVEYXRhQ29uY3Vy
cmVudGx5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5
ID0gcmFyZURhdGEtPmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGltbXV0YWJsZUJ1dHRlcmZseSAmJiBpbW11dGFibGVCdXR0ZXJmbHkgIT0gbV92
bS5zZW50aW5lbEltbXV0YWJsZUJ1dHRlcmZseS5nZXQoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2Rl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFu
dHModHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3Js
ZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNBcnJheSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjbG9iYmVyV29ybGQoKTsKKyAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0FycmF5KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3Rv
cjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggNzFmYzkyYjE5NDQ5YWIyZjdmN2M0MTIwZjgzMmNhMmUyODU2YmE3Ni4uZTMyNDg5
NzM2ZDVjNTcyODNlNjA4NzBhYjRjYzBhYWIyOTYzMWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI2ODQsNiArMjY4NCwxNSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
KyAgICBjYXNlIE9iamVjdEtleXNJbnRyaW5zaWM6IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChPYmplY3RL
ZXlzLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIFJlZmxlY3RHZXRQcm90
b3R5cGVPZkludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNzg4ZWVjYzNjM2JhZDFkOTE1YmE4NTdmNjNhNzU3
ODI1NjcwNWEwYy4uYjJlYmY0MmE3ZGQwY2I3MGQwYjMwMTQ1ZTE4MzJjOTMwZGRjOWU2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTY2Niw2ICs2NjYs
NyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBj
YXNlIEluc3RhbmNlT2Y6CiAgICAgY2FzZSBTdHJpbmdWYWx1ZU9mOgorICAgIGNhc2UgT2JqZWN0
S2V5czoKICAgICAgICAgcmVhZChXb3JsZCk7CiAgICAgICAgIHdyaXRlKEhlYXApOwogICAgICAg
ICByZXR1cm47CkBAIC0xNTI3LDcgKzE1MjgsNiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICB9CiAgICAgfQogCi0KICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Jl
Z2V4cDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggZmIxZjZkYzIz
MWFiZTQ0OGQ1ZjkxNmM2MzQ4ZmQxZjEzN2ZiYTAyMy4uMDNmODRmNTVmY2Y1MWQ4MWFkY2U4MTI5
NDVlMTU4YjQzZWI4ZjBiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTc2Niw2ICs3NjYsMjYgQEAgY2xhc3Mg
Q29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIE9iamVjdEtleXM6IHsKKyAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkg
eworICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVTZXQgPSBtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlOworICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlU2V0LmlzRmluaXRlKCkgJiYgc3RydWN0dXJlU2V0LnNpemUoKSA9PSAxKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHN0
cnVjdHVyZVNldC5vbmx5U3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YXV0byogcmFyZURhdGEgPSBzdHJ1Y3R1cmUtPnJhcmVEYXRhQ29uY3VycmVudGx5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSByYXJl
RGF0YS0+Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpbW11dGFibGVCdXR0ZXJmbHkgJiYgaW1tdXRhYmxlQnV0dGVyZmx5ICE9IG1f
Z3JhcGgubV92bS5zZW50aW5lbEltbXV0YWJsZUJ1dHRlcmZseS5nZXQoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRp
bWVXYXRjaHBvaW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9OZXdBcnJheUJ1ZmZlcihtX2dyYXBoLmZyZWV6ZShpbW11dGFibGVC
dXR0ZXJmbHkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIGNhc2UgVG9OdW1iZXI6IHsKICAgICAgICAgICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY0J5dGVjb2RlTnVtYmVyKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCA2YWEyNjNjZmEyYTQwYTk3M2VhMjI5ZDgzZmE0MjE1YjlkZWNhYmQxLi40
M2UzYzg2OWRkYTMxMTkwMzk0NWI2ZTY0YjAwMzYzY2E1ZDY4ZjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMzcsNiArMzM3LDcgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgQ3Jl
YXRlVGhpczoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKKyAgICBjYXNlIE9iamVjdEtleXM6CiAg
ICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDk2NGU1YmM2NTk5OGQxNGM1YmZkZmI5ZWRmMGRl
NmRmZWI3Y2U5YjguLjZlZTY5OGNlODBjNTI4ZTdlMzI5MWI4ZjY5YWZhZTVkMzMwZWQ0OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTUzNyw2
ICsxNTM3LDE0IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE9iamVjdEtleXM6IHsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKKyAg
ICAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVu
dDogewogICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApp
bmRleCBkZDk2N2M4YWQyMzcyMGM4ODU2Njc1ODczNTA2ZTUyZDE1MGZiNzcxLi4zZDFjM2JhMTM3
NjIxZTNiMmYwMzQxNWJiOTFkMTQxMjM2M2NlNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIApAQCAtMjIzLDYgKzIyNCwxNyBAQCB2b2lkIE5vZGU6OmNvbnZlcnRU
b0xhenlKU0NvbnN0YW50KEdyYXBoJiBncmFwaCwgTGF6eUpTVmFsdWUgdmFsdWUpCiAgICAgY2hp
bGRyZW4ucmVzZXQoKTsKIH0KIAordm9pZCBOb2RlOjpjb252ZXJ0VG9OZXdBcnJheUJ1ZmZlcihG
cm96ZW5WYWx1ZSogaW1tdXRhYmxlQnV0dGVyZmx5KQoreworICAgIHNldE9wQW5kRGVmYXVsdEZs
YWdzKE5ld0FycmF5QnVmZmVyKTsKKyAgICBOZXdBcnJheUJ1ZmZlckRhdGEgZGF0YSB7IH07Cisg
ICAgZGF0YS5pbmRleGluZ01vZGUgPSBpbW11dGFibGVCdXR0ZXJmbHktPmNhc3Q8SlNJbW11dGFi
bGVCdXR0ZXJmbHkqPigpLT5pbmRleGluZ01vZGUoKTsKKyAgICBkYXRhLnZlY3Rvckxlbmd0aEhp
bnQgPSBpbW11dGFibGVCdXR0ZXJmbHktPmNhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpLT50
b0J1dHRlcmZseSgpLT52ZWN0b3JMZW5ndGgoKTsKKyAgICBjaGlsZHJlbi5yZXNldCgpOworICAg
IG1fb3BJbmZvID0gaW1tdXRhYmxlQnV0dGVyZmx5OworICAgIG1fb3BJbmZvMiA9IGRhdGEuYXNR
dWFkV29yZDsKK30KKwogdm9pZCBOb2RlOjpjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVl
KiBleGVjdXRhYmxlKQogewogICAgIE5vZGVUeXBlIG5ld09wID0gTGFzdE5vZGVUeXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA5OTUyODA2NTgzZTcyN2RkN2Y1ODM1Nzg4
OTZhNDk0N2I2ODM3YjE2Li5iYmY0OWYxZjU1NDRhMTIxMTQxZWUwMDY1NDEwOTI0ZjUwYWRjYTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNzYxLDYgKzc2MSw4IEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcEluZm8gPSBzdHJ1Y3R1cmU7CiAgICAgICAgIG1fb3BJ
bmZvMiA9IE9wSW5mb1dyYXBwZXIoKTsKICAgICB9CisKKyAgICB2b2lkIGNvbnZlcnRUb05ld0Fy
cmF5QnVmZmVyKEZyb3plblZhbHVlKiBpbW11dGFibGVCdXR0ZXJmbHkpOwogICAgIAogICAgIHZv
aWQgY29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5WYWx1ZSopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNTA5ZmNjOTA0M2E2OTVkOGY5ZjkwN2Y2NDkwYTUz
YWFiNmMxYjM2Zi4uNzczNTdmMWU4NDIxMzY5MzNlMTliZDAzYzQ3ODQzYWY2MDE1YWExZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjYzLDYgKzI2Myw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQYXJzZUludCwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFByb3RvdHlwZU9m
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oT2JqZWN0Q3Jl
YXRlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oT2JqZWN0
S2V5cywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBB
dG9taWNzIG9iamVjdCBmdW5jdGlvbnMuICovXAogICAgIG1hY3JvKEF0b21pY3NBZGQsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggM2YxZjQ5NGE1NmEzMDAx
MDUwMjRhMDBkMjc4ZmRkM2NhZDJlMjdiZi4uOTU1NWY2ZmViOGJjN2UyMWI0MmQyNzdjNGJhYzAz
OWQxM2RlYWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCkBAIC0yNDgsNiArMjQ4LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG9UaGlzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMoZXhl
YywgU3RyaWN0TW9kZSkpOwogfQogCitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9i
amVjdEtleXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT2JqZWN0KQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9iamVj
dCkudG9PYmplY3QoZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZXhl
Yywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNN
b2RlOjpFeGNsdWRlKTsKK30KKworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmpl
Y3RLZXlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICByZXR1cm4gb3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVy
dHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSk7Cit9
CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG90eXBlKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmlu
ZGV4IDUxMmFjMTExNTNjOGZmNTIyY2Y2MjY3MTU1MWI5OTY4ZGY0MGM0NGUuLmZmNWJlYzRkOTA4
ZjhkMmY2ZjM3NWRkODNiMDAyOTkxODJkNzZlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCkBAIC00Myw2ICs0Myw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlVW50eXBlZChFeGVjU3RhdGUqLCBF
bmNvCiAvLyBUaGVzZSByb3V0aW5lcyBwcm92aWRlIGNhbGxiYWNrcyBvdXQgdG8gQysrIGltcGxl
bWVudGF0aW9ucyBvZiBvcGVyYXRpb25zIHRvbyBjb21wbGV4IHRvIEpJVC4KIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFyZ2V0KSBXVEZfSU5URVJOQUw7
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9PYmplY3QoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFyZ2V0LCBVbmlxdWVkU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKK0pTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2Jq
ZWN0S2V5cyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworSlNBcnJh
eSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9i
amVjdENyZWF0ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdChFeGVjU3RhdGUq
LCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgdWludDMyX3Qg
aW5saW5lQ2FwYWNpdHkpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXgg
ZjgyMDlmYjA0OGMwYmNjMWVhMGNiMjNjMmMxNTU2ZTZmMDlhOTI4My4uNDNlYjU2YTZkYzIyZWJj
YTdmZjRlOTViOGNlZTkxMDkwNmRjMTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk2
OCw3ICs5NjgsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRo
U2l6ZToKICAgICAgICAgY2FzZSBDcmVhdGVSZXN0OgotICAgICAgICBjYXNlIE5ld0FycmF5QnVm
ZmVyOiB7CisgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgICAgIGNhc2UgT2JqZWN0
S2V5czogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQXJyYXkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKaW5kZXggYjQzYjdkZmRhOWU3NzlmZDIyMmVlYzNlZjUwNWQwNmZiZDk5MmQw
ZS4uMGUwOTc2NzFhMmVhMDk3NmRmMjQwYWI3OWQxYzdhOGEzNGI1ZGVmNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTE3OCw2ICsxNzgsNyBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgQ3Jl
YXRlVGhpczoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKKyAgICBjYXNlIE9iamVjdEtleXM6CiAg
ICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBTZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMmNkYTA2ZGQ2ZTM3NzcxNTUxZGRlYWNjMTYxYzlm
MjVlNzM3NTg5My4uZTA1NzhlNzgxNzBjNzYyYmE3NDFmYWExZTQ5MDhmNmZjYjQ3NzY0YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTEyMzAxLDYgKzEyMzAxLDk0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMo
Tm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBSZWdzLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXMoTm9kZSogbm9kZSkKK3sKKyAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgT2JqZWN0VXNlOiB7
CisgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bm9kZSkpIHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9iamVjdCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMp
OworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDModGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisg
ICAgICAgICAgICBHUFJSZWcgb2JqZWN0R1BSID0gb2JqZWN0LmdwcigpOworICAgICAgICAgICAg
R1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNo
MkdQUiA9IHNjcmF0Y2gyLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gzR1BSID0g
c2NyYXRjaDMuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworCisgICAgICAgICAgICBzcGVjdWxhdGVPYmplY3Qobm9kZS0+Y2hpbGQxKCksIG9iamVj
dEdQUik7CisKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
ICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoKm1faml0LnZtKCksIG9iamVjdEdQ
Uiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpwcmV2aW91c09y
UmFyZURhdGFPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworCisgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoR1BS
KSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6RXF1YWwsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoYml0d2lzZV9jYXN0PGludDMyX3Q+KG1f
aml0LnZtKCktPnN0cnVjdHVyZVN0cnVjdHVyZS0+c3RydWN0dXJlSUQoKSkpKSk7CisKKyAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0
cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZE93bktleXMoKSksIHNjcmF0Y2hHUFIpOwor
CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCBzY3JhdGNoR1BSKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC52bSgpLT5zZW50aW5lbElt
bXV0YWJsZUJ1dHRlcmZseS5nZXQoKSkpKTsKKworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IHNsb3dCdXRBcnJheUJ1ZmZlckNhc2VzOworCisgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJy
YXlTdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cykpOworCisgICAgICAgICAgICBtX2ppdC5tb3ZlKHNjcmF0
Y2hHUFIsIHNjcmF0Y2gzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1t
UHRyKEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpvZmZzZXRPZkRhdGEoKSksIHNjcmF0Y2hHUFIpOwor
CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHIoYXJyYXlTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSLCBzdHJ1Y3R1cmVHUFIsIHNj
cmF0Y2gyR1BSLCBzbG93QnV0QXJyYXlCdWZmZXJDYXNlcyk7CisKKyAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93QnV0QXJyYXlCdWZmZXJDYXNlcywgdGhp
cywgb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdEdQUiwgYXJyYXlTdHJ1Y3R1cmUsIHNj
cmF0Y2gzR1BSKSk7CisKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIHJlc3VsdEdQ
Uiwgb2JqZWN0R1BSKSk7CisKKyAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgb2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBHUFJSZWcg
b2JqZWN0R1BSID0gb2JqZWN0LmdwcigpOworCisgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2Rl
LT5jaGlsZDEoKSwgb2JqZWN0R1BSKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
T2JqZWN0S2V5c09iamVjdCwgcmVzdWx0R1BSLCBvYmplY3RHUFIpOworICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOworCisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIG9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAg
SlNWYWx1ZVJlZ3Mgb2JqZWN0UmVncyA9IG9iamVjdC5qc1ZhbHVlUmVncygpOworCisgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RLZXlzLCByZXN1bHRHUFIsIG9iamVjdFJlZ3Mp
OworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUq
IG5vZGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBhZGIzYmEx
YzhlMTdjMGE0MzVjNzcyZjBmYjQwYzM4MzcwNzQ1NzFmLi45ODM2MzZmZjIxNDU1MGZmYjA4NTBl
YjYyZmMyZGI5MGEyMWMxZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDc2LDYgKzE0NzYsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJ
VCB7CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlTmV3VHlwZWRBcnJheShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9UaGlzKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVPYmplY3RLZXlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVP
YmplY3RDcmVhdGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZU5ld09iamVjdChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBjZTNlMjY2MzUy
NDg5NTliMTlkZjU2NmM4ZWUxMjU4MzhkNzU4ZDVhLi44MjhhNDBlN2FjYzY0ZDljYzc2ZWRiNTVj
MWVlNTFhYjllZjExMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMxNTMsNiArMzE1MywxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICBjb21waWxlT2JqZWN0S2V5cyhub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDcmVhdGVUaGlzOiB7CiAgICAg
ICAgIGNvbXBpbGVDcmVhdGVUaGlzKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGZiMTYx
YTcyYjU0MDc0ZjE1YWJhZGJmYzc1NTM1NmQyMDM4MDU1OGUuLjgyMmNiZmUyNjA2MWYzMDM4N2Jm
YzY5YTY4NDBjZGU2MTkyZDk5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzM5NSw2ICszMzk1LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIENyZWF0ZVRoaXM6IHsKICAgICAg
ICAgY29tcGlsZUNyZWF0ZVRoaXMobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRl
eCAzZmZjYTE3MDQ5NjcxY2ZjNmU0ODE3ZjFlYTU2ZWQ2MTgxZDFhN2QzLi41ODQzZmIzZDQ5NjJm
ZjAxZjA0YmQzYjQ3MTA2NTZiZTVlZjQ1YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtMTE3LDggKzExNywx
MCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJl
X2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6Omlu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVy
ZV9pbmxpbmVDYXBhY2l0eSwgU3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCisg
ICAgbWFjcm8oU3RydWN0dXJlX3ByZXZpb3VzT3JSYXJlRGF0YSwgU3RydWN0dXJlOjpwcmV2aW91
c09yUmFyZURhdGFPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0
cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0
dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVj
dHVyZVJhcmVEYXRhX2NhY2hlZE93bktleXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNh
Y2hlZE93bktleXMoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2NhcGFjaXR5LCBIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQ2FwYWNp
dHkoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1ZmZlciwgIEhhc2hNYXBJbXBsPEhhc2hN
YXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZCdWZmZXIoKSkgXAogICAg
IG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZGExMTM4MTJlMTdlMWQwYjA0NGFk
MjhjODZhYjhmOGU3NGI3OGI5Zi4uMGY3ZTBhNmUwM2JhOTU1OGYxMWFjZWNjMGYwMGJkNDE1ZTM2
OWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMTk4LDYgKzE5OCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOgogICAgIGNhc2UgQ2Fs
bFN0cmluZ0NvbnN0cnVjdG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2Jq
ZWN0S2V5czoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToK
ICAgICBjYXNlIFRyeUdldEJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggZmIwNDM5NzMyYzQzYTRiM2Q0Y2I1YWZhM2E1ZGVjYTM5MTBl
YTk0NS4uM2MxMTE4ODNlNzI4MTBkZjQ4NWRjNTk2YmNkMWRlYzdiMmY0NmQ1NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtODYwLDYgKzg2
MCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgog
ICAgICAgICAgICAgY29tcGlsZU9iamVjdENyZWF0ZSgpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgT2JqZWN0S2V5czoKKyAgICAgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzKCk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAg
ICBjb21waWxlTmV3T2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0NzAsNiArNTQ3
Myw3NSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRJbnQzMihtX291dC5waGko
SW50MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblplcm9MZW5ndGhSZXN1bHQpKTsKICAgICB9CiAK
KyAgICB2b2lkIGNvbXBpbGVPYmplY3RLZXlzKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBPYmplY3RVc2U6IHsKKyAg
ICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bV9ub2RlKSkgeworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayByYXJlRGF0YUNhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxD
YWNoZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IHVzZUNhY2hlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbG93T2JqZWN0KG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKG9i
amVjdCk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHByZXZpb3VzT3JSYXJlRGF0YSA9IG1fb3V0
LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEp
OworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHByZXZpb3VzT3JS
YXJlRGF0YSksIHVuc3VyZShub3ROdWxsQ2FzZSksIHVuc3VyZShzbG93Q2FzZSkpOworCisgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3ROdWxs
Q2FzZSwgcmFyZURhdGFDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAg
ICAgICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKG1fb3V0LmxvYWQzMihwcmV2aW91c09yUmFy
ZURhdGEsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwgbV9vdXQuY29uc3RJbnQzMihtX2dy
YXBoLm1fdm0uc3RydWN0dXJlU3RydWN0dXJlLT5zdHJ1Y3R1cmVJRCgpKSksCisgICAgICAgICAg
ICAgICAgICAgIHVuc3VyZShyYXJlRGF0YUNhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKworICAg
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJhcmVEYXRhQ2FzZSwgbm90TnVsbENhY2hlQ2Fz
ZSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIGNhY2hlZE93bktleXMgPSBtX291dC5sb2FkUHRy
KHByZXZpb3VzT3JSYXJlRGF0YSwgbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25L
ZXlzKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90TnVsbChjYWNoZWRP
d25LZXlzKSwgdW5zdXJlKG5vdE51bGxDYWNoZUNhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKwor
ICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bGxDYWNoZUNhc2UsIHVzZUNhY2hl
Q2FzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKGNhY2hl
ZE93bktleXMsIHdlYWtQb2ludGVyKG1fZ3JhcGgubV92bS5zZW50aW5lbEltbXV0YWJsZUJ1dHRl
cmZseS5nZXQoKSkpLCB1bnN1cmUodXNlQ2FjaGVDYXNlKSwgdW5zdXJlKHNsb3dDYXNlKSk7CisK
KyAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyh1c2VDYWNoZUNhc2UsIHNsb3dCdXRBcnJh
eUJ1ZmZlckNhc2UpOworICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0cnVjdHVyZSA9IG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSk7
CisgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RBcnJheSA9IGFsbG9jYXRlT2JqZWN0PEpTQXJy
YXk+KGFycmF5U3RydWN0dXJlLCBtX291dC5hZGRQdHIoY2FjaGVkT3duS2V5cywgSlNJbW11dGFi
bGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSk7Cisg
ICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihm
YXN0QXJyYXkpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dCdXRBcnJheUJ1ZmZlckNhc2UsIHNs
b3dDYXNlKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd0FycmF5ID0gdm1DYWxsKEludDY0
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIpLCBtX2NhbGxGcmFtZSwg
d2Vha1N0cnVjdHVyZShhcnJheVN0cnVjdHVyZSksIGNhY2hlZE93bktleXMpOworICAgICAgICAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dCdXRBcnJheUJ1ZmZlclJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihzbG93QXJyYXkpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRp
b24pOworICAgICAgICAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgICAgICAg
ICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAg
ICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVm
UHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigp
LCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICBvYmplY3QpOworICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93QnV0QXJyYXlCdWZm
ZXJSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCksIG1fY2FsbEZyYW1lLCBsb3dPYmplY3QobV9u
b2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgVW50eXBlZFVzZToKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0S2V5cyksIG1fY2FsbEZyYW1lLCBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZU9iamVjdENy
ZWF0ZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRleCBh
YmU2ZjE3Mjg2ZTNiZTM5MWUwYzM3NGMxZjZjNTc0YzViZDg2N2ZiLi5mYmM0ZWYzY2Q4ZjJlYzYy
ZGE5MzAwZGEyNzFiMTAyMzM5NzQzNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5jcHAKQEAgLTExOSw2ICsxMTksOCBAQCBjb25zdCBjaGFyKiBpbnRyaW5z
aWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAiT2JqZWN0R2V0UHJv
dG90eXBlT2ZJbnRyaW5zaWMiOwogICAgIGNhc2UgT2JqZWN0SXNJbnRyaW5zaWM6CiAgICAgICAg
IHJldHVybiAiT2JqZWN0SXNJbnRyaW5zaWMiOworICAgIGNhc2UgT2JqZWN0S2V5c0ludHJpbnNp
YzoKKyAgICAgICAgcmV0dXJuICJPYmplY3RLZXlzSW50cmluc2ljIjsKICAgICBjYXNlIFJlZmxl
Y3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJSZWZsZWN0R2V0UHJv
dG90eXBlT2ZJbnRyaW5zaWMiOwogICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJp
bnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggY2Zi
ZDE4NDk2MzUyYmI5ZDRlMjZhMDJjNTY5M2I4YzQ2MDAxOTAyNS4uYjQ3ZjQ2ZDllNGRlMDAxM2Rl
ODM0NmU4MmU2ODE2ZjVmZDAyZjc0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmgKQEAgLTcyLDYgKzcyLDcgQEAgZW51bSBJbnRyaW5zaWMgewogICAgIE9iamVj
dENyZWF0ZUludHJpbnNpYywKICAgICBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywKICAg
ICBPYmplY3RJc0ludHJpbnNpYywKKyAgICBPYmplY3RLZXlzSW50cmluc2ljLAogICAgIFJlZmxl
Y3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywKICAgICBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50
cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAppbmRl
eCAyODQ3ODNjMGM3NTU5NmFkZGE1YTFmOThmMzZiMDY5ZTBlYjhlNGExLi4xZmY0ZDI3Njc3NTMy
OGJkMGM2Y2EyZTQxNDY3MDM4Mjc1MTVlOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKQEAgLTY3LDYgKzY3LDExIEBA
IGNsYXNzIEpTSW1tdXRhYmxlQnV0dGVyZmx5IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJl
dHVybiBhcnJheTsKICAgICB9CiAKKyAgICBzdGF0aWMgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNy
ZWF0ZVNlbnRpbmVsKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIENv
cHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cywgMCk7CisgICAgfQorCiAgICAgdW5zaWduZWQg
cHVibGljTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXIucHVibGljTGVuZ3RoKCk7IH0K
ICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlci52ZWN0
b3JMZW5ndGgoKTsgfQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGVh
ZGVyLnB1YmxpY0xlbmd0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTBhMzZhOTM1NTc4ZjJiOGUzMTMxMTNk
MjlkOTBiYTlkNDY2YTk0NS4uZmNmOTliOGVjZDI5NWYxOGU0NGEyMzBiZjMwNDY0NDE4YmQxNDUy
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJMb29r
dXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eURl
c2NyaXB0b3IuaCIKQEAgLTczLDcgKzc0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
RGVzY3JpcHRvcnMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVydHlOYW1lcyAg
ICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVydHlTeW1ib2xzICAgICBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5U3ltYm9scyAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAga2V5cyAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcktleXMgICAgICAgICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAga2V5cyAgICAgICAgICAgICAgICAgICAgICBv
YmplY3RDb25zdHJ1Y3RvcktleXMgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEgT2JqZWN0S2V5c0ludHJpbnNpYwogICBkZWZpbmVQcm9wZXJ0eSAgICAgICAgICAgIG9i
amVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMwogICBkZWZpbmVQcm9wZXJ0aWVzICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydGllcyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICBjcmVhdGUgICAgICAg
ICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlICAgICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMiBPYmplY3RDcmVhdGVJbnRyaW5zaWMKQEAgLTI3MSw3ICsyNzIs
NiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5
TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CiB9
CiAKLS8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC04OTIsMTEgKzg5MiwyNSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShleGVjLCBleGVj
LT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKLS8vIEZJWE1FOiBVc2Ug
dGhlIGVudW1lcmF0aW9uIGNhY2hlLgogSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVN
b2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGllc01vZGUpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CisgICAgYm9vbCBpc09iamVjdEtleXMgPSBwcm9wZXJ0eU5hbWVNb2RlID09IFBy
b3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MgJiYgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9PSBEb250
RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlOworICAgIC8vIFdlIGF0dGVtcHQgdG8gbG9vayB1
cCBvd24gcHJvcGVydHkga2V5cyBjYWNoZSBpbiBPYmplY3Qua2V5cyBjYXNlLgorICAgIGlmIChp
c09iamVjdEtleXMpIHsKKyAgICAgICAgaWYgKExJS0VMWSghZ2xvYmFsT2JqZWN0LT5pc0hhdmlu
Z0FCYWRUaW1lKCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5
ID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5jYWNoZWRPd25LZXlzKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaW1tdXRhYmxlQnV0dGVyZmx5ICE9IHZtLnNlbnRpbmVsSW1tdXRhYmxlQnV0dGVy
Zmx5LmdldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1
cmUgPSBnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUo
aW1tdXRhYmxlQnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU0FycmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxscHRyLCBhcnJheVN0
cnVjdHVyZSwgaW1tdXRhYmxlQnV0dGVyZmx5LT50b0J1dHRlcmZseSgpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0aWVzKCZ2bSwgcHJvcGVydHlOYW1lTW9kZSwgUHJpdmF0ZVN5bWJvbE1v
ZGU6OkV4Y2x1ZGUpOwogICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKGRvbnRFbnVt
UHJvcGVydGllc01vZGUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKQEAgLTkxOCw4ICs5MzIsMzEgQEAgSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm8KICAgICBpZiAo
cHJvcGVydHlOYW1lTW9kZSAhPSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scykg
ewogICAgICAgICBBU1NFUlQocHJvcGVydHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpT
dHJpbmdzIHx8IHByb3BlcnR5TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scyk7
CiAgICAgICAgIGlmICghbXVzdEZpbHRlclByb3BlcnR5ICYmIHByb3BlcnRpZXMuc2l6ZSgpIDwg
TUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgaWYgKExJS0VMWSgh
Z2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGlzT2JqZWN0S2V5cykgeworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+Y2FuQ2FjaGVPd25LZXlzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IGNhY2hlZEJ1dHRlcmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkT3duS2V5cygpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSB2bS5zZW50aW5lbEltbXV0YWJs
ZUJ1dHRlcmZseS5nZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhY2hl
IHRoZSBpbW11dGFibGUgYnV0dGVyZmx5IQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byogbmV3QnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6OmNy
ZWF0ZSh2bSwgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzLCBudW1Qcm9wZXJ0aWVzKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVBy
b3BlcnRpZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBh
dXRvJiBpZGVudGlmaWVyID0gcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFpZGVudGlmaWVyLmlzU3ltYm9sKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXdCdXR0ZXJmbHktPnNldEluZGV4KHZtLCBpLCBqc093bmVkU3Ry
aW5nKCZ2bSwgaWRlbnRpZmllci5zdHJpbmcoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q2FjaGVk
T3duS2V5cyh2bSwgbmV3QnV0dGVyZmx5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlKG5ld0J1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpjcmVhdGVXaXRoQnV0dGVy
Zmx5KHZtLCBudWxscHRyLCBhcnJheVN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5LT50b0J1dHRlcmZs
eSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZS0+c2V0Q2FjaGVkT3duS2V5cyh2bSwganNDYXN0PEpTSW1tdXRhYmxl
QnV0dGVyZmx5Kj4odm0uc2VudGluZWxJbW11dGFibGVCdXR0ZXJmbHkuZ2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHNp
emVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgICAgICAgICAgICAg
SlNBcnJheSoga2V5cyA9IEpTQXJyYXk6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5vcmlnaW5h
bEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpLCBudW1Q
cm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGJ1ZmZl
ciA9IGtleXMtPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzKCkuZGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNThkODNiY2U0YWZkYWRlODAz
ZDM4NGJhNzEwZTBhYjlkNmFkMDkxOC4uMzU0MjgyN2RlM2EyNzA0NTRmZjZjNjM0MDI2ODJmYzA1
ODIzNDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CkBAIC0xMjUyLDE3ICsxMjUyLDcgQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1
cmU6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdAogCiBib29sIFN0cnVjdHVy
ZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3QKIHsKLSAgICBhdXRvIGNh
bkNhY2hlID0gW10gKGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgIGlmIChz
dHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9OwotCi0gICAgaWYgKCFjYW5DYWNoZSh0
aGlzKSkKKyAgICBpZiAoIXRoaXMtPmNhbkNhY2hlT3duS2V5cygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4gPSBtX2NhY2hlZFBy
b3RvdHlwZUNoYWluLmdldCgpOwpAQCAtMTI3MSw3ICsxMjYxLDcgQEAgYm9vbCBTdHJ1Y3R1cmU6
OmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0CiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIGlmICghY2FuQ2FjaGUoc3RydWN0dXJlLT5nZXQoKSkpCisgICAgICAgIGlm
ICghc3RydWN0dXJlLT5nZXQoKS0+Y2FuQ2FjaGVPd25LZXlzKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHN0cnVjdHVyZSsrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggOGRlZDgyNWJmYmE5M2E4NTA5MGI2MTQ4YzBm
NTBkYTE5ZGZhYzliNy4uMWU4NGM0ZDE5YjQxNWRiMzQ2ZDUyYmY1ZTVlNTdhMWI3NTJiMDlkNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJ
REJsb2IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YS5oIgotI2luY2x1ZGUgIlN0cnVj
dHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZS5oIgogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCkBA
IC0zMjYsNiArMzI1LDE1IEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlUmFyZURhdGEqPiht
X3ByZXZpb3VzT3JSYXJlRGF0YS5nZXQoKSk7CiAgICAgfQogCisgICAgY29uc3QgU3RydWN0dXJl
UmFyZURhdGEqIHJhcmVEYXRhQ29uY3VycmVudGx5KCkgY29uc3QKKyAgICB7CisgICAgICAgIEpT
Q2VsbCogY2VsbCA9IG1fcHJldmlvdXNPclJhcmVEYXRhLmdldCgpOworICAgICAgICBXVEY6Omxv
YWRMb2FkRmVuY2UoKTsKKyAgICAgICAgaWYgKGlzUmFyZURhdGEoY2VsbCkpCisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlUmFyZURhdGEqPihjZWxsKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgU3RydWN0dXJlUmFyZURhdGEqIGVuc3VyZVJh
cmVEYXRhKFZNJiB2bSkKICAgICB7CiAgICAgICAgIGlmICghaGFzUmFyZURhdGEoKSkKQEAgLTQ3
Miw2ICs0ODAsMTAgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgYm9vbCBjYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdDsKICAgICBib29s
IGNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSBjb25zdDsKIAorICAg
IHZvaWQgc2V0Q2FjaGVkT3duS2V5cyhWTSYsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7CisgICAg
SlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93bktleXMoKSBjb25zdDsKKyAgICBib29sIGNh
bkNhY2hlT3duS2V5cygpIGNvbnN0OworCiAgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0
cnVjdHVyZShWTSYsIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogICAg
IEpTU3RyaW5nKiBvYmplY3RUb1N0cmluZ1ZhbHVlKCkKQEAgLTUyMCw2ICs1MzIsMTEgQEAgY2xh
c3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX2lubGluZUNhcGFjaXR5KTsKICAgICB9CiAKKyAgICBz
dGF0aWMgcHRyZGlmZl90IHByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpCisgICAgeworICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9wcmV2aW91c09yUmFyZURhdGEp
OworICAgIH0KKwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYpOwog
ICAgICAgICAKICAgICBib29sIHRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRh
dGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaAppbmRleCBiM2ViMWI0MWU5ZjFjNzgxZTk2ZjAyMjkwNTEwMDBlMDQyNzA1ZDVl
Li5hYjdlMjA2ZGRlNWVjZTRmNzBiYWM3YTRlOTMwZWU1OGY1NTc1ZTM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yMTksNiAr
MjE5LDI5IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6dHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVk
RnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K2lubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0Q2FjaGVkT3duS2V5cyhWTSYgdm0sIEpTSW1tdXRh
YmxlQnV0dGVyZmx5KiBvd25LZXlzKQoreworICAgIGVuc3VyZVJhcmVEYXRhKHZtKS0+c2V0Q2Fj
aGVkT3duS2V5cyh2bSwgb3duS2V5cyk7Cit9CisKK2lubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogU3RydWN0dXJlOjpjYWNoZWRPd25LZXlzKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc1JhcmVE
YXRhKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiByYXJlRGF0YSgpLT5j
YWNoZWRPd25LZXlzKCk7Cit9CisKK2lubGluZSBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVPd25L
ZXlzKCkgY29uc3QKK3sKKyAgICBpZiAoaXNEaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAppbmRleCA4OTg0Y2U5
MTk1NmE4MWQ1MWFkMGQ1MjMzNjMwZTY5OWUzNmRlYjUzLi5kOGIyZjAwZmEyMTM5MTgwNTIxZjEx
YTA2YzExMjQyOWI3MGJlNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
U3RydWN0dXJlUmFyZURhdGEuaCIKIAogI2luY2x1ZGUgIkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCIKKyNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5o
IgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtNzAsMTYgKzcxLDcgQEAgdm9pZCBT
dHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJldmlvdXMpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0VG9TdHJpbmdWYWx1ZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKTsKLX0KLQotSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6
Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2Fj
aGVkUHJvcGVydHlOYW1lRW51bWVyYXRvci5nZXQoKTsKLX0KLQotdm9pZCBTdHJ1Y3R1cmVSYXJl
RGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYgdm0sIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciogZW51bWVyYXRvcikKLXsKLSAgICBtX2NhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3Iuc2V0KHZtLCB0aGlzLCBlbnVtZXJhdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2NhY2hlZE93bktleXMpOwogfQogCiAvLyAtLS0tLS0tLS0tLSBPYmplY3Qu
cHJvdG90eXBlLnRvU3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3NlcyAtLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRh
LmgKaW5kZXggMTFjMTgxZGQ2MWU3ZWI2NzU0ZWJhOTcwNTRiZjEyYTUwM2ZiODhhNy4uZjJkMmFm
M2ZhZDU3OWQ2NzA1ZWNiYTU1ZmY0NjQwNTM2MzRlM2E1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC01OCw3ICs1OCwxMCBA
QCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIHByb3RvdHlwZSk7CiAKLSAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdDsK
KyAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcHJldmlvdXMuZ2V0KCk7CisgICAgfQogICAgIHZvaWQgc2V0UHJldmlvdXNJRChWTSYsIFN0
cnVjdHVyZSopOwogICAgIHZvaWQgY2xlYXJQcmV2aW91c0lEKCk7CiAKQEAgLTY4LDExICs3MSwy
MCBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigp
IGNvbnN0OwogICAgIHZvaWQgc2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYsIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvciopOwogCisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNh
Y2hlZE93bktleXMoKSBjb25zdDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3du
S2V5c0NvbmN1cnJlbnRseSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q2FjaGVkT3duS2V5cyhWTSYs
IEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7CisKICAgICBCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4g
Y29weVNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3BvbHlQcm90
b1dhdGNocG9pbnQ7IH0KICAgICBjb25zdCBCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4mIHNoYXJl
ZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3BvbHlQcm90b1dhdGNocG9p
bnQ7IH0KICAgICB2b2lkIHNldFNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoQm94PElubGluZVdh
dGNocG9pbnRTZXQ+JiYgc2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCkgeyBtX3BvbHlQcm90b1dh
dGNocG9pbnQgPSBXVEZNb3ZlKHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQpOyB9CiAgICAgYm9v
bCBoYXNTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4obV9wb2x5UHJvdG9XYXRjaHBvaW50KTsgfQogCisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkNhY2hlZE93bktleXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihTdHJ1Y3R1cmVSYXJlRGF0YSwgbV9jYWNoZWRPd25LZXlzKTsKKyAgICB9CisKICAg
ICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcml2YXRlOgpAQCAtODcsNiArOTksNyBAQCBjbGFz
cyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcHJldmlvdXM7CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBt
X29iamVjdFRvU3RyaW5nVmFsdWU7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcj4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOworICAgIFdyaXRlQmFycmll
cjxKU0ltbXV0YWJsZUJ1dHRlcmZseT4gbV9jYWNoZWRPd25LZXlzOwogCiAgICAgdHlwZWRlZiBI
YXNoTWFwPFByb3BlcnR5T2Zmc2V0LCBSZWZQdHI8V2F0Y2hwb2ludFNldD4sIFdURjo6SW50SGFz
aDxQcm9wZXJ0eU9mZnNldD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8UHJv
cGVydHlPZmZzZXQ+PiBQcm9wZXJ0eVdhdGNocG9pbnRNYXA7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFByb3BlcnR5V2F0Y2hwb2ludE1hcD4gbV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YUlubGluZXMuaAppbmRleCBlNGUyNDk2YTU2MjRkZGY3ZDk5N2NjMjAzMmYwOWVhMjUwMWRiYTlk
Li44OTZmNTlhNTllMzViNmFhZTA2NThkN2UwMWI5M2YyY2NlZTgzMjIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGlu
ZXMuaApAQCAtMjUsMTYgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNJ
bW11dGFibGVCdXR0ZXJmbHkuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVSYXJlRGF0
YTo6cHJldmlvdXNJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7Ci19
Ci0KIGlubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRQcmV2aW91c0lEKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgbV9wcmV2aW91cy5zZXQodm0sIHRoaXMsIHN0
cnVjdHVyZSk7CkBAIC01MCw0ICs0NywzMiBAQCBpbmxpbmUgSlNTdHJpbmcqIFN0cnVjdHVyZVJh
cmVEYXRhOjpvYmplY3RUb1N0cmluZ1ZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbV9vYmplY3RU
b1N0cmluZ1ZhbHVlLmdldCgpOwogfQogCitpbmxpbmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvci5nZXQoKTsKK30K
KworaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IpCit7
CisgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLnNldCh2bSwgdGhpcywgZW51bWVy
YXRvcik7Cit9CisKK2lubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NhY2hlZE93bktleXMu
Z2V0KCk7Cit9CisKK2lubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSBjb25zdAoreworICAgIGF1dG8qIHJlc3Vs
dCA9IG1fY2FjaGVkT3duS2V5cy5nZXQoKTsKKyAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0
Q2FjaGVkT3duS2V5cyhWTSYgdm0sIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkpCit7
CisgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICBtX2NhY2hlZE93bktleXMuc2V0KHZt
LCB0aGlzLCBidXR0ZXJmbHkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAyNTZhNTgzNjcxNzc1YTQxZTZlM2EwM2RkY2ZkZTA0
MTJkYTRkMDRhLi5hNzc0ZmE1Zjc2ZTA1YTVkZWI3ODkzN2I5MWRkNjAzNGFlMTA1YWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00MzQsNiArNDM0LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGV4Y2VwdGlvblN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURl
ZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJu
YWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgbmF0aXZl
U3RkRnVuY3Rpb25DZWxsU3RydWN0dXJlLnNldCgqdGhpcywgTmF0aXZlU3RkRnVuY3Rpb25DZWxs
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvZ3JhbUNvZGVC
bG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBtb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0
dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBFdmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CkBA
IC00NDcsOCArNDQ4LDggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBl
KQogCiAgICAgc2VudGluZWxTZXRCdWNrZXQuc2V0KCp0aGlzLCBKU1NldDo6QnVja2V0VHlwZTo6
Y3JlYXRlU2VudGluZWwoKnRoaXMpKTsKICAgICBzZW50aW5lbE1hcEJ1Y2tldC5zZXQoKnRoaXMs
IEpTTWFwOjpCdWNrZXRUeXBlOjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOworICAgIHNlbnRpbmVs
SW1tdXRhYmxlQnV0dGVyZmx5LnNldCgqdGhpcywgSlNJbW11dGFibGVCdXR0ZXJmbHk6OmNyZWF0
ZVNlbnRpbmVsKCp0aGlzKSk7CiAKLSAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3Mo
KnRoaXMpOwogCiAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCBlMWVmNDY4Nzg0MGY5MmJkODAyOWUwOTBmMmU1MWJiYjJiYzM2OGJmLi4w
ZmI3YjgyMTVjOWQ3ZmM0ZmFkNTc5OTY0OWFjNWM0MDg2ZTRmZTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTU3MSw2ICs1NzEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewog
ICAgIFN0cm9uZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKICAgICBTdHJv
bmc8SlNDZWxsPiBzZW50aW5lbFNldEJ1Y2tldDsKICAgICBTdHJvbmc8SlNDZWxsPiBzZW50aW5l
bE1hcEJ1Y2tldDsKKyAgICBTdHJvbmc8SlNDZWxsPiBzZW50aW5lbEltbXV0YWJsZUJ1dHRlcmZs
eTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlRGVmZXJyZWRUaW1lcj4gcHJvbWlzZURl
ZmVycmVkVGltZXI7CiAgICAgCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGZjZjBiOGU3ZjNlNTViNjc4NTM2ODEzM2YxZDE2N2Y3MzlkNDU4
ZTUuLjZmODE0ZjQ2YTA2YzZjYzNmZTBhZWNkZjMwMmY0NTYzYjc2ZDMzMTIgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTgtMTItMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9y
Zz4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3Qua2V5cyBieSBjYWNoaW5nIG93biBr
ZXlzIHJlc3VsdHMgaW4gU3RydWN0dXJlUmFyZURhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL29iamVjdC1rZXlzLWNhY2hlZC16ZXJv
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWF0dHJpYnV0ZS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0
LWtleXMtY2hhbmdlZC1pbmRleC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJl
c3Mvb2JqZWN0LWtleXMtaW5kZXhlZC1ub24tY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1rZXlzLW92
ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFtZXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdCk6CisgICAgICAgIChub0lubGluZSk6CisKIDIwMTgtMTItMDYgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgc3RyZXNzL2Jp
Zy13YXNtLW1lbW9yeSB0ZXN0cyBmYWlsaW5nIG9uIDMyLWJpdCBKU0MgYm90CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jYWNoZWQtemVyby5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL29iamVjdC1rZXlzLWNhY2hlZC16ZXJvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3Y2M5NmFmYWNmYTg0
OGIxMDMwZDYzMWI2NTM5MTU3ZDcwN2I5NjUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9vYmplY3Qta2V5cy1jYWNoZWQtemVyby5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmpl
Y3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAg
IHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5k
ZWZpbmVkKTsKKyAgICByZXN1bHRbMF0gPSBpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgs
IDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWF0dHJpYnV0ZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L29iamVjdC1rZXlzLWNoYW5nZWQtYXR0cmlidXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzZjE0M2VjMjdm
MDAyMDU5YWU0MTcyNTY5ZjliNzQzYzEzYmQxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWF0dHJpYnV0ZS5qcwpAQCAtMCwwICsxLDI4IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3Qu
a2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7IENvY29h
OiA0MiB9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciByZXN1bHQg
PSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hv
dWxkQmUocmVzdWx0WzBdLCAnQ29jb2EnKTsKK30KKworUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShv
YmplY3QsICdDb2NvYScsIHsKKyAgICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOwor
ICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwg
dW5kZWZpbmVkKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNo
YW5nZWQtaW5kZXguanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWluZGV4
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQyM2UwOTI1N2IyOWRhNDU0YmRmNmYzZmQ3M2JhM2JhNmIzZjc0NzkK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWlu
ZGV4LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3Qp
Cit7CisgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7Cit9Citub0lubGluZSh0ZXN0KTsK
KwordmFyIG9iamVjdCA9IHt9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAg
IHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwg
MCk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCB1bmRlZmluZWQpOworICAgIHJlc3VsdFswXSA9
IGk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0
WzBdLCBpKTsKK30KKworb2JqZWN0WzBdID0gNDI7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsg
KytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1
bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICcwJyk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLmpzIGIvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWtleXMtY2hhbmdlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDNhMzA1M2ZiZTZkNjRkOTAy
Mjk3YjA4M2RmYTcyMGRiNDZjMjgyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWtleXMtY2hhbmdlZC5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworfQor
bm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJl
KHJlc3VsdC5sZW5ndGgsIDApOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsK
KyAgICByZXN1bHRbMF0gPSBpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAg
IHNob3VsZEJlKHJlc3VsdFswXSwgaSk7Cit9CisKK29iamVjdC5Db2NvYSA9IDQyOworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7
CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBd
LCAnQ29jb2EnKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWlu
ZGV4ZWQtbm9uLWNhY2hlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtaW5kZXhlZC1u
b24tY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDljOWNmNGVlMTEyYTdmMzE3Y2M2NzkwMTMxYzAwZjRi
ODcwZDY4YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWlu
ZGV4ZWQtbm9uLWNhY2hlLmpzCkBAIC0wLDAgKzEsMjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
dGVzdChvYmplY3QpCit7CisgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7Cit9Citub0lu
bGluZSh0ZXN0KTsKKwordmFyIG9iamVjdCA9IHswOiA0Mn07Citmb3IgKHZhciBpID0gMDsgaSA8
IDFlMzsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRC
ZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICcwJyk7Cit9Citv
YmplY3RbMV0gPSA0NDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICB2YXIg
cmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDIpOwor
ICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMV0sICcx
Jyk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1vdmVycmlkZXMt
Z2V0LXByb3BlcnR5LW5hbWVzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtb3ZlcnJp
ZGVzLWdldC1wcm9wZXJ0eS1uYW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzBkOGJiMTdlOTE5OGU1MDdi
ZTc1YzVkMTk2MWU5MTRiMGI3ZmRjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWtleXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1uYW1lcy5qcwpAQCAtMCwwICsxLDU3
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmpl
Y3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3sKKyAgICBsZXQgb2JqZWN0
ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlMzsgKytp
KSB7CisgICAgICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgICAgIHNob3VsZEJl
KHJlc3VsdC5sZW5ndGgsIDUpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMF0sICcwJyk7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0
WzJdLCAnMicpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sICczJyk7CisgICAgICAgIHNo
b3VsZEJlKHJlc3VsdFs0XSwgJzQnKTsKKyAgICB9CisKKyAgICBvYmplY3QuQ29jb2EgPSA0MjsK
KyAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5n
dGgsIDYpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICBzaG91bGRCZShyZXN1
bHRbMV0sICcxJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAnMicpOworICAgIHNob3VsZEJl
KHJlc3VsdFszXSwgJzMnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNF0sICc0Jyk7CisgICAgc2hv
dWxkQmUocmVzdWx0WzVdLCAnQ29jb2EnKTsKK30KKworeworICAgIGxldCBvYmplY3QgPSBuZXcg
U3RyaW5nKCJDb2NvYSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0
Lmxlbmd0aCwgNSk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0WzFdLCAnMScpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sICcy
Jyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICAgICAgc2hvdWxkQmUo
cmVzdWx0WzRdLCAnNCcpOworICAgIH0KKworICAgIG9iamVjdFs4XSA9IDQyOworICAgIGxldCBy
ZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgNik7Cisg
ICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgJzEn
KTsKKyAgICBzaG91bGRCZShyZXN1bHRbMl0sICcyJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzNd
LCAnMycpOworICAgIHNob3VsZEJlKHJlc3VsdFs0XSwgJzQnKTsKKyAgICBzaG91bGRCZShyZXN1
bHRbNV0sICc4Jyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357399</attachid>
            <date>2018-12-15 05:43:42 -0800</date>
            <delta_ts>2018-12-15 21:15:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190047-20181215224341.patch</filename>
            <type>text/plain</type>
            <size>56981</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NzA0NjNmNDZlM2NlZDg2M2Y3NTM5M2MyYjI0MDBlYjFlYTU5ODUwLi44ODc2NTEwYTAyNmRmZmM4
YzFhZGY5YmNjZjgxYWU4ZmVkZjUwMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OSBAQAorMjAxOC0xMi0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5rZXlzIGJ5IGNhY2hp
bmcgb3duIGtleXMgcmVzdWx0cyBpbiBTdHJ1Y3R1cmVSYXJlRGF0YQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT2JqZWN0LmtleXMgaXMgb25lIG9mIHRo
ZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBmdW5jdGlvbiBpbiB3ZWItdG9vbGluZy1iZW5jaG1hcmtz
IChXVEIpLgorICAgICAgICBPYmplY3Qua2V5cyBpcyBkb21pbmFudCBpbiBsZWJhYiBvZiBXVEIs
IGFuZCBmcmVxdWVudGx5IGNhbGxlZCBpbiBiYWJlbCBhbmQgb3RoZXJzLgorICAgICAgICBTaW5j
ZSBvdXIgU3RydWN0dXJlIGtub3dzIHRoZSBzaGFwZSBvZiBKU09iamVjdCwgd2UgY2FuIGNhY2hl
IHRoZSByZXN1bHQgb2YgT2JqZWN0LmtleXMKKyAgICAgICAgaW4gU3RydWN0dXJlIChTdHJ1Y3R1
cmVSYXJlRGF0YSkgYXMgd2UgY2FjaGUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGluIFN0cnVj
dHVyZVJhcmVEYXRhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2FjaGVzIHRoZSByZXN1bHQgb2Yg
T2JqZWN0LmtleXMgaW4gU3RydWN0dXJlUmFyZURhdGEuIFRoZSBjYWNoZWQgYXJyYXkgaXMgY3Jl
YXRlZAorICAgICAgICBhcyBKU0ltbXV0YWJsZUJ1dHRlcmZseS4gQW5kIE9iamVjdC5rZXlzIGNy
ZWF0ZXMgQ29XIGZyb20gdGhpcyBkYXRhLiBDdXJyZW50bHksIHRoZSBsaWZldGltZQorICAgICAg
ICBzdHJhdGVneSBvZiB0aGlzIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGlzIHRoZSBzYW1lIHRvIGNh
Y2hlZCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuIEl0IGlzCisgICAgICAgIHJlZmVyZW5jZWQg
ZnJvbSBTdHJ1Y3R1cmUsIGFuZCBjb2xsZWN0ZWQgd2hlbiBTdHJ1Y3R1cmUgaXMgY29sbGVjdGVk
LgorCisgICAgICAgIFRoaXMgaW1wcm92ZXMgc2V2ZXJhbCBiZW5jaG1hcmtzIGluIFNpeFNwZWVk
LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUgICAg
ICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgICAgIG9iamVjdC1hc3NpZ24uZXM1ICAg
ICAgMzUwLjE3MTArLTMuNjMwMyAgICAgXiAgICAyMjYuMDM2OCstNC43NTU4ICAgICAgICBeIGRl
ZmluaXRlbHkgMS41NDkyeCBmYXN0ZXIKKyAgICAgICAgICAgIGZvci1vZi1vYmplY3QuZXM2ICAg
ICAgMjY5LjE5NDErLTMuMzQzMCAgICAgXiAgICAxMjcuOTMxNystMi4zODc1ICAgICAgICBeIGRl
ZmluaXRlbHkgMi4xMDQyeCBmYXN0ZXIKKworICAgICAgICBBbmQgaXQgaW1wcm92ZXMgV1RCIGxl
YmFiIGJ5IDExLjglLgorCisgICAgICAgICAgICBCZWZvcmU6IGxlYmFiOiAgNi4xMCBydW5zL3MK
KyAgICAgICAgICAgIEFmdGVyOiAgbGViYWI6ICA2LjgyIHJ1bnMvcworCisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZl
cnRUb05ld0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAq
IGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0S2V5cyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU9iamVjdEtleXMpOgorICAgICAgICAqIHJ1bnRpbWUvQnV0dGVy
Zmx5Lmg6CisgICAgICAgIChKU0M6OkNvbnRpZ3VvdXNEYXRhOjpEYXRhOjpzZXRTdGFydGluZ1Zh
bHVlKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICog
cnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oOgorICAgICAgICAoSlNDOjpKU0ltbXV0YWJs
ZUJ1dHRlcmZseTo6SlNJbW11dGFibGVCdXR0ZXJmbHkpOiBXZSBzZXQgSlNFbXB0eSB0byB0aGUg
dW5kZXJseWluZyBidXR0ZXJmbHkgc3RvcmFnZSBpZiBpbmRleGluZyB0eXBlIGlzIENvbnRpZ3Vv
dXMuCisgICAgICAgIE90aGVyd2lzZSwgSlNJbW11dGFibGVCdXR0ZXJmbHkgaXMgaGFsZi1iYWtl
ZCBvbmUgdW50aWwgYWxsIHRoZSBzdG9yYWdlIGlzIGZpbGxlZCB3aXRoIHNvbWUgbWVhbmluZ2Z1
bCB2YWx1ZXMsIGl0IGxlYWRzIHRvIGNyYXNoCisgICAgICAgIGlmIGhhbGYtYmFrZWQgSlNJbW11
dGFibGVCdXR0ZXJmbHkgaXMgZXhwb3NlZCB0byBHQy4KKyAgICAgICAgKiBydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b3duUHJvcGVydHlLZXlzKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2Fu
Q2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmNhY2hlZE93bktleXMgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNh
bkNhY2hlT3duS2V5cyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1l
cmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6
c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFy
ZURhdGE6OnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5cyBjb25zdCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzQ29uY3VycmVudGx5IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZE93bktleXMpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6cHJldmlvdXNJRCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisKIDIwMTgtMTIt
MTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIExpdGVyYWxQYXJz
ZXIgaGFzIGEgYnVuY2ggb2YgdXNlcyBvZiBTdHJpbmc6OmZvcm1hdCB3aXRoIHVudHJ1c3RlZCBk
YXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNWY1ZWNjYzMzMGMyMmJlOGJkOTFlMWI0Y2Q3Yjc1
OTcxNGEwZGQ2Ny4uNjlkZDAzZGQxYjVmYjA0YTRlOTVkMDU4Nzk3M2Q4MjAwOWY0ZmVlNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0Lmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Jv
b2xlYW5MYXR0aWNlLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKQEAg
LTI1ODAsNiArMjU4MSwzMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIE9iamVjdEtleXM6IHsKKyAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0cnVj
dHVyZVNldCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlOworICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZVNldC5pc0Zpbml0ZSgpICYmIHN0cnVjdHVyZVNldC5zaXplKCkgPT0g
MSkgeworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3Ry
dWN0dXJlU2V0Lm9ubHlTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogcmFy
ZURhdGEgPSBzdHJ1Y3R1cmUtPnJhcmVEYXRhQ29uY3VycmVudGx5KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gcmFyZURhdGEtPmNhY2hlZE93bktl
eXNDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGltbXV0YWJsZUJ1dHRl
cmZseSAmJiBpbW11dGFibGVCdXR0ZXJmbHkgIT0gU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93
bktleXNTZW50aW5lbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5p
c1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0FycmF5KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjQXJyYXkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFRv
T2JqZWN0OgogICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOiB7CiAgICAgICAgIEFic3Ry
YWN0VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA2NDZiMDJjNGE4
YTgzNGY4MjVkYjZlMTA1YThhYzEwY2ZkMjIwMzdiLi5kNmUzODQzYThkODM0OTQ5MDE1NGUwODc3
NzI3NGYwODY1NWY2NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtMjY5Miw2ICsyNjkyLDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBJCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5
c0ludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAy
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygpOwor
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKE9iamVjdEtleXMsIGdldCh2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKwogICAgIGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOiB7
CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAppbmRleCA4NzQyNDIwN2M0MDE2NDgzYmRiZmI0MjAyOTkwZTJhMjdlZTk5ZDVmLi4yNTBlYzAw
NDQzZDEyYzA2M2FhNDNlZWViZGM0OGM3MDI5NDEyNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjY4LDYgKzY2OCw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAg
ICBjYXNlIFN0cmluZ1ZhbHVlT2Y6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgICAgICByZWFk
KFdvcmxkKTsKICAgICAgICAgd3JpdGUoSGVhcCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1Mjks
NyArMTUzMCw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAgICB9CiAK
LQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3
U3ltYm9sOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBmYjFmNmRjMjMxYWJlNDQ4ZDVmOTE2YzYzNDhmZDFmMTM3
ZmJhMDIzLi44ZDBhNDI4OTRlNDEzNjdhMmVlMDcyZWE4MmU1MjAwYjdiZDE3ODE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcApAQCAtNzY2LDYgKzc2NiwyNiBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8mIHN0cnVjdHVyZVNldCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1
Y3R1cmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVTZXQuaXNGaW5pdGUoKSAm
JiBzdHJ1Y3R1cmVTZXQuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0Lm9ubHlTdHJ1Y3R1cmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiByYXJlRGF0YSA9IHN0cnVjdHVy
ZS0+cmFyZURhdGFDb25jdXJyZW50bHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IHJhcmVEYXRhLT5jYWNoZWRPd25LZXlzQ29uY3Vy
cmVudGx5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltbXV0YWJsZUJ1dHRl
cmZseSAmJiBpbW11dGFibGVCdXR0ZXJmbHkgIT0gU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93
bktleXNTZW50aW5lbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05ld0FycmF5QnVm
ZmVyKG1fZ3JhcGguZnJlZXplKGltbXV0YWJsZUJ1dHRlcmZseSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBUb051bWJlcjog
ewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSAmIH5TcGVjQnl0ZWNvZGVOdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDg5ZmIzMjU4ZGU2NjY4
ZjZkN2ZiZDE5YmU0Nzg3ZTRjM2FhYjc5ODEuLmRmNzQ5MzBiZGJiMzg2NGFkOTQ0YmM0NzIwNzEy
ZmUwZjM5NDdiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAg
LTMzOSw2ICszMzksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgT2JqZWN0Q3Jl
YXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEFycmF5
aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXgg
MzViNjExODYzYmJiZDZhODNiMjViMjYxNGVlZjkxMmRkZTljNzI3MS4uYTJlZWZhNWFiMGJjMTBm
YzUwZDQzOTYxMmViMjFjYzE4ZjdlMGMyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTk1LDYgKzE1OTUsMTQgQEAgY2xhc3MgRml4dXBQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJh
ZFRpbWUobm9kZSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lkZW50OiB7CiAgICAgICAgICAgICBmaXhFZGdlPFN0
cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4IGRkOTY3YzhhZDIzNzIwYzg4NTY2NzU4
NzM1MDZlNTJkMTUwZmI3NzEuLjNkMWMzYmExMzc2MjFlM2IyZjAzNDE1YmI5MWQxNDEyMzYzY2U0
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0
ZXJmbHkuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0yMjMsNiAr
MjI0LDE3IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvTGF6eUpTQ29uc3RhbnQoR3JhcGgmIGdyYXBo
LCBMYXp5SlNWYWx1ZSB2YWx1ZSkKICAgICBjaGlsZHJlbi5yZXNldCgpOwogfQogCit2b2lkIE5v
ZGU6OmNvbnZlcnRUb05ld0FycmF5QnVmZmVyKEZyb3plblZhbHVlKiBpbW11dGFibGVCdXR0ZXJm
bHkpCit7CisgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3QXJyYXlCdWZmZXIpOworICAgIE5l
d0FycmF5QnVmZmVyRGF0YSBkYXRhIHsgfTsKKyAgICBkYXRhLmluZGV4aW5nTW9kZSA9IGltbXV0
YWJsZUJ1dHRlcmZseS0+Y2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCktPmluZGV4aW5nTW9k
ZSgpOworICAgIGRhdGEudmVjdG9yTGVuZ3RoSGludCA9IGltbXV0YWJsZUJ1dHRlcmZseS0+Y2Fz
dDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCktPnRvQnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgp
OworICAgIGNoaWxkcmVuLnJlc2V0KCk7CisgICAgbV9vcEluZm8gPSBpbW11dGFibGVCdXR0ZXJm
bHk7CisgICAgbV9vcEluZm8yID0gZGF0YS5hc1F1YWRXb3JkOworfQorCiB2b2lkIE5vZGU6OmNv
bnZlcnRUb0RpcmVjdENhbGwoRnJvemVuVmFsdWUqIGV4ZWN1dGFibGUpCiB7CiAgICAgTm9kZVR5
cGUgbmV3T3AgPSBMYXN0Tm9kZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmlu
ZGV4IGQzZjczYThjMjg0ZGJkNzAzZjIyZTZmZmNlZWEwOTg2ZjM3MzQ5YjIuLmI4MDE0NzU1Yzdi
Y2I1MDkxNGVkMzlkNjFhNTNkOTRhY2E4NjAyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCkBAIC03NjEsNiArNzYxLDggQEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5m
byA9IHN0cnVjdHVyZTsKICAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOwogICAg
IH0KKworICAgIHZvaWQgY29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUqIGltbXV0
YWJsZUJ1dHRlcmZseSk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3pl
blZhbHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA0
Y2ZhZmU3ZGIzNjhhNmQ0MTM5M2I4NTY1NGE2MjI4ZjMyYjdiNzc3Li5kYzJmM2UxNmI4MzJhYWMw
YWY3ZjBhZDYzYzRjOGUyODFkY2JhMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCkBAIC0yNjUsNiArMjY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKFBhcnNlSW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oR2V0UHJvdG90eXBlT2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RDcmVhdGUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
UmVzdWx0SlMpIFwKKyAgICBtYWNybyhPYmplY3RLZXlzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIEF0b21pY3Mgb2JqZWN0IGZ1bmN0aW9ucy4gKi9c
CiAgICAgbWFjcm8oQXRvbWljc0FkZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVIYXNWYXJBcmdzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCBiNzVmY2RmYjk3NWQ5MWVjYTJlMzhmZGZjNmVkMDVkYjBjN2NiYzNiLi4w
YjI2YzJkMTYyYzdmMjRjZmFjZWJjM2E3OTUxNmM0OWQ3MzIxNDRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTI0OCw2ICsyNDgsMjUgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXNTdHJpY3QoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKSk7CiB9CiAKK0pTQXJy
YXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT2JqZWN0KS50b09iamVjdChleGVjKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6
OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpOworfQorCitKU0FycmF5
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIHJldHVybiBvd25Qcm9w
ZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51
bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9iamVjdENyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm90b3R5cGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMzE1ZmQ2YWRjNTI3MWQzMmUyYjU4MTdh
ODBmYjAyODE5Y2JiZjI4My4uMzhjMTE2YTU0ZjkxYTYxNWI4MWMxNTExMjE0OGYyNWY5NGFkYjFl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTQzLDYg
KzQzLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdGcm9t
Q2hhckNvZGVVbnR5cGVkKEV4ZWNTdGF0ZSosIEVuY28KIC8vIFRoZXNlIHJvdXRpbmVzIHByb3Zp
ZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9v
IGNvbXBsZXggdG8gSklULgogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxPYmpl
Y3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRUYXJnZXQpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRUYXJnZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworSlNBcnJh
eSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9i
amVjdEtleXNPYmplY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
T2JqZWN0Q3JlYXRlT2JqZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNP
YmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJfdCBpbmxpbmVDYXBhY2l0eSkgV1RGX0lOVEVSTkFM
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBjZjI1NTdkMWNhMmY3Y2IzZDM5ZjBkYzFiMTEz
OTQ5Mzg4NzIyZjE3Li5iM2M2OWJjZjEyNDcyN2JmY2M2NzZiMmFmYWRhYjVhODhjMjJmOTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg0LDcgKzk4NCw4IEBAIGNsYXNzIFByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdBcnJh
eToKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICBjYXNlIENyZWF0ZVJl
c3Q6Ci0gICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsKKyAgICAgICAgY2FzZSBOZXdBcnJh
eUJ1ZmZlcjoKKyAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7CiAgICAgICAgICAgICBzZXRQcmVk
aWN0aW9uKFNwZWNBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBkMTllZThlMWJm
Y2RmYmZjOTFjYmU4ZmEwYjM0NTE0NmM2ZjExYmQzLi5mMTA2OTgyYWUzOWZmM2JjYzM2Y2ZiNWFl
ZTBkNzE2YzA3ZTk0MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaApAQCAtMTc4LDYgKzE3OCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAg
ICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgT2JqZWN0Q3Jl
YXRlOgorICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNl
IFNldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBm
ZTNkNjg2MmUyZjQwYWI3ZDc0ZmJiNmJiNjViYWY4NTMzNDU5YzQ3Li40MjdmNTRlMWJmYTQ5YWZh
ZThkNTFkNmZlY2ZlMmEwNmZhZDcyODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTIzNjUsNiArMTIzNjUsOTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvVGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1
bHQodGVtcFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0S2V5cyhOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKSB7CisgICAgY2FzZSBPYmplY3RVc2U6IHsKKyAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRj
aGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgeworICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgb2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsK
KyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMyh0aGlzKTsKKyAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgICAgIEdQUlJlZyBvYmplY3RHUFIg
PSBvYmplY3QuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0
dXJlLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigp
OworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaDNHUFIgPSBzY3JhdGNoMy5ncHIoKTsKKyAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgICAgIHNwZWN1bGF0
ZU9iamVjdChub2RlLT5jaGlsZDEoKSwgb2JqZWN0R1BSKTsKKworICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0
cnVjdHVyZSgqbV9qaXQudm0oKSwgb2JqZWN0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSwgc2NyYXRjaEdQ
Uik7CisKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4obV9qaXQudm0oKS0+c3RydWN0dXJlU3RydWN0dXJl
LT5zdHJ1Y3R1cmVJRCgpKSkpKTsKKworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2Fj
aGVkT3duS2V5cygpKSwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsK
KyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVy
czo6RXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihT
dHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpKSkpOworCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXM7CisK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSk7CisKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoc2NyYXRjaEdQUiwgc2NyYXRjaDNHUFIpOworICAgICAgICAgICAgbV9q
aXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0
YSgpKSwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpT
QXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihhcnJheVN0cnVjdHVyZSksIHNjcmF0Y2hH
UFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dCdXRBcnJheUJ1ZmZlckNhc2VzKTsK
KworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dCdXRB
cnJheUJ1ZmZlckNhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0R1BS
LCBhcnJheVN0cnVjdHVyZSwgc2NyYXRjaDNHUFIpKTsKKworICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uT2JqZWN0
S2V5c09iamVjdCwgcmVzdWx0R1BSLCBvYmplY3RHUFIpKTsKKworICAgICAgICAgICAgY2VsbFJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworCisgICAgICAgIEdQUlJlZyBvYmplY3RHUFIgPSBvYmplY3QuZ3ByKCk7CisKKyAgICAgICAg
c3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIpOworCisgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0LCByZXN1bHRHUFIsIG9iamVjdEdQ
Uik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb2JqZWN0KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKworICAgICAgICBKU1ZhbHVlUmVncyBvYmplY3RSZWdzID0gb2JqZWN0LmpzVmFs
dWVSZWdzKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEtleXMsIHJl
c3VsdEdQUiwgb2JqZWN0UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisK
KyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IDQzOGIxMTRjOWRlNjUwMzVmMDQ5ZThmM2U1YmY1NTVjYTgzOTYzNTAuLjQ4
NDYzYzVmNzlkZjQ0NjQ1NmUwYWFmNzQ0MTA0ZmUzZTAyZWJmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0NzksNiArMTQ3OSw3IEBA
IGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJheVdpdGhTaXpl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVUb1RoaXMoTm9kZSopOworICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXMoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZU9iamVjdENyZWF0ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
Q3JlYXRlVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3T2JqZWN0KE5vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDk1MmY4OTE1OGQ0Y2MzMGJjNzY4YmVlZjc5YzhkYjdiM2RmZGY2NTkuLjIwYzA1
M2E5NTUzYWM5ZTAxNTIzNjBkNzY3YjEyYzRhYmM3M2ZiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzE2Nyw2
ICszMTY3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgIGNv
bXBpbGVPYmplY3RLZXlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IENyZWF0ZVRoaXM6IHsKICAgICAgICAgY29tcGlsZUNyZWF0ZVRoaXMobm9kZSk7CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKaW5kZXggNmY1YTg3YzBlMDMyN2IwYTc5MmM1ZGI1YTIzZWU2ZWRhMTRjNjk1Ni4u
NGU2NWViYzEzNzFiMTY3Mzg3ODY4MDM3MDgyNzJlYmZjNGFlYzJiYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNDA5LDYg
KzM0MDksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE9iamVjdEtleXM6IHsKKyAgICAgICAgY29t
cGlsZU9iamVjdEtleXMobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
Q3JlYXRlVGhpczogewogICAgICAgICBjb21waWxlQ3JlYXRlVGhpcyhub2RlKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCmluZGV4IGJiZDQ3MTMyZmVjN2JjZmNkM2I2ZTJjNTg0MTRlYWE4NGJj
ODUyMWYuLjlmM2FhMmZlN2RjM2VjZmViMGM4NzBiODFhODdjYmMxMWYyODgwNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCkBAIC0xMTYsOCArMTE2LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
ICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBc
CiAgICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNh
cGFjaXR5T2Zmc2V0KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVfcHJldmlvdXNPclJhcmVEYXRh
LCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3Ry
dWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSBcCisgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFfY2FjaGVkT3duS2V5cywgU3RydWN0dXJl
UmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkT3duS2V5cygpKSBcCiAgICAgbWFjcm8oSGFzaE1hcElt
cGxfY2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFL
ZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfYnVmZmVy
LCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZz
ZXRPZkJ1ZmZlcigpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfaGVhZCwgIEhhc2hNYXBJbXBs
PEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZIZWFkKCkpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAw
ZjZjZWViYjU1NTNkZmE4YTBjMDBjMzI2NGI5NjU5MTQ3OWJhN2QxLi4yM2M5Mzk2ZjRkNjllMDRm
NmYwY2I1ZjQ5MWJhMDRlNmNjZmFkMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMDEsNiArMjAxLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3Ry
dWN0b3I6CiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgY2FzZSBPYmplY3RD
cmVhdGU6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgVHJ5R2V0QnlJZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAxODU4NzZiODM3MTZkYmYz
NTI2MjllYWRmYjYxODQ2NThkZDBmM2U4Li4yYzU1MGIzMDE2YzMwYjExYzMyYWM3ODRhNjdiMDky
NmIxNTk4YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCkBAIC04NjYsNiArODY2LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
Y2FzZSBPYmplY3RDcmVhdGU6CiAgICAgICAgICAgICBjb21waWxlT2JqZWN0Q3JlYXRlKCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPYmplY3RLZXlzOgorICAgICAgICAgICAg
Y29tcGlsZU9iamVjdEtleXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5l
d09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdPYmplY3QoKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNTQ5Nyw2ICs1NTAwLDc1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVyb0xlbmd0
aFJlc3VsdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXMoKQorICAgIHsK
KyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBj
YXNlIE9iamVjdFVzZTogeworICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmlu
Z0FCYWRUaW1lV2F0Y2hwb2ludChtX25vZGUpKSB7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90TnVsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIHJhcmVEYXRhQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbm90TnVsbENhY2hlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgdXNlQ2FjaGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93QnV0QXJyYXlCdWZmZXJDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0g
bV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgICAgIExWYWx1ZSBvYmplY3QgPSBsb3dP
YmplY3QobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVy
ZSA9IGxvYWRTdHJ1Y3R1cmUob2JqZWN0KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHJldmlv
dXNPclJhcmVEYXRhID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJl
X3ByZXZpb3VzT3JSYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0
Lm5vdE51bGwocHJldmlvdXNPclJhcmVEYXRhKSwgdW5zdXJlKG5vdE51bGxDYXNlKSwgdW5zdXJl
KHNsb3dDYXNlKSk7CisKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKG5vdE51bGxDYXNlLCByYXJlRGF0YUNhc2UpOworICAgICAgICAgICAgICAg
IG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwobV9vdXQu
bG9hZDMyKHByZXZpb3VzT3JSYXJlRGF0YSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLCBt
X291dC5jb25zdEludDMyKG1fZ3JhcGgubV92bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVy
ZUlEKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgdW5zdXJlKHJhcmVEYXRhQ2FzZSksIHVuc3Vy
ZShzbG93Q2FzZSkpOworCisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmFyZURhdGFD
YXNlLCBub3ROdWxsQ2FjaGVDYXNlKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgY2FjaGVkT3du
S2V5cyA9IG1fb3V0LmxvYWRQdHIocHJldmlvdXNPclJhcmVEYXRhLCBtX2hlYXBzLlN0cnVjdHVy
ZVJhcmVEYXRhX2NhY2hlZE93bktleXMpOworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCht
X291dC5ub3ROdWxsKGNhY2hlZE93bktleXMpLCB1bnN1cmUobm90TnVsbENhY2hlQ2FzZSksIHVu
c3VyZShzbG93Q2FzZSkpOworCisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90TnVs
bENhY2hlQ2FzZSwgdXNlQ2FjaGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2go
bV9vdXQubm90RXF1YWwoY2FjaGVkT3duS2V5cywgbV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9j
YXN0PHZvaWQqPihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpKSks
IHVuc3VyZSh1c2VDYWNoZUNhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKworICAgICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKHVzZUNhY2hlQ2FzZSwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSk7
CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpKTsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgZmFzdEFycmF5ID0gYWxsb2NhdGVPYmplY3Q8SlNBcnJheT4oYXJyYXlTdHJ1
Y3R1cmUsIG1fb3V0LmFkZFB0cihjYWNoZWRPd25LZXlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6
b2Zmc2V0T2ZEYXRhKCkpLCBzbG93QnV0QXJyYXlCdWZmZXJDYXNlKTsKKyAgICAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RBcnJheSk7Cisg
ICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSwgc2xvd0Nhc2UpOworICAg
ICAgICAgICAgICAgIExWYWx1ZSBzbG93QXJyYXkgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1lLCB3ZWFrU3RydWN0dXJl
KGFycmF5U3RydWN0dXJlKSwgY2FjaGVkT3duS2V5cyk7CisgICAgICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgc2xvd0J1dEFycmF5QnVmZmVyUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dBcnJh
eSk7CisgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAg
ICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2xv
d1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgICAgICAgICBbPSwgJnZt
XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQ
YXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVM
YXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b25PYmplY3RLZXlzT2JqZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGxvY2F0aW9uc1sx
XS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgIG9iamVjdCk7CisgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhp
KHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dCdXRBcnJheUJ1ZmZlclJlc3VsdCwgc2xv
d1Jlc3VsdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25P
YmplY3RLZXlzT2JqZWN0KSwgbV9jYWxsRnJhbWUsIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgp
KSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVk
VXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25PYmplY3RLZXlzKSwgbV9jYWxsRnJhbWUsIGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlT2JqZWN0Q3JlYXRlKCkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5LmgKaW5kZXggNDNhOWJlNGE3ZjFkYTVkYjE4
ZWUzMjg1YjlhZWE1ODhkOTI2Y2RmMC4uNTBmZjhmMDhmZDk3ZmNjZDhhYjhiMGY0MzNlNTlmYmJm
OWEzYzMzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVy
Zmx5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5LmgKQEAg
LTg1LDYgKzg1LDExIEBAIHN0cnVjdCBDb250aWd1b3VzRGF0YSB7CiAgICAgICAgICAgICBtX2Rh
dGEuc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7CiAgICAgICAgIH0KIAorICAgICAgICB2
b2lkIHNldFN0YXJ0aW5nVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9kYXRhLnNldFN0YXJ0aW5nVmFsdWUodmFsdWUpOworICAgICAgICB9CisKICAgICAgICAg
dm9pZCBjbGVhcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2lzV3JpdGFibGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggYWJl
NmYxNzI4NmUzYmUzOTFlMGMzNzRjMWY2YzU3NGM1YmQ4NjdmYi4uZmJjNGVmM2NkOGYyZWM2MmRh
OTMwMGRhMjcxYjEwMjMzOTc0MzRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuY3BwCkBAIC0xMTksNiArMTE5LDggQEAgY29uc3QgY2hhciogaW50cmluc2lj
TmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIk9iamVjdEdldFByb3Rv
dHlwZU9mSW50cmluc2ljIjsKICAgICBjYXNlIE9iamVjdElzSW50cmluc2ljOgogICAgICAgICBy
ZXR1cm4gIk9iamVjdElzSW50cmluc2ljIjsKKyAgICBjYXNlIE9iamVjdEtleXNJbnRyaW5zaWM6
CisgICAgICAgIHJldHVybiAiT2JqZWN0S2V5c0ludHJpbnNpYyI7CiAgICAgY2FzZSBSZWZsZWN0
R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiUmVmbGVjdEdldFByb3Rv
dHlwZU9mSW50cmluc2ljIjsKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5z
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IGNmYmQx
ODQ5NjM1MmJiOWQ0ZTI2YTAyYzU2OTNiOGM0NjAwMTkwMjUuLmI0N2Y0NmQ5ZTRkZTAwMTNkZTgz
NDZlODJlNjgxNmY1ZmQwMmY3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oCkBAIC03Miw2ICs3Miw3IEBAIGVudW0gSW50cmluc2ljIHsKICAgICBPYmplY3RD
cmVhdGVJbnRyaW5zaWMsCiAgICAgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMsCiAgICAg
T2JqZWN0SXNJbnRyaW5zaWMsCisgICAgT2JqZWN0S2V5c0ludHJpbnNpYywKICAgICBSZWZsZWN0
R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJp
bnNpYywKICAgICBTdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmluc2ljLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKaW5kZXgg
Mjg0NzgzYzBjNzU1OTZhZGRhNWExZjk4ZjM2YjA2OWUwZWI4ZTRhMS4uNGFjMmE2YzRlNGI1ZGEz
Y2NhZDVkNDQ4MzI4ZjUyYWM2N2Y2OWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCkBAIC0xMjAsNiArMTIwLDEwIEBA
IGNsYXNzIEpTSW1tdXRhYmxlQnV0dGVyZmx5IDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAg
ICAgICBtX2hlYWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKICAgICAgICAgbV9oZWFkZXIu
c2V0UHVibGljTGVuZ3RoKGxlbmd0aCk7CisgICAgICAgIGlmIChoYXNDb250aWd1b3VzKGluZGV4
aW5nVHlwZSgpKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgbGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgICAgIHRvQnV0dGVyZmx5KCktPmNvbnRp
Z3VvdXMoKS5hdCh0aGlzLCBpbmRleCkuc2V0U3RhcnRpbmdWYWx1ZShKU1ZhbHVlKCkpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgSW5kZXhpbmdIZWFkZXIgbV9oZWFkZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
OTBhMzZhOTM1NTc4ZjJiOGUzMTMxMTNkMjlkOTBiYTlkNDY2YTk0NS4uNmJhM2FkNDc3ZTA4YTA3
ODg4ZTc5YThmMjgyMTE5NzQ3N2E5OTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0
ZXJmbHkuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKQEAgLTczLDcgKzc0LDcgQEAgY29u
c3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyBvYmplY3RD
b25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
ICAgZ2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVydHlTeW1i
b2xzICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKLSAga2V5cyAgICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1
Y3RvcktleXMgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAga2V5
cyAgICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcktleXMgICAgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEgT2JqZWN0S2V5c0ludHJpbnNpYwogICBkZWZp
bmVQcm9wZXJ0eSAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICBkZWZpbmVQcm9wZXJ0aWVzICAgICAgICAg
IG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgogICBjcmVhdGUgICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yQ3Jl
YXRlICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMiBPYmplY3RDcmVhdGVJ
bnRyaW5zaWMKQEAgLTI3MSw3ICsyNzIsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZQogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5
cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAKLS8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9u
IGNhY2hlLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcktl
eXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC04OTIs
MTEgKzg5MiwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9ySXMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHNhbWVWYWx1ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkp
KSk7CiB9CiAKLS8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgogSlNBcnJheSog
b3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVy
dHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVNb2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlIGRvbnRF
bnVtUHJvcGVydGllc01vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgYm9vbCBpc09iamVjdEtleXMg
PSBwcm9wZXJ0eU5hbWVNb2RlID09IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MgJiYgZG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZSA9PSBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlOworICAg
IC8vIFdlIGF0dGVtcHQgdG8gbG9vayB1cCBvd24gcHJvcGVydHkga2V5cyBjYWNoZSBpbiBPYmpl
Y3Qua2V5cyBjYXNlLgorICAgIGlmIChpc09iamVjdEtleXMpIHsKKyAgICAgICAgaWYgKExJS0VM
WSghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5jYWNoZWRP
d25LZXlzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW1tdXRhYmxlQnV0dGVyZmx5ICE9IFN0
cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzU2VudGluZWwoKSkgeworICAgICAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vcmlnaW5h
bEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKGltbXV0YWJsZUJ1dHRlcmZseS0+aW5kZXhp
bmdNb2RlKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNBcnJheTo6Y3JlYXRlV2l0
aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwgYXJyYXlTdHJ1Y3R1cmUsIGltbXV0YWJsZUJ1dHRlcmZs
eS0+dG9CdXR0ZXJmbHkoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcygmdm0sIHBy
b3BlcnR5TmFtZU1vZGUsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKICAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnRpZXMsIEVudW1lcmF0aW9uTW9kZShkb250RW51bVByb3BlcnRpZXNNb2RlKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CkBAIC05MTgsOCArOTMyLDMxIEBAIEpT
QXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3Qs
IFByb3BlcnR5TmFtZU1vZGUgcHJvCiAgICAgaWYgKHByb3BlcnR5TmFtZU1vZGUgIT0gUHJvcGVy
dHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpIHsKICAgICAgICAgQVNTRVJUKHByb3BlcnR5
TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyB8fCBwcm9wZXJ0eU5hbWVNb2Rl
ID09IFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMpOwogICAgICAgICBpZiAoIW11c3RGaWx0ZXJQ
cm9wZXJ0eSAmJiBwcm9wZXJ0aWVzLnNpemUoKSA8IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsK
LSAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFk
VGltZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChpc09iamVjdEtleXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hlT3duS2V5cygpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBjYWNoZWRCdXR0ZXJmbHkgPSBzdHJ1Y3R1
cmUtPmNhY2hlZE93bktleXMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZWRC
dXR0ZXJmbHkgPT0gU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIGltbXV0YWJsZSBidXR0
ZXJmbHkhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBu
ZXdCdXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6Y3JlYXRlKHZtLCBDb3B5T25Xcml0
ZUFycmF5V2l0aENvbnRpZ3VvdXMsIG51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgPSBw
cm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWlk
ZW50aWZpZXIuaXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d0J1dHRlcmZseS0+c2V0SW5kZXgodm0sIGksIGpzT3duZWRTdHJpbmcoJnZtLCBpZGVudGlmaWVy
LnN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDYWNoZWRPd25LZXlzKHZtLCBuZXdCdXR0
ZXJmbHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGUobmV3QnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIG51bGxwdHIsIGFy
cmF5U3RydWN0dXJlLCBuZXdCdXR0ZXJmbHktPnRvQnV0dGVyZmx5KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkQnV0dGVy
Zmx5ID09IG51bGxwdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5z
ZXRDYWNoZWRPd25LZXlzKHZtLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRp
bmVsKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKICAg
ICAgICAgICAgICAgICBKU0FycmF5KiBrZXlzID0gSlNBcnJheTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29u
dGlndW91cyksIG51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiogYnVmZmVyID0ga2V5cy0+YnV0dGVyZmx5KCktPmNvbnRpZ3VvdXMoKS5kYXRhKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA1OGQ4
M2JjZTRhZmRhZGU4MDNkMzg0YmE3MTBlMGFiOWQ2YWQwOTE4Li4zNTQyODI3ZGUzYTI3MDQ1NGZm
NmM2MzQwMjY4MmZjMDU4MjM0OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKQEAgLTEyNTIsMTcgKzEyNTIsNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IqIFN0cnVjdHVyZTo6Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0CiAK
IGJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdAog
ewotICAgIGF1dG8gY2FuQ2FjaGUgPSBbXSAoY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsK
LSAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH07Ci0KLSAgICBp
ZiAoIWNhbkNhY2hlKHRoaXMpKQorICAgIGlmICghdGhpcy0+Y2FuQ2FjaGVPd25LZXlzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFp
biA9IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCk7CkBAIC0xMjcxLDcgKzEyNjEsNyBAQCBi
b29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3QKICAg
ICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAoIXN0cnVjdHVyZS0+Z2V0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCFjYW5DYWNoZShzdHJ1Y3R1cmUtPmdldCgp
KSkKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmdldCgpLT5jYW5DYWNoZU93bktleXMoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgc3RydWN0dXJlKys7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA4ZGVkODI1YmZiYTkz
YTg1MDkwYjYxNDhjMGY1MGRhMTlkZmFjOWI3Li5jZTY2Njg2ODI5MDBkZGU5MWE2NDM1NjBkZjI0
NDFlNmJkN2YyNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlEQmxvYi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhLmgiCi0j
aW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIldh
dGNocG9pbnQuaCIKQEAgLTMyNiw2ICszMjUsMTQgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1
cmVSYXJlRGF0YSo+KG1fcHJldmlvdXNPclJhcmVEYXRhLmdldCgpKTsKICAgICB9CiAKKyAgICBj
b25zdCBTdHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGFDb25jdXJyZW50bHkoKSBjb25zdAorICAg
IHsKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gbV9wcmV2aW91c09yUmFyZURhdGEuZ2V0KCk7Cisg
ICAgICAgIGlmIChpc1JhcmVEYXRhKGNlbGwpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFN0cnVjdHVyZVJhcmVEYXRhKj4oY2VsbCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKwogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBlbnN1cmVSYXJlRGF0YShWTSYgdm0pCiAg
ICAgewogICAgICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCkBAIC00NzIsNiArNDc5LDEwIEBAIGNs
YXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgY2FuQ2FjaGVQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5BY2Nlc3NQcm9wZXJ0
aWVzUXVpY2tseUZvckVudW1lcmF0aW9uKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldENhY2hlZE93
bktleXMoVk0mLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSopOworICAgIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5KiBjYWNoZWRPd25LZXlzKCkgY29uc3Q7CisgICAgYm9vbCBjYW5DYWNoZU93bktleXMoKSBj
b25zdDsKKwogICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICBKU1N0cmluZyogb2JqZWN0
VG9TdHJpbmdWYWx1ZSgpCkBAIC01MjAsNiArNTMxLDExIEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVj
dHVyZSwgbV9pbmxpbmVDYXBhY2l0eSk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBw
cmV2aW91c09yUmFyZURhdGFPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihTdHJ1Y3R1cmUsIG1fcHJldmlvdXNPclJhcmVEYXRhKTsKKyAgICB9CisKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAgICAgCiAgICAgYm9v
bCB0cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXgg
YjNlYjFiNDFlOWYxYzc4MWU5NmYwMjI5MDUxMDAwZTA0MjcwNWQ1ZS4uYWI3ZTIwNmRkZTVlY2U0
ZjcwYmFjN2E0ZTkzMGVlNThmNTU3NWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjE5LDYgKzIxOSwyOSBAQCBpbmxpbmUg
Ym9vbCBTdHJ1Y3R1cmU6OnRyYW5zaXRpdmVseVRyYW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBz
dHJ1Y3R1cmVUb0ZpbmQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9pZCBTdHJ1
Y3R1cmU6OnNldENhY2hlZE93bktleXMoVk0mIHZtLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogb3du
S2V5cykKK3sKKyAgICBlbnN1cmVSYXJlRGF0YSh2bSktPnNldENhY2hlZE93bktleXModm0sIG93
bktleXMpOworfQorCitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZTo6Y2Fj
aGVkT3duS2V5cygpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmFyZURhdGEoKS0+Y2FjaGVkT3duS2V5cygpOwor
fQorCitpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlT3duS2V5cygpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzRGljdGlvbmFyeSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGhh
c0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICh0eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgcHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+aXNPYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5kZXggODk4NGNlOTE5NTZhODFkNTFhZDBkNTIz
MzYzMGU2OTllMzZkZWI1My4uZDBmN2JkODBjMWMyN2QzZDk2MTEwYTgyNTA0MjFmNjVlMGE4YTk3
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRh
LmgiCiAKICNpbmNsdWRlICJBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlLmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKQEAgLTcwLDE2ICs3MSw4IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3ByZXZpb3VzKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX29iamVjdFRvU3RyaW5nVmFsdWUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik7Ci19Ci0KLUpTUHJv
cGVydHlOYW1lRW51bWVyYXRvciogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFt
ZUVudW1lcmF0b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX2NhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3IuZ2V0KCk7Ci19Ci0KLXZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFBy
b3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVu
dW1lcmF0b3IpCi17Ci0gICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLnNldCh2bSwg
dGhpcywgZW51bWVyYXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkT3duS2V5cy51
bnZhbGlkYXRlZEdldCgpICE9IGNhY2hlZE93bktleXNTZW50aW5lbCgpKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhY2hlZE93bktleXMpOwogfQogCiAvLyAtLS0tLS0t
LS0tLSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3Nl
cyAtLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmgKaW5kZXggMTFjMTgxZGQ2MWU3ZWI2NzU0ZWJhOTcwNTRiZjEyYTUwM2Zi
ODhhNy4uNmE1NDY0MjlmOGZiOTJjZmNmYTA4YTRmNWZhMjhiYjNmNmYxMmNkZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC01
OCw3ICs1OCwxMCBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAKLSAgICBTdHJ1Y3R1cmUqIHByZXZpb3Vz
SUQoKSBjb25zdDsKKyAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7CisgICAgfQogICAgIHZvaWQgc2V0UHJldmlv
dXNJRChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgY2xlYXJQcmV2aW91c0lEKCk7CiAKQEAg
LTY4LDExICs3MSwyMiBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgewogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY2FjaGVkUHJvcGVydHlOYW1l
RW51bWVyYXRvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVy
YXRvcihWTSYsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopOwogCisgICAgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIGNhY2hlZE93bktleXMoKSBjb25zdDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogY2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q2FjaGVk
T3duS2V5cyhWTSYsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7CisKICAgICBCb3g8SW5saW5lV2F0
Y2hwb2ludFNldD4gY29weVNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVy
biBtX3BvbHlQcm90b1dhdGNocG9pbnQ7IH0KICAgICBjb25zdCBCb3g8SW5saW5lV2F0Y2hwb2lu
dFNldD4mIHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3BvbHlQ
cm90b1dhdGNocG9pbnQ7IH0KICAgICB2b2lkIHNldFNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQo
Qm94PElubGluZVdhdGNocG9pbnRTZXQ+JiYgc2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCkgeyBt
X3BvbHlQcm90b1dhdGNocG9pbnQgPSBXVEZNb3ZlKHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQp
OyB9CiAgICAgYm9vbCBoYXNTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wb2x5UHJvdG9XYXRjaHBvaW50KTsgfQogCisgICAgc3Rh
dGljIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzU2VudGluZWwoKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpKTsgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE93bktleXMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVSYXJlRGF0
YSwgbV9jYWNoZWRPd25LZXlzKTsKKyAgICB9CisKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CiBwcml2YXRlOgpAQCAtODYsNyArMTAwLDEwIEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3By
ZXZpb3VzOwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9vYmplY3RUb1N0cmluZ1ZhbHVl
OworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBzb21lIHN0b3J5IGZvciBjbGVhcmluZyB0
aGVzZSBwcm9wZXJ0eSBuYW1lcyBjYWNoZXMgaW4gR0MuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY1OQogICAgIFdyaXRlQmFycmllcjxKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I+IG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKKyAgICBX
cml0ZUJhcnJpZXI8SlNJbW11dGFibGVCdXR0ZXJmbHk+IG1fY2FjaGVkT3duS2V5czsKIAogICAg
IHR5cGVkZWYgSGFzaE1hcDxQcm9wZXJ0eU9mZnNldCwgUmVmUHRyPFdhdGNocG9pbnRTZXQ+LCBX
VEY6OkludEhhc2g8UHJvcGVydHlPZmZzZXQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPFByb3BlcnR5T2Zmc2V0Pj4gUHJvcGVydHlXYXRjaHBvaW50TWFwOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9wZXJ0eVdhdGNocG9pbnRNYXA+IG1fcmVwbGFjZW1lbnRXYXRjaHBvaW50
U2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmgKaW5kZXggZTRlMjQ5NmE1NjI0ZGRmN2Q5OTdjYzIwMzJmMDll
YTI1MDFkYmE5ZC4uNjQ4NWQwY2E2MmNhYmFjZDUyMGMzM2UzYmI3YTUwYTU2OGQxOGYwOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGFJbmxpbmVzLmgKQEAgLTI1LDE2ICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVS
YXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIFN0cnVjdHVyZSogU3RydWN0
dXJlUmFyZURhdGE6OnByZXZpb3VzSUQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByZXZpb3Vz
LmdldCgpOwotfQotCiBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0UHJldmlvdXNJ
RChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIG1fcHJldmlvdXMuc2V0KHZt
LCB0aGlzLCBzdHJ1Y3R1cmUpOwpAQCAtNTAsNCArNDcsMzQgQEAgaW5saW5lIEpTU3RyaW5nKiBT
dHJ1Y3R1cmVSYXJlRGF0YTo6b2JqZWN0VG9TdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fb2JqZWN0VG9TdHJpbmdWYWx1ZS5nZXQoKTsKIH0KIAoraW5saW5lIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvciogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0
b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3Iu
Z2V0KCk7Cit9CisKK2lubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiB2bSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVt
ZXJhdG9yKQoreworICAgIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvci5zZXQodm0sIHRo
aXMsIGVudW1lcmF0b3IpOworfQorCitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVj
dHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzQ29t
cGlsYXRpb25UaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fY2FjaGVkT3duS2V5cy51bnZhbGlkYXRl
ZEdldCgpOworfQorCitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVE
YXRhOjpjYWNoZWRPd25LZXlzQ29uY3VycmVudGx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
YWNoZWRPd25LZXlzLnVudmFsaWRhdGVkR2V0KCk7Cit9CisKK2lubGluZSB2b2lkIFN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRDYWNoZWRPd25LZXlzKFZNJiB2bSwgSlNJbW11dGFibGVCdXR0ZXJmbHkq
IGJ1dHRlcmZseSkKK3sKKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAgIGlmIChidXR0
ZXJmbHkgPT0gY2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpCisgICAgICAgIG1fY2FjaGVkT3duS2V5
cy5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGJ1dHRlcmZseSk7CisgICAgZWxzZQorICAgICAgICBt
X2NhY2hlZE93bktleXMuc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1ZDJjNDUyNjcw
ZjIwYzYzNDc4Mzg3M2E4NWUyY2U2MzliMjNmNTYyLi4xOTBlNTcxODdkNTNkNGFjOTI0NTljYjQ1
NDkwZjVhYzI0NDA1YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00
MzQsNiArNDM0LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CisgICAgbmF0aXZlU3RkRnVuY3Rpb25DZWxsU3RydWN0dXJlLnNldCgqdGhpcywg
TmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgcHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1Db2Rl
QmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBtb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV2YWxDb2RlQmxv
Y2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFdmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CkBAIC00NDgsNyArNDQ5LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywg
SlNTZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxN
YXBCdWNrZXQuc2V0KCp0aGlzLCBKU01hcDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRo
aXMpKTsKIAotICAgIG5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIHNtYWxsU3RyaW5ncy5pbml0aWFsaXplQ29tbW9uU3RyaW5ncygqdGhpcyk7CiAKICAg
ICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdF
bnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODJlN2U0OGI0MzhhZjYxZmYzZThmMjUxNjNjZDgwNTY4
NGJlYmQyMC4uMTc2MjNlNWI4ZDQwNzhkYWVkNjhiMjBkNmEwNzdmMTQ0Njg2Y2NhMSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMCBAQAorMjAxOC0xMi0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3Rh
cnQub3JnPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5rZXlzIGJ5IGNhY2hpbmcg
b3duIGtleXMgcmVzdWx0cyBpbiBTdHJ1Y3R1cmVSYXJlRGF0YQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWtleXMtY2FjaGVk
LXplcm8uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgICogc3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQtYXR0cmlidXRlLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9v
YmplY3Qta2V5cy1jaGFuZ2VkLWluZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAq
IHN0cmVzcy9vYmplY3Qta2V5cy1pbmRleGVkLW5vbi1jYWNoZS5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWtl
eXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1uYW1lcy5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG5vSW5saW5lKToKKwogMjAxOC0xMi0x
NCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbEZyYW1lOjpj
b252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUoKSBuZWVkcyB0byBrZWVwIHRoZSB0b3AgQ29kZUJs
b2NrIGFsaXZlLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2FjaGVk
LXplcm8uanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jYWNoZWQtemVyby5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mN2NjOTZhZmFjZmE4NDhiMTAzMGQ2MzFiNjUzOTE1N2Q3MDdiOTY1Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2FjaGVkLXplcm8uanMKQEAg
LTAsMCArMSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2Jq
ZWN0ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3Vs
dCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBz
aG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0gaTsKKyAgICBz
aG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIGkpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC1hdHRyaWJ1
dGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWF0dHJpYnV0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jM2YxNDNlYzI3ZjAwMjA1OWFlNDE3MjU2OWY5Yjc0M2MxM2JkMWE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC1hdHRyaWJ1
dGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOwor
Cit2YXIgb2JqZWN0ID0geyBDb2NvYTogNDIgfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyAr
K2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3Vs
dC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0NvY29hJyk7Cit9CisKK1Jl
ZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnQ29jb2EnLCB7CisgICAgZW51bWVyYWJsZTog
ZmFsc2UKK30pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJl
c3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAg
ICBzaG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWluZGV4LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWtleXMtY2hhbmdlZC1pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjNlMDkyNTdiMjlkYTQ1NGJk
ZjZmM2ZkNzNiYTNiYTZiM2Y3NDc5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWtleXMtY2hhbmdlZC1pbmRleC5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3Qp
OworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNo
b3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZp
bmVkKTsKKyAgICByZXN1bHRbMF0gPSBpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEp
OworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaSk7Cit9CisKK29iamVjdFswXSA9IDQyOworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVj
dCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0
WzBdLCAnMCcpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hh
bmdlZC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWQzYTMwNTNmYmU2ZDY0ZDkwMjI5N2IwODNkZmE3MjBkYjQ2YzI4MgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQuanMKQEAgLTAsMCArMSwy
OCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0ge307
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qo
b2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBzaG91bGRCZShy
ZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0gaTsKKyAgICBzaG91bGRCZShy
ZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIGkpOworfQorCitvYmpl
Y3QuQ29jb2EgPSA0MjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIg
cmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOwor
ICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0NvY29hJyk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3Qta2V5cy1pbmRleGVkLW5vbi1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L29iamVjdC1rZXlzLWluZGV4ZWQtbm9uLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YzljZjRlZTEx
MmE3ZjMxN2NjNjc5MDEzMWMwMGY0Yjg3MGQ2OGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3Qta2V5cy1pbmRleGVkLW5vbi1jYWNoZS5qcwpAQCAtMCwwICsxLDI1IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3Qu
a2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7MDogNDJ9
OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0
KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUo
cmVzdWx0WzBdLCAnMCcpOworfQorb2JqZWN0WzFdID0gNDQ7Citmb3IgKHZhciBpID0gMDsgaSA8
IDFlMzsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRC
ZShyZXN1bHQubGVuZ3RoLCAyKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICcwJyk7CisgICAg
c2hvdWxkQmUocmVzdWx0WzFdLCAnMScpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWtleXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1uYW1lcy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL29iamVjdC1rZXlzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFtZXMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTMwZDhiYjE3ZTkxOThlNTA3YmU3NWM1ZDE5NjFlOTE0YjBiN2ZkYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHkt
bmFtZXMuanMKQEAgLTAsMCArMSw1NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVj
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3Qp
OworCit7CisgICAgbGV0IG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmpl
Y3QpOworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCA1KTsKKyAgICAgICAgc2hvdWxk
QmUocmVzdWx0WzBdLCAnMCcpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sICcxJyk7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgJzInKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0
WzNdLCAnMycpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbNF0sICc0Jyk7CisgICAgfQorCisg
ICAgb2JqZWN0LkNvY29hID0gNDI7CisgICAgbGV0IHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAg
ICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCA2KTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICcw
Jyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzFdLCAnMScpOworICAgIHNob3VsZEJlKHJlc3VsdFsy
XSwgJzInKTsKKyAgICBzaG91bGRCZShyZXN1bHRbM10sICczJyk7CisgICAgc2hvdWxkQmUocmVz
dWx0WzRdLCAnNCcpOworICAgIHNob3VsZEJlKHJlc3VsdFs1XSwgJ0NvY29hJyk7Cit9CisKK3sK
KyAgICBsZXQgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVjdCk7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDUpOworICAgICAgICBzaG91bGRCZShyZXN1
bHRbMF0sICcwJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0WzJdLCAnMicpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sICcz
Jyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFs0XSwgJzQnKTsKKyAgICB9CisKKyAgICBvYmpl
Y3RbOF0gPSA0MjsKKyAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJl
KHJlc3VsdC5sZW5ndGgsIDYpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICBz
aG91bGRCZShyZXN1bHRbMV0sICcxJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAnMicpOwor
ICAgIHNob3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNF0sICc0
Jyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzVdLCAnOCcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357412</attachid>
            <date>2018-12-15 21:15:39 -0800</date>
            <delta_ts>2018-12-16 21:04:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190047-20181216141538.patch</filename>
            <type>text/plain</type>
            <size>57605</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YWU3MmMwN2UwMGEyMjVkOTAwYzkxYjRmMTYyZjJhODIyODcxZjIyLi5iMzJhZDBiYTZiYjgzMGI0
NWNjM2Y0MjZhODcxNjE4NjVhNGVhZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMTItMTUgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3Qua2V5cyBieSBjYWNo
aW5nIG93biBrZXlzIHJlc3VsdHMgaW4gU3RydWN0dXJlUmFyZURhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9iamVjdC5rZXlzIGlzIG9uZSBvZiB0
aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgZnVuY3Rpb24gaW4gd2ViLXRvb2xpbmctYmVuY2htYXJr
cyAoV1RCKS4KKyAgICAgICAgT2JqZWN0LmtleXMgaXMgZG9taW5hbnQgaW4gbGViYWIgb2YgV1RC
LCBhbmQgZnJlcXVlbnRseSBjYWxsZWQgaW4gYmFiZWwgYW5kIG90aGVycy4KKyAgICAgICAgU2lu
Y2Ugb3VyIFN0cnVjdHVyZSBrbm93cyB0aGUgc2hhcGUgb2YgSlNPYmplY3QsIHdlIGNhbiBjYWNo
ZSB0aGUgcmVzdWx0IG9mIE9iamVjdC5rZXlzCisgICAgICAgIGluIFN0cnVjdHVyZSAoU3RydWN0
dXJlUmFyZURhdGEpIGFzIHdlIGNhY2hlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciBpbiBTdHJ1
Y3R1cmVSYXJlRGF0YS4KKworICAgICAgICBUaGlzIHBhdGNoIGNhY2hlcyB0aGUgcmVzdWx0IG9m
IE9iamVjdC5rZXlzIGluIFN0cnVjdHVyZVJhcmVEYXRhLiBUaGUgY2FjaGVkIGFycmF5IGlzIGNy
ZWF0ZWQKKyAgICAgICAgYXMgSlNJbW11dGFibGVCdXR0ZXJmbHkuIEFuZCBPYmplY3Qua2V5cyBj
cmVhdGVzIENvVyBmcm9tIHRoaXMgZGF0YS4gQ3VycmVudGx5LCB0aGUgbGlmZXRpbWUKKyAgICAg
ICAgc3RyYXRlZ3kgb2YgdGhpcyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBpcyB0aGUgc2FtZSB0byBj
YWNoZWQgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLiBJdCBpcworICAgICAgICByZWZlcmVuY2Vk
IGZyb20gU3RydWN0dXJlLCBhbmQgY29sbGVjdGVkIHdoZW4gU3RydWN0dXJlIGlzIGNvbGxlY3Rl
ZC4KKworICAgICAgICBUaGlzIGltcHJvdmVzIHNldmVyYWwgYmVuY2htYXJrcyBpbiBTaXhTcGVl
ZC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAg
ICAgICAgICAgICAgICAgcGF0Y2hlZAorCisgICAgICAgICAgICBvYmplY3QtYXNzaWduLmVzNSAg
ICAgIDM1MC4xNzEwKy0zLjYzMDMgICAgIF4gICAgMjI2LjAzNjgrLTQuNzU1OCAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuNTQ5MnggZmFzdGVyCisgICAgICAgICAgICBmb3Itb2Ytb2JqZWN0LmVzNiAg
ICAgIDI2OS4xOTQxKy0zLjM0MzAgICAgIF4gICAgMTI3LjkzMTcrLTIuMzg3NSAgICAgICAgXiBk
ZWZpbml0ZWx5IDIuMTA0MnggZmFzdGVyCisKKyAgICAgICAgQW5kIGl0IGltcHJvdmVzIFdUQiBs
ZWJhYiBieSAxMS44JS4KKworICAgICAgICAgICAgQmVmb3JlOiBsZWJhYjogIDYuMTAgcnVucy9z
CisgICAgICAgICAgICBBZnRlcjogIGxlYmFiOiAgNi44MiBydW5zL3MKKworICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Ns
b2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBk
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0
YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252
ZXJ0VG9OZXdBcnJheUJ1ZmZlcik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdEtleXMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RLZXlzKToKKyAgICAgICAgKiBydW50aW1lL0J1dHRl
cmZseS5oOgorICAgICAgICAoSlNDOjpDb250aWd1b3VzRGF0YTo6RGF0YTo6c2V0U3RhcnRpbmdW
YWx1ZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjpp
bnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJbW11dGFi
bGVCdXR0ZXJmbHk6OkpTSW1tdXRhYmxlQnV0dGVyZmx5KToKKyAgICAgICAgV2Ugc2V0IEpTRW1w
dHkgdG8gdGhlIHVuZGVybHlpbmcgYnV0dGVyZmx5IHN0b3JhZ2UgaWYgaW5kZXhpbmcgdHlwZSBp
cyBDb250aWd1b3VzLgorICAgICAgICBPdGhlcndpc2UsIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGlz
IGhhbGYtYmFrZWQgb25lIHVudGlsIGFsbCB0aGUgc3RvcmFnZSBpcyBmaWxsZWQgd2l0aCBzb21l
IG1lYW5pbmdmdWwgdmFsdWVzLCBpdCBsZWFkcyB0byBjcmFzaAorICAgICAgICBpZiBoYWxmLWJh
a2VkIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGlzIGV4cG9zZWQgdG8gR0MuCisgICAgICAgICogcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om93blByb3BlcnR5S2V5
cyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvciBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZXRDYWNoZWRPd25LZXlzKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpjYWNoZWRPd25LZXlzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCBjb25zdCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Y2FuQ2FjaGVPd25LZXlzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVk
UHJvcGVydHlOYW1lRW51bWVyYXRvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmg6CisgICAgICAgICogcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
UmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNJZ25vcmluZ1Nl
bnRpbmVsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93
bktleXNDb25jdXJyZW50bHkgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0Q2FjaGVkT3duS2V5cyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpw
cmV2aW91c0lEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKwogMjAxOC0xMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIHdhcm5pbmctaWdub3JpbmcgbWFjcm9zIG1vcmUgY29u
c2lzdGVudGx5IGFuZCBzaW1wbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA1ZjVlY2NjMzMwYzIy
YmU4YmQ5MWUxYjRjZDdiNzU5NzE0YTBkZDY3Li42OWRkMDNkZDFiNWZiMDRhNGU5NWQwNTg3OTcz
ZDgyMDA5ZjRmZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRl
ICJTdHJpbmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIK
ICNpbmNsdWRlIDx3dGYvQm9vbGVhbkxhdHRpY2UuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KIApAQCAtMjU4MCw2ICsyNTgxLDMwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5czogeworICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgeworICAgICAg
ICAgICAgYXV0byYgc3RydWN0dXJlU2V0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1
Y3R1cmU7CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlU2V0LmlzRmluaXRlKCkgJiYgc3RydWN0
dXJlU2V0LnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVTZXQub25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiByYXJlRGF0YSA9IHN0cnVjdHVyZS0+cmFyZURhdGFDb25jdXJyZW50bHko
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSByYXJl
RGF0YS0+Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoaW1tdXRhYmxlQnV0dGVyZmx5ICYmIGltbXV0YWJsZUJ1dHRlcmZseSAhPSBTdHJ1Y3R1cmVS
YXJlRGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRz
KHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
QXJyYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAg
ICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNBcnJheSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgVG9PYmplY3Q6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6
IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IDY0NmIwMmM0YThhODM0ZjgyNWRiNmUxMDVhOGFjMTBjZmQyMjAzN2IuLmQ2ZTM4NDNh
OGQ4MzQ5NDkwMTU0ZTA4Nzc3Mjc0ZjA4NjU1ZjY1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjkyLDYgKzI2OTIsMTUgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisg
ICAgY2FzZSBPYmplY3RLZXlzSW50cmluc2ljOiB7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoT2JqZWN0S2V5
cywgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgY2FzZSBSZWZsZWN0R2V0UHJvdG90
eXBlT2ZJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDg3NDI0MjA3YzQwMTY0ODNiZGJmYjQyMDI5OTBlMmEy
N2VlOTlkNWYuLjI1MGVjMDA0NDNkMTJjMDYzYWE0M2VlZWJkYzQ4YzcwMjk0MTI1YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC02NjgsNiArNjY4LDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2Fz
ZSBJbnN0YW5jZU9mOgogICAgIGNhc2UgU3RyaW5nVmFsdWVPZjoKKyAgICBjYXNlIE9iamVjdEtl
eXM6CiAgICAgICAgIHJlYWQoV29ybGQpOwogICAgICAgICB3cml0ZShIZWFwKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTUyOSw3ICsxNTMwLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgfQogICAgIH0KIAotCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGZiMWY2ZGMyMzFhYmU0NDhk
NWY5MTZjNjM0OGZkMWYxMzdmYmEwMjMuLjhkMGE0Mjg5NGU0MTM2N2EyZWUwNzJlYTgyZTUyMDBi
N2JkMTc4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03NjYsNiArNzY2LDI2IEBAIGNsYXNzIENvbnN0YW50
Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byYgc3RydWN0dXJlU2V0ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3N0cnVjdHVyZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVy
ZVNldC5pc0Zpbml0ZSgpICYmIHN0cnVjdHVyZVNldC5zaXplKCkgPT0gMSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVT
ZXQub25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHJh
cmVEYXRhID0gc3RydWN0dXJlLT5yYXJlRGF0YUNvbmN1cnJlbnRseSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gcmFyZURhdGEtPmNh
Y2hlZE93bktleXNDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaW1tdXRhYmxlQnV0dGVyZmx5ICYmIGltbXV0YWJsZUJ1dHRlcmZseSAhPSBTdHJ1Y3R1cmVS
YXJlRGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2lu
dChub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvTmV3QXJyYXlCdWZmZXIobV9ncmFwaC5mcmVlemUoaW1tdXRhYmxlQnV0dGVyZmx5KSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBjYXNlIFRvTnVtYmVyOiB7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNCeXRlY29kZU51bWJlcikKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5k
ZXggODlmYjMyNThkZTY2NjhmNmQ3ZmJkMTliZTQ3ODdlNGMzYWFiNzk4MS4uZGY3NDkzMGJkYmIz
ODY0YWQ5NDRiYzQ3MjA3MTJmZTBmMzk0N2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcApAQCAtMzM5LDYgKzMzOSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAg
ICAgY2FzZSBPYmplY3RDcmVhdGU6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAppbmRleCAzNWI2MTE4NjNiYmJkNmE4M2IyNWIyNjE0ZWVmOTEyZGRlOWM3Mjcx
Li5hMmVlZmE1YWIwYmMxMGZjNTBkNDM5NjEyZWIyMWNjMThmN2UwYzIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE1OTUsNiArMTU5NSwxNCBA
QCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICAg
ICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE9i
amVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6IHsKICAgICAg
ICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZGQ5Njdj
OGFkMjM3MjBjODg1NjY3NTg3MzUwNmU1MmQxNTBmYjc3MS4uM2QxYzNiYTEzNzYyMWUzYjJmMDM0
MTViYjkxZDE0MTIzNjNjZTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKQEAgLTIyMyw2ICsyMjQsMTcgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9MYXp5SlNDb25z
dGFudChHcmFwaCYgZ3JhcGgsIExhenlKU1ZhbHVlIHZhbHVlKQogICAgIGNoaWxkcmVuLnJlc2V0
KCk7CiB9CiAKK3ZvaWQgTm9kZTo6Y29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUq
IGltbXV0YWJsZUJ1dHRlcmZseSkKK3sKKyAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhOZXdBcnJh
eUJ1ZmZlcik7CisgICAgTmV3QXJyYXlCdWZmZXJEYXRhIGRhdGEgeyB9OworICAgIGRhdGEuaW5k
ZXhpbmdNb2RlID0gaW1tdXRhYmxlQnV0dGVyZmx5LT5jYXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5
Kj4oKS0+aW5kZXhpbmdNb2RlKCk7CisgICAgZGF0YS52ZWN0b3JMZW5ndGhIaW50ID0gaW1tdXRh
YmxlQnV0dGVyZmx5LT5jYXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKS0+dG9CdXR0ZXJmbHko
KS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgY2hpbGRyZW4ucmVzZXQoKTsKKyAgICBtX29wSW5mbyA9
IGltbXV0YWJsZUJ1dHRlcmZseTsKKyAgICBtX29wSW5mbzIgPSBkYXRhLmFzUXVhZFdvcmQ7Cit9
CisKIHZvaWQgTm9kZTo6Y29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5WYWx1ZSogZXhlY3V0YWJs
ZSkKIHsKICAgICBOb2RlVHlwZSBuZXdPcCA9IExhc3ROb2RlVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKaW5kZXggZDNmNzNhOGMyODRkYmQ3MDNmMjJlNmZmY2VlYTA5ODZmMzcz
NDliMi4uYjgwMTQ3NTVjN2JjYjUwOTE0ZWQzOWQ2MWE1M2Q5NGFjYTg2MDIxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTc2MSw2ICs3NjEsOCBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIG1fb3BJbmZvID0gc3RydWN0dXJlOwogICAgICAgICBtX29wSW5mbzIgPSBPcElu
Zm9XcmFwcGVyKCk7CiAgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9OZXdBcnJheUJ1ZmZlcihG
cm96ZW5WYWx1ZSogaW1tdXRhYmxlQnV0dGVyZmx5KTsKICAgICAKICAgICB2b2lkIGNvbnZlcnRU
b0RpcmVjdENhbGwoRnJvemVuVmFsdWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCmluZGV4IDRjZmFmZTdkYjM2OGE2ZDQxMzkzYjg1NjU0YTYyMjhmMzJiN2I3Nzcu
LmRjMmYzZTE2YjgzMmFhYzBhZjdmMGFkNjNjNGM4ZTI4MWRjYmEzNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2NSw2ICsyNjUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUGFyc2VJbnQsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRQcm90b3R5cGVPZiwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE9iamVjdENyZWF0ZSwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE9iamVjdEtleXMsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogQXRvbWljcyBvYmpl
Y3QgZnVuY3Rpb25zLiAqL1wKICAgICBtYWNybyhBdG9taWNzQWRkLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGI3NWZjZGZiOTc1ZDkxZWNhMmUzOGZkZmM2
ZWQwNWRiMGM3Y2JjM2IuLjBiMjZjMmQxNjJjN2YyNGNmYWNlYmMzYTc5NTE2YzQ5ZDczMjE0NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjQ4
LDYgKzI0OCwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhp
c1N0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpKTsKIH0KIAorSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2JqZWN0
KGV4ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIHNj
b3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gb3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVk
ZSk7Cit9CisKK0pTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgcmV0dXJuIG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6
OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpOworfQorCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvdHlwZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAzMTVmZDZh
ZGM1MjcxZDMyZTJiNTgxN2E4MGZiMDI4MTljYmJmMjgzLi4zOGMxMTZhNTRmOTFhNjE1YjgxYzE1
MTEyMTQ4ZjI1Zjk0YWRiMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaApAQCAtNDMsNiArNDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQoRXhlY1N0YXRlKiwgRW5jbwogLy8gVGhl
c2Ugcm91dGluZXMgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMg
b2Ygb3BlcmF0aW9ucyB0b28gY29tcGxleCB0byBKSVQuCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZf
SU5URVJOQUw7CitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK0pTQXJyYXkqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdChFeGVjU3RhdGUqLCBKU09iamVjdCopIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhp
cyhFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIHVpbnQzMl90IGlubGluZUNhcGFj
aXR5KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGNmMjU1N2QxY2Ey
ZjdjYjNkMzlmMGRjMWIxMTM5NDkzODg3MjJmMTcuLmIzYzY5YmNmMTI0NzI3YmZjYzY3NmIyYWZh
ZGFiNWE4OGMyMmY5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODQsNyArOTg0LDgg
QEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICBjYXNlIE5ld0FycmF5OgogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAg
ICAgIGNhc2UgQ3JlYXRlUmVzdDoKLSAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjogeworICAg
ICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgICAgICBjYXNlIE9iamVjdEtleXM6IHsKICAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0FycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CmluZGV4IGQxOWVlOGUxYmZjZGZiZmM5MWNiZThmYTBiMzQ1MTQ2YzZmMTFiZDMuLmYxMDY5ODJh
ZTM5ZmYzYmNjMzZjZmI1YWVlMGQ3MTZjMDdlOTQzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xNzgsNiArMTc4LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBib29sIGlnbm8KICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAg
ICAgY2FzZSBPYmplY3RDcmVhdGU6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgR2V0
Q2FsbGVlOgogICAgIGNhc2UgU2V0Q2FsbGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IGZlM2Q2ODYyZTJmNDBhYjdkNzRmYmI2YmI2NWJhZjg1MzM0NTljNDcu
LjgzYjdlZTFiMDNmYTcyZGQ2NDBlNzBiN2FjNzc1MjNmMjQxMTE1YzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMjM2NSw2ICsx
MjM2NSw5NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUp
CiAgICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICBp
ZiAobV9ncmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpKSB7Cisg
ICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvYmplY3QodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2gyKHRoaXMpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gzKHRoaXMp
OworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICAgICAg
R1BSUmVnIG9iamVjdEdQUiA9IG9iamVjdC5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzdHJ1
Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3Jh
dGNoMi5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoM0dQUiA9IHNjcmF0Y2gzLmdw
cigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAg
ICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIpOworCisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICAgICAgICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKCptX2ppdC52bSgpLCBvYmplY3RHUFIsIHN0cnVjdHVy
ZUdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaEdQUikpOworICAgICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFs
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKGJpdHdpc2VfY2FzdDxpbnQzMl90PihtX2ppdC52bSgpLT5z
dHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSkpOworCisgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmVSYXJl
RGF0YTo6b2Zmc2V0T2ZDYWNoZWRPd25LZXlzKCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAgICAg
ICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hl
ZE93bktleXNTZW50aW5lbCgpKSA9PSAxKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QmVsb3dPckVxdWFsLCBzY3JhdGNoR1BSLCBU
cnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hl
ZE93bktleXNTZW50aW5lbCgpKSkpKTsKKworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IHNsb3dCdXRBcnJheUJ1ZmZlckNhc2VzOworCisgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlT
dHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKENvcHlPbldyaXRl
QXJyYXlXaXRoQ29udGlndW91cykpOworCisgICAgICAgICAgICBtX2ppdC5tb3ZlKHNjcmF0Y2hH
UFIsIHNjcmF0Y2gzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tUHRy
KEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpvZmZzZXRPZkRhdGEoKSksIHNjcmF0Y2hHUFIpOworCisg
ICAgICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHIoYXJyYXlTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0
Y2gyR1BSLCBzbG93QnV0QXJyYXlCdWZmZXJDYXNlcyk7CisKKyAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93QnV0QXJyYXlCdWZmZXJDYXNlcywgdGhpcywg
b3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdEdQUiwgYXJyYXlTdHJ1Y3R1cmUsIHNjcmF0
Y2gzR1BSKSk7CisKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIHJlc3VsdEdQUiwg
b2JqZWN0R1BSKSk7CisKKyAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgb2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBHUFJSZWcgb2Jq
ZWN0R1BSID0gb2JqZWN0LmdwcigpOworCisgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5j
aGlsZDEoKSwgb2JqZWN0R1BSKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2Jq
ZWN0S2V5c09iamVjdCwgcmVzdWx0R1BSLCBvYmplY3RHUFIpOworICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOworCisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIG9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgSlNW
YWx1ZVJlZ3Mgb2JqZWN0UmVncyA9IG9iamVjdC5qc1ZhbHVlUmVncygpOworCisgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RLZXlzLCByZXN1bHRHUFIsIG9iamVjdFJlZ3MpOwor
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqIG5v
ZGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA0MzhiMTE0Yzlk
ZTY1MDM1ZjA0OWU4ZjNlNWJmNTU1Y2E4Mzk2MzUwLi40ODQ2M2M1Zjc5ZGY0NDY0NTZlMGFhZjc0
NDEwNGZlM2UwMmViZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC0xNDc5LDYgKzE0NzksNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlTmV3VHlwZWRBcnJheShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9UaGlzKE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVPYmplY3RLZXlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmpl
Y3RDcmVhdGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZU5ld09iamVjdChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA5NTJmODkxNThkNGNj
MzBiYzc2OGJlZWY3OWM4ZGI3YjNkZmRmNjU5Li4yMGMwNTNhOTU1M2FjOWUwMTUyMzYwZDc2N2Ix
MmM0YWJjNzNmYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMxNjcsNiArMzE2NywxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICBjb21waWxlT2JqZWN0S2V5cyhub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDcmVhdGVUaGlzOiB7CiAgICAgICAg
IGNvbXBpbGVDcmVhdGVUaGlzKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDE4YWU3ZDgx
YmE5MmFlMWRiZDRjODUyZWIwODRmOTc3OGY2NmQwZmIuLjhjM2ExZWVlZjYxYzVlY2U2NjA0NjBj
NWExM2IzZDAxNDZmNjFkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzQwOSw2ICszNDA5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIENyZWF0ZVRoaXM6IHsKICAgICAgICAg
Y29tcGlsZUNyZWF0ZVRoaXMobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCBi
YmQ0NzEzMmZlYzdiY2ZjZDNiNmUyYzU4NDE0ZWFhODRiYzg1MjFmLi45ZjNhYTJmZTdkYzNlY2Zl
YjBjODcwYjgxYTg3Y2JjMTFmMjg4MDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtMTE2LDggKzExNiwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJlX2ds
b2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1hY3Jv
KFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4
aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9p
bmxpbmVDYXBhY2l0eSwgU3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCisgICAg
bWFjcm8oU3RydWN0dXJlX3ByZXZpb3VzT3JSYXJlRGF0YSwgU3RydWN0dXJlOjpwcmV2aW91c09y
UmFyZURhdGFPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVj
dHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJl
SUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVy
ZVJhcmVEYXRhX2NhY2hlZE93bktleXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hl
ZE93bktleXMoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2NhcGFjaXR5LCBIYXNoTWFwSW1w
bDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQ2FwYWNpdHko
KSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1ZmZlciwgIEhhc2hNYXBJbXBsPEhhc2hNYXBC
dWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZCdWZmZXIoKSkgXAogICAgIG1h
Y3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBC
dWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggMGY2Y2VlYmI1NTUzZGZhOGEwYzAwYzMy
NjRiOTY1OTE0NzliYTdkMS4uMjNjOTM5NmY0ZDY5ZTA0ZjZmMGNiNWY0OTFiYTA0ZTZjY2ZhZDEw
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMjAxLDYgKzIwMSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOgogICAgIGNhc2UgQ2FsbFN0
cmluZ0NvbnN0cnVjdG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgorICAgIGNhc2UgT2JqZWN0
S2V5czoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAg
ICBjYXNlIFRyeUdldEJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggMTg1ODc2YjgzNzE2ZGJmMzUyNjI5ZWFkZmI2MTg0NjU4ZGQwZjNl
OC4uYjMwYTBhMGZkZDUyODZkNWZmMDdhNzc0N2M5YWU4NWU0ZTUwYmVlMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtODY2LDYgKzg2Niw5
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAg
ICAgICAgICAgY29tcGlsZU9iamVjdENyZWF0ZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgT2JqZWN0S2V5czoKKyAgICAgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBj
b21waWxlTmV3T2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0OTcsNiArNTUwMCw3
MiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRJbnQzMihtX291dC5waGkoSW50
MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblplcm9MZW5ndGhSZXN1bHQpKTsKICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVPYmplY3RLZXlzKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBPYmplY3RVc2U6IHsKKyAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobV9u
b2RlKSkgeworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayByYXJlRGF0YUNhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHVzZUNhY2hlQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0J1
dEFycmF5QnVmZmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJh
c2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgb2JqZWN0ID0gbG93T2JqZWN0KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKG9iamVjdCk7CisgICAg
ICAgICAgICAgICAgTFZhbHVlIHByZXZpb3VzT3JSYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoc3Ry
dWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEpOworICAgICAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHByZXZpb3VzT3JSYXJlRGF0YSksIHVu
c3VyZShub3ROdWxsQ2FzZSksIHVuc3VyZShzbG93Q2FzZSkpOworCisgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3ROdWxsQ2FzZSwgcmFyZURh
dGFDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0Lm5vdEVxdWFsKG1fb3V0LmxvYWQzMihwcmV2aW91c09yUmFyZURhdGEsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwgbV9vdXQuY29uc3RJbnQzMihtX2dyYXBoLm1fdm0uc3Ry
dWN0dXJlU3RydWN0dXJlLT5zdHJ1Y3R1cmVJRCgpKSksCisgICAgICAgICAgICAgICAgICAgIHVu
c3VyZShyYXJlRGF0YUNhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKworICAgICAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHJhcmVEYXRhQ2FzZSwgdXNlQ2FjaGVDYXNlKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dWludHB0cl90PihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2Fj
aGVkT3duS2V5c1NlbnRpbmVsKCkpID09IDEpOworICAgICAgICAgICAgICAgIExWYWx1ZSBjYWNo
ZWRPd25LZXlzID0gbV9vdXQubG9hZFB0cihwcmV2aW91c09yUmFyZURhdGEsIG1faGVhcHMuU3Ry
dWN0dXJlUmFyZURhdGFfY2FjaGVkT3duS2V5cyk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKG1fb3V0LmJlbG93T3JFcXVhbChjYWNoZWRPd25LZXlzLCBtX291dC5jb25zdEludFB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzU2VudGlu
ZWwoKSkpKSwgdW5zdXJlKHNsb3dDYXNlKSwgdW5zdXJlKHVzZUNhY2hlQ2FzZSkpOworCisgICAg
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8odXNlQ2FjaGVDYXNlLCBzbG93QnV0QXJyYXlCdWZm
ZXJDYXNlKTsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAg
ICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykpOworICAg
ICAgICAgICAgICAgIExWYWx1ZSBmYXN0QXJyYXkgPSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5Pihh
cnJheVN0cnVjdHVyZSwgbV9vdXQuYWRkUHRyKGNhY2hlZE93bktleXMsIEpTSW1tdXRhYmxlQnV0
dGVyZmx5OjpvZmZzZXRPZkRhdGEoKSksIHNsb3dCdXRBcnJheUJ1ZmZlckNhc2UpOworICAgICAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdEFy
cmF5KTsKKyAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93QnV0QXJyYXlCdWZmZXJDYXNlLCBzbG93Q2Fz
ZSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dBcnJheSA9IHZtQ2FsbChJbnQ2NCwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsIHdlYWtT
dHJ1Y3R1cmUoYXJyYXlTdHJ1Y3R1cmUpLCBjYWNoZWRPd25LZXlzKTsKKyAgICAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93QnV0QXJyYXlCdWZmZXJSZXN1bHQgPSBtX291dC5hbmNob3Io
c2xvd0FycmF5KTsKKyAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisK
KyAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsK
KyAgICAgICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgICAgICAgICAgICAgIExW
YWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAg
IFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxM
YXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9j
YXRpb25zWzFdLmRpcmVjdEdQUigpKTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7CisgICAgICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd0J1dEFycmF5QnVmZmVyUmVz
dWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk9iamVjdEtleXNPYmplY3QpLCBtX2NhbGxGcmFtZSwgbG93T2JqZWN0KG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IFVudHlwZWRVc2U6CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEtleXMpLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUo
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHkuaAppbmRleCA0M2E5YmU0YTdm
MWRhNWRiMThlZTMyODViOWFlYTU4OGQ5MjZjZGYwLi41MGZmOGYwOGZkOTdmY2NkOGFiOGIwZjQz
M2U1OWZiYmY5YTNjMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CdXR0ZXJmbHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJm
bHkuaApAQCAtODUsNiArODUsMTEgQEAgc3RydWN0IENvbnRpZ3VvdXNEYXRhIHsKICAgICAgICAg
ICAgIG1fZGF0YS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlKTsKICAgICAgICAgfQogCisg
ICAgICAgIHZvaWQgc2V0U3RhcnRpbmdWYWx1ZShKU1ZhbHVlIHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2RhdGEuc2V0U3RhcnRpbmdWYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0KKwog
ICAgICAgICB2b2lkIGNsZWFyKCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faXNX
cml0YWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApp
bmRleCBhYmU2ZjE3Mjg2ZTNiZTM5MWUwYzM3NGMxZjZjNTc0YzViZDg2N2ZiLi5mYmM0ZWYzY2Q4
ZjJlYzYyZGE5MzAwZGEyNzFiMTAyMzM5NzQzNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTExOSw2ICsxMTksOCBAQCBjb25zdCBjaGFyKiBp
bnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAiT2JqZWN0
R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOwogICAgIGNhc2UgT2JqZWN0SXNJbnRyaW5zaWM6CiAg
ICAgICAgIHJldHVybiAiT2JqZWN0SXNJbnRyaW5zaWMiOworICAgIGNhc2UgT2JqZWN0S2V5c0lu
dHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJPYmplY3RLZXlzSW50cmluc2ljIjsKICAgICBjYXNl
IFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJSZWZsZWN0
R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOwogICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlVmFsdWVP
ZkludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5k
ZXggY2ZiZDE4NDk2MzUyYmI5ZDRlMjZhMDJjNTY5M2I4YzQ2MDAxOTAyNS4uYjQ3ZjQ2ZDllNGRl
MDAxM2RlODM0NmU4MmU2ODE2ZjVmZDAyZjc0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgKQEAgLTcyLDYgKzcyLDcgQEAgZW51bSBJbnRyaW5zaWMgewogICAg
IE9iamVjdENyZWF0ZUludHJpbnNpYywKICAgICBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNp
YywKICAgICBPYmplY3RJc0ludHJpbnNpYywKKyAgICBPYmplY3RLZXlzSW50cmluc2ljLAogICAg
IFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywKICAgICBTdHJpbmdQcm90b3R5cGVWYWx1
ZU9mSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZs
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHku
aAppbmRleCAyODQ3ODNjMGM3NTU5NmFkZGE1YTFmOThmMzZiMDY5ZTBlYjhlNGExLi40YWMyYTZj
NGU0YjVkYTNjY2FkNWQ0NDgzMjhmNTJhYzY3ZjY5Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKQEAgLTEyMCw2ICsx
MjAsMTAgQEAgY2xhc3MgSlNJbW11dGFibGVCdXR0ZXJmbHkgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB7CiAgICAgICAgIG1faGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOwogICAgICAgICBt
X2hlYWRlci5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsKKyAgICAgICAgaWYgKGhhc0NvbnRpZ3Vv
dXMoaW5kZXhpbmdUeXBlKCkpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgdG9CdXR0ZXJmbHko
KS0+Y29udGlndW91cygpLmF0KHRoaXMsIGluZGV4KS5zZXRTdGFydGluZ1ZhbHVlKEpTVmFsdWUo
KSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBJbmRleGluZ0hlYWRlciBtX2hlYWRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAppbmRleCA5MGEzNmE5MzU1NzhmMmI4ZTMxMzExM2QyOWQ5MGJhOWQ0NjZhOTQ1Li43YmNmYWFh
M2JlY2E4OGIxNWRlZTNlZmIzZTI4ZTYwNzBjYjg5NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU0ltbXV0
YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgpAQCAtNzMsNyArNzQs
NyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Jz
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyAgRG9udEVudW18RnVu
Y3Rpb24gMQogICBnZXRPd25Qcm9wZXJ0eU5hbWVzICAgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlOYW1lcyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBnZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQotICBrZXlzICAgICAgICAgICAgICAgICAgICAgIG9iamVj
dENvbnN0cnVjdG9yS2V5cyAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICBrZXlzICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yS2V5cyAgICAg
ICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBPYmplY3RLZXlzSW50cmluc2lj
CiAgIGRlZmluZVByb3BlcnR5ICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9w
ZXJ0eSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgIGRlZmluZVByb3BlcnRpZXMg
ICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCiAgIGNyZWF0ZSAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3Ry
dWN0b3JDcmVhdGUgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyIE9iamVj
dENyZWF0ZUludHJpbnNpYwpAQCAtMjcxLDcgKzI3Miw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRXhlY1N0YXRl
KiBlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJv
cGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKIH0KIAotLy8gRklYTUU6IFVzZSB0aGUgZW51
bWVyYXRpb24gY2FjaGUuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
QEAgLTg5MiwxMSArODkyLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JJcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oc2FtZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1
bWVudCgxKSkpKTsKIH0KIAotLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCiBK
U0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0
LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01v
ZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBib29sIGlzT2Jq
ZWN0S2V5cyA9IHByb3BlcnR5TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyAm
JiBkb250RW51bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1
ZGU7CisgICAgLy8gV2UgYXR0ZW1wdCB0byBsb29rIHVwIG93biBwcm9wZXJ0eSBrZXlzIGNhY2hl
IGluIE9iamVjdC5rZXlzIGNhc2UuCisgICAgaWYgKGlzT2JqZWN0S2V5cykgeworICAgICAgICBp
ZiAoTElLRUxZKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSkt
PmNhY2hlZE93bktleXMoKSkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGUoaW1tdXRhYmxlQnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIG51bGxwdHIsIGFycmF5U3Ry
dWN0dXJlLCBpbW11dGFibGVCdXR0ZXJmbHktPnRvQnV0dGVyZmx5KCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcygm
dm0sIHByb3BlcnR5TmFtZU1vZGUsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMs
IHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShkb250RW51bVByb3BlcnRpZXNNb2RlKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CkBAIC05MTgsOCArOTMwLDMx
IEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
YmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvCiAgICAgaWYgKHByb3BlcnR5TmFtZU1vZGUgIT0g
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpIHsKICAgICAgICAgQVNTRVJUKHBy
b3BlcnR5TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyB8fCBwcm9wZXJ0eU5h
bWVNb2RlID09IFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMpOwogICAgICAgICBpZiAoIW11c3RG
aWx0ZXJQcm9wZXJ0eSAmJiBwcm9wZXJ0aWVzLnNpemUoKSA8IE1JTl9TUEFSU0VfQVJSQVlfSU5E
RVgpIHsKLSAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIWdsb2JhbE9iamVjdC0+aXNIYXZp
bmdBQmFkVGltZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChpc09iamVjdEtleXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hlT3duS2V5
cygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBjYWNoZWRCdXR0ZXJmbHkgPSBz
dHJ1Y3R1cmUtPmNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY2FjaGVkQnV0dGVyZmx5ID09IFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNo
ZWRPd25LZXlzU2VudGluZWwoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENh
Y2hlIHRoZSBpbW11dGFibGUgYnV0dGVyZmx5IQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byogbmV3QnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6
OmNyZWF0ZSh2bSwgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzLCBudW1Qcm9wZXJ0aWVz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bVByb3BlcnRpZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBhdXRvJiBpZGVudGlmaWVyID0gcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFpZGVudGlmaWVyLmlzU3ltYm9sKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuZXdCdXR0ZXJmbHktPnNldEluZGV4KHZtLCBpLCBqc093bmVk
U3RyaW5nKCZ2bSwgaWRlbnRpZmllci5zdHJpbmcoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q2Fj
aGVkT3duS2V5cyh2bSwgbmV3QnV0dGVyZmx5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKG5ld0J1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpjcmVhdGVXaXRoQnV0
dGVyZmx5KHZtLCBudWxscHRyLCBhcnJheVN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5LT50b0J1dHRl
cmZseSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q2FjaGVkT3duS2V5cyh2bSwgU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0g
cHJvcGVydGllcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgSlNBcnJheSoga2V5cyA9IEpTQXJy
YXk6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpLCBudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAg
ICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGJ1ZmZlciA9IGtleXMtPmJ1dHRlcmZseSgp
LT5jb250aWd1b3VzKCkuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKaW5kZXggNThkODNiY2U0YWZkYWRlODAzZDM4NGJhNzEwZTBhYjlkNmFkMDkx
OC4uMzU0MjgyN2RlM2EyNzA0NTRmZjZjNjM0MDI2ODJmYzA1ODIzNDhiMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMjUyLDE3ICsxMjUyLDcg
QEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFt
ZUVudW1lcmF0b3IoKSBjb25zdAogCiBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKCkgY29uc3QKIHsKLSAgICBhdXRvIGNhbkNhY2hlID0gW10gKGNvbnN0IFN0
cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoaGFzSW5kZXhlZFBy
b3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcygpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9OwotCi0gICAgaWYgKCFjYW5DYWNoZSh0aGlzKSkKKyAgICBpZiAoIXRoaXMt
PmNhbkNhY2hlT3duS2V5cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTdHJ1Y3R1
cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4gPSBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpOwpA
QCAtMTI3MSw3ICsxMjYxLDcgQEAgYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlUHJvcGVydHlOYW1l
RW51bWVyYXRvcigpIGNvbnN0CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghY2Fu
Q2FjaGUoc3RydWN0dXJlLT5nZXQoKSkpCisgICAgICAgIGlmICghc3RydWN0dXJlLT5nZXQoKS0+
Y2FuQ2FjaGVPd25LZXlzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHN0
cnVjdHVyZSsrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKaW5kZXggOGRlZDgyNWJmYmE5M2E4NTA5MGI2MTQ4YzBmNTBkYTE5ZGZhYzliNy4uZjUwM2I3
ZDRmMjJmYjE5ODYyMjQ1YjNmNmU1ZGEwYWZkYTUwYjEyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJQdXRQ
cm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJREJsb2IuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVSYXJlRGF0YS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgogI2luY2x1ZGUgIkpTVHlw
ZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCkBAIC0zMjYsNiArMzI1LDE0IEBAIGNs
YXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlUmFyZURhdGEqPihtX3ByZXZpb3VzT3JSYXJlRGF0YS5n
ZXQoKSk7CiAgICAgfQogCisgICAgY29uc3QgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhQ29u
Y3VycmVudGx5KCkgY29uc3QKKyAgICB7CisgICAgICAgIEpTQ2VsbCogY2VsbCA9IG1fcHJldmlv
dXNPclJhcmVEYXRhLmdldCgpOworICAgICAgICBpZiAoaXNSYXJlRGF0YShjZWxsKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVSYXJlRGF0YSo+KGNlbGwpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YSogZW5z
dXJlUmFyZURhdGEoVk0mIHZtKQogICAgIHsKICAgICAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQpA
QCAtNDcyLDYgKzQ3OSwxMSBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBib29sIGNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OwogICAg
IGJvb2wgY2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHlGb3JFbnVtZXJhdGlvbigpIGNvbnN0Owog
CisgICAgdm9pZCBzZXRDYWNoZWRPd25LZXlzKFZNJiwgSlNJbW11dGFibGVCdXR0ZXJmbHkqKTsK
KyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5cygpIGNvbnN0OworICAgIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpIGNvbnN0
OworICAgIGJvb2wgY2FuQ2FjaGVPd25LZXlzKCkgY29uc3Q7CisKICAgICB2b2lkIGdldFByb3Bl
cnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogCiAgICAgSlNTdHJpbmcqIG9iamVjdFRvU3RyaW5nVmFsdWUoKQpAQCAtNTIwLDYg
KzUzMiwxMSBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1faW5saW5lQ2FwYWNpdHkpOwog
ICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkK
KyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3ByZXZp
b3VzT3JSYXJlRGF0YSk7CisgICAgfQorCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJik7CiAgICAgICAgIAogICAgIGJvb2wgdHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGIzZWIxYjQxZTlmMWM3ODFlOTZmMDIyOTA1
MTAwMGUwNDI3MDVkNWUuLjAyYWY0YTAxNjAzNGM5N2EzMjYyMmI1MWIwNGZjMjk2ZTUyYmQ3NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgKQEAgLTIxOSw2ICsyMTksMzYgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjp0cmFuc2l0aXZl
bHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRDYWNoZWRPd25LZXlzKFZN
JiB2bSwgSlNJbW11dGFibGVCdXR0ZXJmbHkqIG93bktleXMpCit7CisgICAgZW5zdXJlUmFyZURh
dGEodm0pLT5zZXRDYWNoZWRPd25LZXlzKHZtLCBvd25LZXlzKTsKK30KKworaW5saW5lIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMoKSBjb25zdAoreworICAg
IGlmICghaGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IHJhcmVEYXRhKCktPmNhY2hlZE93bktleXMoKTsKK30KKworaW5saW5lIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiBTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsKCkgY29uc3QK
K3sKKyAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiByYXJlRGF0YSgpLT5jYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpOworfQor
CitpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlT3duS2V5cygpIGNvbnN0Cit7CisgICAg
aWYgKGlzRGljdGlvbmFyeSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICh0eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgcHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoIXN0cnVj
dHVyZS0+aXNPYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5kZXggODk4NGNlOTE5NTZhODFkNTFhZDBkNTIzMzYz
MGU2OTllMzZkZWI1My4uZDBmN2JkODBjMWMyN2QzZDk2MTEwYTgyNTA0MjFmNjVlMGE4YTk3MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVE
YXRhLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhLmgi
CiAKICNpbmNsdWRlICJBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
LmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKQEAgLTcwLDE2ICs3MSw4IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3ByZXZpb3VzKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX29iamVjdFRvU3RyaW5nVmFsdWUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik7Ci19Ci0KLUpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1l
cmF0b3IuZ2V0KCk7Ci19Ci0KLXZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFByb3Bl
cnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1l
cmF0b3IpCi17Ci0gICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLnNldCh2bSwgdGhp
cywgZW51bWVyYXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkT3duS2V5cy51bnZh
bGlkYXRlZEdldCgpICE9IGNhY2hlZE93bktleXNTZW50aW5lbCgpKQorICAgICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhY2hlZE93bktleXMpOwogfQogCiAvLyAtLS0tLS0tLS0t
LSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3NlcyAt
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhLmgKaW5kZXggMTFjMTgxZGQ2MWU3ZWI2NzU0ZWJhOTcwNTRiZjEyYTUwM2ZiODhh
Ny4uMzM2NzMyZDExZDg3M2Q0MmYyMGY5OTEwODcxZTI4YzI3MGY2YTg4NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC01OCw3
ICs1OCwxMCBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAKLSAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQo
KSBjb25zdDsKKyAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7CisgICAgfQogICAgIHZvaWQgc2V0UHJldmlvdXNJ
RChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgY2xlYXJQcmV2aW91c0lEKCk7CiAKQEAgLTY4
LDExICs3MSwyMyBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY2FjaGVkUHJvcGVydHlOYW1lRW51
bWVyYXRvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRv
cihWTSYsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopOwogCisgICAgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGNhY2hlZE93bktleXMoKSBjb25zdDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSog
Y2FjaGVkT3duS2V5c0lnbm9yaW5nU2VudGluZWwoKSBjb25zdDsKKyAgICBKU0ltbXV0YWJsZUJ1
dHRlcmZseSogY2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpIGNvbnN0OworICAgIHZvaWQgc2V0
Q2FjaGVkT3duS2V5cyhWTSYsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7CisKICAgICBCb3g8SW5s
aW5lV2F0Y2hwb2ludFNldD4gY29weVNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7
IHJldHVybiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7IH0KICAgICBjb25zdCBCb3g8SW5saW5lV2F0
Y2hwb2ludFNldD4mIHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVybiBt
X3BvbHlQcm90b1dhdGNocG9pbnQ7IH0KICAgICB2b2lkIHNldFNoYXJlZFBvbHlQcm90b1dhdGNo
cG9pbnQoQm94PElubGluZVdhdGNocG9pbnRTZXQ+JiYgc2hhcmVkUG9seVByb3RvV2F0Y2hwb2lu
dCkgeyBtX3BvbHlQcm90b1dhdGNocG9pbnQgPSBXVEZNb3ZlKHNoYXJlZFBvbHlQcm90b1dhdGNo
cG9pbnQpOyB9CiAgICAgYm9vbCBoYXNTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wb2x5UHJvdG9XYXRjaHBvaW50KTsgfQogCisg
ICAgc3RhdGljIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzU2VudGluZWwoKSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKTsgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE93
bktleXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVS
YXJlRGF0YSwgbV9jYWNoZWRPd25LZXlzKTsKKyAgICB9CisKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogCiBwcml2YXRlOgpAQCAtODYsNyArMTAxLDEwIEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVE
YXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3ByZXZpb3VzOwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9vYmplY3RUb1N0cmlu
Z1ZhbHVlOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBzb21lIHN0b3J5IGZvciBjbGVh
cmluZyB0aGVzZSBwcm9wZXJ0eSBuYW1lcyBjYWNoZXMgaW4gR0MuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY1OQogICAgIFdyaXRlQmFycmllcjxK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I+IG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcjsK
KyAgICBXcml0ZUJhcnJpZXI8SlNJbW11dGFibGVCdXR0ZXJmbHk+IG1fY2FjaGVkT3duS2V5czsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxQcm9wZXJ0eU9mZnNldCwgUmVmUHRyPFdhdGNocG9pbnRT
ZXQ+LCBXVEY6OkludEhhc2g8UHJvcGVydHlPZmZzZXQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPFByb3BlcnR5T2Zmc2V0Pj4gUHJvcGVydHlXYXRjaHBvaW50TWFwOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQcm9wZXJ0eVdhdGNocG9pbnRNYXA+IG1fcmVwbGFjZW1lbnRXYXRj
aHBvaW50U2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKaW5kZXggZTRlMjQ5NmE1NjI0ZGRmN2Q5OTdjYzIw
MzJmMDllYTI1MDFkYmE5ZC4uZDgzODcwMjgyY2JmOTY1MmVmZDE5NzE2NGVhNDI1YTQyZjc0NDcx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGFJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmgKQEAgLTI1LDE2ICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVSYXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIFN0cnVjdHVyZSog
U3RydWN0dXJlUmFyZURhdGE6OnByZXZpb3VzSUQoKSBjb25zdAotewotICAgIHJldHVybiBtX3By
ZXZpb3VzLmdldCgpOwotfQotCiBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0UHJl
dmlvdXNJRChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIG1fcHJldmlvdXMu
c2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOwpAQCAtNTAsNCArNDcsNDYgQEAgaW5saW5lIEpTU3Ry
aW5nKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2JqZWN0VG9TdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fb2JqZWN0VG9TdHJpbmdWYWx1ZS5nZXQoKTsKIH0KIAoraW5saW5lIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1l
cmF0b3IuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiB2bSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KiBlbnVtZXJhdG9yKQoreworICAgIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvci5zZXQo
dm0sIHRoaXMsIGVudW1lcmF0b3IpOworfQorCitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkq
IFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgYXV0byogYnV0dGVyZmx5ID0gbV9jYWNoZWRP
d25LZXlzLnVudmFsaWRhdGVkR2V0KCk7CisgICAgaWYgKGJ1dHRlcmZseSA9PSBjYWNoZWRPd25L
ZXlzU2VudGluZWwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGJ1dHRl
cmZseTsKK30KKworaW5saW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0
YTo6Y2FjaGVkT3duS2V5c0lnbm9yaW5nU2VudGluZWwoKSBjb25zdAoreworICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9jYWNoZWRPd25LZXlzLnVudmFs
aWRhdGVkR2V0KCk7Cit9CisKK2lubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJl
UmFyZURhdGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSBjb25zdAoreworICAgIGF1dG8q
IGJ1dHRlcmZseSA9IG1fY2FjaGVkT3duS2V5cy51bnZhbGlkYXRlZEdldCgpOworICAgIGlmIChi
dXR0ZXJmbHkgPT0gY2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBidXR0ZXJmbHk7Cit9CisKK2lubGluZSB2b2lkIFN0cnVjdHVyZVJh
cmVEYXRhOjpzZXRDYWNoZWRPd25LZXlzKFZNJiB2bSwgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1
dHRlcmZseSkKK3sKKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAgIGlmIChidXR0ZXJm
bHkgPT0gY2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpCisgICAgICAgIG1fY2FjaGVkT3duS2V5cy5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKGJ1dHRlcmZseSk7CisgICAgZWxzZQorICAgICAgICBtX2Nh
Y2hlZE93bktleXMuc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1ZDJjNDUyNjcwZjIw
YzYzNDc4Mzg3M2E4NWUyY2U2MzliMjNmNTYyLi4xOTBlNTcxODdkNTNkNGFjOTI0NTljYjQ1NDkw
ZjVhYzI0NDA1YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00MzQs
NiArNDM0LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
IGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CisgICAgbmF0aXZlU3RkRnVuY3Rpb25DZWxsU3RydWN0dXJlLnNldCgqdGhpcywgTmF0
aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgcHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1Db2RlQmxv
Y2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBtb2R1bGVQcm9n
cmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV2YWxDb2RlQmxvY2tT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBFdmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CkBAIC00NDgsNyArNDQ5LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywgSlNT
ZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxNYXBC
dWNrZXQuc2V0KCp0aGlzLCBKU01hcDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMp
KTsKIAotICAgIG5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHNtYWxsU3RyaW5ncy5pbml0aWFsaXplQ29tbW9uU3RyaW5ncygqdGhpcyk7CiAKICAgICBU
aHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRy
eUF0b21pY1N0cmluZ1RhYmxlKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggODJlN2U0OGI0MzhhZjYxZmYzZThmMjUxNjNjZDgwNTY4NGJl
YmQyMC4uMTc2MjNlNWI4ZDQwNzhkYWVkNjhiMjBkNmEwNzdmMTQ0Njg2Y2NhMSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MCBAQAorMjAxOC0xMi0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQu
b3JnPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5rZXlzIGJ5IGNhY2hpbmcgb3du
IGtleXMgcmVzdWx0cyBpbiBTdHJ1Y3R1cmVSYXJlRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWtleXMtY2FjaGVkLXpl
cm8uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogc3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQtYXR0cmlidXRlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmpl
Y3Qta2V5cy1jaGFuZ2VkLWluZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0
cmVzcy9vYmplY3Qta2V5cy1pbmRleGVkLW5vbi1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWtleXMt
b3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1uYW1lcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG5vSW5saW5lKToKKwogMjAxOC0xMi0xNCAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbEZyYW1lOjpjb252
ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUoKSBuZWVkcyB0byBrZWVwIHRoZSB0b3AgQ29kZUJsb2Nr
IGFsaXZlLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2FjaGVkLXpl
cm8uanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jYWNoZWQtemVyby5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mN2NjOTZhZmFjZmE4NDhiMTAzMGQ2MzFiNjUzOTE1N2Q3MDdiOTY1Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2FjaGVkLXplcm8uanMKQEAgLTAs
MCArMSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0
ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9
IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBzaG91
bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0gaTsKKyAgICBzaG91
bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIGkpOworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC1hdHRyaWJ1dGUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWF0dHJpYnV0ZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jM2YxNDNlYzI3ZjAwMjA1OWFlNDE3MjU2OWY5Yjc0M2MxM2JkMWE2Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC1hdHRyaWJ1dGUu
anMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkK
K3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2
YXIgb2JqZWN0ID0geyBDb2NvYTogNDIgfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kp
IHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5s
ZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0NvY29hJyk7Cit9CisKK1JlZmxl
Y3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnQ29jb2EnLCB7CisgICAgZW51bWVyYWJsZTogZmFs
c2UKK30pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3Vs
dCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBz
aG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWluZGV4LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0
LWtleXMtY2hhbmdlZC1pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjNlMDkyNTdiMjlkYTQ1NGJkZjZm
M2ZkNzNiYTNiYTZiM2Y3NDc5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWtleXMtY2hhbmdlZC1pbmRleC5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOwor
fQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3Vs
ZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVk
KTsKKyAgICByZXN1bHRbMF0gPSBpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOwor
ICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaSk7Cit9CisKK29iamVjdFswXSA9IDQyOworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7
CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBd
LCAnMCcpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdl
ZC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWQzYTMwNTNmYmU2ZDY0ZDkwMjI5N2IwODNkZmE3MjBkYjQ2YzI4MgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQuanMKQEAgLTAsMCArMSwyOCBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0ge307Citm
b3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2Jq
ZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBzaG91bGRCZShyZXN1
bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0gaTsKKyAgICBzaG91bGRCZShyZXN1
bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIGkpOworfQorCitvYmplY3Qu
Q29jb2EgPSA0MjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVz
dWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAg
IHNob3VsZEJlKHJlc3VsdFswXSwgJ0NvY29hJyk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9vYmplY3Qta2V5cy1pbmRleGVkLW5vbi1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL29i
amVjdC1rZXlzLWluZGV4ZWQtbm9uLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YzljZjRlZTExMmE3
ZjMxN2NjNjc5MDEzMWMwMGY0Yjg3MGQ2OGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9vYmplY3Qta2V5cy1pbmRleGVkLW5vbi1jYWNoZS5qcwpAQCAtMCwwICsxLDI1IEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3Qua2V5
cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7MDogNDJ9Owor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9i
amVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVz
dWx0WzBdLCAnMCcpOworfQorb2JqZWN0WzFdID0gNDQ7Citmb3IgKHZhciBpID0gMDsgaSA8IDFl
MzsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShy
ZXN1bHQubGVuZ3RoLCAyKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICcwJyk7CisgICAgc2hv
dWxkQmUocmVzdWx0WzFdLCAnMScpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWtleXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1uYW1lcy5qcyBiL0pTVGVzdHMvc3RyZXNz
L29iamVjdC1rZXlzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFtZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTMwZDhiYjE3ZTkxOThlNTA3YmU3NWM1ZDE5NjFlOTE0YjBiN2ZkYwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFt
ZXMuanMKQEAgLTAsMCArMSw1NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOwor
Cit7CisgICAgbGV0IG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3Qp
OworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCA1KTsKKyAgICAgICAgc2hvdWxkQmUo
cmVzdWx0WzBdLCAnMCcpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sICcxJyk7CisgICAg
ICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgJzInKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzNd
LCAnMycpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbNF0sICc0Jyk7CisgICAgfQorCisgICAg
b2JqZWN0LkNvY29hID0gNDI7CisgICAgbGV0IHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBz
aG91bGRCZShyZXN1bHQubGVuZ3RoLCA2KTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICcwJyk7
CisgICAgc2hvdWxkQmUocmVzdWx0WzFdLCAnMScpOworICAgIHNob3VsZEJlKHJlc3VsdFsyXSwg
JzInKTsKKyAgICBzaG91bGRCZShyZXN1bHRbM10sICczJyk7CisgICAgc2hvdWxkQmUocmVzdWx0
WzRdLCAnNCcpOworICAgIHNob3VsZEJlKHJlc3VsdFs1XSwgJ0NvY29hJyk7Cit9CisKK3sKKyAg
ICBsZXQgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlMzsgKytpKSB7CisgICAgICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAg
ICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDUpOworICAgICAgICBzaG91bGRCZShyZXN1bHRb
MF0sICcwJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAgICAgICAgc2hv
dWxkQmUocmVzdWx0WzJdLCAnMicpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sICczJyk7
CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFs0XSwgJzQnKTsKKyAgICB9CisKKyAgICBvYmplY3Rb
OF0gPSA0MjsKKyAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJl
c3VsdC5sZW5ndGgsIDYpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICBzaG91
bGRCZShyZXN1bHRbMV0sICcxJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAnMicpOworICAg
IHNob3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNF0sICc0Jyk7
CisgICAgc2hvdWxkQmUocmVzdWx0WzVdLCAnOCcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357427</attachid>
            <date>2018-12-16 21:05:00 -0800</date>
            <delta_ts>2018-12-17 14:40:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190047-20181217140459.patch</filename>
            <type>text/plain</type>
            <size>57607</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YWU3MmMwN2UwMGEyMjVkOTAwYzkxYjRmMTYyZjJhODIyODcxZjIyLi5kNmRmMDk4NDkwNGUzZmY4
YTU4YTViZWM5ZjBmZGE4NDZjZGQyYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMTItMTYgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3Qua2V5cyBieSBjYWNo
aW5nIG93biBrZXlzIHJlc3VsdHMgaW4gU3RydWN0dXJlUmFyZURhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9iamVjdC5rZXlzIGlzIG9uZSBvZiB0
aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgZnVuY3Rpb24gaW4gd2ViLXRvb2xpbmctYmVuY2htYXJr
cyAoV1RCKS4KKyAgICAgICAgT2JqZWN0LmtleXMgaXMgZG9taW5hbnQgaW4gbGViYWIgb2YgV1RC
LCBhbmQgZnJlcXVlbnRseSBjYWxsZWQgaW4gYmFiZWwgYW5kIG90aGVycy4KKyAgICAgICAgU2lu
Y2Ugb3VyIFN0cnVjdHVyZSBrbm93cyB0aGUgc2hhcGUgb2YgSlNPYmplY3QsIHdlIGNhbiBjYWNo
ZSB0aGUgcmVzdWx0IG9mIE9iamVjdC5rZXlzCisgICAgICAgIGluIFN0cnVjdHVyZSAoU3RydWN0
dXJlUmFyZURhdGEpIGFzIHdlIGNhY2hlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciBpbiBTdHJ1
Y3R1cmVSYXJlRGF0YS4KKworICAgICAgICBUaGlzIHBhdGNoIGNhY2hlcyB0aGUgcmVzdWx0IG9m
IE9iamVjdC5rZXlzIGluIFN0cnVjdHVyZVJhcmVEYXRhLiBUaGUgY2FjaGVkIGFycmF5IGlzIGNy
ZWF0ZWQKKyAgICAgICAgYXMgSlNJbW11dGFibGVCdXR0ZXJmbHkuIEFuZCBPYmplY3Qua2V5cyBj
cmVhdGVzIENvVyBmcm9tIHRoaXMgZGF0YS4gQ3VycmVudGx5LCB0aGUgbGlmZXRpbWUKKyAgICAg
ICAgc3RyYXRlZ3kgb2YgdGhpcyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBpcyB0aGUgc2FtZSB0byBj
YWNoZWQgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLiBJdCBpcworICAgICAgICByZWZlcmVuY2Vk
IGZyb20gU3RydWN0dXJlLCBhbmQgY29sbGVjdGVkIHdoZW4gU3RydWN0dXJlIGlzIGNvbGxlY3Rl
ZC4KKworICAgICAgICBUaGlzIGltcHJvdmVzIHNldmVyYWwgYmVuY2htYXJrcyBpbiBTaXhTcGVl
ZC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAg
ICAgICAgICAgICAgICAgcGF0Y2hlZAorCisgICAgICAgICAgICBvYmplY3QtYXNzaWduLmVzNSAg
ICAgIDM1MC4xNzEwKy0zLjYzMDMgICAgIF4gICAgMjI2LjAzNjgrLTQuNzU1OCAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuNTQ5MnggZmFzdGVyCisgICAgICAgICAgICBmb3Itb2Ytb2JqZWN0LmVzNiAg
ICAgIDI2OS4xOTQxKy0zLjM0MzAgICAgIF4gICAgMTI3LjkzMTcrLTIuMzg3NSAgICAgICAgXiBk
ZWZpbml0ZWx5IDIuMTA0MnggZmFzdGVyCisKKyAgICAgICAgQW5kIGl0IGltcHJvdmVzIFdUQiBs
ZWJhYiBieSAxMS44JS4KKworICAgICAgICAgICAgQmVmb3JlOiBsZWJhYjogIDYuMTAgcnVucy9z
CisgICAgICAgICAgICBBZnRlcjogIGxlYmFiOiAgNi44MiBydW5zL3MKKworICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Ns
b2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBk
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0
YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252
ZXJ0VG9OZXdBcnJheUJ1ZmZlcik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdEtleXMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RLZXlzKToKKyAgICAgICAgKiBydW50aW1lL0J1dHRl
cmZseS5oOgorICAgICAgICAoSlNDOjpDb250aWd1b3VzRGF0YTo6RGF0YTo6c2V0U3RhcnRpbmdW
YWx1ZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjpp
bnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJbW11dGFi
bGVCdXR0ZXJmbHk6OkpTSW1tdXRhYmxlQnV0dGVyZmx5KToKKyAgICAgICAgV2Ugc2V0IEpTRW1w
dHkgdG8gdGhlIHVuZGVybHlpbmcgYnV0dGVyZmx5IHN0b3JhZ2UgaWYgaW5kZXhpbmcgdHlwZSBp
cyBDb250aWd1b3VzLgorICAgICAgICBPdGhlcndpc2UsIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGlz
IGhhbGYtYmFrZWQgb25lIHVudGlsIGFsbCB0aGUgc3RvcmFnZSBpcyBmaWxsZWQgd2l0aCBzb21l
IG1lYW5pbmdmdWwgdmFsdWVzLCBpdCBsZWFkcyB0byBjcmFzaAorICAgICAgICBpZiBoYWxmLWJh
a2VkIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGlzIGV4cG9zZWQgdG8gR0MuCisgICAgICAgICogcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om93blByb3BlcnR5S2V5
cyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvciBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZXRDYWNoZWRPd25LZXlzKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpjYWNoZWRPd25LZXlzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCBjb25zdCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Y2FuQ2FjaGVPd25LZXlzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVk
UHJvcGVydHlOYW1lRW51bWVyYXRvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmg6CisgICAgICAgICogcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
UmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNJZ25vcmluZ1Nl
bnRpbmVsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93
bktleXNDb25jdXJyZW50bHkgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0Q2FjaGVkT3duS2V5cyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpw
cmV2aW91c0lEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKwogMjAxOC0xMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIHdhcm5pbmctaWdub3JpbmcgbWFjcm9zIG1vcmUgY29u
c2lzdGVudGx5IGFuZCBzaW1wbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA1ZjVlY2NjMzMwYzIy
YmU4YmQ5MWUxYjRjZDdiNzU5NzE0YTBkZDY3Li42OWRkMDNkZDFiNWZiMDRhNGU5NWQwNTg3OTcz
ZDgyMDA5ZjRmZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRl
ICJTdHJpbmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIK
ICNpbmNsdWRlIDx3dGYvQm9vbGVhbkxhdHRpY2UuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KIApAQCAtMjU4MCw2ICsyNTgxLDMwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0S2V5czogeworICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgeworICAgICAg
ICAgICAgYXV0byYgc3RydWN0dXJlU2V0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1
Y3R1cmU7CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlU2V0LmlzRmluaXRlKCkgJiYgc3RydWN0
dXJlU2V0LnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVTZXQub25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiByYXJlRGF0YSA9IHN0cnVjdHVyZS0+cmFyZURhdGFDb25jdXJyZW50bHko
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSByYXJl
RGF0YS0+Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoaW1tdXRhYmxlQnV0dGVyZmx5ICYmIGltbXV0YWJsZUJ1dHRlcmZseSAhPSBTdHJ1Y3R1cmVS
YXJlRGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRz
KHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
QXJyYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAg
ICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNBcnJheSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgVG9PYmplY3Q6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6
IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IDY0NmIwMmM0YThhODM0ZjgyNWRiNmUxMDVhOGFjMTBjZmQyMjAzN2IuLmQ2ZTM4NDNh
OGQ4MzQ5NDkwMTU0ZTA4Nzc3Mjc0ZjA4NjU1ZjY1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjkyLDYgKzI2OTIsMTUgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisg
ICAgY2FzZSBPYmplY3RLZXlzSW50cmluc2ljOiB7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoT2JqZWN0S2V5
cywgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgY2FzZSBSZWZsZWN0R2V0UHJvdG90
eXBlT2ZJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDg3NDI0MjA3YzQwMTY0ODNiZGJmYjQyMDI5OTBlMmEy
N2VlOTlkNWYuLjI1MGVjMDA0NDNkMTJjMDYzYWE0M2VlZWJkYzQ4YzcwMjk0MTI1YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC02NjgsNiArNjY4LDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2Fz
ZSBJbnN0YW5jZU9mOgogICAgIGNhc2UgU3RyaW5nVmFsdWVPZjoKKyAgICBjYXNlIE9iamVjdEtl
eXM6CiAgICAgICAgIHJlYWQoV29ybGQpOwogICAgICAgICB3cml0ZShIZWFwKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTUyOSw3ICsxNTMwLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgfQogICAgIH0KIAotCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGZiMWY2ZGMyMzFhYmU0NDhk
NWY5MTZjNjM0OGZkMWYxMzdmYmEwMjMuLjhkMGE0Mjg5NGU0MTM2N2EyZWUwNzJlYTgyZTUyMDBi
N2JkMTc4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03NjYsNiArNzY2LDI2IEBAIGNsYXNzIENvbnN0YW50
Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byYgc3RydWN0dXJlU2V0ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3N0cnVjdHVyZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVy
ZVNldC5pc0Zpbml0ZSgpICYmIHN0cnVjdHVyZVNldC5zaXplKCkgPT0gMSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVT
ZXQub25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHJh
cmVEYXRhID0gc3RydWN0dXJlLT5yYXJlRGF0YUNvbmN1cnJlbnRseSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gcmFyZURhdGEtPmNh
Y2hlZE93bktleXNDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaW1tdXRhYmxlQnV0dGVyZmx5ICYmIGltbXV0YWJsZUJ1dHRlcmZseSAhPSBTdHJ1Y3R1cmVS
YXJlRGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2lu
dChub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvTmV3QXJyYXlCdWZmZXIobV9ncmFwaC5mcmVlemUoaW1tdXRhYmxlQnV0dGVyZmx5KSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBjYXNlIFRvTnVtYmVyOiB7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNCeXRlY29kZU51bWJlcikKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5k
ZXggODlmYjMyNThkZTY2NjhmNmQ3ZmJkMTliZTQ3ODdlNGMzYWFiNzk4MS4uZGY3NDkzMGJkYmIz
ODY0YWQ5NDRiYzQ3MjA3MTJmZTBmMzk0N2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcApAQCAtMzM5LDYgKzMzOSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAg
ICAgY2FzZSBPYmplY3RDcmVhdGU6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAppbmRleCAzNWI2MTE4NjNiYmJkNmE4M2IyNWIyNjE0ZWVmOTEyZGRlOWM3Mjcx
Li5hMmVlZmE1YWIwYmMxMGZjNTBkNDM5NjEyZWIyMWNjMThmN2UwYzIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE1OTUsNiArMTU5NSwxNCBA
QCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICAg
ICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE9i
amVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6IHsKICAgICAg
ICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZGQ5Njdj
OGFkMjM3MjBjODg1NjY3NTg3MzUwNmU1MmQxNTBmYjc3MS4uM2QxYzNiYTEzNzYyMWUzYjJmMDM0
MTViYjkxZDE0MTIzNjNjZTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKQEAgLTIyMyw2ICsyMjQsMTcgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9MYXp5SlNDb25z
dGFudChHcmFwaCYgZ3JhcGgsIExhenlKU1ZhbHVlIHZhbHVlKQogICAgIGNoaWxkcmVuLnJlc2V0
KCk7CiB9CiAKK3ZvaWQgTm9kZTo6Y29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUq
IGltbXV0YWJsZUJ1dHRlcmZseSkKK3sKKyAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhOZXdBcnJh
eUJ1ZmZlcik7CisgICAgTmV3QXJyYXlCdWZmZXJEYXRhIGRhdGEgeyB9OworICAgIGRhdGEuaW5k
ZXhpbmdNb2RlID0gaW1tdXRhYmxlQnV0dGVyZmx5LT5jYXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5
Kj4oKS0+aW5kZXhpbmdNb2RlKCk7CisgICAgZGF0YS52ZWN0b3JMZW5ndGhIaW50ID0gaW1tdXRh
YmxlQnV0dGVyZmx5LT5jYXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKS0+dG9CdXR0ZXJmbHko
KS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgY2hpbGRyZW4ucmVzZXQoKTsKKyAgICBtX29wSW5mbyA9
IGltbXV0YWJsZUJ1dHRlcmZseTsKKyAgICBtX29wSW5mbzIgPSBkYXRhLmFzUXVhZFdvcmQ7Cit9
CisKIHZvaWQgTm9kZTo6Y29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5WYWx1ZSogZXhlY3V0YWJs
ZSkKIHsKICAgICBOb2RlVHlwZSBuZXdPcCA9IExhc3ROb2RlVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKaW5kZXggZDNmNzNhOGMyODRkYmQ3MDNmMjJlNmZmY2VlYTA5ODZmMzcz
NDliMi4uYjgwMTQ3NTVjN2JjYjUwOTE0ZWQzOWQ2MWE1M2Q5NGFjYTg2MDIxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTc2MSw2ICs3NjEsOCBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIG1fb3BJbmZvID0gc3RydWN0dXJlOwogICAgICAgICBtX29wSW5mbzIgPSBPcElu
Zm9XcmFwcGVyKCk7CiAgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9OZXdBcnJheUJ1ZmZlcihG
cm96ZW5WYWx1ZSogaW1tdXRhYmxlQnV0dGVyZmx5KTsKICAgICAKICAgICB2b2lkIGNvbnZlcnRU
b0RpcmVjdENhbGwoRnJvemVuVmFsdWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCmluZGV4IDRjZmFmZTdkYjM2OGE2ZDQxMzkzYjg1NjU0YTYyMjhmMzJiN2I3Nzcu
LmRjMmYzZTE2YjgzMmFhYzBhZjdmMGFkNjNjNGM4ZTI4MWRjYmEzNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2NSw2ICsyNjUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUGFyc2VJbnQsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRQcm90b3R5cGVPZiwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE9iamVjdENyZWF0ZSwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE9iamVjdEtleXMsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogQXRvbWljcyBvYmpl
Y3QgZnVuY3Rpb25zLiAqL1wKICAgICBtYWNybyhBdG9taWNzQWRkLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGI3NWZjZGZiOTc1ZDkxZWNhMmUzOGZkZmM2
ZWQwNWRiMGM3Y2JjM2IuLjBiMjZjMmQxNjJjN2YyNGNmYWNlYmMzYTc5NTE2YzQ5ZDczMjE0NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjQ4
LDYgKzI0OCwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhp
c1N0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpKTsKIH0KIAorSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2JqZWN0
KGV4ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIHNj
b3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gb3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVk
ZSk7Cit9CisKK0pTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgcmV0dXJuIG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6
OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpOworfQorCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvdHlwZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAzMTVmZDZh
ZGM1MjcxZDMyZTJiNTgxN2E4MGZiMDI4MTljYmJmMjgzLi4zOGMxMTZhNTRmOTFhNjE1YjgxYzE1
MTEyMTQ4ZjI1Zjk0YWRiMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaApAQCAtNDMsNiArNDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQoRXhlY1N0YXRlKiwgRW5jbwogLy8gVGhl
c2Ugcm91dGluZXMgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMg
b2Ygb3BlcmF0aW9ucyB0b28gY29tcGxleCB0byBKSVQuCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZf
SU5URVJOQUw7CitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK0pTQXJyYXkqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdChFeGVjU3RhdGUqLCBKU09iamVjdCopIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhp
cyhFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIHVpbnQzMl90IGlubGluZUNhcGFj
aXR5KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGNmMjU1N2QxY2Ey
ZjdjYjNkMzlmMGRjMWIxMTM5NDkzODg3MjJmMTcuLmIzYzY5YmNmMTI0NzI3YmZjYzY3NmIyYWZh
ZGFiNWE4OGMyMmY5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODQsNyArOTg0LDgg
QEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICBjYXNlIE5ld0FycmF5OgogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAg
ICAgIGNhc2UgQ3JlYXRlUmVzdDoKLSAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjogeworICAg
ICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgICAgICBjYXNlIE9iamVjdEtleXM6IHsKICAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0FycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CmluZGV4IGQxOWVlOGUxYmZjZGZiZmM5MWNiZThmYTBiMzQ1MTQ2YzZmMTFiZDMuLmYxMDY5ODJh
ZTM5ZmYzYmNjMzZjZmI1YWVlMGQ3MTZjMDdlOTQzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xNzgsNiArMTc4LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBib29sIGlnbm8KICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAg
ICAgY2FzZSBPYmplY3RDcmVhdGU6CisgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgR2V0
Q2FsbGVlOgogICAgIGNhc2UgU2V0Q2FsbGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IGZlM2Q2ODYyZTJmNDBhYjdkNzRmYmI2YmI2NWJhZjg1MzM0NTljNDcu
LjIxNjRlMmRlNTNlYTkwMTA4OGJmOWZiYmRhYTNmYTg1OGQwZTkyNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMjM2NSw2ICsx
MjM2NSw5NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUp
CiAgICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICBp
ZiAobV9ncmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpKSB7Cisg
ICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvYmplY3QodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2gyKHRoaXMpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gzKHRoaXMp
OworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICAgICAg
R1BSUmVnIG9iamVjdEdQUiA9IG9iamVjdC5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzdHJ1
Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3Jh
dGNoMi5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoM0dQUiA9IHNjcmF0Y2gzLmdw
cigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAg
ICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIpOworCisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICAgICAgICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKCptX2ppdC52bSgpLCBvYmplY3RHUFIsIHN0cnVjdHVy
ZUdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaEdQUikpOworICAgICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFs
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKGJpdHdpc2VfY2FzdDxpbnQzMl90PihtX2ppdC52bSgpLT5z
dHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSkpOworCisgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmVSYXJl
RGF0YTo6b2Zmc2V0T2ZDYWNoZWRPd25LZXlzKCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAgICAg
ICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNo
ZWRPd25LZXlzU2VudGluZWwoKSkgPT0gMSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkJlbG93T3JFcXVhbCwgc2NyYXRjaEdQUiwg
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNo
ZWRPd25LZXlzU2VudGluZWwoKSkpKSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBzbG93QnV0QXJyYXlCdWZmZXJDYXNlczsKKworICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5
U3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihDb3B5T25Xcml0
ZUFycmF5V2l0aENvbnRpZ3VvdXMpKTsKKworICAgICAgICAgICAgbV9qaXQubW92ZShzY3JhdGNo
R1BSLCBzY3JhdGNoM0dQUik7CisgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbVB0
cihKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkpLCBzY3JhdGNoR1BSKTsKKwor
ICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyKGFycmF5U3RydWN0dXJlKSwgc2NyYXRjaEdQUiwgc3RydWN0dXJlR1BSLCBzY3Jh
dGNoMkdQUiwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXMpOworCisgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXMsIHRoaXMs
IG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHRHUFIsIGFycmF5U3RydWN0dXJlLCBzY3Jh
dGNoM0dQUikpOworCisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0LCByZXN1bHRHUFIs
IG9iamVjdEdQUikpOworCisgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIG9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgR1BSUmVnIG9i
amVjdEdQUiA9IG9iamVjdC5ncHIoKTsKKworICAgICAgICBzcGVjdWxhdGVPYmplY3Qobm9kZS0+
Y2hpbGQxKCksIG9iamVjdEdQUik7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9i
amVjdEtleXNPYmplY3QsIHJlc3VsdEdQUiwgb2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBvYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIEpT
VmFsdWVSZWdzIG9iamVjdFJlZ3MgPSBvYmplY3QuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0S2V5cywgcmVzdWx0R1BSLCBvYmplY3RSZWdzKTsK
KyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdENyZWF0ZShOb2RlKiBu
b2RlKQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNDM4YjExNGM5
ZGU2NTAzNWYwNDllOGYzZTViZjU1NWNhODM5NjM1MC4uNDg0NjNjNWY3OWRmNDQ2NDU2ZTBhYWY3
NDQxMDRmZTNlMDJlYmY2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaApAQCAtMTQ3OSw2ICsxNDc5LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5V2l0aFNpemUoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZU5ld1R5cGVkQXJyYXkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVRvVGhpcyhOb2RlKik7
CisgICAgdm9pZCBjb21waWxlT2JqZWN0S2V5cyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlT2Jq
ZWN0Q3JlYXRlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdPYmplY3QoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggOTUyZjg5MTU4ZDRj
YzMwYmM3NjhiZWVmNzljOGRiN2IzZGZkZjY1OS4uMjBjMDUzYTk1NTNhYzllMDE1MjM2MGQ3Njdi
MTJjNGFiYzczZmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zMTY3LDYgKzMxNjcsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIE9iamVjdEtleXM6IHsKKyAgICAgICAgY29tcGlsZU9iamVjdEtleXMobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ3JlYXRlVGhpczogewogICAgICAg
ICBjb21waWxlQ3JlYXRlVGhpcyhub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAxOGFlN2Q4
MWJhOTJhZTFkYmQ0Yzg1MmViMDg0Zjk3NzhmNjZkMGZiLi44YzNhMWVlZWY2MWM1ZWNlNjYwNDYw
YzVhMTNiM2QwMTQ2ZjYxZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM0MDksNiArMzQwOSwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgT2JqZWN0S2V5czogeworICAgICAgICBjb21waWxlT2JqZWN0S2V5cyhub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDcmVhdGVUaGlzOiB7CiAgICAgICAg
IGNvbXBpbGVDcmVhdGVUaGlzKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXgg
YmJkNDcxMzJmZWM3YmNmY2QzYjZlMmM1ODQxNGVhYTg0YmM4NTIxZi4uOWYzYWEyZmU3ZGMzZWNm
ZWIwYzg3MGI4MWE4N2NiYzExZjI4ODA1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTExNiw4ICsxMTYsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cnVjdHVyZV9n
bG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpIFwKICAgICBtYWNy
byhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgU3RydWN0dXJlOjppbmRl
eGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVf
aW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAorICAg
IG1hY3JvKFN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEsIFN0cnVjdHVyZTo6cHJldmlvdXNP
clJhcmVEYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVy
ZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1
cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNo
ZWRPd25LZXlzKCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcElt
cGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5
KCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFw
QnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBt
YWNybyhIYXNoTWFwSW1wbF9oZWFkLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkhlYWQoKSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDBmNmNlZWJiNTU1M2RmYThhMGMwMGMz
MjY0Yjk2NTkxNDc5YmE3ZDEuLjIzYzkzOTZmNGQ2OWUwNGY2ZjBjYjVmNDkxYmEwNGU2Y2NmYWQx
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTIwMSw2ICsyMDEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIENhbGxT
dHJpbmdDb25zdHJ1Y3RvcjoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKKyAgICBjYXNlIE9iamVj
dEtleXM6CiAgICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAg
ICAgY2FzZSBUcnlHZXRCeUlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCmluZGV4IDE4NTg3NmI4MzcxNmRiZjM1MjYyOWVhZGZiNjE4NDY1OGRkMGYz
ZTguLjAyZDIxODA2N2NmZmJkZGUxZWIzNzFkNDg4YWQ4ZDNiODNmN2M0YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTg2Niw2ICs4NjYs
OSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAg
ICAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIE9iamVjdEtleXM6CisgICAgICAgICAgICBjb21waWxlT2JqZWN0S2V5cygpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICAgICAg
Y29tcGlsZU5ld09iamVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01NDk3LDYgKzU1MDAs
NzIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgc2V0SW50MzIobV9vdXQucGhpKElu
dDMyLCB6ZXJvTGVuZ3RoUmVzdWx0LCBub25aZXJvTGVuZ3RoUmVzdWx0KSk7CiAgICAgfQogCisg
ICAgdm9pZCBjb21waWxlT2JqZWN0S2V5cygpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgT2JqZWN0VXNlOiB7CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG1f
bm9kZSkpIHsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmFyZURhdGFDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayB1c2VDYWNoZUNh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dC
dXRBcnJheUJ1ZmZlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAg
ICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShvYmplY3QpOworICAg
ICAgICAgICAgICAgIExWYWx1ZSBwcmV2aW91c09yUmFyZURhdGEgPSBtX291dC5sb2FkUHRyKHN0
cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJldmlvdXNPclJhcmVEYXRhKTsKKyAgICAgICAg
ICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90TnVsbChwcmV2aW91c09yUmFyZURhdGEpLCB1
bnN1cmUobm90TnVsbENhc2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKworICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90TnVsbENhc2UsIHJhcmVE
YXRhQ2FzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAg
ICAgICBtX291dC5ub3RFcXVhbChtX291dC5sb2FkMzIocHJldmlvdXNPclJhcmVEYXRhLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIG1fb3V0LmNvbnN0SW50MzIobV9ncmFwaC5tX3ZtLnN0
cnVjdHVyZVN0cnVjdHVyZS0+c3RydWN0dXJlSUQoKSkpLAorICAgICAgICAgICAgICAgICAgICB1
bnN1cmUocmFyZURhdGFDYXNlKSwgdW5zdXJlKHNsb3dDYXNlKSk7CisKKyAgICAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhyYXJlRGF0YUNhc2UsIHVzZUNhY2hlQ2FzZSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KFN0cnVjdHVyZVJhcmVEYXRhOjpj
YWNoZWRPd25LZXlzU2VudGluZWwoKSkgPT0gMSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIGNh
Y2hlZE93bktleXMgPSBtX291dC5sb2FkUHRyKHByZXZpb3VzT3JSYXJlRGF0YSwgbV9oZWFwcy5T
dHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzKTsKKyAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQuYmVsb3dPckVxdWFsKGNhY2hlZE93bktleXMsIG1fb3V0LmNvbnN0SW50UHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNTZW50
aW5lbCgpKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUodXNlQ2FjaGVDYXNlKSk7CisKKyAg
ICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyh1c2VDYWNoZUNhc2UsIHNsb3dCdXRBcnJheUJ1
ZmZlckNhc2UpOworICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0cnVjdHVyZSA9IG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSk7Cisg
ICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RBcnJheSA9IGFsbG9jYXRlT2JqZWN0PEpTQXJyYXk+
KGFycmF5U3RydWN0dXJlLCBtX291dC5hZGRQdHIoY2FjaGVkT3duS2V5cywgSlNJbW11dGFibGVC
dXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSk7CisgICAg
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0
QXJyYXkpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dCdXRBcnJheUJ1ZmZlckNhc2UsIHNsb3dD
YXNlKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd0FycmF5ID0gdm1DYWxsKEludDY0LCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIpLCBtX2NhbGxGcmFtZSwgd2Vh
a1N0cnVjdHVyZShhcnJheVN0cnVjdHVyZSksIGNhY2hlZE93bktleXMpOworICAgICAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dCdXRBcnJheUJ1ZmZlclJlc3VsdCA9IG1fb3V0LmFuY2hv
cihzbG93QXJyYXkpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OworICAgICAgICAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgICAgICAgICAg
TFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAg
ICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRy
PExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBs
b2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICBvYmplY3QpOworICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICBzZXRKU1ZhbHVl
KG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93QnV0QXJyYXlCdWZmZXJS
ZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCksIG1fY2FsbEZyYW1lLCBsb3dPYmplY3QobV9ub2Rl
LT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgVW50eXBlZFVzZToKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0S2V5cyksIG1fY2FsbEZyYW1lLCBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZU9iamVjdENyZWF0
ZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseS5oCmluZGV4IDQzYTliZTRh
N2YxZGE1ZGIxOGVlMzI4NWI5YWVhNTg4ZDkyNmNkZjAuLjUwZmY4ZjA4ZmQ5N2ZjY2Q4YWI4YjBm
NDMzZTU5ZmJiZjlhM2MzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0J1dHRlcmZseS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRl
cmZseS5oCkBAIC04NSw2ICs4NSwxMSBAQCBzdHJ1Y3QgQ29udGlndW91c0RhdGEgewogICAgICAg
ICAgICAgbV9kYXRhLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodmFsdWUpOwogICAgICAgICB9CiAK
KyAgICAgICAgdm9pZCBzZXRTdGFydGluZ1ZhbHVlKEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fZGF0YS5zZXRTdGFydGluZ1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQor
CiAgICAgICAgIHZvaWQgY2xlYXIoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9p
c1dyaXRhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3Bw
CmluZGV4IGFiZTZmMTcyODZlM2JlMzkxZTBjMzc0YzFmNmM1NzRjNWJkODY3ZmIuLmZiYzRlZjNj
ZDhmMmVjNjJkYTkzMDBkYTI3MWIxMDIzMzk3NDM0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMTE5LDYgKzExOSw4IEBAIGNvbnN0IGNoYXIq
IGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJPYmpl
Y3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBPYmplY3RJc0ludHJpbnNpYzoK
ICAgICAgICAgcmV0dXJuICJPYmplY3RJc0ludHJpbnNpYyI7CisgICAgY2FzZSBPYmplY3RLZXlz
SW50cmluc2ljOgorICAgICAgICByZXR1cm4gIk9iamVjdEtleXNJbnRyaW5zaWMiOwogICAgIGNh
c2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIlJlZmxl
Y3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBTdHJpbmdQcm90b3R5cGVWYWx1
ZU9mSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApp
bmRleCBjZmJkMTg0OTYzNTJiYjlkNGUyNmEwMmM1NjkzYjhjNDYwMDE5MDI1Li5iNDdmNDZkOWU0
ZGUwMDEzZGU4MzQ2ZTgyZTY4MTZmNWZkMDJmNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaApAQCAtNzIsNiArNzIsNyBAQCBlbnVtIEludHJpbnNpYyB7CiAg
ICAgT2JqZWN0Q3JlYXRlSW50cmluc2ljLAogICAgIE9iamVjdEdldFByb3RvdHlwZU9mSW50cmlu
c2ljLAogICAgIE9iamVjdElzSW50cmluc2ljLAorICAgIE9iamVjdEtleXNJbnRyaW5zaWMsCiAg
ICAgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVZh
bHVlT2ZJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlUmVwbGFjZUludHJpbnNpYywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVy
Zmx5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZs
eS5oCmluZGV4IDI4NDc4M2MwYzc1NTk2YWRkYTVhMWY5OGYzNmIwNjllMGViOGU0YTEuLjRhYzJh
NmM0ZTRiNWRhM2NjYWQ1ZDQ0ODMyOGY1MmFjNjdmNjljZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaApAQCAtMTIwLDYg
KzEyMCwxMCBAQCBjbGFzcyBKU0ltbXV0YWJsZUJ1dHRlcmZseSA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIHsKICAgICAgICAgbV9oZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7CiAgICAgICAg
IG1faGVhZGVyLnNldFB1YmxpY0xlbmd0aChsZW5ndGgpOworICAgICAgICBpZiAoaGFzQ29udGln
dW91cyhpbmRleGluZ1R5cGUoKSkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgICAgICB0b0J1dHRlcmZs
eSgpLT5jb250aWd1b3VzKCkuYXQodGhpcywgaW5kZXgpLnNldFN0YXJ0aW5nVmFsdWUoSlNWYWx1
ZSgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEluZGV4aW5nSGVhZGVyIG1faGVhZGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IDkwYTM2YTkzNTU3OGYyYjhlMzEzMTEzZDI5ZDkwYmE5ZDQ2NmE5NDUuLjdiY2Zh
YWEzYmVjYTg4YjE1ZGVlM2VmYjNlMjhlNjA3MGNiODk0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTSW1t
dXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCkBAIC03Myw3ICs3
NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiAgIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cnMgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzICBEb250RW51bXxG
dW5jdGlvbiAxCiAgIGdldE93blByb3BlcnR5TmFtZXMgICAgICAgb2JqZWN0Q29uc3RydWN0b3JH
ZXRPd25Qcm9wZXJ0eU5hbWVzICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIGdldE93blBy
b3BlcnR5U3ltYm9scyAgICAgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGtleXMgICAgICAgICAgICAgICAgICAgICAgb2Jq
ZWN0Q29uc3RydWN0b3JLZXlzICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgIGtleXMgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JLZXlzICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxIE9iamVjdEtleXNJbnRyaW5z
aWMKICAgZGVmaW5lUHJvcGVydHkgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVBy
b3BlcnR5ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKICAgZGVmaW5lUHJvcGVydGll
cyAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKICAgY3JlYXRlICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25z
dHJ1Y3RvckNyZWF0ZSAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIgT2Jq
ZWN0Q3JlYXRlSW50cmluc2ljCkBAIC0yNzEsNyArMjcyLDYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3Rh
dGUqIGUKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Q
cm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzLCBEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOwogfQogCi0vLyBGSVhNRTogVXNlIHRoZSBl
bnVtZXJhdGlvbiBjYWNoZS4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpAQCAtODkyLDExICs4OTIsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcklzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihzYW1lVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFy
Z3VtZW50KDEpKSkpOwogfQogCi0vLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4K
IEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmpl
Y3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZSBkb250RW51bVByb3BlcnRpZXNNb2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGJvb2wgaXNP
YmplY3RLZXlzID0gcHJvcGVydHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
ICYmIGRvbnRFbnVtUHJvcGVydGllc01vZGUgPT0gRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhj
bHVkZTsKKyAgICAvLyBXZSBhdHRlbXB0IHRvIGxvb2sgdXAgb3duIHByb3BlcnR5IGtleXMgY2Fj
aGUgaW4gT2JqZWN0LmtleXMgY2FzZS4KKyAgICBpZiAoaXNPYmplY3RLZXlzKSB7CisgICAgICAg
IGlmIChMSUtFTFkoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IG9iamVjdC0+c3RydWN0dXJlKHZt
KS0+Y2FjaGVkT3duS2V5cygpKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhcnJheVN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZShpbW11dGFibGVCdXR0ZXJmbHktPmluZGV4aW5nTW9kZSgpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwgYXJyYXlT
dHJ1Y3R1cmUsIGltbXV0YWJsZUJ1dHRlcmZseS0+dG9CdXR0ZXJmbHkoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVz
KCZ2bSwgcHJvcGVydHlOYW1lTW9kZSwgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwogICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKGRvbnRFbnVtUHJvcGVydGllc01vZGUpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTkxOCw4ICs5MzAs
MzEgQEAgSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm8KICAgICBpZiAocHJvcGVydHlOYW1lTW9kZSAh
PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scykgewogICAgICAgICBBU1NFUlQo
cHJvcGVydHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzIHx8IHByb3BlcnR5
TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scyk7CiAgICAgICAgIGlmICghbXVz
dEZpbHRlclByb3BlcnR5ICYmIHByb3BlcnRpZXMuc2l6ZSgpIDwgTUlOX1NQQVJTRV9BUlJBWV9J
TkRFWCkgewotICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogICAgICAgICAgICAgaWYgKExJS0VMWSghZ2xvYmFsT2JqZWN0LT5pc0hh
dmluZ0FCYWRUaW1lKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0S2V5cykgewor
ICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0
dXJlKHZtKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQ2FjaGVPd25L
ZXlzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhY2hlZEJ1dHRlcmZseSA9
IHN0cnVjdHVyZS0+Y2FjaGVkT3duS2V5c0lnbm9yaW5nU2VudGluZWwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjYWNoZWRCdXR0ZXJmbHkgPT0gU3RydWN0dXJlUmFyZURhdGE6OmNh
Y2hlZE93bktleXNTZW50aW5lbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Q2FjaGUgdGhlIGltbXV0YWJsZSBidXR0ZXJmbHkhCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvKiBuZXdCdXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZs
eTo6Y3JlYXRlKHZtLCBDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMsIG51bVByb3BlcnRp
ZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtUHJvcGVydGllczsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGF1dG8mIGlkZW50aWZpZXIgPSBwcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWlkZW50aWZpZXIuaXNTeW1ib2woKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0J1dHRlcmZseS0+c2V0SW5kZXgodm0sIGksIGpzT3du
ZWRTdHJpbmcoJnZtLCBpZGVudGlmaWVyLnN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRD
YWNoZWRPd25LZXlzKHZtLCBuZXdCdXR0ZXJmbHkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUobmV3QnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhC
dXR0ZXJmbHkodm0sIG51bGxwdHIsIGFycmF5U3RydWN0dXJlLCBuZXdCdXR0ZXJmbHktPnRvQnV0
dGVyZmx5KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoY2FjaGVkQnV0dGVyZmx5ID09IG51bGxwdHIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDYWNoZWRPd25LZXlzKHZtLCBTdHJ1Y3R1cmVSYXJl
RGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBrZXlzID0gSlNB
cnJheTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cyksIG51bVByb3BlcnRpZXMpOwogICAgICAg
ICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogYnVmZmVyID0ga2V5cy0+YnV0dGVyZmx5
KCktPmNvbnRpZ3VvdXMoKS5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAppbmRleCA1OGQ4M2JjZTRhZmRhZGU4MDNkMzg0YmE3MTBlMGFiOWQ2YWQw
OTE4Li4zNTQyODI3ZGUzYTI3MDQ1NGZmNmM2MzQwMjY4MmZjMDU4MjM0OGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyNTIsMTcgKzEyNTIs
NyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIFN0cnVjdHVyZTo6Y2FjaGVkUHJvcGVydHlO
YW1lRW51bWVyYXRvcigpIGNvbnN0CiAKIGJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZVByb3BlcnR5
TmFtZUVudW1lcmF0b3IoKSBjb25zdAogewotICAgIGF1dG8gY2FuQ2FjaGUgPSBbXSAoY29uc3Qg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9u
YXJ5KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChoYXNJbmRleGVk
UHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH07Ci0KLSAgICBpZiAoIWNhbkNhY2hlKHRoaXMpKQorICAgIGlmICghdGhp
cy0+Y2FuQ2FjaGVPd25LZXlzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cnVj
dHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiA9IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCk7
CkBAIC0xMjcxLDcgKzEyNjEsNyBAQCBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKCkgY29uc3QKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+Z2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCFj
YW5DYWNoZShzdHJ1Y3R1cmUtPmdldCgpKSkKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmdldCgp
LT5jYW5DYWNoZU93bktleXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
c3RydWN0dXJlKys7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAppbmRleCA4ZGVkODI1YmZiYTkzYTg1MDkwYjYxNDhjMGY1MGRhMTlkZmFjOWI3Li5mNTAz
YjdkNGYyMmZiMTk4NjIyNDViM2Y2ZTVkYTBhZmRhNTBiMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlB1
dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlEQmxvYi5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZVJhcmVEYXRhLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiCiAjaW5jbHVkZSAiSlNU
eXBlSW5mby5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKQEAgLTMyNiw2ICszMjUsMTQgQEAg
Y2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmVSYXJlRGF0YSo+KG1fcHJldmlvdXNPclJhcmVEYXRh
LmdldCgpKTsKICAgICB9CiAKKyAgICBjb25zdCBTdHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGFD
b25jdXJyZW50bHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gbV9wcmV2
aW91c09yUmFyZURhdGEuZ2V0KCk7CisgICAgICAgIGlmIChpc1JhcmVEYXRhKGNlbGwpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZVJhcmVEYXRhKj4oY2VsbCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBl
bnN1cmVSYXJlRGF0YShWTSYgdm0pCiAgICAgewogICAgICAgICBpZiAoIWhhc1JhcmVEYXRhKCkp
CkBAIC00NzIsNiArNDc5LDExIEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIGJvb2wgY2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3Q7CiAg
ICAgYm9vbCBjYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseUZvckVudW1lcmF0aW9uKCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldENhY2hlZE93bktleXMoVk0mLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSop
OworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzKCkgY29uc3Q7CisgICAg
SlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsKCkgY29u
c3Q7CisgICAgYm9vbCBjYW5DYWNoZU93bktleXMoKSBjb25zdDsKKwogICAgIHZvaWQgZ2V0UHJv
cGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKICAgICBKU1N0cmluZyogb2JqZWN0VG9TdHJpbmdWYWx1ZSgpCkBAIC01MjAs
NiArNTMyLDExIEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9pbmxpbmVDYXBhY2l0eSk7
CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBwcmV2aW91c09yUmFyZURhdGFPZmZzZXQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fcHJl
dmlvdXNPclJhcmVEYXRhKTsKKyAgICB9CisKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mKTsKICAgICAgICAgCiAgICAgYm9vbCB0cmFuc2l0aW9uV2F0Y2hwb2ludFNl
dEhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggYjNlYjFiNDFlOWYxYzc4MWU5NmYwMjI5
MDUxMDAwZTA0MjcwNWQ1ZS4uMDJhZjRhMDE2MDM0Yzk3YTMyNjIyYjUxYjA0ZmMyOTZlNTJiZDc1
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaApAQCAtMjE5LDYgKzIxOSwzNiBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OnRyYW5zaXRp
dmVseVRyYW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBzdHJ1Y3R1cmVUb0ZpbmQpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMo
Vk0mIHZtLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogb3duS2V5cykKK3sKKyAgICBlbnN1cmVSYXJl
RGF0YSh2bSktPnNldENhY2hlZE93bktleXModm0sIG93bktleXMpOworfQorCitpbmxpbmUgSlNJ
bW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZTo6Y2FjaGVkT3duS2V5cygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFoYXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gcmFyZURhdGEoKS0+Y2FjaGVkT3duS2V5cygpOworfQorCitpbmxpbmUgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIFN0cnVjdHVyZTo6Y2FjaGVkT3duS2V5c0lnbm9yaW5nU2VudGluZWwoKSBjb25z
dAoreworICAgIGlmICghaGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsKCk7Cit9
CisKK2lubGluZSBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVPd25LZXlzKCkgY29uc3QKK3sKKyAg
ICBpZiAoaXNEaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaGFz
SW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKHR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEFTU0VSVCghc3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAppbmRleCA4OTg0Y2U5MTk1NmE4MWQ1MWFkMGQ1MjMz
NjMwZTY5OWUzNmRlYjUzLi5kMGY3YmQ4MGMxYzI3ZDNkOTYxMTBhODI1MDQyMWY2NWUwYThhOTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGEuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGEu
aCIKIAogI2luY2x1ZGUgIkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UuaCIKKyNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgpAQCAtNzAsMTYgKzcxLDggQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJldmlvdXMpOwogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fb2JqZWN0VG9TdHJpbmdWYWx1ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsKLX0KLQotSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1l
RW51bWVyYXRvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51
bWVyYXRvci5nZXQoKTsKLX0KLQotdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJv
cGVydHlOYW1lRW51bWVyYXRvcihWTSYgdm0sIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51
bWVyYXRvcikKLXsKLSAgICBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3Iuc2V0KHZtLCB0
aGlzLCBlbnVtZXJhdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9jYWNoZWRPd25LZXlzLnVu
dmFsaWRhdGVkR2V0KCkgIT0gY2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpCisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVkT3duS2V5cyk7CiB9CiAKIC8vIC0tLS0tLS0t
LS0tIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKSBoZWxwZXIgd2F0Y2hwb2ludCBjbGFzc2Vz
IC0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuaAppbmRleCAxMWMxODFkZDYxZTdlYjY3NTRlYmE5NzA1NGJmMTJhNTAzZmI4
OGE3Li4zMzY3MzJkMTFkODczZDQyZjIwZjk5MTA4NzFlMjhjMjcwZjZhODg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTU4
LDcgKzU4LDEwIEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKIAotICAgIFN0cnVjdHVyZSogcHJldmlvdXNJ
RCgpIGNvbnN0OworICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsKKyAgICB9CiAgICAgdm9pZCBzZXRQcmV2aW91
c0lEKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBjbGVhclByZXZpb3VzSUQoKTsKIApAQCAt
NjgsMTEgKzcxLDIzIEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBjYWNoZWRQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKFZNJiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKik7CiAKKyAgICBKU0ltbXV0YWJsZUJ1
dHRlcmZseSogY2FjaGVkT3duS2V5cygpIGNvbnN0OworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5
KiBjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpIGNvbnN0OworICAgIEpTSW1tdXRhYmxl
QnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzQ29uY3VycmVudGx5KCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRDYWNoZWRPd25LZXlzKFZNJiwgSlNJbW11dGFibGVCdXR0ZXJmbHkqKTsKKwogICAgIEJveDxJ
bmxpbmVXYXRjaHBvaW50U2V0PiBjb3B5U2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAgIGNvbnN0IEJveDxJbmxpbmVX
YXRjaHBvaW50U2V0PiYgc2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAgIHZvaWQgc2V0U2hhcmVkUG9seVByb3RvV2F0
Y2hwb2ludChCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4mJiBzaGFyZWRQb2x5UHJvdG9XYXRjaHBv
aW50KSB7IG1fcG9seVByb3RvV2F0Y2hwb2ludCA9IFdURk1vdmUoc2hhcmVkUG9seVByb3RvV2F0
Y2hwb2ludCk7IH0KICAgICBib29sIGhhc1NoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BvbHlQcm90b1dhdGNocG9pbnQpOyB9CiAK
KyAgICBzdGF0aWMgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93bktleXNTZW50aW5lbCgp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVk
T3duS2V5cygpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVy
ZVJhcmVEYXRhLCBtX2NhY2hlZE93bktleXMpOworICAgIH0KKwogICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87CiAKIHByaXZhdGU6CkBAIC04Niw3ICsxMDEsMTAgQEAgY2xhc3MgU3RydWN0dXJlUmFy
ZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcHJldmlvdXM7CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX29iamVjdFRvU3Ry
aW5nVmFsdWU7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHNvbWUgc3RvcnkgZm9yIGNs
ZWFyaW5nIHRoZXNlIHByb3BlcnR5IG5hbWVzIGNhY2hlcyBpbiBHQy4KKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjU5CiAgICAgV3JpdGVCYXJyaWVy
PEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
OworICAgIFdyaXRlQmFycmllcjxKU0ltbXV0YWJsZUJ1dHRlcmZseT4gbV9jYWNoZWRPd25LZXlz
OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFByb3BlcnR5T2Zmc2V0LCBSZWZQdHI8V2F0Y2hwb2lu
dFNldD4sIFdURjo6SW50SGFzaDxQcm9wZXJ0eU9mZnNldD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8UHJvcGVydHlPZmZzZXQ+PiBQcm9wZXJ0eVdhdGNocG9pbnRNYXA7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFByb3BlcnR5V2F0Y2hwb2ludE1hcD4gbV9yZXBsYWNlbWVudFdh
dGNocG9pbnRTZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaAppbmRleCBlNGUyNDk2YTU2MjRkZGY3ZDk5N2Nj
MjAzMmYwOWVhMjUwMWRiYTlkLi5kODM4NzAyODJjYmY5NjUyZWZkMTk3MTY0ZWE0MjVhNDJmNzQ0
NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YUlubGluZXMuaApAQCAtMjUsMTYgKzI1LDEzIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKKyNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgU3RydWN0dXJl
KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6cHJldmlvdXNJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cHJldmlvdXMuZ2V0KCk7Ci19Ci0KIGlubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRQ
cmV2aW91c0lEKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgbV9wcmV2aW91
cy5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7CkBAIC01MCw0ICs0Nyw0NiBAQCBpbmxpbmUgSlNT
dHJpbmcqIFN0cnVjdHVyZVJhcmVEYXRhOjpvYmplY3RUb1N0cmluZ1ZhbHVlKCkgY29uc3QKICAg
ICByZXR1cm4gbV9vYmplY3RUb1N0cmluZ1ZhbHVlLmdldCgpOwogfQogCitpbmxpbmUgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1l
RW51bWVyYXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51
bWVyYXRvci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENh
Y2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGVudW1lcmF0b3IpCit7CisgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLnNl
dCh2bSwgdGhpcywgZW51bWVyYXRvcik7Cit9CisKK2lubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXMoKSBjb25zdAoreworICAgIEFTU0VS
VCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICBhdXRvKiBidXR0ZXJmbHkgPSBtX2NhY2hl
ZE93bktleXMudW52YWxpZGF0ZWRHZXQoKTsKKyAgICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZE93
bktleXNTZW50aW5lbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYnV0
dGVyZmx5OworfQorCitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVE
YXRhOjpjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHJldHVybiBtX2NhY2hlZE93bktleXMudW52
YWxpZGF0ZWRHZXQoKTsKK30KKworaW5saW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1
cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpIGNvbnN0Cit7CisgICAgYXV0
byogYnV0dGVyZmx5ID0gbV9jYWNoZWRPd25LZXlzLnVudmFsaWRhdGVkR2V0KCk7CisgICAgaWYg
KGJ1dHRlcmZseSA9PSBjYWNoZWRPd25LZXlzU2VudGluZWwoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGJ1dHRlcmZseTsKK30KKworaW5saW5lIHZvaWQgU3RydWN0dXJl
UmFyZURhdGE6OnNldENhY2hlZE93bktleXMoVk0mIHZtLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSog
YnV0dGVyZmx5KQoreworICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgaWYgKGJ1dHRl
cmZseSA9PSBjYWNoZWRPd25LZXlzU2VudGluZWwoKSkKKyAgICAgICAgbV9jYWNoZWRPd25LZXlz
LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoYnV0dGVyZmx5KTsKKyAgICBlbHNlCisgICAgICAgIG1f
Y2FjaGVkT3duS2V5cy5zZXQodm0sIHRoaXMsIGJ1dHRlcmZseSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDVkMmM0NTI2NzBm
MjBjNjM0NzgzODczYTg1ZTJjZTYzOWIyM2Y1NjIuLjE5MGU1NzE4N2Q1M2Q0YWM5MjQ1OWNiNDU0
OTBmNWFjMjQ0MDVhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQz
NCw2ICs0MzQsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKKyAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBO
YXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBwcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgUHJvZ3JhbUNvZGVC
bG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIG1vZHVsZVBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXZhbENvZGVCbG9j
a1N0cnVjdHVyZS5zZXQoKnRoaXMsIEV2YWxDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKQEAgLTQ0OCw3ICs0NDksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgc2VudGluZWxTZXRCdWNrZXQuc2V0KCp0aGlzLCBK
U1NldDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMpKTsKICAgICBzZW50aW5lbE1h
cEJ1Y2tldC5zZXQoKnRoaXMsIEpTTWFwOjpCdWNrZXRUeXBlOjpjcmVhdGVTZW50aW5lbCgqdGhp
cykpOwogCi0gICAgbmF0aXZlU3RkRnVuY3Rpb25DZWxsU3RydWN0dXJlLnNldCgqdGhpcywgTmF0
aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgc21hbGxTdHJpbmdzLmluaXRpYWxpemVDb21tb25TdHJpbmdzKCp0aGlzKTsKIAogICAg
IFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0Vu
dHJ5QXRvbWljU3RyaW5nVGFibGUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4MmU3ZTQ4YjQzOGFmNjFmZjNlOGYyNTE2M2NkODA1Njg0
YmViZDIwLi45ZmJiMjc1N2RiNDJhNWRkZmMwNTc1OTk0NzNiYzdmN2Q5OTdkODFlIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMwIEBACisyMDE4LTEyLTE2ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFy
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gT3B0aW1pemUgT2JqZWN0LmtleXMgYnkgY2FjaGluZyBv
d24ga2V5cyByZXN1bHRzIGluIFN0cnVjdHVyZVJhcmVEYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwNDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9vYmplY3Qta2V5cy1jYWNoZWQt
emVyby5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKiBzdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC1hdHRyaWJ1dGUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29i
amVjdC1rZXlzLWNoYW5nZWQtaW5kZXguanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICog
c3RyZXNzL29iamVjdC1rZXlzLWluZGV4ZWQtbm9uLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3Qta2V5
cy1vdmVycmlkZXMtZ2V0LXByb3BlcnR5LW5hbWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAobm9JbmxpbmUpOgorCiAyMDE4LTEyLTE0
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsRnJhbWU6OmNv
bnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSgpIG5lZWRzIHRvIGtlZXAgdGhlIHRvcCBDb2RlQmxv
Y2sgYWxpdmUuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jYWNoZWQt
emVyby5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNhY2hlZC16ZXJvLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3Y2M5NmFmYWNmYTg0OGIxMDMwZDYzMWI2NTM5MTU3ZDcwN2I5NjUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jYWNoZWQtemVyby5qcwpAQCAt
MCwwICsxLDIxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJl
dHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmpl
Y3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0
ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIHNo
b3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHRbMF0gPSBpOworICAgIHNo
b3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaSk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWF0dHJpYnV0
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQtYXR0cmlidXRlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMzZjE0M2VjMjdmMDAyMDU5YWU0MTcyNTY5ZjliNzQzYzEzYmQxYTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFuZ2VkLWF0dHJpYnV0
ZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQor
eworICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisK
K3ZhciBvYmplY3QgPSB7IENvY29hOiA0MiB9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsr
aSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0
Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnQ29jb2EnKTsKK30KKworUmVm
bGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdDb2NvYScsIHsKKyAgICBlbnVtZXJhYmxlOiBm
YWxzZQorfSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVz
dWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAg
IHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL29iamVjdC1rZXlzLWNoYW5nZWQtaW5kZXguanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3Qta2V5cy1jaGFuZ2VkLWluZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyM2UwOTI1N2IyOWRhNDU0YmRm
NmYzZmQ3M2JhM2JhNmIzZjc0NzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9v
YmplY3Qta2V5cy1jaGFuZ2VkLWluZGV4LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7
Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIG9iamVjdCA9IHt9OworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTY7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hv
dWxkQmUocmVzdWx0Lmxlbmd0aCwgMCk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCB1bmRlZmlu
ZWQpOworICAgIHJlc3VsdFswXSA9IGk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7
CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCBpKTsKK30KKworb2JqZWN0WzBdID0gNDI7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0
KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRb
MF0sICcwJyk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jaGFu
Z2VkLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZDNhMzA1M2ZiZTZkNjRkOTAyMjk3YjA4M2RmYTcyMGRiNDZjMjgyCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2hhbmdlZC5qcwpAQCAtMCwwICsxLDI4
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmpl
Y3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7fTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChv
YmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIHNob3VsZEJlKHJl
c3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHRbMF0gPSBpOworICAgIHNob3VsZEJlKHJl
c3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaSk7Cit9CisKK29iamVj
dC5Db2NvYSA9IDQyOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciBy
ZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnQ29jb2EnKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL29iamVjdC1rZXlzLWluZGV4ZWQtbm9uLWNhY2hlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWtleXMtaW5kZXhlZC1ub24tY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDljOWNmNGVlMTEy
YTdmMzE3Y2M2NzkwMTMxYzAwZjRiODcwZDY4YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL29iamVjdC1rZXlzLWluZGV4ZWQtbm9uLWNhY2hlLmpzCkBAIC0wLDAgKzEsMjUgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgcmV0dXJuIE9iamVjdC5r
ZXlzKG9iamVjdCk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIG9iamVjdCA9IHswOiA0Mn07
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qo
b2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShy
ZXN1bHRbMF0sICcwJyk7Cit9CitvYmplY3RbMV0gPSA0NDsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWUzOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJl
KHJlc3VsdC5sZW5ndGgsIDIpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICBz
aG91bGRCZShyZXN1bHRbMV0sICcxJyk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9v
YmplY3Qta2V5cy1vdmVycmlkZXMtZ2V0LXByb3BlcnR5LW5hbWVzLmpzIGIvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWtleXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1uYW1lcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MzBkOGJiMTdlOTE5OGU1MDdiZTc1YzVkMTk2MWU5MTRiMGI3ZmRjCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1u
YW1lcy5qcwpAQCAtMCwwICsxLDU3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0
KQoreworICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7
CisKK3sKKyAgICBsZXQgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVj
dCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDUpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbMF0sICcwJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAg
ICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAnMicpOworICAgICAgICBzaG91bGRCZShyZXN1bHRb
M10sICczJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFs0XSwgJzQnKTsKKyAgICB9CisKKyAg
ICBvYmplY3QuQ29jb2EgPSA0MjsKKyAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAg
IHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDYpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAn
KTsKKyAgICBzaG91bGRCZShyZXN1bHRbMV0sICcxJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJd
LCAnMicpOworICAgIHNob3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICBzaG91bGRCZShyZXN1
bHRbNF0sICc0Jyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzVdLCAnQ29jb2EnKTsKK30KKworewor
ICAgIGxldCBvYmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAg
ICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgNSk7CisgICAgICAgIHNob3VsZEJlKHJlc3Vs
dFswXSwgJzAnKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCAnMScpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMl0sICcyJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwgJzMn
KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzRdLCAnNCcpOworICAgIH0KKworICAgIG9iamVj
dFs4XSA9IDQyOworICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUo
cmVzdWx0Lmxlbmd0aCwgNik7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAgIHNo
b3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMl0sICcyJyk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0WzNdLCAnMycpOworICAgIHNob3VsZEJlKHJlc3VsdFs0XSwgJzQn
KTsKKyAgICBzaG91bGRCZShyZXN1bHRbNV0sICc4Jyk7Cit9Cg==
</data>
<flag name="review"
          id="374323"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>