<?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>238143</bug_id>
          
          <creation_ts>2022-03-21 07:16:11 -0700</creation_ts>
          <short_desc>[JSC][ARMv7] Support proper near calls and JUMP_ISLANDS</short_desc>
          <delta_ts>2022-04-07 10:04:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geza Lore">glore</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mikhail</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853181</commentid>
    <comment_count>0</comment_count>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-03-21 07:16:11 -0700</bug_when>
    <thetext>[JSC][ARMv7] Support proper near calls and JUMP_ISLANDS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853200</commentid>
    <comment_count>1</comment_count>
      <attachid>455247</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-03-21 08:32:35 -0700</bug_when>
    <thetext>Created attachment 455247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853202</commentid>
    <comment_count>2</comment_count>
      <attachid>455248</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-03-21 08:37:03 -0700</bug_when>
    <thetext>Created attachment 455248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855362</commentid>
    <comment_count>3</comment_count>
      <attachid>455248</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-26 02:50:38 -0700</bug_when>
    <thetext>Comment on attachment 455248
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:32
&gt; +        Also removedetunused repatchCompact methods from assemblers.

typo: removedetunused

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:911
&gt; +#if CPU(ARM)
&gt; +            AssemblerType::relinkTailCall(nearCall.dataLocation(), destination.untaggedExecutableAddress());
&gt; +#else
&gt;              AssemblerType::relinkJump(nearCall.dataLocation(), destination.dataLocation());
&gt; +#endif

We need to avoid these if-defs as much as possible. Why doesn&apos;t relinkJump work?
If we need special handling for tail-call instead, then, we should define relinkTailCall for all assemblers.
Anyway, let&apos;s not add ifdef in AbstractMacroAssembler.h

&gt; Source/JavaScriptCore/bytecode/Repatch.cpp:1885
&gt; +    for (CallToCodePtr callToCodePtr : calls)
&gt;          patchBuffer.link(callToCodePtr.call, FunctionPtr&lt;JSEntryPtrTag&gt;(callToCodePtr.codePtr));

Nice

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:-356
&gt; -#endif // ENABLE(JUMP_ISLANDS)

Why is it removed? This is necessary to protect it against very small reservation size.

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:717
&gt; +                auto jump = jit.nearTailCall();

Let&apos;s rename this variable to nearTailCall.

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:52
&gt; +    template&lt;typename... Args&gt;
&gt; +    static UniqueRef&lt;EmbeddedFixedVector&gt; create(unsigned size, Args&amp;&amp;... args)
&gt; +    {
&gt; +        return UniqueRef { *new (NotNull, fastMalloc(Base::allocationSize(size))) EmbeddedFixedVector(size, std::forward&lt;Args&gt;(args)...) };
&gt; +    }

We should have much more descriptive name for this create.
It is hard to know what this create factory function does. For example,

T::create(3, 1, 2, 3);

Then, we do not know whether
1. we are creating 3 elements array where each element is constructed with 1, 2, 3.
2. we are creating 4 elements array, 3, 1, 2, 3

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:108
&gt; +    template&lt;typename... Args&gt;
&gt; +    explicit EmbeddedFixedVector(unsigned size, Args&amp;&amp;... args)
&gt; +        : Base(size, std::forward&lt;Args&gt;(args)...)
&gt; +    {
&gt; +    }
&gt; +

We should not expose this constructor, and we should define a factory function which has much more descriptive name T::createXXX.
The rationale is the same to the above one.

&gt; Source/WTF/wtf/FixedVector.h:79
&gt; +    template&lt;typename... Args&gt;
&gt; +    explicit FixedVector(size_t size, Args&amp;&amp;... args)
&gt; +        : m_storage(size ? Storage::create(size, std::forward&lt;Args&gt;(args)...).moveToUniquePtr() : nullptr)
&gt; +    { }
&gt; +

Ditto.

&gt; Source/WTF/wtf/PlatformEnable.h:615
&gt; +#if (CPU(ARM64) &amp;&amp; CPU(ADDRESS64)) || CPU(ARM)

Use CPU(ARM_THUMB2)

&gt; Source/WTF/wtf/TrailingArray.h:71
&gt; +    template&lt;typename... Args&gt;
&gt; +    TrailingArray(unsigned size, Args&amp;&amp;... args)
&gt; +        : m_size(size)
&gt; +    {
&gt; +        static_assert(std::is_final_v&lt;Derived&gt;);
&gt; +        VectorTypeOperations&lt;T&gt;::initializeWithArgs(begin(), end(), std::forward&lt;Args&gt;(args)...);
&gt; +    }
&gt; +

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855551</commentid>
    <comment_count>4</comment_count>
      <attachid>455248</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-03-28 05:19:35 -0700</bug_when>
    <thetext>Comment on attachment 455248
Patch

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

&gt;&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:911
&gt;&gt; +#endif
&gt; 
&gt; We need to avoid these if-defs as much as possible. Why doesn&apos;t relinkJump work?
&gt; If we need special handling for tail-call instead, then, we should define relinkTailCall for all assemblers.
&gt; Anyway, let&apos;s not add ifdef in AbstractMacroAssembler.h

relinkJump doesn&apos;t work  because on ARM jumps (i.e.: jit.jump()) are still far jumps, only jit.nearTailCall() are short branches. Will add relinkTailCall to other assemblers instead of the ifdef.

&gt;&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:-356
&gt;&gt; -#endif // ENABLE(JUMP_ISLANDS)
&gt; 
&gt; Why is it removed? This is necessary to protect it against very small reservation size.

We no longer need this. The jump island in the last region is never used (even if we only have a single region). The allocator now understands this, so no need for this padding. Reservations smaller than (regionSize - islandRegionSize) will just have no islands (as we don&apos;t need them). All this is determined in the constructor of FixedVMPoolExecutableAllocator.

&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:52
&gt;&gt; +    }
&gt; 
&gt; We should have much more descriptive name for this create.
&gt; It is hard to know what this create factory function does. For example,
&gt; 
&gt; T::create(3, 1, 2, 3);
&gt; 
&gt; Then, we do not know whether
&gt; 1. we are creating 3 elements array where each element is constructed with 1, 2, 3.
&gt; 2. we are creating 4 elements array, 3, 1, 2, 3

Renamed to createWithSizeAndConstructorArguments

&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:108
&gt;&gt; +
&gt; 
&gt; We should not expose this constructor, and we should define a factory function which has much more descriptive name T::createXXX.
&gt; The rationale is the same to the above one.

This constructor is private (used by createWithSizeAndConstructorArguments above), and I made the constructor of Base protected. This is the cleanest, alternative would be a new constructor of Trailing array that does no initialisation, but then half the constructors initialise inside the class, the other half does not, so it would be a mess and still have additional constructors. Given the constructors of TrailingArray are protected and of EmbeddedFixedVector are private, createWithSizeAndConstructorArguments is the only way of making one.

&gt;&gt; Source/WTF/wtf/FixedVector.h:79
&gt;&gt; +
&gt; 
&gt; Ditto.

Added static createWithSizeAndConstructorArguments factory insted.

&gt;&gt; Source/WTF/wtf/TrailingArray.h:71
&gt;&gt; +
&gt; 
&gt; Ditto.

This is needed by the EmbeddedFixedVector (which is a subclass), so see above. Made all constructors protected however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855559</commentid>
    <comment_count>5</comment_count>
      <attachid>455907</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-03-28 05:52:15 -0700</bug_when>
    <thetext>Created attachment 455907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855596</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-28 07:17:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/90920556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858737</commentid>
    <comment_count>7</comment_count>
      <attachid>455907</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-06 02:11:10 -0700</bug_when>
    <thetext>Comment on attachment 455907
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:101
&gt; +#elif CPU(ARM)

Use CPU(ARM_THUMB2)

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:117
&gt; +#elif CPU(ARM)

Use CPU(ARM_THUMB2)

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:455
&gt; +            m_numAllocators = (reservation.size + m_regionSize - 1) / m_regionSize;

m_numAllocators member is not necessary since m_allocators.size() can return the same value.

&gt; Source/WTF/wtf/FixedVector.h:103
&gt; +    FixedVector(std::unique_ptr&lt;Storage&gt; storage)

Let&apos;s take it std::unique_ptr&lt;Storage&gt;&amp;&amp;.

&gt; Source/WTF/wtf/Vector.h:105
&gt; +            new(NotNull, cur) T(args...);

Add space after `new`

new (NotNull, cur) T(args...);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859170</commentid>
    <comment_count>8</comment_count>
      <attachid>456900</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-04-07 02:07:34 -0700</bug_when>
    <thetext>Created attachment 456900
review fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859295</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-07 10:04:34 -0700</bug_when>
    <thetext>Committed r292540 (249378@main): &lt;https://commits.webkit.org/249378@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456900.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455247</attachid>
            <date>2022-03-21 08:32:35 -0700</date>
            <delta_ts>2022-03-21 08:51:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238143-20220321153233.patch</filename>
            <type>text/plain</type>
            <size>47604</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZmI5ZDM3ZDg1YWQ3OGQxMzI4YWYzY2FlNzUyZDE0OWRkMDM0ODg5Li44OWMzYmRlMzVjMGZiZTlj
ODRiNTc5YjJmNmQ2YWM2NTFlMzRjM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAyMi0wMy0yMSAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXVtBUk12N10gU3VwcG9ydCBwcm9wZXIgbmVhciBjYWxscyBhbmQgSlVNUF9J
U0xBTkRTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgbmVhckNhbGwgYW5kIG5lYXJUYWlsQ2FsbCBhcyBzaW5nbGUgaW5zdHJ1Y3Rpb24g
ZGlyZWN0CisgICAgICAgIGJyYW5jaGVzIG9uIEFSTXY3L1RodW1iLTIuIChXaWxsIG5lZWQgdG8g
c3VwcG9ydCB0aGVzZSBmb3IgV2FzbSBKSVRzLAorICAgICAgICB0byBpbXBsZW1lbnQgdGhyZWFk
U2FmZVBhdGNoYWJsZU5lYXJjYWxsLikgVG8gbWFrZSB0aGlzIHBvc3NpYmxlIHdoaWxlCisgICAg
ICAgIGFsc28gaGF2aW5nIGFuIGV4ZWN1dGFibGUgcG9vbCBzaXplIGxhcmdlciB0aGFuIHRoZSBi
cmFuY2ggcmFuZ2UsIEkKKyAgICAgICAgYWxzbyBwb3J0ZWQgSlVNUF9JU0xBTkRTLgorCisgICAg
ICAgIFRvIHBvcnQgSlVNUF9JU0xBTkRTLCBhIHJlZm9ybXVsYXRpb24gb2YgdGhlIHJlZ2lvbiBh
bGxvY2F0aW9ucyB3YXMKKyAgICAgICAgbmVjZXNzYXJ5LCB3aGljaCBpcyBub3cgZG9uZSBpbiB0
ZXJtcyBvZiB0aGUgcmFuZ2Ugb2YgdGhlCisgICAgICAgIG5lYXJDYWxsL25lYXJUYWlsQ2FsbCBt
YWNyb2Fzc2VtYmxlciBtYWNyb3MuIEZvciBBUk02NCwgdGhlIGJlaGF2aW91cgorICAgICAgICBz
aG91bGQgYmUgaWRlbnRpY2FsLgorCisgICAgICAgIFRoZSBqdW1wIGlzbGFkIHJlc2VydmF0aW9u
IG9uIEFSTXY3IGlzIHNldCB0byA1JSBvZiBleGVjdXRhYmxlIG1lbW9yeQorICAgICAgICBzaXpl
LCB3aGljaCBpcyBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGFzIHRoZSBiYXNlbGluZSBKSVQgY29k
ZSBzaXplCisgICAgICAgIHNhdmluZyBwcm92aWRlZCBieSB1c2luZyBzaG9ydCBicmFuY2hlcyBm
b3IgbmVhciBjYWxscywgc28gdGhlIGNoYW5nZQorICAgICAgICBzaG91bGQgYmUgbmV1dHJhbCBv
dmVyYWxsIHdpdGggcmVzcGVjdCB0byBleGVjdXRhYmxlIG1lbW9yeQorICAgICAgICBjb25zdW1w
dGlvbi4KKworICAgICAgICBBbHNvIG1hZGUgaXQgcG9zc2libGUgZm9yIHRoZSAtLWppdE1lbW9y
eVJlc2VydmF0aW9uU2l6ZSBvcHRpb24gdG8KKyAgICAgICAgcmVxdWVzdCBKSVQgbWVtb3J5IHRo
YXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGRlZmF1bHQgaGFyZGNvZGVkIHNpemUKKyAgICAgICAgd2hp
bGUgdXNpbmcgSlVNUF9JU0xBTkRTICh3ZSBuZWVkIHRoaXMgZm9yIHRlc3Rpbmcgb24gQVJNdjcs
IHdoaWNoIGhhcworICAgICAgICBhIHNtYWxsZXIgZGVmYXVsdCBleGVjdXRhYmxlIHBvb2wgc2l6
ZSkuIFRvIGRvIHRoaXMgdGhlIHJlZ2lvbgorICAgICAgICBhbGxvY2F0b3JzIGFyZSBubyBsb25n
ZXIgc3RhdGljYWxseSBhbGxvY2F0ZWQgYnV0IGFyZSBoZWxkIGluIGEKKyAgICAgICAgRml4ZWRW
ZWN0b3IuCisKKyAgICAgICAgQWxzbyByZW1vdmVkZXR1bnVzZWQgcmVwYXRjaENvbXBhY3QgbWV0
aG9kcyBmcm9tIGFzc2VtYmxlcnMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QVJNdjdBc3NlbWJsZXI6OmlzRXZlbik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVy
OjptYWtlRXZlbik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpibCk6CisgICAgICAg
IChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6OmxpbmtUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rQ2Fs
bCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZWxpbmtDYWxsKToKKyAgICAgICAg
KEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlbGlua1RhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6QVJN
djdBc3NlbWJsZXI6OnByZXBhcmVGb3JBdG9taWNSZWxpbmtKdW1wQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnByZXBhcmVGb3JBdG9taWNSZWxpbmtDYWxsQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVt
cCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpjYW5FbWl0SnVtcCk6CisgICAgICAg
IChKU0M6OkFSTXY3QXNzZW1ibGVyOjppc0JMKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6OmxpbmtKdW1wVDQpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGlua0NvbmRp
dGlvbmFsSnVtcFQ0KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmtKdW1wQWJz
b2x1dGUpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGlua0JyYW5jaCk6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQXNzZW1ibGVyQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmlzSW50KToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bmVhckNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpuZWFyVGFpbENhbGwpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpsaW5rQ2FsbCk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJ
U0NWNjQuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgICogYnl0ZWNvZGUv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAg
ICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6
ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisKIDIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI5MDcy
MCk6IERlYnVnZ2VyOiBTdGVwIG5leHQgc2hvdWxkIG5vdCBiZWhhdmUgdGhlIHNhbWUgYXMgU3Rl
cCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDg3NWM3YmMyZTEzMGQ4NWMwNjcwYmM2NTQyZGJlZDRlYjRhYjVkMWMuLjUx
N2ZiMzI5ZDY0ZjBkYTQ4OGNiMmYwYThhYmMyMDNhZGUyZDUyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMjItMDMtMjEgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0pTQ11bQVJNdjddIFN1cHBvcnQgcHJvcGVyIG5lYXIgY2FsbHMgYW5kIEpVTVBfSVNMQU5EUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTQzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBj
b25zdHJ1Y3RvciBhcmd1bWVudHMgZm9yIEZpeGVkVmVjdG9yIGVsZW1lbnQgaW5pdGlhbGl6YXRp
b24uCisKKyAgICAgICAgKiB3dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oOgorICAgICAgICAqIHd0
Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Rml4ZWRWZWN0b3Ip
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAqIHd0Zi9UcmFpbGlu
Z0FycmF5Lmg6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OlRyYWlsaW5nQXJyYXkpOgor
ICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlv
bnM6OmluaXRpYWxpemVXaXRoQXJncyk6CisKIDIwMjItMDMtMTYgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgZmly
c3QgZHJhZnQgb2YgYnVmZmVyIG1hcHBpbmcgYWNjb3JkaW5nIHRvIHRoZSBzcGVjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKaW5kZXggNmU5
MWQ5MjMwYTM5Y2U1NzhkZTdmYTc2NWFjYmRkZTMyNTMzMDkyMS4uMWM1MjIyNTljZmQxMDAzYjM4
MjQzOTE0ZGU1ZDdkNGRkNDE5MjAzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtNTYsMTQgKzU2LDYgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRzLCB0eXBlbmFtZSBUeXBlPgotQUxXQVlTX0lO
TElORSBjb25zdGV4cHIgYm9vbCBpc0ludChUeXBlIHQpCi17Ci0gICAgY29uc3RleHByIHNpemVf
dCBzaGlmdCA9IHNpemVvZihUeXBlKSAqIENIQVJfQklUIC0gYml0czsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihUeXBlKSAqIENIQVJfQklUID4gc2hpZnQsICJzaGlmdCBpcyBsYXJnZXIgdGhh
biB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUiKTsKLSAgICByZXR1cm4gKCh0IDw8IHNoaWZ0KSA+PiBz
aGlmdCkgPT0gdDsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpczRCeXRlQWxpZ25l
ZChjb25zdCB2b2lkKiBwdHIpCiB7CiAgICAgcmV0dXJuICEocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocHRyKSAmIDB4Myk7CkBAIC0yOTA4LDMwICsyOTAwLDYgQEAgcHVibGljOgogICAgIH0K
ICNlbmRpZgogICAgIAotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0KHZvaWQqIHdoZXJl
LCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCEodmFsdWUgJiB+MHgzZmY4
KSk7Ci0KLSAgICAgICAgTWVtT3BTaXplIHNpemU7Ci0gICAgICAgIGJvb2wgVjsKLSAgICAgICAg
TWVtT3Agb3BjOwotICAgICAgICBpbnQgaW1tMTI7Ci0gICAgICAgIFJlZ2lzdGVySUQgcm47Ci0g
ICAgICAgIFJlZ2lzdGVySUQgcnQ7Ci0gICAgICAgIGJvb2wgZXhwZWN0ZWQgPSBkaXNhc3NlbWJs
ZUxvYWRTdG9yZVJlZ2lzdGVyVW5zaWduZWRJbW1lZGlhdGUod2hlcmUsIHNpemUsIFYsIG9wYywg
aW1tMTIsIHJuLCBydCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0ZWQsIGV4cGVjdGVk
ICYmIHNpemUgPj0gTWVtT3BTaXplXzMyICYmICFWICYmIG9wYyA9PSBNZW1PcF9MT0FEKTsgLy8g
ZXhwZWN0IDMyLzY0IGJpdCBsb2FkIHRvIEdQUi4KLQotICAgICAgICBpZiAoc2l6ZSA9PSBNZW1P
cFNpemVfMzIpCi0gICAgICAgICAgICBpbW0xMiA9IGVuY29kZVBvc2l0aXZlSW1tZWRpYXRlPDMy
Pih2YWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGltbTEyID0gZW5jb2RlUG9zaXRp
dmVJbW1lZGlhdGU8NjQ+KHZhbHVlKTsKLSAgICAgICAgaW50IGluc24gPSBsb2FkU3RvcmVSZWdp
c3RlclVuc2lnbmVkSW1tZWRpYXRlKHNpemUsIFYsIG9wYywgaW1tMTIsIHJuLCBydCk7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPih3
aGVyZSkgPT0gd2hlcmUpOwotICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwg
c2l6ZW9mKGludCkpOwotCi0gICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsK
LSAgICB9Ci0KICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmRl
YnVnT2Zmc2V0KCk7IH0KIAogI2lmIE9TKExJTlVYKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJM
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3Nl
bWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIu
aAppbmRleCBhY2FkZGQyZDU2YTIwZGJhNzY0MWUyYzMxNDQ4MmUxMGRhMjUzZWE3Li5hNGM5YTM3
NzUxNDIwN2EwYThiNjE4ZDVjZTRlNWNlYmEzYzQ5ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC00OTEsNiArNDkxLDE2IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKIAorICAgIC8vIEluIHRoZSBBUk12NyBJU0EsIHRoZSBMU0Ig
b2YgYSBjb2RlIHBvaW50ZXIgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhcmdldCB1c2VzIFRodW1i
IHZzIEFSTQorICAgIC8vIGVuY29kaW5nLiBUaGVzZSB1dGlsaXR5IGZ1bmN0aW9ucyBhcmUgdGhl
cmUgZm9yIHdoZW4gd2UgbmVlZCB0byBkZWFsIHdpdGggdGhpcy4KKyAgICBzdGF0aWMgYm9vbCBp
c0V2ZW4oY29uc3Qgdm9pZCogcHRyKSB7IHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihwdHIpICYgMSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0V2ZW4oQXNzZW1ibGVyTGFiZWwg
JmxhYmVsKSB7IHJldHVybiAhKGxhYmVsLm9mZnNldCgpICYgMSk7IH0KKyAgICBzdGF0aWMgdm9p
ZCogbWFrZUV2ZW4oY29uc3Qgdm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc0V2
ZW4ocHRyKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIH4xKTsKKyAgICB9CisKICAgICAvLyBBUk12Nywg
QXBweC1BLjYuMwogICAgIHN0YXRpYyBib29sIEJhZFJlZyhSZWdpc3RlcklEIHJlZykKICAgICB7
CkBAIC02MDksNiArNjE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfVk9SUl9UMSAgICAgID0g
MHhFRjIwLAogICAgICAgICBPUF9CX1QzYSAgICAgICAgPSAweEYwMDAsCiAgICAgICAgIE9QX0Jf
VDRhICAgICAgICA9IDB4RjAwMCwKKyAgICAgICAgT1BfQkxfVDRhICAgICAgID0gMHhGMDAwLAog
ICAgICAgICBPUF9BTkRfaW1tX1QxICAgPSAweEYwMDAsCiAgICAgICAgIE9QX1RTVF9pbW0gICAg
ICA9IDB4RjAxMCwKICAgICAgICAgT1BfQklDX2ltbV9UMSAgID0gMHhGMDIwLApAQCAtNjk3LDYg
KzcwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX0RNQl9JU0hTVF9UMWIgPSAweDhGNUEsCiAg
ICAgICAgIE9QX0JfVDNiICAgICAgICAgPSAweDgwMDAsCiAgICAgICAgIE9QX0JfVDRiICAgICAg
ICAgPSAweDkwMDAsCisgICAgICAgIE9QX0JMX1Q0YiAgICAgICAgPSAweEQwMDAsCiAgICAgfSBP
cGNvZGVJRDI7CiAKICAgICBzdHJ1Y3QgRm91ckZvdXJzIHsKQEAgLTcxOSw2ICs3MzEsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgfSBtX3U7CiAgICAgfTsKIAorICAgIGVudW0gY2xhc3MgQnJhbmNo
V2l0aExpbmsgOiBib29sIHsKKyAgICAgICAgTm8gPSBmYWxzZSwKKyAgICAgICAgWWVzID0gdHJ1
ZQorICAgIH07CisKICAgICBjbGFzcyBBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjsKIAogICAgIC8v
IGZhbHNlIG1lYW5zIGVsc2UhCkBAIC05MjEsNiArOTM4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
bV9mb3JtYXR0ZXIudHdvV29yZE9wMTZPcDE2KE9QX0JfVDRhLCBPUF9CX1Q0Yik7CiAgICAgICAg
IHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOwogICAgIH0KKworICAgIC8vIE9ubHkgYWxsb3dl
ZCBpbiBJVCAoaWYgdGhlbikgYmxvY2sgaWYgbGFzdCBpbnN0cnVjdGlvbi4KKyAgICBBTFdBWVNf
SU5MSU5FIEFzc2VtYmxlckxhYmVsIGJsKCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3
b1dvcmRPcDE2T3AxNihPUF9CTF9UNGEsIE9QX0JMX1Q0Yik7CisgICAgICAgIHJldHVybiBtX2Zv
cm1hdHRlci5sYWJlbCgpOworICAgIH0KICAgICAKICAgICAvLyBPbmx5IGFsbG93ZWQgaW4gSVQg
KGlmIHRoZW4pIGJsb2NrIGlmIGxhc3QgaW5zdHJ1Y3Rpb24uCiAgICAgQUxXQVlTX0lOTElORSBB
c3NlbWJsZXJMYWJlbCBibHgoUmVnaXN0ZXJJRCBybSkKQEAgLTIyNzMsNyArMjI5Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGxpbmtKdW1wVDM8Y29weT4ocmVjb3JkLmNvbmRpdGlvbigpLCBy
ZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRv
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExpbmtKdW1wVDQ6Ci0gICAgICAg
ICAgICBsaW5rSnVtcFQ0PGNvcHk+KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4oZnJv
bSksIGZyb21JbnN0cnVjdGlvbiwgdG8pOworICAgICAgICAgICAgbGlua0p1bXBUNDxjb3B5Pihy
ZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRv
LCBCcmFuY2hXaXRoTGluazo6Tm8pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
TGlua0NvbmRpdGlvbmFsSnVtcFQ0OgogICAgICAgICAgICAgbGlua0NvbmRpdGlvbmFsSnVtcFQ0
PGNvcHk+KHJlY29yZC5jb25kaXRpb24oKSwgcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3Qq
Pihmcm9tKSwgZnJvbUluc3RydWN0aW9uLCB0byk7CkBAIC0yMzIxLDEyICsyMzQ1LDIwIEBAIHB1
YmxpYzoKICAgICAgICAgbGlua0p1bXBBYnNvbHV0ZShsb2NhdGlvbiwgbG9jYXRpb24sIHRvKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJM
YWJlbCBmcm9tLCB2b2lkKiB0bykKKyAgICBzdGF0aWMgdm9pZCBsaW5rVGFpbENhbGwodm9pZCog
Y29kZSwgQXNzZW1ibGVyTGFiZWwgZnJvbSwgdm9pZCogdG8pCiAgICAgewotICAgICAgICBBU1NF
UlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSAmIDEpKTsKICAgICAgICAgQVNT
RVJUKGZyb20uaXNTZXQoKSk7CiAKLSAgICAgICAgc2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0
PHVpbnQxNl90Kj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkgKyBmcm9tLm9mZnNl
dCgpKSAtIDEsIHRvLCBmYWxzZSk7CisgICAgICAgIHVpbnQxNl90KiBsb2NhdGlvbiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSAr
IGZyb20ub2Zmc2V0KCkpOworICAgICAgICBsaW5rQnJhbmNoKGxvY2F0aW9uLCBsb2NhdGlvbiwg
bWFrZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6Tm8pOworICAgIH0KKworICAgIHN0YXRpYyB2
b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGZyb20uaXNTZXQoKSk7CisKKyAgICAgICAgdWludDE2X3Qq
IGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGNvZGUpICsgZnJvbS5vZmZzZXQoKSk7CisgICAgICAgIGxpbmtCcmFuY2gobG9j
YXRpb24sIGxvY2F0aW9uLCBtYWtlRXZlbih0byksIEJyYW5jaFdpdGhMaW5rOjpZZXMpOwogICAg
IH0KIAogICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxh
YmVsIHdoZXJlLCB2b2lkKiB2YWx1ZSkKQEAgLTIzNTAsMTEgKzIzODIsNTAgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgcmVsaW5rQ2FsbCh2b2lkKiBmcm9tLCB2b2lkKiB0bykKICAgICB7
Ci0gICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICYgMSkp
OworICAgICAgICBBU1NFUlQoaXNFdmVuKGZyb20pKTsKIAotICAgICAgICBzZXRQb2ludGVyKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDEsIHRvLCB0cnVlKTsKKyAgICAgICAg
dWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pOwor
ICAgICAgICBpZiAoaXNCTChsb2NhdGlvbiAtIDIpKSB7CisgICAgICAgICAgICBsaW5rQnJhbmNo
KGxvY2F0aW9uLCBsb2NhdGlvbiwgbWFrZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6WWVzKTsK
KyAgICAgICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24gLSAyLCAyICogc2l6ZW9mKHVpbnQxNl90
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRQb2ludGVy
KGxvY2F0aW9uIC0gMSwgdG8sIHRydWUpOwogICAgIH0KLSAgICAKKworICAgIHN0YXRpYyB2b2lk
IHJlbGlua1RhaWxDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzRXZlbihmcm9tKSk7CisKKyAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pOworICAgICAgICBsaW5rQnJhbmNoKGxvY2F0aW9u
LCBsb2NhdGlvbiwgbWFrZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6Tm8pOworICAgICAgICBj
YWNoZUZsdXNoKGxvY2F0aW9uIC0gMiwgMiAqIHNpemVvZih1aW50MTZfdCkpOworICAgIH0KKwor
I2lmIEVOQUJMRShKVU1QX0lTTEFORFMpCisgICAgc3RhdGljIHZvaWQqIHByZXBhcmVGb3JBdG9t
aWNSZWxpbmtKdW1wQ29uY3VycmVudGx5KHZvaWQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzRXZlbihmcm9tKSk7CisgICAgICAgIEFTU0VSVChpc0V2ZW4odG8pKTsK
KworICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHRvKSAt
IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oZnJvbSk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxpbnQ+KG9mZnNldCkgPT0gb2Zmc2V0KTsKKworICAgICAgICBpZiAoaXNJbnQ8MjU+KG9mZnNl
dCkpCisgICAgICAgICAgICByZXR1cm4gdG87CisKKyAgICAgICAgcmV0dXJuIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OnNpbmdsZXRvbigpLmdldEp1bXBJc2xhbmRUb0NvbmN1cnJlbnRseShmcm9tLCB0
byk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQqIHByZXBhcmVGb3JBdG9taWNSZWxpbmtDYWxs
Q29uY3VycmVudGx5KHZvaWQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzRXZlbihmcm9tKSk7CisKKyAgICAgICAgcmV0dXJuIHByZXBhcmVGb3JBdG9taWNSZWxpbmtK
dW1wQ29uY3VycmVudGx5KGZyb20sIG1ha2VFdmVuKHRvKSk7CisgICAgfQorI2VuZGlmCisKICAg
ICBzdGF0aWMgdm9pZCogcmVhZENhbGxUYXJnZXQodm9pZCogZnJvbSkKICAgICB7CiAgICAgICAg
IHJldHVybiByZWFkUG9pbnRlcihyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSkgLSAx
KTsKQEAgLTIzNjcsMjcgKzI0MzgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHNldEludDMyKHdoZXJl
LCB2YWx1ZSwgdHJ1ZSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21w
YWN0KHZvaWQqIHdoZXJlLCBpbnQzMl90IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChv
ZmZzZXQgPj0gLTI1NSAmJiBvZmZzZXQgPD0gMjU1KTsKLQotICAgICAgICBib29sIGFkZCA9IHRy
dWU7Ci0gICAgICAgIGlmIChvZmZzZXQgPCAwKSB7Ci0gICAgICAgICAgICBhZGQgPSBmYWxzZTsK
LSAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIG9mZnNldCB8PSAoYWRkIDw8IDkpOwotICAgICAgICBvZmZzZXQgfD0gKDEgPDwgMTApOwot
ICAgICAgICBvZmZzZXQgfD0gKDEgPDwgMTEpOwotCi0gICAgICAgIHVpbnQxNl90KiBsb2NhdGlv
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPih3aGVyZSk7Ci0gICAgICAgIHVpbnQxNl90
IGluc3RydWN0aW9uID0gbG9jYXRpb25bMV0gJiB+KCgxIDw8IDEyKSAtIDEpOwotICAgICAgICBp
bnN0cnVjdGlvbiB8PSBvZmZzZXQ7Ci0gICAgICAgIHBlcmZvcm1KSVRNZW1jcHkobG9jYXRpb24g
KyAxLCAmaW5zdHJ1Y3Rpb24sIHNpemVvZih1aW50MTZfdCkpOwotICAgICAgICBjYWNoZUZsdXNo
KGxvY2F0aW9uLCBzaXplb2YodWludDE2X3QpICogMik7Ci0gICAgfQotCiAgICAgc3RhdGljIHZv
aWQgcmVwYXRjaFBvaW50ZXIodm9pZCogd2hlcmUsIHZvaWQqIHZhbHVlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hlcmUpICYgMSkpOwpAQCAt
MjQwOCw3ICsyNDU4LDcgQEAgcHVibGljOgogI2lmIE9TKExJTlVYKQogICAgICAgICBpZiAoY2Fu
QmVKdW1wVDQocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpLCB0
bykpIHsKICAgICAgICAgICAgIHVpbnQxNl90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQx
Nl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOwotICAgICAgICAgICAgbGlua0p1bXBUNChwdHIs
IHB0ciwgdG8pOworICAgICAgICAgICAgbGlua0p1bXBUNChwdHIsIHB0ciwgdG8sIEJyYW5jaFdp
dGhMaW5rOjpObyk7CiAgICAgICAgICAgICBjYWNoZUZsdXNoKHB0ciAtIDIsIHNpemVvZih1aW50
MTZfdCkgKiAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVpbnQxNl90KiBwdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyA1OwpAQCAt
MjQxNyw3ICsyNDY3LDcgQEAgcHVibGljOgogICAgICAgICB9CiAjZWxzZQogICAgICAgICB1aW50
MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQp
ICsgMjsKLSAgICAgICAgbGlua0p1bXBUNChwdHIsIHB0ciwgdG8pOworICAgICAgICBsaW5rSnVt
cFQ0KHB0ciwgcHRyLCB0bywgQnJhbmNoV2l0aExpbms6Ok5vKTsKICAgICAgICAgY2FjaGVGbHVz
aChwdHIgLSAyLCBzaXplb2YodWludDE2X3QpICogMik7CiAjZW5kaWYKICAgICB9CkBAIC0yNTI4
LDEwICsyNTc4LDE4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIGJvb2wgY2FuRW1pdEp1bXAodm9pZCogZnJvbSwgdm9pZCogdG8pCisgICAgewor
ICAgICAgICAvLyAnZnJvbScgaG9sZHMgdGhlIGFkZHJlc3Mgb2YgdGhlIGJyYW5jaCBpbnN0cnVj
dGlvbi4gVGhlIGJyYW5jaCByYW5nZSBob3dldmVyIGlzIHJlbGF0aXZlCisgICAgICAgIC8vIHRv
IHRoZSBhcmNoaXRlY3R1cmFsIHZhbHVlIG9mIHRoZSBQQyB3aGljaCBpcyA0IGxhcmdlciB0aGFu
IHRoZSBhZGRyZXNzIG9mIHRoZSBicmFuY2guCisgICAgICAgIGludHB0cl90IG9mZnNldCA9IGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4odG8pIC0gKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oZnJvbSkg
KyA0KTsKKyAgICAgICAgcmV0dXJuIGlzSW50PDI1PihvZmZzZXQpOworICAgIH0KKwogcHJpdmF0
ZToKICAgICAvLyBWRlAgb3BlcmF0aW9ucyBjb21tb25seSB0YWtlIG9uZSBvciBtb3JlIDUtYml0
IG9wZXJhbmRzLCB0eXBpY2FsbHkgcmVwcmVzZW50aW5nIGEKLSAgICAvLyBmbG9hdGluZyBwb2lu
dCByZWdpc3RlciBudW1iZXIuICBUaGlzIHdpbGwgY29tbW9ubHkgYmUgZW5jb2RlZCBpbiB0aGUg
aW5zdHJ1Y3Rpb24KLSAgICAvLyBpbiB0d28gcGFydHMsIHdpdGggb25lIHNpbmdsZSBiaXQgZmll
bGQsIGFuZCBvbmUgNC1iaXQgZmllbGQuICBJbiB0aGUgY2FzZSBvZgorICAgIC8vIGZsb2F0aW5n
IHBvaW50IHJlZ2lzdGVyIG51bWJlci4gVGhpcyB3aWxsIGNvbW1vbmx5IGJlIGVuY29kZWQgaW4g
dGhlIGluc3RydWN0aW9uCisgICAgLy8gaW4gdHdvIHBhcnRzLCB3aXRoIG9uZSBzaW5nbGUgYml0
IGZpZWxkLCBhbmQgb25lIDQtYml0IGZpZWxkLiBJbiB0aGUgY2FzZSBvZgogICAgIC8vIGRvdWJs
ZSBwcmVjaXNpb24gb3BlcmFuZHMgdGhlIGhpZ2ggYml0IG9mIHRoZSByZWdpc3RlciBudW1iZXIg
d2lsbCBiZSBlbmNvZGVkCiAgICAgLy8gc2VwYXJhdGVseSwgYW5kIGZvciBzaW5nbGUgcHJlY2lz
aW9uIG9wZXJhbmRzIHRoZSBoaWdoIGJpdCBvZiB0aGUgcmVnaXN0ZXIgbnVtYmVyCiAgICAgLy8g
d2lsbCBiZSBlbmNvZGVkIGluZGl2aWR1YWxseS4KQEAgLTI2NTQsNiArMjcxMiwxMiBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gKChpbnN0cnVjdGlvblswXSAmIDB4ZjgwMCkgPT0gT1BfQl9U
NGEpICYmICgoaW5zdHJ1Y3Rpb25bMV0gJiAweGQwMDApID09IE9QX0JfVDRiKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgYm9vbCBpc0JMKGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBjb25zdCB1aW50MTZfdCogaW5zdHJ1Y3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KGFkZHJlc3MpOworICAgICAgICByZXR1cm4gKChpbnN0cnVjdGlvblswXSAmIDB4ZjgwMCkg
PT0gT1BfQkxfVDRhKSAmJiAoKGluc3RydWN0aW9uWzFdICYgMHhkMDAwKSA9PSBPUF9CTF9UNGIp
OworICAgIH0KKwogICAgIHN0YXRpYyBib29sIGlzQlgoY29uc3Qgdm9pZCogYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiA9IHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQxNl90Kj4oYWRkcmVzcyk7CkBAIC0yNzg3LDcgKzI4NTEsNyBAQCBwcml2YXRlOgog
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxDb3B5RnVuY3Rpb24gY29weSA9IHBlcmZvcm1KSVRN
ZW1jcHk+Ci0gICAgc3RhdGljIHZvaWQgbGlua0p1bXBUNCh1aW50MTZfdCogd3JpdGVUYXJnZXQs
IGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQorICAgIHN0YXRpYyB2
b2lkIGxpbmtKdW1wVDQodWludDE2X3QqIHdyaXRlVGFyZ2V0LCBjb25zdCB1aW50MTZfdCogaW5z
dHJ1Y3Rpb24sIHZvaWQqIHRhcmdldCwgQnJhbmNoV2l0aExpbmsgbGluaykKICAgICB7CiAgICAg
ICAgIC8vIEZJTVhFOiB0aGlzIHNob3VsZCBiZSB1cCBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIgbGF5
ZXIuIDotKCAgICAgICAgCiAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGluc3RydWN0aW9uKSAmIDEpKTsKQEAgLTI4MDMsNyArMjg2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIEFTU0VSVCghKHJlbGF0aXZlICYgMSkpOwogICAgICAgICB1aW50MTZfdCBpbnN0cnVj
dGlvbnNbMl07CiAgICAgICAgIGluc3RydWN0aW9uc1swXSA9IE9QX0JfVDRhIHwgKChyZWxhdGl2
ZSAmIDB4MTAwMDAwMCkgPj4gMTQpIHwgKChyZWxhdGl2ZSAmIDB4M2ZmMDAwKSA+PiAxMik7Ci0g
ICAgICAgIGluc3RydWN0aW9uc1sxXSA9IE9QX0JfVDRiIHwgKChyZWxhdGl2ZSAmIDB4ODAwMDAw
KSA+PiAxMCkgfCAoKHJlbGF0aXZlICYgMHg0MDAwMDApID4+IDExKSB8ICgocmVsYXRpdmUgJiAw
eGZmZSkgPj4gMSk7CisgICAgICAgIGluc3RydWN0aW9uc1sxXSA9IE9QX0JfVDRiIHwgKHN0YXRp
Y19jYXN0PHVpbnQxNl90PihsaW5rKSA8PCAxNCkgfCAoKHJlbGF0aXZlICYgMHg4MDAwMDApID4+
IDEwKSB8ICgocmVsYXRpdmUgJiAweDQwMDAwMCkgPj4gMTEpIHwgKChyZWxhdGl2ZSAmIDB4ZmZl
KSA+PiAxKTsKICAgICAgICAgY29weSh3cml0ZVRhcmdldCAtIDIsIGluc3RydWN0aW9ucywgMiAq
IHNpemVvZih1aW50MTZfdCkpOwogICAgIH0KIApAQCAtMjgxNiw3ICsyODgwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIHVpbnQxNl90IG5ld0luc3RydWN0aW9uID0gaWZUaGVuRWxz
ZShjb25kKSB8IE9QX0lUOwogICAgICAgICBjb3B5KHdyaXRlVGFyZ2V0IC0gMywgJm5ld0luc3Ry
dWN0aW9uLCBzaXplb2YodWludDE2X3QpKTsKLSAgICAgICAgbGlua0p1bXBUNDxjb3B5Pih3cml0
ZVRhcmdldCwgaW5zdHJ1Y3Rpb24sIHRhcmdldCk7CisgICAgICAgIGxpbmtKdW1wVDQ8Y29weT4o
d3JpdGVUYXJnZXQsIGluc3RydWN0aW9uLCB0YXJnZXQsIEJyYW5jaFdpdGhMaW5rOjpObyk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8Q29weUZ1bmN0aW9uIGNvcHkgPSBwZXJmb3JtSklUTWVtY3B5
PgpAQCAtMjg3Miw3ICsyOTM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGluc3RydWN0aW9u
c1sxXSA9IE9QX05PUF9UMmE7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbMl0gPSBPUF9OT1Bf
VDJiOwogICAgICAgICAgICAgcGVyZm9ybUpJVE1lbWNweSh3cml0ZVRhcmdldCAtIDUsIGluc3Ry
dWN0aW9ucywgMyAqIHNpemVvZih1aW50MTZfdCkpOwotICAgICAgICAgICAgbGlua0p1bXBUNCh3
cml0ZVRhcmdldCwgaW5zdHJ1Y3Rpb24sIHRhcmdldCk7CisgICAgICAgICAgICBsaW5rSnVtcFQ0
KHdyaXRlVGFyZ2V0LCBpbnN0cnVjdGlvbiwgdGFyZ2V0LCBCcmFuY2hXaXRoTGluazo6Tm8pOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgdWludDE2X3QgSlVNUF9URU1QT1JB
UllfUkVHSVNURVIgPSBBUk1SZWdpc3RlcnM6OmlwOwogICAgICAgICAgICAgQVJNVGh1bWJJbW1l
ZGlhdGUgbG8xNiA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KHN0YXRpY19jYXN0PHVp
bnQxNl90PihyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pih0YXJnZXQpICsgMSkpOwpAQCAtMjg4
Nyw3ICsyOTUxLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdy
aXRlVGFyZ2V0IC0gNSwgaW5zdHJ1Y3Rpb25zLCA1ICogc2l6ZW9mKHVpbnQxNl90KSk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWMgdm9pZCBsaW5rQnJhbmNoKHVpbnQxNl90
KiBmcm9tLCBjb25zdCB1aW50MTZfdCogZnJvbUluc3RydWN0aW9uLCB2b2lkKiB0bywgQnJhbmNo
V2l0aExpbmsgbGluaykKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0V2ZW4oZnJvbUluc3RydWN0
aW9uKSk7CisgICAgICAgIEFTU0VSVChpc0V2ZW4oZnJvbSkpOworICAgICAgICBBU1NFUlQoaXNF
dmVuKHRvKSk7CisgICAgICAgIEFTU0VSVChsaW5rID09IEJyYW5jaFdpdGhMaW5rOjpZZXMgPyBp
c0JMKGZyb20gLSAyKSA6IGlzQihmcm9tIC0gMikpOworCisgICAgICAgIGludHB0cl90IG9mZnNl
dCA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odG8pIC0gYml0d2lzZV9jYXN0PGludHB0cl90Pihm
cm9tSW5zdHJ1Y3Rpb24pOworI2lmIEVOQUJMRShKVU1QX0lTTEFORFMpCisgICAgICAgIGlmICgh
aXNJbnQ8MjU+KG9mZnNldCkpIHsKKyAgICAgICAgICAgIHRvID0gRXhlY3V0YWJsZUFsbG9jYXRv
cjo6c2luZ2xldG9uKCkuZ2V0SnVtcElzbGFuZFRvKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnJvbUlu
c3RydWN0aW9uKSwgdG8pOworICAgICAgICAgICAgb2Zmc2V0ID0gYml0d2lzZV9jYXN0PGludHB0
cl90Pih0bykgLSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGZyb21JbnN0cnVjdGlvbik7CisgICAg
ICAgIH0KKyNlbmRpZgorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0ludDwyNT4ob2Zmc2V0KSk7
CisKKyAgICAgICAgbGlua0p1bXBUNChmcm9tLCBmcm9tSW5zdHJ1Y3Rpb24sIHRvLCBsaW5rKTsK
KyAgICB9CisKICAgICBzdGF0aWMgdWludDE2X3QgdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVk
SW1tRmlyc3QodWludDE2X3Qgb3AsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBvcCB8IChpbW0ubV92YWx1ZS5pIDw8IDEwKSB8IGltbS5tX3ZhbHVlLmltbTQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCmluZGV4IDJhZjliYjkwNWFkZTMxOTBlNDZlNTZkYTYwMzI3MjQwMGEw
OGE1NGEuLjNlOTU4NzQ2MzM5ZDU1OTBmY2FkY2FkNjQ3MDQ0MjMxMTNiMmJiNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC01NDUsOCArNTQ1LDggQEAgcHVibGljOgogICAgICAgICAgICAgTGlua2Fi
bGUgPSAweDEsCiAgICAgICAgICAgICBOZWFyID0gMHgyLAogICAgICAgICAgICAgVGFpbCA9IDB4
NCwKLSAgICAgICAgICAgIExpbmthYmxlTmVhciA9IDB4MywKLSAgICAgICAgICAgIExpbmthYmxl
TmVhclRhaWwgPSAweDcsCisgICAgICAgICAgICBMaW5rYWJsZU5lYXIgPSBMaW5rYWJsZSB8IE5l
YXIsCisgICAgICAgICAgICBMaW5rYWJsZU5lYXJUYWlsID0gTGlua2FibGUgfCBOZWFyIHwgVGFp
bCwKICAgICAgICAgfTsKIAogICAgICAgICBDYWxsKCkKQEAgLTkwNCw3ICs5MDQsMTEgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgc3dpdGNoIChuZWFyQ2FsbC5jYWxsTW9kZSgpKSB7CiAgICAg
ICAgIGNhc2UgTmVhckNhbGxNb2RlOjpUYWlsOgorI2lmIENQVShBUk0pCisgICAgICAgICAgICBB
c3NlbWJsZXJUeXBlOjpyZWxpbmtUYWlsQ2FsbChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVz
dGluYXRpb24udW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbGlmCiAgICAgICAgICAg
ICBBc3NlbWJsZXJUeXBlOjpyZWxpbmtKdW1wKG5lYXJDYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0
aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBOZWFyQ2FsbE1vZGU6OlJlZ3VsYXI6CiAgICAgICAgICAgICBBc3NlbWJsZXJU
eXBlOjpyZWxpbmtDYWxsKG5lYXJDYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi51bnRh
Z2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpOwpAQCAtOTI5LDEyICs5MzMsNiBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyB2b2lk
IHJlcGF0Y2hDb21wYWN0KENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Q8dGFnPiBkYXRhTGFi
ZWxDb21wYWN0LCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAgQXNzZW1ibGVyVHlwZTo6
cmVwYXRjaENvbXBhY3QoZGF0YUxhYmVsQ29tcGFjdC50ZW1wbGF0ZSBkYXRhTG9jYXRpb24oKSwg
dmFsdWUpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+CiAgICAgc3RhdGljIHZv
aWQgcmVwYXRjaEludDMyKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyPHRhZz4gZGF0YUxhYmVsMzIs
IGludDMyX3QgdmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgKaW5kZXggMmU1MGZmZGJjODJhOTE5ZjI5YjQ4MmI5MWMy
MDQ2N2NkZWMwOWI2My4uNjFlMzc5MTQzNmI3ZjIxOGFhMmNjNTYwOTcwODk3MzNiODQ2NzM2OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21t
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1v
bi5oCkBAIC00NSw2ICs0NSwxNCBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBib29sIGlzSU9T
KCkKICNlbmRpZgogfQogCit0ZW1wbGF0ZTxzaXplX3QgYml0cywgdHlwZW5hbWUgVHlwZT4KK0FM
V0FZU19JTkxJTkUgY29uc3RleHByIGJvb2wgaXNJbnQoVHlwZSB0KQoreworICAgIGNvbnN0ZXhw
ciBzaXplX3Qgc2hpZnQgPSBzaXplb2YoVHlwZSkgKiBDSEFSX0JJVCAtIGJpdHM7CisgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoVHlwZSkgKiBDSEFSX0JJVCA+IHNoaWZ0LCAic2hpZnQgaXMgbGFy
Z2VyIHRoYW4gdGhlIHNpemUgb2YgdGhlIHZhbHVlIik7CisgICAgcmV0dXJuICgodCA8PCBzaGlm
dCkgPj4gc2hpZnQpID09IHQ7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0ludDkoaW50MzJf
dCB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gKCh2YWx1ZSA8PCAyMykgPj4gMjMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAppbmRl
eCBiMDIyMzUxMTkyODE0YTIzZWNmNjI2NGJjNDk3NWEzODdlZDk2NWEyLi45MjAxZGFjMDQ4NDgx
YTI3ZGQ3NThmOWIwNmFmYWY3YWJjNTRkYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtODY3LDExICs4NjcsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHJl
cGF0Y2hDb21wYWN0KHZvaWQqIHdoZXJlLCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAg
cmVwYXRjaEludDMyKHdoZXJlLCB2YWx1ZSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHZvaWQgcmVw
YXRjaFBvaW50ZXIodm9pZCogZnJvbSwgdm9pZCogdG8pCiAgICAgewogICAgICAgICByZXBhdGNo
SW50MzIoZnJvbSwgcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Pih0bykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCA2MzM3NzNhZWVjOWQxYzk2N2ZhOThhNWFjYjJhMTI0NTJlYjI1MDdjLi5lOTY3ZjJjNzFmMmJl
NDYwZDdkOWNmMWIyMTI1ZmFlNjJmZjlkYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNDEsNyArNDEsOSBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBu
dW1HUFJzID0gMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gMzI7
Ci0gICAgCisKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBuZWFySnVtcFJhbmdlID0gMTI4
ICogTUI7CisKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjppcDA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IG1lbW9yeVRlbXBSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjppcDE7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5k
ZXggZmU3ZjJkNWM0ZjNmYjQxYzFkMzU1ZWU5NDRkZGQ1YTVhZTE0MDA4Yi4uNTBlYjljZjlkZjQ5
MWY2NDQyZDliOTNkZWI1YzFhMzJkOTY2NTE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM4LDYgKzM4LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgQXNzZW1ibGVyID0gVEFSR0VUX0FTU0VNQkxFUjsK
IAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlcj4geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG5l
YXJKdW1wUmFuZ2UgPSAxNiAqIE1COworCitwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
UmVnaXN0ZXJJRCBkYXRhVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjppcDsKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVy
czo6cjY7CiAKQEAgLTIyMzcsMTYgKzIyNDEsMTQgQEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lO
TElORSBDYWxsIG5lYXJDYWxsKCkKICAgICB7Ci0gICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2Rp
bmcoVHJ1c3RlZEltbTMyKDApLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgaW52YWxpZGF0
ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYmx4
KGRhdGFUZW1wUmVnaXN0ZXIpLCBDYWxsOjpMaW5rYWJsZU5lYXIpOworICAgICAgICByZXR1cm4g
Q2FsbChtX2Fzc2VtYmxlci5ibCgpLCBDYWxsOjpMaW5rYWJsZU5lYXIpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgQ2FsbCBuZWFyVGFpbENhbGwoKQogICAgIHsKLSAgICAgICAgbW92ZUZp
eGVkV2lkdGhFbmNvZGluZyhUcnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
ICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICByZXR1cm4gQ2FsbCht
X2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGVOZWFyVGFpbCk7
CisgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmIoKSwgQ2FsbDo6TGlua2FibGVOZWFy
VGFpbCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUHRyVGFnKQpAQCAt
MjY1NCwxMCArMjY1NiwxMiBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+CiAg
ICAgc3RhdGljIHZvaWQgbGlua0NhbGwodm9pZCogY29kZSwgQ2FsbCBjYWxsLCBGdW5jdGlvblB0
cjx0YWc+IGZ1bmN0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKGNhbGwuaXNGbGFnU2V0KENhbGw6
OlRhaWwpKQotICAgICAgICAgICAgQVJNdjdBc3NlbWJsZXI6OmxpbmtKdW1wKGNvZGUsIGNhbGwu
bV9sYWJlbCwgZnVuY3Rpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIGlmICghY2Fs
bC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpCisgICAgICAgICAgICBBc3NlbWJsZXI6OmxpbmtQb2lu
dGVyKGNvZGUsIGNhbGwubV9sYWJlbC5sYWJlbEF0T2Zmc2V0KC0yKSwgZnVuY3Rpb24uZXhlY3V0
YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIGVsc2UgaWYgKGNhbGwuaXNGbGFnU2V0KENhbGw6OlRh
aWwpKQorICAgICAgICAgICAgQXNzZW1ibGVyOjpsaW5rVGFpbENhbGwoY29kZSwgY2FsbC5tX2xh
YmVsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgQVJNdjdBc3NlbWJsZXI6OmxpbmtDYWxsKGNvZGUsIGNhbGwubV9sYWJlbCwgZnVuY3Rp
b24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICBBc3NlbWJsZXI6OmxpbmtDYWxs
KGNvZGUsIGNhbGwubV9sYWJlbCwgZnVuY3Rpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAg
fQogCiAgICAgYm9vbCBtX21ha2VKdW1wUGF0Y2hhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggOTRlYjYyZjRh
MTIxYTYxNDUzMjM2OTEzYWM5ZDNjYjM5NGFkYjBkMi4uZWQ3N2QyOTk2NTRjYjM3OWFiNDg3YmI3
OWY3Y2I0MDBhMTgxMWQzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSAzMjsKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG51bUZQUnMgPSAzMjsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IG5lYXJKdW1wUmFuZ2UgPSAyICogR0I7CisKICAgICBNYWNyb0Fzc2VtYmxlck1JUFMoKQog
ICAgICAgICA6IG1fZml4ZWRXaWR0aChmYWxzZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAppbmRleCAz
NjQ2ODZkZmY2ODk5NGRlYWEwNGU5NTY2MzZhZDYyZjAyZWMxMTU1Li41NmQ0ZWNiZWNjOTBjNzY4
ODEyNzY0MmQ0NzEyZjM3OGU0NTBhZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmgKQEAgLTQ0LDYgKzQ0LDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtR1BScyA9IDMyOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IDMyOwogCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgbmVhckp1bXBSYW5nZSA9IDIgKiBHQjsKKwogICAgIHN0YXRpYyBj
b25zdGV4cHIgUmVnaXN0ZXJJRCBkYXRhVGVtcFJlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6
eDMwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBtZW1vcnlUZW1wUmVnaXN0ZXIg
PSBSSVNDVjY0UmVnaXN0ZXJzOjp4MzE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAzMGNjNGU0
YmNhZmZmZGI5NGNmZjgwNDZjMDUxZTFmMmU5ODg3MGQ5Li5mZTE3NTY3YmQ3OWJhMjg0YjVjMDA4
ZWM4YjlkZTA4OWNjMzlhMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0zNyw2ICszNyw4IEBA
IHVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7CiAKIGNsYXNzIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbmVhckp1bXBSYW5nZSA9IDIg
KiBHQjsKKwogI2lmIENQVShYODZfNjQpCiAgICAgLy8gVXNlIHRoaXMgZGlyZWN0bHkgb25seSBp
ZiB5b3UncmUgbm90IGdlbmVyYXRpbmcgY29kZSB3aXRoIGl0LgogICAgIHN0YXRpYyBjb25zdGV4
cHIgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHNfc2NyYXRjaFJlZ2lzdGVyID0gWDg2UmVnaXN0
ZXJzOjpyMTE7CkBAIC0xMjM1LDEzICsxMjM3LDYgQEAgcHVibGljOgogICAgICAgICBsb2FkMTYo
YWRkcmVzcywgZGVzdCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KLSAgICBz
dGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdChDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0PHRh
Zz4gZGF0YUxhYmVsQ29tcGFjdCwgaW50MzJfdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpc0NvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldCh2YWx1ZSkpOwotICAgICAgICBBc3Nl
bWJsZXJUeXBlX1Q6OnJlcGF0Y2hDb21wYWN0KGRhdGFMYWJlbENvbXBhY3QuZGF0YUxvY2F0aW9u
KCksIHZhbHVlKTsKLSAgICB9Ci0gICAgCiAgICAgRGF0YUxhYmVsQ29tcGFjdCBsb2FkQ29tcGFj
dFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYTQwZWM3ZGExYWI3NGEwODA2ZDk0
YjZhNzBjOWViOWZlYmNlODRiZC4uZDIxN2U0ZmNjZmJjMDgyYTFjM2I3OWUwNzI2MGIxMjI0MmQz
NmNhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCkBAIC0zNzk5LDEzICszNzk5LDYgQEAgcHVibGljOgogICAgICAgICBzZXRSZWwzMihmcm9t
LCB0byk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0KHZvaWQq
IHdoZXJlLCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVlID49IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50OF90Pjo6bWluKCkpOwotICAgICAgICBBU1NFUlQodmFsdWUg
PD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ4X3Q+OjptYXgoKSk7Ci0gICAgICAgIHNldEludDgo
d2hlcmUsIHZhbHVlKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBhdGNoSW50MzIodm9p
ZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBzZXRJbnQzMih3aGVyZSwg
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0
Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCmluZGV4
IGFiNmM5MjQwNjViZWE5OTg3NGU2YzdkZDQ3MmRiYjE5MWU4MDhjZGYuLjQ4MTM3NGM4NmFhMGQx
YjFiMTE1Yzg1ZTM3ZjZjZmZmN2FiOTVlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTE4ODEsMTcgKzE4ODEsOCBAQCB2b2lkIGxpbmtQb2x5bW9y
cGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENhbAogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsQ2FzZXMuc2l6ZSgp
ID09IGNhbGxzLnNpemUoKSk7Ci0gICAgZm9yIChDYWxsVG9Db2RlUHRyIGNhbGxUb0NvZGVQdHIg
OiBjYWxscykgewotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAgICAvLyBUYWlsIGNhbGwgc3Bl
Y2lhbC1jYXNpbmcgZW5zdXJlcyBwcm9wZXIgbGlua2luZyBvbiBBUk0gVGh1bWIyLCB3aGVyZSBh
IHRhaWwgY2FsbCBqdW1wcyB0byBhbiBhZGRyZXNzCi0gICAgICAgIC8vIHdpdGggYSBub24tZGVj
b3JhdGVkIGJvdHRvbSBiaXQgYnV0IGEgbm9ybWFsIGNhbGwgY2FsbHMgYW4gYWRkcmVzcyB3aXRo
IGEgZGVjb3JhdGVkIGJvdHRvbSBiaXQuCi0gICAgICAgIGJvb2wgaXNUYWlsQ2FsbCA9IGNhbGxU
b0NvZGVQdHIuY2FsbC5pc0ZsYWdTZXQoQ0NhbGxIZWxwZXJzOjpDYWxsOjpUYWlsKTsKLSAgICAg
ICAgdm9pZCogdGFyZ2V0ID0gaXNUYWlsQ2FsbCA/IGNhbGxUb0NvZGVQdHIuY29kZVB0ci5kYXRh
TG9jYXRpb24oKSA6IGNhbGxUb0NvZGVQdHIuY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpOwot
ICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVuY3Rpb25QdHI8
SlNFbnRyeVB0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+OjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3ModGFyZ2V0KSkpOwotI2Vsc2UKKyAgICBmb3IgKENhbGxU
b0NvZGVQdHIgY2FsbFRvQ29kZVB0ciA6IGNhbGxzKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4oY2FsbFRvQ29k
ZVB0ci5jb2RlUHRyKSk7Ci0jZW5kaWYKLSAgICB9CiAKICAgICBpZiAoIWRvbmUuZW1wdHkoKSkg
ewogICAgICAgICBBU1NFUlQoIWlzRGF0YUlDKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGExNzMxNWNjNjg0OTk2YTA1YzVh
NWJhNjE1NjQ0MWU4YTliZWQ4NWUuLmJlZTc4NThiMDYyMTIzNWY0N2QxZTUyMTAwN2U4ODM2MGEz
NzMwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNp
bmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdGlvblN0
YXR1cy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlUmVzZXJ2YXRpb24uaD4KICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CkBAIC05NCwyMiArOTUsMzYgQEAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
Zml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSBGSVhFRF9FWEVDVVRBQkxFX01FTU9SWV8K
ICNlbGlmIENQVShBUk02NCkKICNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQogc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSA1MTIgKiBNQjsKLS8v
IFRoZXNlIHNpemVzIGd1YXJhbnRlZSB0aGF0IGFueSBqdW1wIHdpdGhpbiBhbiBpc2xhbmQgY2Fu
IGp1bXAgZm9yd2FyZHMgb3IgYmFja3dhcmRzCi0vLyB0byB0aGUgYWRqYWNlbnQgaXNsYW5kIGlu
IGEgc2luZ2xlIGluc3RydWN0aW9uLgotc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVnaW9uU2l6
ZSA9IDExMiAqIE1COwotc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaXNsYW5kUmVnaW9uU2l6ZSA9
IDE2ICogTUI7Ci1zdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhOdW1iZXJPZlJlZ2lvbnMgPSBm
aXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSAvIHJlZ2lvblNpemU7Ci1zdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBpc2xhbmRTaXplSW5CeXRlcyA9IDQ7Ci1zdGF0aWMgY29uc3RleHByIHNpemVf
dCBtYXhJc2xhbmRzUGVyUmVnaW9uID0gaXNsYW5kUmVnaW9uU2l6ZSAvIGlzbGFuZFNpemVJbkJ5
dGVzOwogI2Vsc2UKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1lbW9y
eVBvb2xTaXplID0gMTI4ICogTUI7CiAjZW5kaWYKKyNlbGlmIENQVShBUk0pCisjaWYgRU5BQkxF
KEpVTVBfSVNMQU5EUykKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1l
bW9yeVBvb2xTaXplID0gMzIgKiBNQjsKKyNlbHNlCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBm
aXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDE2ICogTUI7CisjZW5kaWYKICNlbGlmIENQ
VShYODZfNjQpCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQ
b29sU2l6ZSA9IDEgKiBHQjsKICNlbHNlCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmaXhlZEV4
ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDMyICogTUI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShK
VU1QX0lTTEFORFMpCisjaWYgQ1BVKEFSTTY0KQorc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgaXNs
YW5kUmVnaW9uU2l6ZUZyYWN0aW9uID0gMC4xMjU7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBp
c2xhbmRTaXplSW5CeXRlcyA9IDQ7CisjZWxpZiBDUFUoQVJNKQorc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUgaXNsYW5kUmVnaW9uU2l6ZUZyYWN0aW9uID0gMC4wNTsKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGlzbGFuZFNpemVJbkJ5dGVzID0gNDsKKyNlbmRpZgorI2VuZGlmCisKKy8vIFF1aWNr
IHNhbml0eSBjaGVjaywgaW4gY2FzZSBGSVhFRF9FWEVDVVRBQkxFX01FTU9SWV9QT09MX1NJWkVf
SU5fTUIgd2FzIHNldC4KKyNpZiAhRU5BQkxFKEpVTVBfSVNMQU5EUykKK3N0YXRpY19hc3NlcnQo
Zml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPD0gTWFjcm9Bc3NlbWJsZXI6Om5lYXJKdW1w
UmFuZ2UsICJFeGVjdXRhYmxlIHBvb2wgc2l6ZSBpcyB0b28gbGFyZ2UgZm9yIG5lYXIganVtcC9j
YWxsIHdpdGhvdXQgSlVNUF9JU0xBTkRTIik7CisjZW5kaWYKKwogI2lmIENQVShBUk0pCiBzdGF0
aWMgY29uc3RleHByIGRvdWJsZSBleGVjdXRhYmxlUG9vbFJlc2VydmF0aW9uRnJhY3Rpb24gPSAw
LjE1OwogI2Vsc2UKQEAgLTM0MywyMCArMzU4LDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpJ
VFJlc2VydmF0aW9uIGluaXRpYWxpemVKSVRQYWdlUmVzZXJ2YXRpb24oKQogICAgICAgICBpZiAo
cmVzZXJ2YXRpb24uc2l6ZSAqIGV4ZWN1dGFibGVQb29sUmVzZXJ2YXRpb25GcmFjdGlvbiA8IG1p
bmltdW1FeGVjdXRhYmxlUG9vbFJlc2VydmF0aW9uU2l6ZSkKICAgICAgICAgICAgIHJlc2VydmF0
aW9uLnNpemUgKz0gbWluaW11bUV4ZWN1dGFibGVQb29sUmVzZXJ2YXRpb25TaXplOwogI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQotICAgICAgICAvLyBJZiBhc2tlZCBmb3IgYSBy
ZXNlcnZhdGlvbiBzbWFsbGVyIHRoYW4gaXNsYW5kIHNpemUsIGFzc3VtZSB0aGF0IHdlIHdhbnQg
dGhhdCBzaXplIGFsbG9jYXRpb24KLSAgICAgICAgLy8gcGx1cyBhbiBpc2xhbmQuIFRoZSBhbHRl
cm5hdGl2ZSB3b3VsZCBiZSB0byB0dXJuIG9mZiBqdW1wIGlzbGFuZHMsIGJ1dCBzaW5jZSB3ZSBv
bmx5IHVzZQotICAgICAgICAvLyB0aGlzIGZvciB0ZXN0aW5nLCB0aGlzIGlzIHByb2JhYmx5IHRo
ZSBlYXNpZXIgd2F5IHRvIGRvIGl0LgotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgbWFpbiBy
ZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBzb21lIEpTQyBzdHJlc3MgdGVzdHMgcnVuIHdpdGggYSA1
MEtCIHBvb2wuIFRoaXMgaGFjayBtZWFucwotICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRvIGNo
YW5nZSBhbnl0aGluZyBhYm91dCB0aG9zZSB0ZXN0cy4KLSAgICAgICAgaWYgKHJlc2VydmF0aW9u
LnNpemUgPCBpc2xhbmRSZWdpb25TaXplKQotICAgICAgICAgICAgcmVzZXJ2YXRpb24uc2l6ZSAr
PSBpc2xhbmRSZWdpb25TaXplOwotI2VuZGlmIC8vIEVOQUJMRShKVU1QX0lTTEFORFMpCiAgICAg
fQogICAgIHJlc2VydmF0aW9uLnNpemUgPSBzdGQ6Om1heChyb3VuZFVwVG9NdWx0aXBsZU9mKHBh
Z2VTaXplKCksIHJlc2VydmF0aW9uLnNpemUpLCBwYWdlU2l6ZSgpICogMik7CiAKKyNpZiAhRU5B
QkxFKEpVTVBfSVNMQU5EUykKKyAgICBSRUxFQVNFX0FTU0VSVChyZXNlcnZhdGlvbi5zaXplIDw9
IE1hY3JvQXNzZW1ibGVyOjpuZWFySnVtcFJhbmdlLCAiRXhlY3V0YWJsZSBwb29sIHNpemUgaXMg
dG9vIGxhcmdlIGZvciBuZWFyIGp1bXAvY2FsbCB3aXRob3V0IEpVTVBfSVNMQU5EUyIpOworI2Vu
ZGlmCisKICNpZiBVU0UoTElCUEFTX0pJVF9IRUFQKQogICAgIGlmIChyZXNlcnZhdGlvbi5zaXpl
IDwgbWluaW11bVBvb2xTaXplRm9yU2VncmVnYXRlZEhlYXApCiAgICAgICAgIGppdF9oZWFwX3J1
bnRpbWVfY29uZmlnLm1heF9zZWdyZWdhdGVkX29iamVjdF9zaXplID0gMDsKQEAgLTQzMCwxMCAr
NDM4LDcgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yIGZpbmFsIHsKIAog
cHVibGljOgogICAgIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcigpCi0jaWYgRU5BQkxF
KEpVTVBfSVNMQU5EUykKLSAgICAgICAgOiBtX2FsbG9jYXRvcnMoY29uc3RydWN0Rml4ZWRTaXpl
QXJyYXlXaXRoQXJndW1lbnRzPFJlZ2lvbkFsbG9jYXRvciwgbWF4TnVtYmVyT2ZSZWdpb25zPigq
dGhpcykpCi0gICAgICAgICwgbV9udW1BbGxvY2F0b3JzKG1heE51bWJlck9mUmVnaW9ucykKLSNl
bHNlCisjaWYgIUVOQUJMRShKVU1QX0lTTEFORFMpCiAgICAgICAgIDogbV9hbGxvY2F0b3IoKnRo
aXMpCiAjZW5kaWYKICAgICB7CkBAIC00NDEsMzEgKzQ0NiwyOCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fcmVzZXJ2YXRpb24gPSBXVEZNb3ZlKHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbik7CiAg
ICAgICAgIGlmIChtX3Jlc2VydmF0aW9uKSB7CiAjaWYgRU5BQkxFKEpVTVBfSVNMQU5EUykKKyAg
ICAgICAgICAgIC8vIFRoZXNlIHNpemVzIGd1YXJhbnRlZSB0aGF0IGFueSBqdW1wIHdpdGhpbiBh
biBpc2xhbmQgY2FuIGp1bXAgZm9yd2FyZHMgb3IgYmFja3dhcmRzCisgICAgICAgICAgICAvLyB0
byB0aGUgYWRqYWNlbnQgaXNsYW5kIGluIGEgc2luZ2xlIGluc3RydWN0aW9uLgorICAgICAgICAg
ICAgY29uc3Qgc2l6ZV90IGlzbGFuZFJlZ2lvblNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mKHBh
Z2VTaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4oTWFjcm9Bc3NlbWJsZXI6Om5lYXJKdW1wUmFu
Z2UgKiBpc2xhbmRSZWdpb25TaXplRnJhY3Rpb24pKTsKKyAgICAgICAgICAgIG1fcmVnaW9uU2l6
ZSA9IE1hY3JvQXNzZW1ibGVyOjpuZWFySnVtcFJhbmdlIC0gaXNsYW5kUmVnaW9uU2l6ZTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzUGFnZUFsaWduZWQoaXNsYW5kUmVnaW9uU2l6ZSkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNQYWdlQWxpZ25lZChtX3JlZ2lvblNpemUp
KTsKKyAgICAgICAgICAgIG1fbnVtQWxsb2NhdG9ycyA9IChyZXNlcnZhdGlvbi5zaXplICsgbV9y
ZWdpb25TaXplIC0gMSkgLyBtX3JlZ2lvblNpemU7CisgICAgICAgICAgICBtX2FsbG9jYXRvcnMg
PSBGaXhlZFZlY3RvcjxSZWdpb25BbGxvY2F0b3I+IHsgbV9udW1BbGxvY2F0b3JzLCAqdGhpcyB9
OworCiAgICAgICAgICAgICB1aW50cHRyX3Qgc3RhcnQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihtZW1vcnlTdGFydCgpKTsKICAgICAgICAgICAgIHVpbnRwdHJfdCByZXNlcnZhdGlvbkVuZCA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG1lbW9yeUVuZCgpKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtYmVyT2ZSZWdpb25zOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzdGFydCA8IHJlc2VydmF0aW9uRW5kIHx8IE9wdGlvbnM6Ompp
dE1lbW9yeVJlc2VydmF0aW9uU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0g
cmVzZXJ2YXRpb25FbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9udW1BbGxvY2F0b3JzID0g
aTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIG1fYWxsb2NhdG9yc1tpXS5tX3N0YXJ0ID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxl
TWVtb3J5UHRyVGFnPihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXJ0KSk7Ci0gICAgICAgICAgICAg
ICAgbV9hbGxvY2F0b3JzW2ldLm1fZW5kID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRy
VGFnPihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXJ0ICsgcmVnaW9uU2l6ZSkpOwotICAgICAgICAg
ICAgICAgIGlmIChtX2FsbG9jYXRvcnNbaV0uZW5kKCkgPiByZXNlcnZhdGlvbkVuZCkgewotICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSB0YWtlbiBhIHBhZ2UgZm9yIHRoZSBleGVj
dXRhYmxlIG9ubHkgY29weSB0aHVuay4KLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaSA9PSBtYXhOdW1iZXJPZlJlZ2lvbnMgLSAxIHx8IE9wdGlvbnM6OmppdE1lbW9yeVJlc2Vy
dmF0aW9uU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9hbGxvY2F0b3JzW2ldLm1fZW5k
ID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHJlc2VydmF0aW9uRW5kKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzID0gbV9hbGxvY2F0b3JzW2ldLmFsbG9jYXRvclNpemUoKTsKLSAg
ICAgICAgICAgICAgICBtX2FsbG9jYXRvcnNbaV0uYWRkRnJlc2hGcmVlU3BhY2UoYml0d2lzZV9j
YXN0PHZvaWQqPihtX2FsbG9jYXRvcnNbaV0uc3RhcnQoKSksIHNpemVJbkJ5dGVzKTsKLSAgICAg
ICAgICAgICAgICBtX2J5dGVzUmVzZXJ2ZWQgKz0gc2l6ZUluQnl0ZXM7Ci0KLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX2FsbG9jYXRvcnNbaV0uYWxsb2NhdG9yU2l6ZSgpIDwgcmVn
aW9uU2l6ZSk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hbGxvY2F0b3JzW2ld
LmlzbGFuZEJlZ2luKCkgPiBtX2FsbG9jYXRvcnNbaV0uc3RhcnQoKSk7Ci0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9hbGxvY2F0b3JzW2ldLmlzbGFuZEJlZ2luKCkgPCBtX2FsbG9j
YXRvcnNbaV0uZW5kKCkpOwotCi0gICAgICAgICAgICAgICAgc3RhcnQgKz0gcmVnaW9uU2l6ZTsK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1BbGxvY2F0b3JzOyArK2kp
IHsKKyAgICAgICAgICAgICAgICB1aW50cHRyX3QgZW5kID0gc3RhcnQgKyBtX3JlZ2lvblNpemU7
CisgICAgICAgICAgICAgICAgdWludHB0cl90IGlzbGFuZEJlZ2luID0gZW5kIC0gaXNsYW5kUmVn
aW9uU2l6ZTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgaXNsYW5kIGluIHRoZSB2ZXJ5IGxhc3Qg
cmVnaW9uIGlzIG5ldmVyIGFjdHVhbGx5IHVzZWQgKGV2ZXJ5dGhpbmcgZ29lcyBiYWNrd2FyZHMp
LCBidXQgd2UKKyAgICAgICAgICAgICAgICAvLyBjYW4ndCBwdXQgY29kZSB0aGVyZSBpbiBjYXNl
IHRoZXkgZG8gbmVlZCB0byB1c2UgYSBiYWNrd2FyZCBqdW1wIGlzbGFuZCwgc28gc2V0IHVwIGFj
Y29yZGluZ2x5LgorICAgICAgICAgICAgICAgIGlmIChpID09IG1fbnVtQWxsb2NhdG9ycyAtIDEp
CisgICAgICAgICAgICAgICAgICAgIGlzbGFuZEJlZ2luID0gZW5kID0gc3RkOjptaW4oaXNsYW5k
QmVnaW4sIHJlc2VydmF0aW9uRW5kKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChl
bmQgPD0gcmVzZXJ2YXRpb25FbmQpOworICAgICAgICAgICAgICAgIG1fYWxsb2NhdG9yc1tpXS5j
b25maWd1cmUoc3RhcnQsIGlzbGFuZEJlZ2luLCBlbmQpOworICAgICAgICAgICAgICAgIG1fYnl0
ZXNSZXNlcnZlZCArPSBtX2FsbG9jYXRvcnNbaV0uYWxsb2NhdG9yU2l6ZSgpOworICAgICAgICAg
ICAgICAgIHN0YXJ0ICs9IG1fcmVnaW9uU2l6ZTsKICAgICAgICAgICAgIH0KICNlbHNlCiAgICAg
ICAgICAgICBtX2FsbG9jYXRvci5hZGRGcmVzaEZyZWVTcGFjZShyZXNlcnZhdGlvbi5iYXNlLCBy
ZXNlcnZhdGlvbi5zaXplKTsKQEAgLTcwMCw3ICs3MDIsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgbV9pc2xhbmRzRm9ySnVtcFNvdXJjZUxvY2F0aW9uLmluc2VydChpc2xhbmRzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFJlZ2lvbkFsbG9jYXRvciogYWxsb2NhdG9yID0gZmluZFJlZ2lvbihq
dW1wTG9jYXRpb24gPiB0YXJnZXQgPyBqdW1wTG9jYXRpb24gLSByZWdpb25TaXplIDoganVtcExv
Y2F0aW9uKTsKKyAgICAgICAgUmVnaW9uQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBmaW5kUmVnaW9u
KGp1bXBMb2NhdGlvbiA+IHRhcmdldCA/IGp1bXBMb2NhdGlvbiAtIG1fcmVnaW9uU2l6ZSA6IGp1
bXBMb2NhdGlvbik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFsbG9jYXRvcik7CiAgICAgICAg
IHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+YWxsb2NhdGVJc2xhbmQoKTsKICAgICAgICAgdm9p
ZCogY3VycmVudElzbGFuZCA9IHJlc3VsdDsKQEAgLTcwOSwxMCArNzExLDEwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBpc2xhbmRzLT5qdW1wSXNsYW5kcy5hcHBlbmQoQ29kZUxvY2F0aW9uTGFi
ZWw8RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4odGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRy
VGFnPihjdXJyZW50SXNsYW5kKSkpOwogCiAgICAgICAgICAgICBhdXRvIGVtaXRKdW1wVG8gPSBb
Jl0gKHZvaWQqIHRhcmdldCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFSTTY0
QXNzZW1ibGVyOjpjYW5FbWl0SnVtcChiaXR3aXNlX2Nhc3Q8dm9pZCo+KGp1bXBMb2NhdGlvbiks
IHRhcmdldCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFzc2VtYmxlcjo6Y2Fu
RW1pdEp1bXAoYml0d2lzZV9jYXN0PHZvaWQqPihqdW1wTG9jYXRpb24pLCB0YXJnZXQpKTsKIAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyIGppdDsKLSAgICAgICAgICAgICAgICBhdXRv
IGp1bXAgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5uZWFy
VGFpbENhbGwoKTsKICAgICAgICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+KGN1cnJlbnRJc2xhbmQpLCBpc2xhbmRTaXpl
SW5CeXRlcywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SnVtcElzbGFuZCwgSklUQ29tcGlsYXRpb25N
dXN0U3VjY2VlZCwgZmFsc2UpOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtC
dWZmZXIuaXNWYWxpZCgpKTsKIApAQCAtNzI4LDE2ICs3MzAsMTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSnVtcCBJc2xh
bmQ6ICVsdSIsIGp1bXBMb2NhdGlvbik7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBp
ZiAoQVJNNjRBc3NlbWJsZXI6OmNhbkVtaXRKdW1wKGJpdHdpc2VfY2FzdDx2b2lkKj4oanVtcExv
Y2F0aW9uKSwgYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSkgeworICAgICAgICAgICAgaWYg
KEFzc2VtYmxlcjo6Y2FuRW1pdEp1bXAoYml0d2lzZV9jYXN0PHZvaWQqPihqdW1wTG9jYXRpb24p
LCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpKSB7CiAgICAgICAgICAgICAgICAgZW1pdEp1
bXBUbyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB1aW50cHRyX3QgbmV4dElzbGFuZFJlZ2lv
bjsKICAgICAgICAgICAgIGlmIChqdW1wTG9jYXRpb24gPiB0YXJnZXQpCi0gICAgICAgICAgICAg
ICAgbmV4dElzbGFuZFJlZ2lvbiA9IGp1bXBMb2NhdGlvbiAtIHJlZ2lvblNpemU7CisgICAgICAg
ICAgICAgICAgbmV4dElzbGFuZFJlZ2lvbiA9IGp1bXBMb2NhdGlvbiAtIG1fcmVnaW9uU2l6ZTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuZXh0SXNsYW5kUmVnaW9uID0ganVt
cExvY2F0aW9uICsgcmVnaW9uU2l6ZTsKKyAgICAgICAgICAgICAgICBuZXh0SXNsYW5kUmVnaW9u
ID0ganVtcExvY2F0aW9uICsgbV9yZWdpb25TaXplOwogCiAgICAgICAgICAgICBSZWdpb25BbGxv
Y2F0b3IqIGFsbG9jYXRvciA9IGZpbmRSZWdpb24obmV4dElzbGFuZFJlZ2lvbik7CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChhbGxvY2F0b3IpOwpAQCAtODIxLDYgKzgyMywxOSBAQCBwcml2
YXRlOgogICAgICAgICBSZWdpb25BbGxvY2F0b3IoRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2Nh
dG9yJiBhbGxvY2F0b3IpCiAgICAgICAgICAgICA6IEJhc2UoYWxsb2NhdG9yKQogICAgICAgICB7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHBhZ2VTaXplKCkgJSBpc2xhbmRTaXplSW5C
eXRlcyksICJDdXJyZW50IGltcGxlbWVudGF0aW9uIHJlbGllcyBvbiB0aGlzIik7CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGNvbmZpZ3VyZSh1aW50cHRyX3Qgc3RhcnQsIHVpbnRwdHJfdCBp
c2xhbmRCZWdpbiwgdWludHB0cl90IGVuZCkKKyAgICAgICAgeworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc3RhcnQgPCBpc2xhbmRCZWdpbik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc2xhbmRCZWdpbiA8PSBlbmQpOworICAgICAgICAgICAgbV9zdGFydCA9IHRhZ0NvZGVQdHI8
RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4oYml0d2lzZV9jYXN0PHZvaWQqPihzdGFydCkpOworICAg
ICAgICAgICAgbV9pc2xhbmRCZWdpbiA9IHRhZ0NvZGVQdHI8RXhlY3V0YWJsZU1lbW9yeVB0clRh
Zz4oYml0d2lzZV9jYXN0PHZvaWQqPihpc2xhbmRCZWdpbikpOworICAgICAgICAgICAgbV9lbmQg
PSB0YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KGJpdHdpc2VfY2FzdDx2b2lkKj4o
ZW5kKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKCh0aGlzLT5lbmQoKSAtIHRoaXMt
PnN0YXJ0KCkpICUgcGFnZVNpemUoKSkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISgo
dGhpcy0+ZW5kKCkgLSB0aGlzLT5pc2xhbmRCZWdpbigpKSAlIHBhZ2VTaXplKCkpKTsKKyAgICAg
ICAgICAgIGFkZEZyZXNoRnJlZVNwYWNlKGJpdHdpc2VfY2FzdDx2b2lkKj4odGhpcy0+c3RhcnQo
KSksIGFsbG9jYXRvclNpemUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MjgsMTMgKzg0MywxMCBAQCBwcml2YXRl
OgogICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAg
ICAgICAgIHVpbnRwdHJfdCBzdGFydCgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHVudGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihtX3N0YXJ0KSk7IH0KKyAgICAg
ICAgdWludHB0cl90IGlzbGFuZEJlZ2luKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4odW50YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KG1faXNsYW5kQmVnaW4pKTsg
fQogICAgICAgICB1aW50cHRyX3QgZW5kKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4odW50YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KG1fZW5kKSk7IH0KIAotICAg
ICAgICB1aW50cHRyX3QgaXNsYW5kQmVnaW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBb
c3RhcnQsIGFsbG9jYXRvckVuZCkKLSAgICAgICAgICAgIHJldHVybiBlbmQoKSAtIGlzbGFuZFJl
Z2lvblNpemU7Ci0gICAgICAgIH0KKyAgICAgICAgc2l6ZV90IG1heElzbGFuZHNJblRoaXNSZWdp
b24oKSB7IHJldHVybiAoZW5kKCkgLSBpc2xhbmRCZWdpbigpKSAvIGlzbGFuZFNpemVJbkJ5dGVz
OyB9CiAKICAgICAgICAgdWludHB0cl90IGFsbG9jYXRvclNpemUoKQogICAgICAgICB7CkBAIC04
NzIsMTIgKzg4NCwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9
IGZpbmRSZXN1bHQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgICAg
ICAgICBpc2xhbmRCaXRzLnJlc2l6ZShpc2xhbmRCaXRzLnNpemUoKSArIGlzbGFuZHNQZXJQYWdl
KCkpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzbGFuZEJpdHMuc2l6ZSgpID4gbWF4SXNs
YW5kc1BlclJlZ2lvbikpCisgICAgICAgICAgICBjb25zdCBzaXplX3Qgb2xkU2l6ZSA9IGlzbGFu
ZEJpdHMuc2l6ZSgpOworICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG1heElzbGFuZHNJblRoaXNS
ZWdpb24gPSB0aGlzLT5tYXhJc2xhbmRzSW5UaGlzUmVnaW9uKCk7CisKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG9sZFNpemUgPD0gbWF4SXNsYW5kc0luVGhpc1JlZ2lvbik7CisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkob2xkU2l6ZSA9PSBtYXhJc2xhbmRzSW5UaGlzUmVnaW9uKSkKICAg
ICAgICAgICAgICAgICBjcmFzaE9uSnVtcElzbGFuZEV4aGF1c3Rpb24oKTsKIAotICAgICAgICAg
ICAgdWludHB0cl90IHBhZ2VCZWdpbiA9IGVuZCAtIChpc2xhbmRCaXRzLnNpemUoKSAqIGlzbGFu
ZFNpemVJbkJ5dGVzKTsgLy8gW2lzbGFuZEJlZ2luLCBlbmQpCi0gICAgICAgICAgICBtX2ZpeGVk
QWxsb2NhdG9yLm1fcmVzZXJ2YXRpb24uY29tbWl0KGJpdHdpc2VfY2FzdDx2b2lkKj4ocGFnZUJl
Z2luKSwgcGFnZVNpemUoKSk7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgbmV3U2l6ZSA9IHN0
ZDo6bWluKG9sZFNpemUgKyBpc2xhbmRzUGVyUGFnZSgpLCBtYXhJc2xhbmRzSW5UaGlzUmVnaW9u
KTsKKyAgICAgICAgICAgIGlzbGFuZEJpdHMucmVzaXplKG5ld1NpemUpOworCisgICAgICAgICAg
ICB1aW50cHRyX3QgaXNsYW5kc0JlZ2luID0gZW5kIC0gKG5ld1NpemUgKiBpc2xhbmRTaXplSW5C
eXRlcyk7IC8vIFtpc2xhbmRzQmVnaW4sIGVuZCkKKyAgICAgICAgICAgIG1fZml4ZWRBbGxvY2F0
b3IubV9yZXNlcnZhdGlvbi5jb21taXQoYml0d2lzZV9jYXN0PHZvaWQqPihpc2xhbmRzQmVnaW4p
LCAobmV3U2l6ZSAtIG9sZFNpemUpICogaXNsYW5kU2l6ZUluQnl0ZXMpOwogCiAgICAgICAgICAg
ICB2b2lkKiByZXN1bHQgPSBmaW5kUmVzdWx0KCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQpOwpAQCAtOTE2LDggKzkzNCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAKKyAgICBwcml2YXRlOgogICAgICAgICAvLyBSYW5nZTog
W3N0YXJ0LCBlbmQpCiAgICAgICAgIHZvaWQqIG1fc3RhcnQ7CisgICAgICAgIHZvaWQqIG1faXNs
YW5kQmVnaW47CiAgICAgICAgIHZvaWQqIG1fZW5kOwogICAgICAgICBGYXN0Qml0VmVjdG9yIGlz
bGFuZEJpdHM7CiAgICAgfTsKQEAgLTk1NSw4ICs5NzUsOSBAQCBwcml2YXRlOgogICAgIExvY2sg
bV9sb2NrOwogICAgIFBhZ2VSZXNlcnZhdGlvbiBtX3Jlc2VydmF0aW9uOwogI2lmIEVOQUJMRShK
VU1QX0lTTEFORFMpCi0gICAgc3RkOjphcnJheTxSZWdpb25BbGxvY2F0b3IsIG1heE51bWJlck9m
UmVnaW9ucz4gbV9hbGxvY2F0b3JzOwotICAgIHVuc2lnbmVkIG1fbnVtQWxsb2NhdG9yczsKKyAg
ICBzaXplX3QgbV9yZWdpb25TaXplOworICAgIHNpemVfdCBtX251bUFsbG9jYXRvcnM7CisgICAg
Rml4ZWRWZWN0b3I8UmVnaW9uQWxsb2NhdG9yPiBtX2FsbG9jYXRvcnM7CiAgICAgUmVkQmxhY2tU
cmVlPElzbGFuZHMsIHZvaWQqPiBtX2lzbGFuZHNGb3JKdW1wU291cmNlTG9jYXRpb247CiAjZWxz
ZQogICAgIEFsbG9jYXRvciBtX2FsbG9jYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0VtYmVkZGVkRml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0
b3IuaAppbmRleCA0ZGZiNzk2MzRiZDg2NmI0NDQ4YTIxZDg3NmIyMWQ4NTllOTdlYjMwLi4zZjI5
YjVlYTg1MTAxMzg5MzFmY2QxNThiODNhYWM0MmM5YmUyOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRW1iZWRk
ZWRGaXhlZFZlY3Rvci5oCkBAIC00NSw2ICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBVbmlxdWVSZWYgeyAqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25T
aXplKHNpemUpKSkgRW1iZWRkZWRGaXhlZFZlY3RvcihzaXplKSB9OwogICAgIH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFVuaXF1ZVJlZjxFbWJlZGRlZEZp
eGVkVmVjdG9yPiBjcmVhdGUodW5zaWduZWQgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpCisgICAgewor
ICAgICAgICByZXR1cm4gVW5pcXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNl
OjphbGxvY2F0aW9uU2l6ZShzaXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSwgc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB9OworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IElucHV0SXRlcmF0b3I+CiAgICAgc3RhdGljIFVuaXF1ZVJlZjxFbWJlZGRlZEZpeGVkVmVjdG9y
PiBjcmVhdGUoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQogICAgIHsK
QEAgLTk0LDYgKzEwMCwxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIGV4cGxpY2l0IEVtYmVkZGVkRml4ZWRWZWN0b3IodW5z
aWduZWQgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogQmFzZShzaXplLCBzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pCisgICAgeworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIElucHV0SXRlcmF0b3I+CiAgICAgRW1iZWRkZWRGaXhlZFZlY3Rvcih1bnNpZ25lZCBzaXpl
LCBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCiAgICAgICAgIDogQmFz
ZShzaXplLCBmaXJzdCwgbGFzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVj
dG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCmluZGV4IDI2ZGZhZjkwOTBkNDlh
YTA5OGVkMTA2NWU2ZDI2NjA1Mzc2MTYwZTIuLmY3ZjQyMDM4ODcyMjA5ODc0ZTE1NjAwNzJkYjcy
NTEyYjExMzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKKysr
IGIvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaApAQCAtNzIsNiArNzIsMTEgQEAgcHVibGlj
OgogICAgICAgICA6IG1fc3RvcmFnZShzaXplID8gU3RvcmFnZTo6Y3JlYXRlKHNpemUpLm1vdmVU
b1VuaXF1ZVB0cigpIDogbnVsbHB0cikKICAgICB7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgZXhwbGljaXQgRml4ZWRWZWN0b3Ioc2l6ZV90IHNpemUsIEFyZ3MmJi4u
LiBhcmdzKQorICAgICAgICA6IG1fc3RvcmFnZShzaXplID8gU3RvcmFnZTo6Y3JlYXRlKHNpemUs
IHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikubW92ZVRvVW5pcXVlUHRyKCkgOiBudWxscHRy
KQorICAgIHsgfQorCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXI+CiAgICAgZXhwbGljaXQgRml4ZWRWZWN0b3IoY29uc3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKICAgICAgICAgOiBt
X3N0b3JhZ2Uob3RoZXIuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNyZWF0ZUZyb21W
ZWN0b3Iob3RoZXIpLm1vdmVUb1VuaXF1ZVB0cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5k
ZXggNmEwYjlkNTRiNWE2YjU5MzdiODZmMjI2YTI3OWNmZWM5MjgxNzRjNC4uZWVkZjYxM2RhMjZm
YTRiZTY0ZWM5YjQ5OWUyNWI2YzYxNjY4ZDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBA
IC02MTEsOSArNjExLDExIEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxF
X0pVTVBfSVNMQU5EUykgJiYgQ1BVKEFSTTY0KSAmJiBDUFUoQUREUkVTUzY0KSAmJiBFTkFCTEUo
SklUKQorI2lmICFkZWZpbmVkKEVOQUJMRV9KVU1QX0lTTEFORFMpICYmIEVOQUJMRShKSVQpCisj
aWYgKENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkpIHx8IENQVShBUk0pCiAjZGVmaW5lIEVO
QUJMRV9KVU1QX0lTTEFORFMgMQogI2VuZGlmCisjZW5kaWYKIAogLyogRklYTUU6IFRoaXMgc2hv
dWxkIGJlIHR1cm5lZCBpbnRvIGFuICNlcnJvciBpbnZhcmlhbnQgKi8KIC8qIFRoZSBGVEwgKmRv
ZXMgbm90KiB3b3JrIG9uIDMyLWJpdCBwbGF0Zm9ybXMuIERpc2FibGUgaXQgZXZlbiBpZiBzb21l
b25lIGFza2VkIHVzIHRvIGVuYWJsZSBpdC4gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1RyYWlsaW5nQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJyYXkuaAppbmRleCBm
MmJhOWVmOGQ3YmNkNjM3MjA5NGIxZTMyYTRhZWE2M2U5NDM1MWM4Li4zYWVkNWJkYjU1YTZmOTk3
MTViOTJiNDE3NTU3OTIyYWNmMWJhZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UcmFp
bGluZ0FycmF5LmgKKysrIGIvU291cmNlL1dURi93dGYvVHJhaWxpbmdBcnJheS5oCkBAIC02MSw2
ICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojppbml0
aWFsaXplSWZOb25QT0QoYmVnaW4oKSwgZW5kKCkpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgVHJhaWxpbmdBcnJheSh1bnNpZ25lZCBzaXplLCBBcmdzJiYu
Li4gYXJncykKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19maW5hbF92PERlcml2ZWQ+KTsKKyAgICAgICAgVmVjdG9yVHlwZU9wZXJh
dGlvbnM8VD46OmluaXRpYWxpemVXaXRoQXJncyhiZWdpbigpLCBlbmQoKSwgc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0
ZXJhdG9yPgogICAgIFRyYWlsaW5nQXJyYXkodW5zaWduZWQgc2l6ZSwgSW5wdXRJdGVyYXRvciBm
aXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQogICAgICAgICA6IG1fc2l6ZShzaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApp
bmRleCA0Njc5YTE4ZGYwMTQ1ZDI0NWUxNzI0MWM3OWZjNmQ3YmFhYTFiMjRhLi5iYzkxNTUyYjJi
YzM1ZDE0OTMwYjdjZTY2NmY1NTVhYzdiNmQ3ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtOTcsNiArOTcsMTMg
QEAgc3RydWN0IFZlY3RvckluaXRpYWxpemVyPHRydWUsIGZhbHNlLCBUPgogICAgIHsKICAgICAg
ICAgaW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luLCBlbmQpOwogICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVdpdGhBcmdzKFQq
IGJlZ2luLCBUKiBlbmQsIEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZm9yIChUICpj
dXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIpCisgICAgICAgICAgICBuZXcoTm90TnVsbCwg
Y3VyKSBUKGFyZ3MuLi4pOworICAgIH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0y
NTUsNiArMjYyLDEyIEBAIHN0cnVjdCBWZWN0b3JUeXBlT3BlcmF0aW9ucwogICAgICAgICBWZWN0
b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZlY3Rv
clRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojppbml0aWFsaXplKGJlZ2lu
LCBlbmQpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIC4uLiBBcmdzPgorICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVXaXRoQXJncyhUKiBiZWdpbiwgVCogZW5kLCBBcmdzJiYuLi4g
YXJncykKKyAgICB7CisgICAgICAgIFZlY3RvckluaXRpYWxpemVyPFZlY3RvclRyYWl0czxUPjo6
bmVlZHNJbml0aWFsaXphdGlvbiwgVmVjdG9yVHJhaXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0aE1l
bXNldCwgVD46OmluaXRpYWxpemVXaXRoQXJncyhiZWdpbiwgZW5kLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1vdmUoVCogc3JjLCBUKiBz
cmNFbmQsIFQqIGRzdCkKICAgICB7CiAgICAgICAgIFZlY3Rvck1vdmVyPFZlY3RvclRyYWl0czxU
Pjo6Y2FuTW92ZVdpdGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywgc3JjRW5kLCBkc3QpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxMDFmZWEw
ZTEwOGQyZjEyMTIzMDgyZDU0NDc0MzBhMmIyNDI4NDkzLi5iM2MzOWZmZDYzN2IxNDg1OTdkNTgz
ZjdiMWE4MTFmNWNmNzc5YmJkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAzLTIxICBHZXphIExvcmUg
IDxnbG9yZUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdW0FSTXY3XSBTdXBwb3J0IHByb3Bl
ciBuZWFyIGNhbGxzIGFuZCBKVU1QX0lTTEFORFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2xldC1jb25zdC10ZHotZW52
aXJvbm1lbnQtcGFyc2luZy1hbmQtaGFzaC1jb25zaW5nLXNwZWVkLmpzOgorCiAyMDIyLTAzLTA4
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgaW52YWxp
ZCBBU1NFUlQgaW4gTG9jYWxlSURCdWlsZGVyOjpvdmVycmlkZUxhbmd1YWdlU2NyaXB0UmVnaW9u
KCkuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9sZXQtY29uc3QtdGR6LWVu
dmlyb25tZW50LXBhcnNpbmctYW5kLWhhc2gtY29uc2luZy1zcGVlZC5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2xldC1jb25zdC10ZHotZW52aXJvbm1lbnQtcGFyc2luZy1hbmQtaGFzaC1j
b25zaW5nLXNwZWVkLmpzCmluZGV4IDI2MTgyM2VmM2M1ZjUyMzViMjdmOWFlN2ZhMjZhODA0NzI0
ZTBjMTYuLjQxOWE1MGU3ZDNhMGUxNzVjODFhYTE2NTExMzI3NmExODViODA2MjcgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2xldC1jb25zdC10ZHotZW52aXJvbm1lbnQtcGFy
c2luZy1hbmQtaGFzaC1jb25zaW5nLXNwZWVkLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2xldC1jb25zdC10ZHotZW52aXJvbm1lbnQtcGFyc2luZy1hbmQtaGFzaC1jb25zaW5nLXNw
ZWVkLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIGRlZmF1bHROb05vTExJbnRSdW4gaWYgJGFyY2hp
dGVjdHVyZSA9PSAibWlwcyIKKy8vQCBkZWZhdWx0Tm9Ob0xMSW50UnVuIGlmICRhcmNoaXRlY3R1
cmUgPT0gIm1pcHMiIHx8ICRhcmNoaXRlY3R1cmUgPT0gImFybSIKIC8qCiAgKiBDb3B5cmlnaHQg
alF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycywgaHR0cHM6Ly9qcXVlcnku
b3JnLwogICoK
</data>
<flag name="commit-queue"
          id="483181"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455248</attachid>
            <date>2022-03-21 08:37:03 -0700</date>
            <delta_ts>2022-03-28 05:52:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238143-20220321153702.patch</filename>
            <type>text/plain</type>
            <size>47604</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZmI5ZDM3ZDg1YWQ3OGQxMzI4YWYzY2FlNzUyZDE0OWRkMDM0ODg5Li44OWMzYmRlMzVjMGZiZTlj
ODRiNTc5YjJmNmQ2YWM2NTFlMzRjM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAyMi0wMy0yMSAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXVtBUk12N10gU3VwcG9ydCBwcm9wZXIgbmVhciBjYWxscyBhbmQgSlVNUF9J
U0xBTkRTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgbmVhckNhbGwgYW5kIG5lYXJUYWlsQ2FsbCBhcyBzaW5nbGUgaW5zdHJ1Y3Rpb24g
ZGlyZWN0CisgICAgICAgIGJyYW5jaGVzIG9uIEFSTXY3L1RodW1iLTIuIChXaWxsIG5lZWQgdG8g
c3VwcG9ydCB0aGVzZSBmb3IgV2FzbSBKSVRzLAorICAgICAgICB0byBpbXBsZW1lbnQgdGhyZWFk
U2FmZVBhdGNoYWJsZU5lYXJjYWxsLikgVG8gbWFrZSB0aGlzIHBvc3NpYmxlIHdoaWxlCisgICAg
ICAgIGFsc28gaGF2aW5nIGFuIGV4ZWN1dGFibGUgcG9vbCBzaXplIGxhcmdlciB0aGFuIHRoZSBi
cmFuY2ggcmFuZ2UsIEkKKyAgICAgICAgYWxzbyBwb3J0ZWQgSlVNUF9JU0xBTkRTLgorCisgICAg
ICAgIFRvIHBvcnQgSlVNUF9JU0xBTkRTLCBhIHJlZm9ybXVsYXRpb24gb2YgdGhlIHJlZ2lvbiBh
bGxvY2F0aW9ucyB3YXMKKyAgICAgICAgbmVjZXNzYXJ5LCB3aGljaCBpcyBub3cgZG9uZSBpbiB0
ZXJtcyBvZiB0aGUgcmFuZ2Ugb2YgdGhlCisgICAgICAgIG5lYXJDYWxsL25lYXJUYWlsQ2FsbCBt
YWNyb2Fzc2VtYmxlciBtYWNyb3MuIEZvciBBUk02NCwgdGhlIGJlaGF2aW91cgorICAgICAgICBz
aG91bGQgYmUgaWRlbnRpY2FsLgorCisgICAgICAgIFRoZSBqdW1wIGlzbGFkIHJlc2VydmF0aW9u
IG9uIEFSTXY3IGlzIHNldCB0byA1JSBvZiBleGVjdXRhYmxlIG1lbW9yeQorICAgICAgICBzaXpl
LCB3aGljaCBpcyBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGFzIHRoZSBiYXNlbGluZSBKSVQgY29k
ZSBzaXplCisgICAgICAgIHNhdmluZyBwcm92aWRlZCBieSB1c2luZyBzaG9ydCBicmFuY2hlcyBm
b3IgbmVhciBjYWxscywgc28gdGhlIGNoYW5nZQorICAgICAgICBzaG91bGQgYmUgbmV1dHJhbCBv
dmVyYWxsIHdpdGggcmVzcGVjdCB0byBleGVjdXRhYmxlIG1lbW9yeQorICAgICAgICBjb25zdW1w
dGlvbi4KKworICAgICAgICBBbHNvIG1hZGUgaXQgcG9zc2libGUgZm9yIHRoZSAtLWppdE1lbW9y
eVJlc2VydmF0aW9uU2l6ZSBvcHRpb24gdG8KKyAgICAgICAgcmVxdWVzdCBKSVQgbWVtb3J5IHRo
YXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGRlZmF1bHQgaGFyZGNvZGVkIHNpemUKKyAgICAgICAgd2hp
bGUgdXNpbmcgSlVNUF9JU0xBTkRTICh3ZSBuZWVkIHRoaXMgZm9yIHRlc3Rpbmcgb24gQVJNdjcs
IHdoaWNoIGhhcworICAgICAgICBhIHNtYWxsZXIgZGVmYXVsdCBleGVjdXRhYmxlIHBvb2wgc2l6
ZSkuIFRvIGRvIHRoaXMgdGhlIHJlZ2lvbgorICAgICAgICBhbGxvY2F0b3JzIGFyZSBubyBsb25n
ZXIgc3RhdGljYWxseSBhbGxvY2F0ZWQgYnV0IGFyZSBoZWxkIGluIGEKKyAgICAgICAgRml4ZWRW
ZWN0b3IuCisKKyAgICAgICAgQWxzbyByZW1vdmVkZXR1bnVzZWQgcmVwYXRjaENvbXBhY3QgbWV0
aG9kcyBmcm9tIGFzc2VtYmxlcnMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QVJNdjdBc3NlbWJsZXI6OmlzRXZlbik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVy
OjptYWtlRXZlbik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpibCk6CisgICAgICAg
IChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6OmxpbmtUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rQ2Fs
bCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZWxpbmtDYWxsKToKKyAgICAgICAg
KEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlbGlua1RhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6QVJN
djdBc3NlbWJsZXI6OnByZXBhcmVGb3JBdG9taWNSZWxpbmtKdW1wQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnByZXBhcmVGb3JBdG9taWNSZWxpbmtDYWxsQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVt
cCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpjYW5FbWl0SnVtcCk6CisgICAgICAg
IChKU0M6OkFSTXY3QXNzZW1ibGVyOjppc0JMKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6OmxpbmtKdW1wVDQpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGlua0NvbmRp
dGlvbmFsSnVtcFQ0KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmtKdW1wQWJz
b2x1dGUpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGlua0JyYW5jaCk6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQXNzZW1ibGVyQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmlzSW50KToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bmVhckNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpuZWFyVGFpbENhbGwpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpsaW5rQ2FsbCk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJ
U0NWNjQuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgICogYnl0ZWNvZGUv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAg
ICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6
ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisKIDIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI5MDcy
MCk6IERlYnVnZ2VyOiBTdGVwIG5leHQgc2hvdWxkIG5vdCBiZWhhdmUgdGhlIHNhbWUgYXMgU3Rl
cCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDg3NWM3YmMyZTEzMGQ4NWMwNjcwYmM2NTQyZGJlZDRlYjRhYjVkMWMuLjUx
N2ZiMzI5ZDY0ZjBkYTQ4OGNiMmYwYThhYmMyMDNhZGUyZDUyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMjItMDMtMjEgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0pTQ11bQVJNdjddIFN1cHBvcnQgcHJvcGVyIG5lYXIgY2FsbHMgYW5kIEpVTVBfSVNMQU5EUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTQzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBj
b25zdHJ1Y3RvciBhcmd1bWVudHMgZm9yIEZpeGVkVmVjdG9yIGVsZW1lbnQgaW5pdGlhbGl6YXRp
b24uCisKKyAgICAgICAgKiB3dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oOgorICAgICAgICAqIHd0
Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Rml4ZWRWZWN0b3Ip
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAqIHd0Zi9UcmFpbGlu
Z0FycmF5Lmg6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OlRyYWlsaW5nQXJyYXkpOgor
ICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlv
bnM6OmluaXRpYWxpemVXaXRoQXJncyk6CisKIDIwMjItMDMtMTYgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgZmly
c3QgZHJhZnQgb2YgYnVmZmVyIG1hcHBpbmcgYWNjb3JkaW5nIHRvIHRoZSBzcGVjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKaW5kZXggNmU5
MWQ5MjMwYTM5Y2U1NzhkZTdmYTc2NWFjYmRkZTMyNTMzMDkyMS4uMWM1MjIyNTljZmQxMDAzYjM4
MjQzOTE0ZGU1ZDdkNGRkNDE5MjAzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtNTYsMTQgKzU2LDYgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRzLCB0eXBlbmFtZSBUeXBlPgotQUxXQVlTX0lO
TElORSBjb25zdGV4cHIgYm9vbCBpc0ludChUeXBlIHQpCi17Ci0gICAgY29uc3RleHByIHNpemVf
dCBzaGlmdCA9IHNpemVvZihUeXBlKSAqIENIQVJfQklUIC0gYml0czsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihUeXBlKSAqIENIQVJfQklUID4gc2hpZnQsICJzaGlmdCBpcyBsYXJnZXIgdGhh
biB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUiKTsKLSAgICByZXR1cm4gKCh0IDw8IHNoaWZ0KSA+PiBz
aGlmdCkgPT0gdDsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpczRCeXRlQWxpZ25l
ZChjb25zdCB2b2lkKiBwdHIpCiB7CiAgICAgcmV0dXJuICEocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocHRyKSAmIDB4Myk7CkBAIC0yOTA4LDMwICsyOTAwLDYgQEAgcHVibGljOgogICAgIH0K
ICNlbmRpZgogICAgIAotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0KHZvaWQqIHdoZXJl
LCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCEodmFsdWUgJiB+MHgzZmY4
KSk7Ci0KLSAgICAgICAgTWVtT3BTaXplIHNpemU7Ci0gICAgICAgIGJvb2wgVjsKLSAgICAgICAg
TWVtT3Agb3BjOwotICAgICAgICBpbnQgaW1tMTI7Ci0gICAgICAgIFJlZ2lzdGVySUQgcm47Ci0g
ICAgICAgIFJlZ2lzdGVySUQgcnQ7Ci0gICAgICAgIGJvb2wgZXhwZWN0ZWQgPSBkaXNhc3NlbWJs
ZUxvYWRTdG9yZVJlZ2lzdGVyVW5zaWduZWRJbW1lZGlhdGUod2hlcmUsIHNpemUsIFYsIG9wYywg
aW1tMTIsIHJuLCBydCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0ZWQsIGV4cGVjdGVk
ICYmIHNpemUgPj0gTWVtT3BTaXplXzMyICYmICFWICYmIG9wYyA9PSBNZW1PcF9MT0FEKTsgLy8g
ZXhwZWN0IDMyLzY0IGJpdCBsb2FkIHRvIEdQUi4KLQotICAgICAgICBpZiAoc2l6ZSA9PSBNZW1P
cFNpemVfMzIpCi0gICAgICAgICAgICBpbW0xMiA9IGVuY29kZVBvc2l0aXZlSW1tZWRpYXRlPDMy
Pih2YWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGltbTEyID0gZW5jb2RlUG9zaXRp
dmVJbW1lZGlhdGU8NjQ+KHZhbHVlKTsKLSAgICAgICAgaW50IGluc24gPSBsb2FkU3RvcmVSZWdp
c3RlclVuc2lnbmVkSW1tZWRpYXRlKHNpemUsIFYsIG9wYywgaW1tMTIsIHJuLCBydCk7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPih3
aGVyZSkgPT0gd2hlcmUpOwotICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwg
c2l6ZW9mKGludCkpOwotCi0gICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsK
LSAgICB9Ci0KICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmRl
YnVnT2Zmc2V0KCk7IH0KIAogI2lmIE9TKExJTlVYKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJM
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3Nl
bWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIu
aAppbmRleCBhY2FkZGQyZDU2YTIwZGJhNzY0MWUyYzMxNDQ4MmUxMGRhMjUzZWE3Li5hNGM5YTM3
NzUxNDIwN2EwYThiNjE4ZDVjZTRlNWNlYmEzYzQ5ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC00OTEsNiArNDkxLDE2IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKIAorICAgIC8vIEluIHRoZSBBUk12NyBJU0EsIHRoZSBMU0Ig
b2YgYSBjb2RlIHBvaW50ZXIgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhcmdldCB1c2VzIFRodW1i
IHZzIEFSTQorICAgIC8vIGVuY29kaW5nLiBUaGVzZSB1dGlsaXR5IGZ1bmN0aW9ucyBhcmUgdGhl
cmUgZm9yIHdoZW4gd2UgbmVlZCB0byBkZWFsIHdpdGggdGhpcy4KKyAgICBzdGF0aWMgYm9vbCBp
c0V2ZW4oY29uc3Qgdm9pZCogcHRyKSB7IHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihwdHIpICYgMSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0V2ZW4oQXNzZW1ibGVyTGFiZWwg
JmxhYmVsKSB7IHJldHVybiAhKGxhYmVsLm9mZnNldCgpICYgMSk7IH0KKyAgICBzdGF0aWMgdm9p
ZCogbWFrZUV2ZW4oY29uc3Qgdm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc0V2
ZW4ocHRyKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIH4xKTsKKyAgICB9CisKICAgICAvLyBBUk12Nywg
QXBweC1BLjYuMwogICAgIHN0YXRpYyBib29sIEJhZFJlZyhSZWdpc3RlcklEIHJlZykKICAgICB7
CkBAIC02MDksNiArNjE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfVk9SUl9UMSAgICAgID0g
MHhFRjIwLAogICAgICAgICBPUF9CX1QzYSAgICAgICAgPSAweEYwMDAsCiAgICAgICAgIE9QX0Jf
VDRhICAgICAgICA9IDB4RjAwMCwKKyAgICAgICAgT1BfQkxfVDRhICAgICAgID0gMHhGMDAwLAog
ICAgICAgICBPUF9BTkRfaW1tX1QxICAgPSAweEYwMDAsCiAgICAgICAgIE9QX1RTVF9pbW0gICAg
ICA9IDB4RjAxMCwKICAgICAgICAgT1BfQklDX2ltbV9UMSAgID0gMHhGMDIwLApAQCAtNjk3LDYg
KzcwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX0RNQl9JU0hTVF9UMWIgPSAweDhGNUEsCiAg
ICAgICAgIE9QX0JfVDNiICAgICAgICAgPSAweDgwMDAsCiAgICAgICAgIE9QX0JfVDRiICAgICAg
ICAgPSAweDkwMDAsCisgICAgICAgIE9QX0JMX1Q0YiAgICAgICAgPSAweEQwMDAsCiAgICAgfSBP
cGNvZGVJRDI7CiAKICAgICBzdHJ1Y3QgRm91ckZvdXJzIHsKQEAgLTcxOSw2ICs3MzEsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgfSBtX3U7CiAgICAgfTsKIAorICAgIGVudW0gY2xhc3MgQnJhbmNo
V2l0aExpbmsgOiBib29sIHsKKyAgICAgICAgTm8gPSBmYWxzZSwKKyAgICAgICAgWWVzID0gdHJ1
ZQorICAgIH07CisKICAgICBjbGFzcyBBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjsKIAogICAgIC8v
IGZhbHNlIG1lYW5zIGVsc2UhCkBAIC05MjEsNiArOTM4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
bV9mb3JtYXR0ZXIudHdvV29yZE9wMTZPcDE2KE9QX0JfVDRhLCBPUF9CX1Q0Yik7CiAgICAgICAg
IHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOwogICAgIH0KKworICAgIC8vIE9ubHkgYWxsb3dl
ZCBpbiBJVCAoaWYgdGhlbikgYmxvY2sgaWYgbGFzdCBpbnN0cnVjdGlvbi4KKyAgICBBTFdBWVNf
SU5MSU5FIEFzc2VtYmxlckxhYmVsIGJsKCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3
b1dvcmRPcDE2T3AxNihPUF9CTF9UNGEsIE9QX0JMX1Q0Yik7CisgICAgICAgIHJldHVybiBtX2Zv
cm1hdHRlci5sYWJlbCgpOworICAgIH0KICAgICAKICAgICAvLyBPbmx5IGFsbG93ZWQgaW4gSVQg
KGlmIHRoZW4pIGJsb2NrIGlmIGxhc3QgaW5zdHJ1Y3Rpb24uCiAgICAgQUxXQVlTX0lOTElORSBB
c3NlbWJsZXJMYWJlbCBibHgoUmVnaXN0ZXJJRCBybSkKQEAgLTIyNzMsNyArMjI5Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGxpbmtKdW1wVDM8Y29weT4ocmVjb3JkLmNvbmRpdGlvbigpLCBy
ZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRv
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExpbmtKdW1wVDQ6Ci0gICAgICAg
ICAgICBsaW5rSnVtcFQ0PGNvcHk+KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4oZnJv
bSksIGZyb21JbnN0cnVjdGlvbiwgdG8pOworICAgICAgICAgICAgbGlua0p1bXBUNDxjb3B5Pihy
ZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRv
LCBCcmFuY2hXaXRoTGluazo6Tm8pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
TGlua0NvbmRpdGlvbmFsSnVtcFQ0OgogICAgICAgICAgICAgbGlua0NvbmRpdGlvbmFsSnVtcFQ0
PGNvcHk+KHJlY29yZC5jb25kaXRpb24oKSwgcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3Qq
Pihmcm9tKSwgZnJvbUluc3RydWN0aW9uLCB0byk7CkBAIC0yMzIxLDEyICsyMzQ1LDIwIEBAIHB1
YmxpYzoKICAgICAgICAgbGlua0p1bXBBYnNvbHV0ZShsb2NhdGlvbiwgbG9jYXRpb24sIHRvKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJM
YWJlbCBmcm9tLCB2b2lkKiB0bykKKyAgICBzdGF0aWMgdm9pZCBsaW5rVGFpbENhbGwodm9pZCog
Y29kZSwgQXNzZW1ibGVyTGFiZWwgZnJvbSwgdm9pZCogdG8pCiAgICAgewotICAgICAgICBBU1NF
UlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSAmIDEpKTsKICAgICAgICAgQVNT
RVJUKGZyb20uaXNTZXQoKSk7CiAKLSAgICAgICAgc2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0
PHVpbnQxNl90Kj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkgKyBmcm9tLm9mZnNl
dCgpKSAtIDEsIHRvLCBmYWxzZSk7CisgICAgICAgIHVpbnQxNl90KiBsb2NhdGlvbiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSAr
IGZyb20ub2Zmc2V0KCkpOworICAgICAgICBsaW5rQnJhbmNoKGxvY2F0aW9uLCBsb2NhdGlvbiwg
bWFrZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6Tm8pOworICAgIH0KKworICAgIHN0YXRpYyB2
b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGZyb20uaXNTZXQoKSk7CisKKyAgICAgICAgdWludDE2X3Qq
IGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGNvZGUpICsgZnJvbS5vZmZzZXQoKSk7CisgICAgICAgIGxpbmtCcmFuY2gobG9j
YXRpb24sIGxvY2F0aW9uLCBtYWtlRXZlbih0byksIEJyYW5jaFdpdGhMaW5rOjpZZXMpOwogICAg
IH0KIAogICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxh
YmVsIHdoZXJlLCB2b2lkKiB2YWx1ZSkKQEAgLTIzNTAsMTEgKzIzODIsNTAgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgcmVsaW5rQ2FsbCh2b2lkKiBmcm9tLCB2b2lkKiB0bykKICAgICB7
Ci0gICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICYgMSkp
OworICAgICAgICBBU1NFUlQoaXNFdmVuKGZyb20pKTsKIAotICAgICAgICBzZXRQb2ludGVyKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDEsIHRvLCB0cnVlKTsKKyAgICAgICAg
dWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pOwor
ICAgICAgICBpZiAoaXNCTChsb2NhdGlvbiAtIDIpKSB7CisgICAgICAgICAgICBsaW5rQnJhbmNo
KGxvY2F0aW9uLCBsb2NhdGlvbiwgbWFrZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6WWVzKTsK
KyAgICAgICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24gLSAyLCAyICogc2l6ZW9mKHVpbnQxNl90
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRQb2ludGVy
KGxvY2F0aW9uIC0gMSwgdG8sIHRydWUpOwogICAgIH0KLSAgICAKKworICAgIHN0YXRpYyB2b2lk
IHJlbGlua1RhaWxDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzRXZlbihmcm9tKSk7CisKKyAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pOworICAgICAgICBsaW5rQnJhbmNoKGxvY2F0aW9u
LCBsb2NhdGlvbiwgbWFrZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6Tm8pOworICAgICAgICBj
YWNoZUZsdXNoKGxvY2F0aW9uIC0gMiwgMiAqIHNpemVvZih1aW50MTZfdCkpOworICAgIH0KKwor
I2lmIEVOQUJMRShKVU1QX0lTTEFORFMpCisgICAgc3RhdGljIHZvaWQqIHByZXBhcmVGb3JBdG9t
aWNSZWxpbmtKdW1wQ29uY3VycmVudGx5KHZvaWQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzRXZlbihmcm9tKSk7CisgICAgICAgIEFTU0VSVChpc0V2ZW4odG8pKTsK
KworICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHRvKSAt
IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oZnJvbSk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxpbnQ+KG9mZnNldCkgPT0gb2Zmc2V0KTsKKworICAgICAgICBpZiAoaXNJbnQ8MjU+KG9mZnNl
dCkpCisgICAgICAgICAgICByZXR1cm4gdG87CisKKyAgICAgICAgcmV0dXJuIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OnNpbmdsZXRvbigpLmdldEp1bXBJc2xhbmRUb0NvbmN1cnJlbnRseShmcm9tLCB0
byk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQqIHByZXBhcmVGb3JBdG9taWNSZWxpbmtDYWxs
Q29uY3VycmVudGx5KHZvaWQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzRXZlbihmcm9tKSk7CisKKyAgICAgICAgcmV0dXJuIHByZXBhcmVGb3JBdG9taWNSZWxpbmtK
dW1wQ29uY3VycmVudGx5KGZyb20sIG1ha2VFdmVuKHRvKSk7CisgICAgfQorI2VuZGlmCisKICAg
ICBzdGF0aWMgdm9pZCogcmVhZENhbGxUYXJnZXQodm9pZCogZnJvbSkKICAgICB7CiAgICAgICAg
IHJldHVybiByZWFkUG9pbnRlcihyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSkgLSAx
KTsKQEAgLTIzNjcsMjcgKzI0MzgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHNldEludDMyKHdoZXJl
LCB2YWx1ZSwgdHJ1ZSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21w
YWN0KHZvaWQqIHdoZXJlLCBpbnQzMl90IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChv
ZmZzZXQgPj0gLTI1NSAmJiBvZmZzZXQgPD0gMjU1KTsKLQotICAgICAgICBib29sIGFkZCA9IHRy
dWU7Ci0gICAgICAgIGlmIChvZmZzZXQgPCAwKSB7Ci0gICAgICAgICAgICBhZGQgPSBmYWxzZTsK
LSAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIG9mZnNldCB8PSAoYWRkIDw8IDkpOwotICAgICAgICBvZmZzZXQgfD0gKDEgPDwgMTApOwot
ICAgICAgICBvZmZzZXQgfD0gKDEgPDwgMTEpOwotCi0gICAgICAgIHVpbnQxNl90KiBsb2NhdGlv
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPih3aGVyZSk7Ci0gICAgICAgIHVpbnQxNl90
IGluc3RydWN0aW9uID0gbG9jYXRpb25bMV0gJiB+KCgxIDw8IDEyKSAtIDEpOwotICAgICAgICBp
bnN0cnVjdGlvbiB8PSBvZmZzZXQ7Ci0gICAgICAgIHBlcmZvcm1KSVRNZW1jcHkobG9jYXRpb24g
KyAxLCAmaW5zdHJ1Y3Rpb24sIHNpemVvZih1aW50MTZfdCkpOwotICAgICAgICBjYWNoZUZsdXNo
KGxvY2F0aW9uLCBzaXplb2YodWludDE2X3QpICogMik7Ci0gICAgfQotCiAgICAgc3RhdGljIHZv
aWQgcmVwYXRjaFBvaW50ZXIodm9pZCogd2hlcmUsIHZvaWQqIHZhbHVlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hlcmUpICYgMSkpOwpAQCAt
MjQwOCw3ICsyNDU4LDcgQEAgcHVibGljOgogI2lmIE9TKExJTlVYKQogICAgICAgICBpZiAoY2Fu
QmVKdW1wVDQocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpLCB0
bykpIHsKICAgICAgICAgICAgIHVpbnQxNl90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQx
Nl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOwotICAgICAgICAgICAgbGlua0p1bXBUNChwdHIs
IHB0ciwgdG8pOworICAgICAgICAgICAgbGlua0p1bXBUNChwdHIsIHB0ciwgdG8sIEJyYW5jaFdp
dGhMaW5rOjpObyk7CiAgICAgICAgICAgICBjYWNoZUZsdXNoKHB0ciAtIDIsIHNpemVvZih1aW50
MTZfdCkgKiAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVpbnQxNl90KiBwdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyA1OwpAQCAt
MjQxNyw3ICsyNDY3LDcgQEAgcHVibGljOgogICAgICAgICB9CiAjZWxzZQogICAgICAgICB1aW50
MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQp
ICsgMjsKLSAgICAgICAgbGlua0p1bXBUNChwdHIsIHB0ciwgdG8pOworICAgICAgICBsaW5rSnVt
cFQ0KHB0ciwgcHRyLCB0bywgQnJhbmNoV2l0aExpbms6Ok5vKTsKICAgICAgICAgY2FjaGVGbHVz
aChwdHIgLSAyLCBzaXplb2YodWludDE2X3QpICogMik7CiAjZW5kaWYKICAgICB9CkBAIC0yNTI4
LDEwICsyNTc4LDE4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIGJvb2wgY2FuRW1pdEp1bXAodm9pZCogZnJvbSwgdm9pZCogdG8pCisgICAgewor
ICAgICAgICAvLyAnZnJvbScgaG9sZHMgdGhlIGFkZHJlc3Mgb2YgdGhlIGJyYW5jaCBpbnN0cnVj
dGlvbi4gVGhlIGJyYW5jaCByYW5nZSBob3dldmVyIGlzIHJlbGF0aXZlCisgICAgICAgIC8vIHRv
IHRoZSBhcmNoaXRlY3R1cmFsIHZhbHVlIG9mIHRoZSBQQyB3aGljaCBpcyA0IGxhcmdlciB0aGFu
IHRoZSBhZGRyZXNzIG9mIHRoZSBicmFuY2guCisgICAgICAgIGludHB0cl90IG9mZnNldCA9IGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4odG8pIC0gKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oZnJvbSkg
KyA0KTsKKyAgICAgICAgcmV0dXJuIGlzSW50PDI1PihvZmZzZXQpOworICAgIH0KKwogcHJpdmF0
ZToKICAgICAvLyBWRlAgb3BlcmF0aW9ucyBjb21tb25seSB0YWtlIG9uZSBvciBtb3JlIDUtYml0
IG9wZXJhbmRzLCB0eXBpY2FsbHkgcmVwcmVzZW50aW5nIGEKLSAgICAvLyBmbG9hdGluZyBwb2lu
dCByZWdpc3RlciBudW1iZXIuICBUaGlzIHdpbGwgY29tbW9ubHkgYmUgZW5jb2RlZCBpbiB0aGUg
aW5zdHJ1Y3Rpb24KLSAgICAvLyBpbiB0d28gcGFydHMsIHdpdGggb25lIHNpbmdsZSBiaXQgZmll
bGQsIGFuZCBvbmUgNC1iaXQgZmllbGQuICBJbiB0aGUgY2FzZSBvZgorICAgIC8vIGZsb2F0aW5n
IHBvaW50IHJlZ2lzdGVyIG51bWJlci4gVGhpcyB3aWxsIGNvbW1vbmx5IGJlIGVuY29kZWQgaW4g
dGhlIGluc3RydWN0aW9uCisgICAgLy8gaW4gdHdvIHBhcnRzLCB3aXRoIG9uZSBzaW5nbGUgYml0
IGZpZWxkLCBhbmQgb25lIDQtYml0IGZpZWxkLiBJbiB0aGUgY2FzZSBvZgogICAgIC8vIGRvdWJs
ZSBwcmVjaXNpb24gb3BlcmFuZHMgdGhlIGhpZ2ggYml0IG9mIHRoZSByZWdpc3RlciBudW1iZXIg
d2lsbCBiZSBlbmNvZGVkCiAgICAgLy8gc2VwYXJhdGVseSwgYW5kIGZvciBzaW5nbGUgcHJlY2lz
aW9uIG9wZXJhbmRzIHRoZSBoaWdoIGJpdCBvZiB0aGUgcmVnaXN0ZXIgbnVtYmVyCiAgICAgLy8g
d2lsbCBiZSBlbmNvZGVkIGluZGl2aWR1YWxseS4KQEAgLTI2NTQsNiArMjcxMiwxMiBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gKChpbnN0cnVjdGlvblswXSAmIDB4ZjgwMCkgPT0gT1BfQl9U
NGEpICYmICgoaW5zdHJ1Y3Rpb25bMV0gJiAweGQwMDApID09IE9QX0JfVDRiKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgYm9vbCBpc0JMKGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBjb25zdCB1aW50MTZfdCogaW5zdHJ1Y3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KGFkZHJlc3MpOworICAgICAgICByZXR1cm4gKChpbnN0cnVjdGlvblswXSAmIDB4ZjgwMCkg
PT0gT1BfQkxfVDRhKSAmJiAoKGluc3RydWN0aW9uWzFdICYgMHhkMDAwKSA9PSBPUF9CTF9UNGIp
OworICAgIH0KKwogICAgIHN0YXRpYyBib29sIGlzQlgoY29uc3Qgdm9pZCogYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiA9IHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQxNl90Kj4oYWRkcmVzcyk7CkBAIC0yNzg3LDcgKzI4NTEsNyBAQCBwcml2YXRlOgog
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxDb3B5RnVuY3Rpb24gY29weSA9IHBlcmZvcm1KSVRN
ZW1jcHk+Ci0gICAgc3RhdGljIHZvaWQgbGlua0p1bXBUNCh1aW50MTZfdCogd3JpdGVUYXJnZXQs
IGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQorICAgIHN0YXRpYyB2
b2lkIGxpbmtKdW1wVDQodWludDE2X3QqIHdyaXRlVGFyZ2V0LCBjb25zdCB1aW50MTZfdCogaW5z
dHJ1Y3Rpb24sIHZvaWQqIHRhcmdldCwgQnJhbmNoV2l0aExpbmsgbGluaykKICAgICB7CiAgICAg
ICAgIC8vIEZJTVhFOiB0aGlzIHNob3VsZCBiZSB1cCBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIgbGF5
ZXIuIDotKCAgICAgICAgCiAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGluc3RydWN0aW9uKSAmIDEpKTsKQEAgLTI4MDMsNyArMjg2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIEFTU0VSVCghKHJlbGF0aXZlICYgMSkpOwogICAgICAgICB1aW50MTZfdCBpbnN0cnVj
dGlvbnNbMl07CiAgICAgICAgIGluc3RydWN0aW9uc1swXSA9IE9QX0JfVDRhIHwgKChyZWxhdGl2
ZSAmIDB4MTAwMDAwMCkgPj4gMTQpIHwgKChyZWxhdGl2ZSAmIDB4M2ZmMDAwKSA+PiAxMik7Ci0g
ICAgICAgIGluc3RydWN0aW9uc1sxXSA9IE9QX0JfVDRiIHwgKChyZWxhdGl2ZSAmIDB4ODAwMDAw
KSA+PiAxMCkgfCAoKHJlbGF0aXZlICYgMHg0MDAwMDApID4+IDExKSB8ICgocmVsYXRpdmUgJiAw
eGZmZSkgPj4gMSk7CisgICAgICAgIGluc3RydWN0aW9uc1sxXSA9IE9QX0JfVDRiIHwgKHN0YXRp
Y19jYXN0PHVpbnQxNl90PihsaW5rKSA8PCAxNCkgfCAoKHJlbGF0aXZlICYgMHg4MDAwMDApID4+
IDEwKSB8ICgocmVsYXRpdmUgJiAweDQwMDAwMCkgPj4gMTEpIHwgKChyZWxhdGl2ZSAmIDB4ZmZl
KSA+PiAxKTsKICAgICAgICAgY29weSh3cml0ZVRhcmdldCAtIDIsIGluc3RydWN0aW9ucywgMiAq
IHNpemVvZih1aW50MTZfdCkpOwogICAgIH0KIApAQCAtMjgxNiw3ICsyODgwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIHVpbnQxNl90IG5ld0luc3RydWN0aW9uID0gaWZUaGVuRWxz
ZShjb25kKSB8IE9QX0lUOwogICAgICAgICBjb3B5KHdyaXRlVGFyZ2V0IC0gMywgJm5ld0luc3Ry
dWN0aW9uLCBzaXplb2YodWludDE2X3QpKTsKLSAgICAgICAgbGlua0p1bXBUNDxjb3B5Pih3cml0
ZVRhcmdldCwgaW5zdHJ1Y3Rpb24sIHRhcmdldCk7CisgICAgICAgIGxpbmtKdW1wVDQ8Y29weT4o
d3JpdGVUYXJnZXQsIGluc3RydWN0aW9uLCB0YXJnZXQsIEJyYW5jaFdpdGhMaW5rOjpObyk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8Q29weUZ1bmN0aW9uIGNvcHkgPSBwZXJmb3JtSklUTWVtY3B5
PgpAQCAtMjg3Miw3ICsyOTM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGluc3RydWN0aW9u
c1sxXSA9IE9QX05PUF9UMmE7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbMl0gPSBPUF9OT1Bf
VDJiOwogICAgICAgICAgICAgcGVyZm9ybUpJVE1lbWNweSh3cml0ZVRhcmdldCAtIDUsIGluc3Ry
dWN0aW9ucywgMyAqIHNpemVvZih1aW50MTZfdCkpOwotICAgICAgICAgICAgbGlua0p1bXBUNCh3
cml0ZVRhcmdldCwgaW5zdHJ1Y3Rpb24sIHRhcmdldCk7CisgICAgICAgICAgICBsaW5rSnVtcFQ0
KHdyaXRlVGFyZ2V0LCBpbnN0cnVjdGlvbiwgdGFyZ2V0LCBCcmFuY2hXaXRoTGluazo6Tm8pOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgdWludDE2X3QgSlVNUF9URU1QT1JB
UllfUkVHSVNURVIgPSBBUk1SZWdpc3RlcnM6OmlwOwogICAgICAgICAgICAgQVJNVGh1bWJJbW1l
ZGlhdGUgbG8xNiA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KHN0YXRpY19jYXN0PHVp
bnQxNl90PihyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pih0YXJnZXQpICsgMSkpOwpAQCAtMjg4
Nyw3ICsyOTUxLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdy
aXRlVGFyZ2V0IC0gNSwgaW5zdHJ1Y3Rpb25zLCA1ICogc2l6ZW9mKHVpbnQxNl90KSk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWMgdm9pZCBsaW5rQnJhbmNoKHVpbnQxNl90
KiBmcm9tLCBjb25zdCB1aW50MTZfdCogZnJvbUluc3RydWN0aW9uLCB2b2lkKiB0bywgQnJhbmNo
V2l0aExpbmsgbGluaykKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0V2ZW4oZnJvbUluc3RydWN0
aW9uKSk7CisgICAgICAgIEFTU0VSVChpc0V2ZW4oZnJvbSkpOworICAgICAgICBBU1NFUlQoaXNF
dmVuKHRvKSk7CisgICAgICAgIEFTU0VSVChsaW5rID09IEJyYW5jaFdpdGhMaW5rOjpZZXMgPyBp
c0JMKGZyb20gLSAyKSA6IGlzQihmcm9tIC0gMikpOworCisgICAgICAgIGludHB0cl90IG9mZnNl
dCA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odG8pIC0gYml0d2lzZV9jYXN0PGludHB0cl90Pihm
cm9tSW5zdHJ1Y3Rpb24pOworI2lmIEVOQUJMRShKVU1QX0lTTEFORFMpCisgICAgICAgIGlmICgh
aXNJbnQ8MjU+KG9mZnNldCkpIHsKKyAgICAgICAgICAgIHRvID0gRXhlY3V0YWJsZUFsbG9jYXRv
cjo6c2luZ2xldG9uKCkuZ2V0SnVtcElzbGFuZFRvKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnJvbUlu
c3RydWN0aW9uKSwgdG8pOworICAgICAgICAgICAgb2Zmc2V0ID0gYml0d2lzZV9jYXN0PGludHB0
cl90Pih0bykgLSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGZyb21JbnN0cnVjdGlvbik7CisgICAg
ICAgIH0KKyNlbmRpZgorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0ludDwyNT4ob2Zmc2V0KSk7
CisKKyAgICAgICAgbGlua0p1bXBUNChmcm9tLCBmcm9tSW5zdHJ1Y3Rpb24sIHRvLCBsaW5rKTsK
KyAgICB9CisKICAgICBzdGF0aWMgdWludDE2X3QgdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVk
SW1tRmlyc3QodWludDE2X3Qgb3AsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBvcCB8IChpbW0ubV92YWx1ZS5pIDw8IDEwKSB8IGltbS5tX3ZhbHVlLmltbTQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCmluZGV4IDJhZjliYjkwNWFkZTMxOTBlNDZlNTZkYTYwMzI3MjQwMGEw
OGE1NGEuLjNiZDM2YWI2M2RlNDkwZTQ1NmYwMWIxN2QxYjM2MTc5MTM1YWFjYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC01NDUsOCArNTQ1LDggQEAgcHVibGljOgogICAgICAgICAgICAgTGlua2Fi
bGUgPSAweDEsCiAgICAgICAgICAgICBOZWFyID0gMHgyLAogICAgICAgICAgICAgVGFpbCA9IDB4
NCwKLSAgICAgICAgICAgIExpbmthYmxlTmVhciA9IDB4MywKLSAgICAgICAgICAgIExpbmthYmxl
TmVhclRhaWwgPSAweDcsCisgICAgICAgICAgICBMaW5rYWJsZU5lYXIgPSBMaW5rYWJsZSB8IE5l
YXIsCisgICAgICAgICAgICBMaW5rYWJsZU5lYXJUYWlsID0gTGlua2FibGUgfCBOZWFyIHwgVGFp
bCwKICAgICAgICAgfTsKIAogICAgICAgICBDYWxsKCkKQEAgLTkwNCw3ICs5MDQsMTEgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgc3dpdGNoIChuZWFyQ2FsbC5jYWxsTW9kZSgpKSB7CiAgICAg
ICAgIGNhc2UgTmVhckNhbGxNb2RlOjpUYWlsOgorI2lmIENQVShBUk0pCisgICAgICAgICAgICBB
c3NlbWJsZXJUeXBlOjpyZWxpbmtUYWlsQ2FsbChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVz
dGluYXRpb24udW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCiAgICAgICAgICAg
ICBBc3NlbWJsZXJUeXBlOjpyZWxpbmtKdW1wKG5lYXJDYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0
aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBOZWFyQ2FsbE1vZGU6OlJlZ3VsYXI6CiAgICAgICAgICAgICBBc3NlbWJsZXJU
eXBlOjpyZWxpbmtDYWxsKG5lYXJDYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi51bnRh
Z2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpOwpAQCAtOTI5LDEyICs5MzMsNiBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyB2b2lk
IHJlcGF0Y2hDb21wYWN0KENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Q8dGFnPiBkYXRhTGFi
ZWxDb21wYWN0LCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAgQXNzZW1ibGVyVHlwZTo6
cmVwYXRjaENvbXBhY3QoZGF0YUxhYmVsQ29tcGFjdC50ZW1wbGF0ZSBkYXRhTG9jYXRpb24oKSwg
dmFsdWUpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+CiAgICAgc3RhdGljIHZv
aWQgcmVwYXRjaEludDMyKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyPHRhZz4gZGF0YUxhYmVsMzIs
IGludDMyX3QgdmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgKaW5kZXggMmU1MGZmZGJjODJhOTE5ZjI5YjQ4MmI5MWMy
MDQ2N2NkZWMwOWI2My4uNjFlMzc5MTQzNmI3ZjIxOGFhMmNjNTYwOTcwODk3MzNiODQ2NzM2OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21t
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1v
bi5oCkBAIC00NSw2ICs0NSwxNCBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBib29sIGlzSU9T
KCkKICNlbmRpZgogfQogCit0ZW1wbGF0ZTxzaXplX3QgYml0cywgdHlwZW5hbWUgVHlwZT4KK0FM
V0FZU19JTkxJTkUgY29uc3RleHByIGJvb2wgaXNJbnQoVHlwZSB0KQoreworICAgIGNvbnN0ZXhw
ciBzaXplX3Qgc2hpZnQgPSBzaXplb2YoVHlwZSkgKiBDSEFSX0JJVCAtIGJpdHM7CisgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoVHlwZSkgKiBDSEFSX0JJVCA+IHNoaWZ0LCAic2hpZnQgaXMgbGFy
Z2VyIHRoYW4gdGhlIHNpemUgb2YgdGhlIHZhbHVlIik7CisgICAgcmV0dXJuICgodCA8PCBzaGlm
dCkgPj4gc2hpZnQpID09IHQ7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0ludDkoaW50MzJf
dCB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gKCh2YWx1ZSA8PCAyMykgPj4gMjMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAppbmRl
eCBiMDIyMzUxMTkyODE0YTIzZWNmNjI2NGJjNDk3NWEzODdlZDk2NWEyLi45MjAxZGFjMDQ4NDgx
YTI3ZGQ3NThmOWIwNmFmYWY3YWJjNTRkYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtODY3LDExICs4NjcsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHJl
cGF0Y2hDb21wYWN0KHZvaWQqIHdoZXJlLCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAg
cmVwYXRjaEludDMyKHdoZXJlLCB2YWx1ZSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHZvaWQgcmVw
YXRjaFBvaW50ZXIodm9pZCogZnJvbSwgdm9pZCogdG8pCiAgICAgewogICAgICAgICByZXBhdGNo
SW50MzIoZnJvbSwgcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Pih0bykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCA2MzM3NzNhZWVjOWQxYzk2N2ZhOThhNWFjYjJhMTI0NTJlYjI1MDdjLi5lOTY3ZjJjNzFmMmJl
NDYwZDdkOWNmMWIyMTI1ZmFlNjJmZjlkYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNDEsNyArNDEsOSBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBu
dW1HUFJzID0gMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gMzI7
Ci0gICAgCisKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBuZWFySnVtcFJhbmdlID0gMTI4
ICogTUI7CisKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjppcDA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IG1lbW9yeVRlbXBSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjppcDE7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5k
ZXggZmU3ZjJkNWM0ZjNmYjQxYzFkMzU1ZWU5NDRkZGQ1YTVhZTE0MDA4Yi4uNTBlYjljZjlkZjQ5
MWY2NDQyZDliOTNkZWI1YzFhMzJkOTY2NTE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM4LDYgKzM4LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgQXNzZW1ibGVyID0gVEFSR0VUX0FTU0VNQkxFUjsK
IAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlcj4geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG5l
YXJKdW1wUmFuZ2UgPSAxNiAqIE1COworCitwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
UmVnaXN0ZXJJRCBkYXRhVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjppcDsKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVy
czo6cjY7CiAKQEAgLTIyMzcsMTYgKzIyNDEsMTQgQEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lO
TElORSBDYWxsIG5lYXJDYWxsKCkKICAgICB7Ci0gICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2Rp
bmcoVHJ1c3RlZEltbTMyKDApLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgaW52YWxpZGF0
ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYmx4
KGRhdGFUZW1wUmVnaXN0ZXIpLCBDYWxsOjpMaW5rYWJsZU5lYXIpOworICAgICAgICByZXR1cm4g
Q2FsbChtX2Fzc2VtYmxlci5ibCgpLCBDYWxsOjpMaW5rYWJsZU5lYXIpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgQ2FsbCBuZWFyVGFpbENhbGwoKQogICAgIHsKLSAgICAgICAgbW92ZUZp
eGVkV2lkdGhFbmNvZGluZyhUcnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
ICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICByZXR1cm4gQ2FsbCht
X2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGVOZWFyVGFpbCk7
CisgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmIoKSwgQ2FsbDo6TGlua2FibGVOZWFy
VGFpbCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUHRyVGFnKQpAQCAt
MjY1NCwxMCArMjY1NiwxMiBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+CiAg
ICAgc3RhdGljIHZvaWQgbGlua0NhbGwodm9pZCogY29kZSwgQ2FsbCBjYWxsLCBGdW5jdGlvblB0
cjx0YWc+IGZ1bmN0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKGNhbGwuaXNGbGFnU2V0KENhbGw6
OlRhaWwpKQotICAgICAgICAgICAgQVJNdjdBc3NlbWJsZXI6OmxpbmtKdW1wKGNvZGUsIGNhbGwu
bV9sYWJlbCwgZnVuY3Rpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIGlmICghY2Fs
bC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpCisgICAgICAgICAgICBBc3NlbWJsZXI6OmxpbmtQb2lu
dGVyKGNvZGUsIGNhbGwubV9sYWJlbC5sYWJlbEF0T2Zmc2V0KC0yKSwgZnVuY3Rpb24uZXhlY3V0
YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIGVsc2UgaWYgKGNhbGwuaXNGbGFnU2V0KENhbGw6OlRh
aWwpKQorICAgICAgICAgICAgQXNzZW1ibGVyOjpsaW5rVGFpbENhbGwoY29kZSwgY2FsbC5tX2xh
YmVsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgQVJNdjdBc3NlbWJsZXI6OmxpbmtDYWxsKGNvZGUsIGNhbGwubV9sYWJlbCwgZnVuY3Rp
b24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICBBc3NlbWJsZXI6OmxpbmtDYWxs
KGNvZGUsIGNhbGwubV9sYWJlbCwgZnVuY3Rpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAg
fQogCiAgICAgYm9vbCBtX21ha2VKdW1wUGF0Y2hhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggOTRlYjYyZjRh
MTIxYTYxNDUzMjM2OTEzYWM5ZDNjYjM5NGFkYjBkMi4uZWQ3N2QyOTk2NTRjYjM3OWFiNDg3YmI3
OWY3Y2I0MDBhMTgxMWQzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSAzMjsKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG51bUZQUnMgPSAzMjsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IG5lYXJKdW1wUmFuZ2UgPSAyICogR0I7CisKICAgICBNYWNyb0Fzc2VtYmxlck1JUFMoKQog
ICAgICAgICA6IG1fZml4ZWRXaWR0aChmYWxzZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAppbmRleCAz
NjQ2ODZkZmY2ODk5NGRlYWEwNGU5NTY2MzZhZDYyZjAyZWMxMTU1Li41NmQ0ZWNiZWNjOTBjNzY4
ODEyNzY0MmQ0NzEyZjM3OGU0NTBhZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmgKQEAgLTQ0LDYgKzQ0LDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtR1BScyA9IDMyOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IDMyOwogCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgbmVhckp1bXBSYW5nZSA9IDIgKiBHQjsKKwogICAgIHN0YXRpYyBj
b25zdGV4cHIgUmVnaXN0ZXJJRCBkYXRhVGVtcFJlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6
eDMwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBtZW1vcnlUZW1wUmVnaXN0ZXIg
PSBSSVNDVjY0UmVnaXN0ZXJzOjp4MzE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAzMGNjNGU0
YmNhZmZmZGI5NGNmZjgwNDZjMDUxZTFmMmU5ODg3MGQ5Li5mZTE3NTY3YmQ3OWJhMjg0YjVjMDA4
ZWM4YjlkZTA4OWNjMzlhMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0zNyw2ICszNyw4IEBA
IHVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7CiAKIGNsYXNzIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbmVhckp1bXBSYW5nZSA9IDIg
KiBHQjsKKwogI2lmIENQVShYODZfNjQpCiAgICAgLy8gVXNlIHRoaXMgZGlyZWN0bHkgb25seSBp
ZiB5b3UncmUgbm90IGdlbmVyYXRpbmcgY29kZSB3aXRoIGl0LgogICAgIHN0YXRpYyBjb25zdGV4
cHIgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHNfc2NyYXRjaFJlZ2lzdGVyID0gWDg2UmVnaXN0
ZXJzOjpyMTE7CkBAIC0xMjM1LDEzICsxMjM3LDYgQEAgcHVibGljOgogICAgICAgICBsb2FkMTYo
YWRkcmVzcywgZGVzdCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KLSAgICBz
dGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdChDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0PHRh
Zz4gZGF0YUxhYmVsQ29tcGFjdCwgaW50MzJfdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpc0NvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldCh2YWx1ZSkpOwotICAgICAgICBBc3Nl
bWJsZXJUeXBlX1Q6OnJlcGF0Y2hDb21wYWN0KGRhdGFMYWJlbENvbXBhY3QuZGF0YUxvY2F0aW9u
KCksIHZhbHVlKTsKLSAgICB9Ci0gICAgCiAgICAgRGF0YUxhYmVsQ29tcGFjdCBsb2FkQ29tcGFj
dFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYTQwZWM3ZGExYWI3NGEwODA2ZDk0
YjZhNzBjOWViOWZlYmNlODRiZC4uZDIxN2U0ZmNjZmJjMDgyYTFjM2I3OWUwNzI2MGIxMjI0MmQz
NmNhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCkBAIC0zNzk5LDEzICszNzk5LDYgQEAgcHVibGljOgogICAgICAgICBzZXRSZWwzMihmcm9t
LCB0byk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0KHZvaWQq
IHdoZXJlLCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVlID49IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50OF90Pjo6bWluKCkpOwotICAgICAgICBBU1NFUlQodmFsdWUg
PD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ4X3Q+OjptYXgoKSk7Ci0gICAgICAgIHNldEludDgo
d2hlcmUsIHZhbHVlKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBhdGNoSW50MzIodm9p
ZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBzZXRJbnQzMih3aGVyZSwg
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0
Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCmluZGV4
IGFiNmM5MjQwNjViZWE5OTg3NGU2YzdkZDQ3MmRiYjE5MWU4MDhjZGYuLjQ4MTM3NGM4NmFhMGQx
YjFiMTE1Yzg1ZTM3ZjZjZmZmN2FiOTVlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTE4ODEsMTcgKzE4ODEsOCBAQCB2b2lkIGxpbmtQb2x5bW9y
cGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENhbAogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsQ2FzZXMuc2l6ZSgp
ID09IGNhbGxzLnNpemUoKSk7Ci0gICAgZm9yIChDYWxsVG9Db2RlUHRyIGNhbGxUb0NvZGVQdHIg
OiBjYWxscykgewotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAgICAvLyBUYWlsIGNhbGwgc3Bl
Y2lhbC1jYXNpbmcgZW5zdXJlcyBwcm9wZXIgbGlua2luZyBvbiBBUk0gVGh1bWIyLCB3aGVyZSBh
IHRhaWwgY2FsbCBqdW1wcyB0byBhbiBhZGRyZXNzCi0gICAgICAgIC8vIHdpdGggYSBub24tZGVj
b3JhdGVkIGJvdHRvbSBiaXQgYnV0IGEgbm9ybWFsIGNhbGwgY2FsbHMgYW4gYWRkcmVzcyB3aXRo
IGEgZGVjb3JhdGVkIGJvdHRvbSBiaXQuCi0gICAgICAgIGJvb2wgaXNUYWlsQ2FsbCA9IGNhbGxU
b0NvZGVQdHIuY2FsbC5pc0ZsYWdTZXQoQ0NhbGxIZWxwZXJzOjpDYWxsOjpUYWlsKTsKLSAgICAg
ICAgdm9pZCogdGFyZ2V0ID0gaXNUYWlsQ2FsbCA/IGNhbGxUb0NvZGVQdHIuY29kZVB0ci5kYXRh
TG9jYXRpb24oKSA6IGNhbGxUb0NvZGVQdHIuY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpOwot
ICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVuY3Rpb25QdHI8
SlNFbnRyeVB0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+OjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3ModGFyZ2V0KSkpOwotI2Vsc2UKKyAgICBmb3IgKENhbGxU
b0NvZGVQdHIgY2FsbFRvQ29kZVB0ciA6IGNhbGxzKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4oY2FsbFRvQ29k
ZVB0ci5jb2RlUHRyKSk7Ci0jZW5kaWYKLSAgICB9CiAKICAgICBpZiAoIWRvbmUuZW1wdHkoKSkg
ewogICAgICAgICBBU1NFUlQoIWlzRGF0YUlDKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGExNzMxNWNjNjg0OTk2YTA1YzVh
NWJhNjE1NjQ0MWU4YTliZWQ4NWUuLmJlZTc4NThiMDYyMTIzNWY0N2QxZTUyMTAwN2U4ODM2MGEz
NzMwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNp
bmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdGlvblN0
YXR1cy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlUmVzZXJ2YXRpb24uaD4KICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CkBAIC05NCwyMiArOTUsMzYgQEAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
Zml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSBGSVhFRF9FWEVDVVRBQkxFX01FTU9SWV8K
ICNlbGlmIENQVShBUk02NCkKICNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQogc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSA1MTIgKiBNQjsKLS8v
IFRoZXNlIHNpemVzIGd1YXJhbnRlZSB0aGF0IGFueSBqdW1wIHdpdGhpbiBhbiBpc2xhbmQgY2Fu
IGp1bXAgZm9yd2FyZHMgb3IgYmFja3dhcmRzCi0vLyB0byB0aGUgYWRqYWNlbnQgaXNsYW5kIGlu
IGEgc2luZ2xlIGluc3RydWN0aW9uLgotc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVnaW9uU2l6
ZSA9IDExMiAqIE1COwotc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaXNsYW5kUmVnaW9uU2l6ZSA9
IDE2ICogTUI7Ci1zdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhOdW1iZXJPZlJlZ2lvbnMgPSBm
aXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSAvIHJlZ2lvblNpemU7Ci1zdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBpc2xhbmRTaXplSW5CeXRlcyA9IDQ7Ci1zdGF0aWMgY29uc3RleHByIHNpemVf
dCBtYXhJc2xhbmRzUGVyUmVnaW9uID0gaXNsYW5kUmVnaW9uU2l6ZSAvIGlzbGFuZFNpemVJbkJ5
dGVzOwogI2Vsc2UKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1lbW9y
eVBvb2xTaXplID0gMTI4ICogTUI7CiAjZW5kaWYKKyNlbGlmIENQVShBUk0pCisjaWYgRU5BQkxF
KEpVTVBfSVNMQU5EUykKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1l
bW9yeVBvb2xTaXplID0gMzIgKiBNQjsKKyNlbHNlCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBm
aXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDE2ICogTUI7CisjZW5kaWYKICNlbGlmIENQ
VShYODZfNjQpCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQ
b29sU2l6ZSA9IDEgKiBHQjsKICNlbHNlCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmaXhlZEV4
ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDMyICogTUI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShK
VU1QX0lTTEFORFMpCisjaWYgQ1BVKEFSTTY0KQorc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgaXNs
YW5kUmVnaW9uU2l6ZUZyYWN0aW9uID0gMC4xMjU7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBp
c2xhbmRTaXplSW5CeXRlcyA9IDQ7CisjZWxpZiBDUFUoQVJNKQorc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUgaXNsYW5kUmVnaW9uU2l6ZUZyYWN0aW9uID0gMC4wNTsKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGlzbGFuZFNpemVJbkJ5dGVzID0gNDsKKyNlbmRpZgorI2VuZGlmCisKKy8vIFF1aWNr
IHNhbml0eSBjaGVjaywgaW4gY2FzZSBGSVhFRF9FWEVDVVRBQkxFX01FTU9SWV9QT09MX1NJWkVf
SU5fTUIgd2FzIHNldC4KKyNpZiAhRU5BQkxFKEpVTVBfSVNMQU5EUykKK3N0YXRpY19hc3NlcnQo
Zml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPD0gTWFjcm9Bc3NlbWJsZXI6Om5lYXJKdW1w
UmFuZ2UsICJFeGVjdXRhYmxlIHBvb2wgc2l6ZSBpcyB0b28gbGFyZ2UgZm9yIG5lYXIganVtcC9j
YWxsIHdpdGhvdXQgSlVNUF9JU0xBTkRTIik7CisjZW5kaWYKKwogI2lmIENQVShBUk0pCiBzdGF0
aWMgY29uc3RleHByIGRvdWJsZSBleGVjdXRhYmxlUG9vbFJlc2VydmF0aW9uRnJhY3Rpb24gPSAw
LjE1OwogI2Vsc2UKQEAgLTM0MywyMCArMzU4LDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpJ
VFJlc2VydmF0aW9uIGluaXRpYWxpemVKSVRQYWdlUmVzZXJ2YXRpb24oKQogICAgICAgICBpZiAo
cmVzZXJ2YXRpb24uc2l6ZSAqIGV4ZWN1dGFibGVQb29sUmVzZXJ2YXRpb25GcmFjdGlvbiA8IG1p
bmltdW1FeGVjdXRhYmxlUG9vbFJlc2VydmF0aW9uU2l6ZSkKICAgICAgICAgICAgIHJlc2VydmF0
aW9uLnNpemUgKz0gbWluaW11bUV4ZWN1dGFibGVQb29sUmVzZXJ2YXRpb25TaXplOwogI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQotICAgICAgICAvLyBJZiBhc2tlZCBmb3IgYSBy
ZXNlcnZhdGlvbiBzbWFsbGVyIHRoYW4gaXNsYW5kIHNpemUsIGFzc3VtZSB0aGF0IHdlIHdhbnQg
dGhhdCBzaXplIGFsbG9jYXRpb24KLSAgICAgICAgLy8gcGx1cyBhbiBpc2xhbmQuIFRoZSBhbHRl
cm5hdGl2ZSB3b3VsZCBiZSB0byB0dXJuIG9mZiBqdW1wIGlzbGFuZHMsIGJ1dCBzaW5jZSB3ZSBv
bmx5IHVzZQotICAgICAgICAvLyB0aGlzIGZvciB0ZXN0aW5nLCB0aGlzIGlzIHByb2JhYmx5IHRo
ZSBlYXNpZXIgd2F5IHRvIGRvIGl0LgotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgbWFpbiBy
ZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBzb21lIEpTQyBzdHJlc3MgdGVzdHMgcnVuIHdpdGggYSA1
MEtCIHBvb2wuIFRoaXMgaGFjayBtZWFucwotICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRvIGNo
YW5nZSBhbnl0aGluZyBhYm91dCB0aG9zZSB0ZXN0cy4KLSAgICAgICAgaWYgKHJlc2VydmF0aW9u
LnNpemUgPCBpc2xhbmRSZWdpb25TaXplKQotICAgICAgICAgICAgcmVzZXJ2YXRpb24uc2l6ZSAr
PSBpc2xhbmRSZWdpb25TaXplOwotI2VuZGlmIC8vIEVOQUJMRShKVU1QX0lTTEFORFMpCiAgICAg
fQogICAgIHJlc2VydmF0aW9uLnNpemUgPSBzdGQ6Om1heChyb3VuZFVwVG9NdWx0aXBsZU9mKHBh
Z2VTaXplKCksIHJlc2VydmF0aW9uLnNpemUpLCBwYWdlU2l6ZSgpICogMik7CiAKKyNpZiAhRU5B
QkxFKEpVTVBfSVNMQU5EUykKKyAgICBSRUxFQVNFX0FTU0VSVChyZXNlcnZhdGlvbi5zaXplIDw9
IE1hY3JvQXNzZW1ibGVyOjpuZWFySnVtcFJhbmdlLCAiRXhlY3V0YWJsZSBwb29sIHNpemUgaXMg
dG9vIGxhcmdlIGZvciBuZWFyIGp1bXAvY2FsbCB3aXRob3V0IEpVTVBfSVNMQU5EUyIpOworI2Vu
ZGlmCisKICNpZiBVU0UoTElCUEFTX0pJVF9IRUFQKQogICAgIGlmIChyZXNlcnZhdGlvbi5zaXpl
IDwgbWluaW11bVBvb2xTaXplRm9yU2VncmVnYXRlZEhlYXApCiAgICAgICAgIGppdF9oZWFwX3J1
bnRpbWVfY29uZmlnLm1heF9zZWdyZWdhdGVkX29iamVjdF9zaXplID0gMDsKQEAgLTQzMCwxMCAr
NDM4LDcgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yIGZpbmFsIHsKIAog
cHVibGljOgogICAgIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcigpCi0jaWYgRU5BQkxF
KEpVTVBfSVNMQU5EUykKLSAgICAgICAgOiBtX2FsbG9jYXRvcnMoY29uc3RydWN0Rml4ZWRTaXpl
QXJyYXlXaXRoQXJndW1lbnRzPFJlZ2lvbkFsbG9jYXRvciwgbWF4TnVtYmVyT2ZSZWdpb25zPigq
dGhpcykpCi0gICAgICAgICwgbV9udW1BbGxvY2F0b3JzKG1heE51bWJlck9mUmVnaW9ucykKLSNl
bHNlCisjaWYgIUVOQUJMRShKVU1QX0lTTEFORFMpCiAgICAgICAgIDogbV9hbGxvY2F0b3IoKnRo
aXMpCiAjZW5kaWYKICAgICB7CkBAIC00NDEsMzEgKzQ0NiwyOCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fcmVzZXJ2YXRpb24gPSBXVEZNb3ZlKHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbik7CiAg
ICAgICAgIGlmIChtX3Jlc2VydmF0aW9uKSB7CiAjaWYgRU5BQkxFKEpVTVBfSVNMQU5EUykKKyAg
ICAgICAgICAgIC8vIFRoZXNlIHNpemVzIGd1YXJhbnRlZSB0aGF0IGFueSBqdW1wIHdpdGhpbiBh
biBpc2xhbmQgY2FuIGp1bXAgZm9yd2FyZHMgb3IgYmFja3dhcmRzCisgICAgICAgICAgICAvLyB0
byB0aGUgYWRqYWNlbnQgaXNsYW5kIGluIGEgc2luZ2xlIGluc3RydWN0aW9uLgorICAgICAgICAg
ICAgY29uc3Qgc2l6ZV90IGlzbGFuZFJlZ2lvblNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mKHBh
Z2VTaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4oTWFjcm9Bc3NlbWJsZXI6Om5lYXJKdW1wUmFu
Z2UgKiBpc2xhbmRSZWdpb25TaXplRnJhY3Rpb24pKTsKKyAgICAgICAgICAgIG1fcmVnaW9uU2l6
ZSA9IE1hY3JvQXNzZW1ibGVyOjpuZWFySnVtcFJhbmdlIC0gaXNsYW5kUmVnaW9uU2l6ZTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzUGFnZUFsaWduZWQoaXNsYW5kUmVnaW9uU2l6ZSkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNQYWdlQWxpZ25lZChtX3JlZ2lvblNpemUp
KTsKKyAgICAgICAgICAgIG1fbnVtQWxsb2NhdG9ycyA9IChyZXNlcnZhdGlvbi5zaXplICsgbV9y
ZWdpb25TaXplIC0gMSkgLyBtX3JlZ2lvblNpemU7CisgICAgICAgICAgICBtX2FsbG9jYXRvcnMg
PSBGaXhlZFZlY3RvcjxSZWdpb25BbGxvY2F0b3I+IHsgbV9udW1BbGxvY2F0b3JzLCAqdGhpcyB9
OworCiAgICAgICAgICAgICB1aW50cHRyX3Qgc3RhcnQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihtZW1vcnlTdGFydCgpKTsKICAgICAgICAgICAgIHVpbnRwdHJfdCByZXNlcnZhdGlvbkVuZCA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG1lbW9yeUVuZCgpKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtYmVyT2ZSZWdpb25zOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzdGFydCA8IHJlc2VydmF0aW9uRW5kIHx8IE9wdGlvbnM6Ompp
dE1lbW9yeVJlc2VydmF0aW9uU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0g
cmVzZXJ2YXRpb25FbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9udW1BbGxvY2F0b3JzID0g
aTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIG1fYWxsb2NhdG9yc1tpXS5tX3N0YXJ0ID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxl
TWVtb3J5UHRyVGFnPihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXJ0KSk7Ci0gICAgICAgICAgICAg
ICAgbV9hbGxvY2F0b3JzW2ldLm1fZW5kID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRy
VGFnPihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXJ0ICsgcmVnaW9uU2l6ZSkpOwotICAgICAgICAg
ICAgICAgIGlmIChtX2FsbG9jYXRvcnNbaV0uZW5kKCkgPiByZXNlcnZhdGlvbkVuZCkgewotICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSB0YWtlbiBhIHBhZ2UgZm9yIHRoZSBleGVj
dXRhYmxlIG9ubHkgY29weSB0aHVuay4KLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaSA9PSBtYXhOdW1iZXJPZlJlZ2lvbnMgLSAxIHx8IE9wdGlvbnM6OmppdE1lbW9yeVJlc2Vy
dmF0aW9uU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9hbGxvY2F0b3JzW2ldLm1fZW5k
ID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHJlc2VydmF0aW9uRW5kKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzID0gbV9hbGxvY2F0b3JzW2ldLmFsbG9jYXRvclNpemUoKTsKLSAg
ICAgICAgICAgICAgICBtX2FsbG9jYXRvcnNbaV0uYWRkRnJlc2hGcmVlU3BhY2UoYml0d2lzZV9j
YXN0PHZvaWQqPihtX2FsbG9jYXRvcnNbaV0uc3RhcnQoKSksIHNpemVJbkJ5dGVzKTsKLSAgICAg
ICAgICAgICAgICBtX2J5dGVzUmVzZXJ2ZWQgKz0gc2l6ZUluQnl0ZXM7Ci0KLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX2FsbG9jYXRvcnNbaV0uYWxsb2NhdG9yU2l6ZSgpIDwgcmVn
aW9uU2l6ZSk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hbGxvY2F0b3JzW2ld
LmlzbGFuZEJlZ2luKCkgPiBtX2FsbG9jYXRvcnNbaV0uc3RhcnQoKSk7Ci0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9hbGxvY2F0b3JzW2ldLmlzbGFuZEJlZ2luKCkgPCBtX2FsbG9j
YXRvcnNbaV0uZW5kKCkpOwotCi0gICAgICAgICAgICAgICAgc3RhcnQgKz0gcmVnaW9uU2l6ZTsK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1BbGxvY2F0b3JzOyArK2kp
IHsKKyAgICAgICAgICAgICAgICB1aW50cHRyX3QgZW5kID0gc3RhcnQgKyBtX3JlZ2lvblNpemU7
CisgICAgICAgICAgICAgICAgdWludHB0cl90IGlzbGFuZEJlZ2luID0gZW5kIC0gaXNsYW5kUmVn
aW9uU2l6ZTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgaXNsYW5kIGluIHRoZSB2ZXJ5IGxhc3Qg
cmVnaW9uIGlzIG5ldmVyIGFjdHVhbGx5IHVzZWQgKGV2ZXJ5dGhpbmcgZ29lcyBiYWNrd2FyZHMp
LCBidXQgd2UKKyAgICAgICAgICAgICAgICAvLyBjYW4ndCBwdXQgY29kZSB0aGVyZSBpbiBjYXNl
IHRoZXkgZG8gbmVlZCB0byB1c2UgYSBiYWNrd2FyZCBqdW1wIGlzbGFuZCwgc28gc2V0IHVwIGFj
Y29yZGluZ2x5LgorICAgICAgICAgICAgICAgIGlmIChpID09IG1fbnVtQWxsb2NhdG9ycyAtIDEp
CisgICAgICAgICAgICAgICAgICAgIGlzbGFuZEJlZ2luID0gZW5kID0gc3RkOjptaW4oaXNsYW5k
QmVnaW4sIHJlc2VydmF0aW9uRW5kKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChl
bmQgPD0gcmVzZXJ2YXRpb25FbmQpOworICAgICAgICAgICAgICAgIG1fYWxsb2NhdG9yc1tpXS5j
b25maWd1cmUoc3RhcnQsIGlzbGFuZEJlZ2luLCBlbmQpOworICAgICAgICAgICAgICAgIG1fYnl0
ZXNSZXNlcnZlZCArPSBtX2FsbG9jYXRvcnNbaV0uYWxsb2NhdG9yU2l6ZSgpOworICAgICAgICAg
ICAgICAgIHN0YXJ0ICs9IG1fcmVnaW9uU2l6ZTsKICAgICAgICAgICAgIH0KICNlbHNlCiAgICAg
ICAgICAgICBtX2FsbG9jYXRvci5hZGRGcmVzaEZyZWVTcGFjZShyZXNlcnZhdGlvbi5iYXNlLCBy
ZXNlcnZhdGlvbi5zaXplKTsKQEAgLTcwMCw3ICs3MDIsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgbV9pc2xhbmRzRm9ySnVtcFNvdXJjZUxvY2F0aW9uLmluc2VydChpc2xhbmRzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFJlZ2lvbkFsbG9jYXRvciogYWxsb2NhdG9yID0gZmluZFJlZ2lvbihq
dW1wTG9jYXRpb24gPiB0YXJnZXQgPyBqdW1wTG9jYXRpb24gLSByZWdpb25TaXplIDoganVtcExv
Y2F0aW9uKTsKKyAgICAgICAgUmVnaW9uQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBmaW5kUmVnaW9u
KGp1bXBMb2NhdGlvbiA+IHRhcmdldCA/IGp1bXBMb2NhdGlvbiAtIG1fcmVnaW9uU2l6ZSA6IGp1
bXBMb2NhdGlvbik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFsbG9jYXRvcik7CiAgICAgICAg
IHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+YWxsb2NhdGVJc2xhbmQoKTsKICAgICAgICAgdm9p
ZCogY3VycmVudElzbGFuZCA9IHJlc3VsdDsKQEAgLTcwOSwxMCArNzExLDEwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBpc2xhbmRzLT5qdW1wSXNsYW5kcy5hcHBlbmQoQ29kZUxvY2F0aW9uTGFi
ZWw8RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4odGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRy
VGFnPihjdXJyZW50SXNsYW5kKSkpOwogCiAgICAgICAgICAgICBhdXRvIGVtaXRKdW1wVG8gPSBb
Jl0gKHZvaWQqIHRhcmdldCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFSTTY0
QXNzZW1ibGVyOjpjYW5FbWl0SnVtcChiaXR3aXNlX2Nhc3Q8dm9pZCo+KGp1bXBMb2NhdGlvbiks
IHRhcmdldCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFzc2VtYmxlcjo6Y2Fu
RW1pdEp1bXAoYml0d2lzZV9jYXN0PHZvaWQqPihqdW1wTG9jYXRpb24pLCB0YXJnZXQpKTsKIAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyIGppdDsKLSAgICAgICAgICAgICAgICBhdXRv
IGp1bXAgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5uZWFy
VGFpbENhbGwoKTsKICAgICAgICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+KGN1cnJlbnRJc2xhbmQpLCBpc2xhbmRTaXpl
SW5CeXRlcywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SnVtcElzbGFuZCwgSklUQ29tcGlsYXRpb25N
dXN0U3VjY2VlZCwgZmFsc2UpOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtC
dWZmZXIuaXNWYWxpZCgpKTsKIApAQCAtNzI4LDE2ICs3MzAsMTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSnVtcCBJc2xh
bmQ6ICVsdSIsIGp1bXBMb2NhdGlvbik7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBp
ZiAoQVJNNjRBc3NlbWJsZXI6OmNhbkVtaXRKdW1wKGJpdHdpc2VfY2FzdDx2b2lkKj4oanVtcExv
Y2F0aW9uKSwgYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSkgeworICAgICAgICAgICAgaWYg
KEFzc2VtYmxlcjo6Y2FuRW1pdEp1bXAoYml0d2lzZV9jYXN0PHZvaWQqPihqdW1wTG9jYXRpb24p
LCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpKSB7CiAgICAgICAgICAgICAgICAgZW1pdEp1
bXBUbyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB1aW50cHRyX3QgbmV4dElzbGFuZFJlZ2lv
bjsKICAgICAgICAgICAgIGlmIChqdW1wTG9jYXRpb24gPiB0YXJnZXQpCi0gICAgICAgICAgICAg
ICAgbmV4dElzbGFuZFJlZ2lvbiA9IGp1bXBMb2NhdGlvbiAtIHJlZ2lvblNpemU7CisgICAgICAg
ICAgICAgICAgbmV4dElzbGFuZFJlZ2lvbiA9IGp1bXBMb2NhdGlvbiAtIG1fcmVnaW9uU2l6ZTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuZXh0SXNsYW5kUmVnaW9uID0ganVt
cExvY2F0aW9uICsgcmVnaW9uU2l6ZTsKKyAgICAgICAgICAgICAgICBuZXh0SXNsYW5kUmVnaW9u
ID0ganVtcExvY2F0aW9uICsgbV9yZWdpb25TaXplOwogCiAgICAgICAgICAgICBSZWdpb25BbGxv
Y2F0b3IqIGFsbG9jYXRvciA9IGZpbmRSZWdpb24obmV4dElzbGFuZFJlZ2lvbik7CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChhbGxvY2F0b3IpOwpAQCAtODIxLDYgKzgyMywxOSBAQCBwcml2
YXRlOgogICAgICAgICBSZWdpb25BbGxvY2F0b3IoRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2Nh
dG9yJiBhbGxvY2F0b3IpCiAgICAgICAgICAgICA6IEJhc2UoYWxsb2NhdG9yKQogICAgICAgICB7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHBhZ2VTaXplKCkgJSBpc2xhbmRTaXplSW5C
eXRlcyksICJDdXJyZW50IGltcGxlbWVudGF0aW9uIHJlbGllcyBvbiB0aGlzIik7CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGNvbmZpZ3VyZSh1aW50cHRyX3Qgc3RhcnQsIHVpbnRwdHJfdCBp
c2xhbmRCZWdpbiwgdWludHB0cl90IGVuZCkKKyAgICAgICAgeworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc3RhcnQgPCBpc2xhbmRCZWdpbik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc2xhbmRCZWdpbiA8PSBlbmQpOworICAgICAgICAgICAgbV9zdGFydCA9IHRhZ0NvZGVQdHI8
RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4oYml0d2lzZV9jYXN0PHZvaWQqPihzdGFydCkpOworICAg
ICAgICAgICAgbV9pc2xhbmRCZWdpbiA9IHRhZ0NvZGVQdHI8RXhlY3V0YWJsZU1lbW9yeVB0clRh
Zz4oYml0d2lzZV9jYXN0PHZvaWQqPihpc2xhbmRCZWdpbikpOworICAgICAgICAgICAgbV9lbmQg
PSB0YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KGJpdHdpc2VfY2FzdDx2b2lkKj4o
ZW5kKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKCh0aGlzLT5lbmQoKSAtIHRoaXMt
PnN0YXJ0KCkpICUgcGFnZVNpemUoKSkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISgo
dGhpcy0+ZW5kKCkgLSB0aGlzLT5pc2xhbmRCZWdpbigpKSAlIHBhZ2VTaXplKCkpKTsKKyAgICAg
ICAgICAgIGFkZEZyZXNoRnJlZVNwYWNlKGJpdHdpc2VfY2FzdDx2b2lkKj4odGhpcy0+c3RhcnQo
KSksIGFsbG9jYXRvclNpemUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MjgsMTMgKzg0MywxMCBAQCBwcml2YXRl
OgogICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAg
ICAgICAgIHVpbnRwdHJfdCBzdGFydCgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHVudGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihtX3N0YXJ0KSk7IH0KKyAgICAg
ICAgdWludHB0cl90IGlzbGFuZEJlZ2luKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4odW50YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KG1faXNsYW5kQmVnaW4pKTsg
fQogICAgICAgICB1aW50cHRyX3QgZW5kKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4odW50YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KG1fZW5kKSk7IH0KIAotICAg
ICAgICB1aW50cHRyX3QgaXNsYW5kQmVnaW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBb
c3RhcnQsIGFsbG9jYXRvckVuZCkKLSAgICAgICAgICAgIHJldHVybiBlbmQoKSAtIGlzbGFuZFJl
Z2lvblNpemU7Ci0gICAgICAgIH0KKyAgICAgICAgc2l6ZV90IG1heElzbGFuZHNJblRoaXNSZWdp
b24oKSB7IHJldHVybiAoZW5kKCkgLSBpc2xhbmRCZWdpbigpKSAvIGlzbGFuZFNpemVJbkJ5dGVz
OyB9CiAKICAgICAgICAgdWludHB0cl90IGFsbG9jYXRvclNpemUoKQogICAgICAgICB7CkBAIC04
NzIsMTIgKzg4NCwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9
IGZpbmRSZXN1bHQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgICAg
ICAgICBpc2xhbmRCaXRzLnJlc2l6ZShpc2xhbmRCaXRzLnNpemUoKSArIGlzbGFuZHNQZXJQYWdl
KCkpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzbGFuZEJpdHMuc2l6ZSgpID4gbWF4SXNs
YW5kc1BlclJlZ2lvbikpCisgICAgICAgICAgICBjb25zdCBzaXplX3Qgb2xkU2l6ZSA9IGlzbGFu
ZEJpdHMuc2l6ZSgpOworICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG1heElzbGFuZHNJblRoaXNS
ZWdpb24gPSB0aGlzLT5tYXhJc2xhbmRzSW5UaGlzUmVnaW9uKCk7CisKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG9sZFNpemUgPD0gbWF4SXNsYW5kc0luVGhpc1JlZ2lvbik7CisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkob2xkU2l6ZSA9PSBtYXhJc2xhbmRzSW5UaGlzUmVnaW9uKSkKICAg
ICAgICAgICAgICAgICBjcmFzaE9uSnVtcElzbGFuZEV4aGF1c3Rpb24oKTsKIAotICAgICAgICAg
ICAgdWludHB0cl90IHBhZ2VCZWdpbiA9IGVuZCAtIChpc2xhbmRCaXRzLnNpemUoKSAqIGlzbGFu
ZFNpemVJbkJ5dGVzKTsgLy8gW2lzbGFuZEJlZ2luLCBlbmQpCi0gICAgICAgICAgICBtX2ZpeGVk
QWxsb2NhdG9yLm1fcmVzZXJ2YXRpb24uY29tbWl0KGJpdHdpc2VfY2FzdDx2b2lkKj4ocGFnZUJl
Z2luKSwgcGFnZVNpemUoKSk7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgbmV3U2l6ZSA9IHN0
ZDo6bWluKG9sZFNpemUgKyBpc2xhbmRzUGVyUGFnZSgpLCBtYXhJc2xhbmRzSW5UaGlzUmVnaW9u
KTsKKyAgICAgICAgICAgIGlzbGFuZEJpdHMucmVzaXplKG5ld1NpemUpOworCisgICAgICAgICAg
ICB1aW50cHRyX3QgaXNsYW5kc0JlZ2luID0gZW5kIC0gKG5ld1NpemUgKiBpc2xhbmRTaXplSW5C
eXRlcyk7IC8vIFtpc2xhbmRzQmVnaW4sIGVuZCkKKyAgICAgICAgICAgIG1fZml4ZWRBbGxvY2F0
b3IubV9yZXNlcnZhdGlvbi5jb21taXQoYml0d2lzZV9jYXN0PHZvaWQqPihpc2xhbmRzQmVnaW4p
LCAobmV3U2l6ZSAtIG9sZFNpemUpICogaXNsYW5kU2l6ZUluQnl0ZXMpOwogCiAgICAgICAgICAg
ICB2b2lkKiByZXN1bHQgPSBmaW5kUmVzdWx0KCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQpOwpAQCAtOTE2LDggKzkzNCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAKKyAgICBwcml2YXRlOgogICAgICAgICAvLyBSYW5nZTog
W3N0YXJ0LCBlbmQpCiAgICAgICAgIHZvaWQqIG1fc3RhcnQ7CisgICAgICAgIHZvaWQqIG1faXNs
YW5kQmVnaW47CiAgICAgICAgIHZvaWQqIG1fZW5kOwogICAgICAgICBGYXN0Qml0VmVjdG9yIGlz
bGFuZEJpdHM7CiAgICAgfTsKQEAgLTk1NSw4ICs5NzUsOSBAQCBwcml2YXRlOgogICAgIExvY2sg
bV9sb2NrOwogICAgIFBhZ2VSZXNlcnZhdGlvbiBtX3Jlc2VydmF0aW9uOwogI2lmIEVOQUJMRShK
VU1QX0lTTEFORFMpCi0gICAgc3RkOjphcnJheTxSZWdpb25BbGxvY2F0b3IsIG1heE51bWJlck9m
UmVnaW9ucz4gbV9hbGxvY2F0b3JzOwotICAgIHVuc2lnbmVkIG1fbnVtQWxsb2NhdG9yczsKKyAg
ICBzaXplX3QgbV9yZWdpb25TaXplOworICAgIHNpemVfdCBtX251bUFsbG9jYXRvcnM7CisgICAg
Rml4ZWRWZWN0b3I8UmVnaW9uQWxsb2NhdG9yPiBtX2FsbG9jYXRvcnM7CiAgICAgUmVkQmxhY2tU
cmVlPElzbGFuZHMsIHZvaWQqPiBtX2lzbGFuZHNGb3JKdW1wU291cmNlTG9jYXRpb247CiAjZWxz
ZQogICAgIEFsbG9jYXRvciBtX2FsbG9jYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0VtYmVkZGVkRml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0
b3IuaAppbmRleCA0ZGZiNzk2MzRiZDg2NmI0NDQ4YTIxZDg3NmIyMWQ4NTllOTdlYjMwLi4zZjI5
YjVlYTg1MTAxMzg5MzFmY2QxNThiODNhYWM0MmM5YmUyOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRW1iZWRk
ZWRGaXhlZFZlY3Rvci5oCkBAIC00NSw2ICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBVbmlxdWVSZWYgeyAqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25T
aXplKHNpemUpKSkgRW1iZWRkZWRGaXhlZFZlY3RvcihzaXplKSB9OwogICAgIH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFVuaXF1ZVJlZjxFbWJlZGRlZEZp
eGVkVmVjdG9yPiBjcmVhdGUodW5zaWduZWQgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpCisgICAgewor
ICAgICAgICByZXR1cm4gVW5pcXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNl
OjphbGxvY2F0aW9uU2l6ZShzaXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSwgc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB9OworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IElucHV0SXRlcmF0b3I+CiAgICAgc3RhdGljIFVuaXF1ZVJlZjxFbWJlZGRlZEZpeGVkVmVjdG9y
PiBjcmVhdGUoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQogICAgIHsK
QEAgLTk0LDYgKzEwMCwxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIGV4cGxpY2l0IEVtYmVkZGVkRml4ZWRWZWN0b3IodW5z
aWduZWQgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogQmFzZShzaXplLCBzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pCisgICAgeworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIElucHV0SXRlcmF0b3I+CiAgICAgRW1iZWRkZWRGaXhlZFZlY3Rvcih1bnNpZ25lZCBzaXpl
LCBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCiAgICAgICAgIDogQmFz
ZShzaXplLCBmaXJzdCwgbGFzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVj
dG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCmluZGV4IDI2ZGZhZjkwOTBkNDlh
YTA5OGVkMTA2NWU2ZDI2NjA1Mzc2MTYwZTIuLmY3ZjQyMDM4ODcyMjA5ODc0ZTE1NjAwNzJkYjcy
NTEyYjExMzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKKysr
IGIvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaApAQCAtNzIsNiArNzIsMTEgQEAgcHVibGlj
OgogICAgICAgICA6IG1fc3RvcmFnZShzaXplID8gU3RvcmFnZTo6Y3JlYXRlKHNpemUpLm1vdmVU
b1VuaXF1ZVB0cigpIDogbnVsbHB0cikKICAgICB7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgZXhwbGljaXQgRml4ZWRWZWN0b3Ioc2l6ZV90IHNpemUsIEFyZ3MmJi4u
LiBhcmdzKQorICAgICAgICA6IG1fc3RvcmFnZShzaXplID8gU3RvcmFnZTo6Y3JlYXRlKHNpemUs
IHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikubW92ZVRvVW5pcXVlUHRyKCkgOiBudWxscHRy
KQorICAgIHsgfQorCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXI+CiAgICAgZXhwbGljaXQgRml4ZWRWZWN0b3IoY29uc3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKICAgICAgICAgOiBt
X3N0b3JhZ2Uob3RoZXIuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNyZWF0ZUZyb21W
ZWN0b3Iob3RoZXIpLm1vdmVUb1VuaXF1ZVB0cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5k
ZXggNmEwYjlkNTRiNWE2YjU5MzdiODZmMjI2YTI3OWNmZWM5MjgxNzRjNC4uZWVkZjYxM2RhMjZm
YTRiZTY0ZWM5YjQ5OWUyNWI2YzYxNjY4ZDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBA
IC02MTEsOSArNjExLDExIEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxF
X0pVTVBfSVNMQU5EUykgJiYgQ1BVKEFSTTY0KSAmJiBDUFUoQUREUkVTUzY0KSAmJiBFTkFCTEUo
SklUKQorI2lmICFkZWZpbmVkKEVOQUJMRV9KVU1QX0lTTEFORFMpICYmIEVOQUJMRShKSVQpCisj
aWYgKENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkpIHx8IENQVShBUk0pCiAjZGVmaW5lIEVO
QUJMRV9KVU1QX0lTTEFORFMgMQogI2VuZGlmCisjZW5kaWYKIAogLyogRklYTUU6IFRoaXMgc2hv
dWxkIGJlIHR1cm5lZCBpbnRvIGFuICNlcnJvciBpbnZhcmlhbnQgKi8KIC8qIFRoZSBGVEwgKmRv
ZXMgbm90KiB3b3JrIG9uIDMyLWJpdCBwbGF0Zm9ybXMuIERpc2FibGUgaXQgZXZlbiBpZiBzb21l
b25lIGFza2VkIHVzIHRvIGVuYWJsZSBpdC4gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1RyYWlsaW5nQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJyYXkuaAppbmRleCBm
MmJhOWVmOGQ3YmNkNjM3MjA5NGIxZTMyYTRhZWE2M2U5NDM1MWM4Li4zYWVkNWJkYjU1YTZmOTk3
MTViOTJiNDE3NTU3OTIyYWNmMWJhZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UcmFp
bGluZ0FycmF5LmgKKysrIGIvU291cmNlL1dURi93dGYvVHJhaWxpbmdBcnJheS5oCkBAIC02MSw2
ICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojppbml0
aWFsaXplSWZOb25QT0QoYmVnaW4oKSwgZW5kKCkpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgVHJhaWxpbmdBcnJheSh1bnNpZ25lZCBzaXplLCBBcmdzJiYu
Li4gYXJncykKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19maW5hbF92PERlcml2ZWQ+KTsKKyAgICAgICAgVmVjdG9yVHlwZU9wZXJh
dGlvbnM8VD46OmluaXRpYWxpemVXaXRoQXJncyhiZWdpbigpLCBlbmQoKSwgc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0
ZXJhdG9yPgogICAgIFRyYWlsaW5nQXJyYXkodW5zaWduZWQgc2l6ZSwgSW5wdXRJdGVyYXRvciBm
aXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQogICAgICAgICA6IG1fc2l6ZShzaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApp
bmRleCA0Njc5YTE4ZGYwMTQ1ZDI0NWUxNzI0MWM3OWZjNmQ3YmFhYTFiMjRhLi5iYzkxNTUyYjJi
YzM1ZDE0OTMwYjdjZTY2NmY1NTVhYzdiNmQ3ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtOTcsNiArOTcsMTMg
QEAgc3RydWN0IFZlY3RvckluaXRpYWxpemVyPHRydWUsIGZhbHNlLCBUPgogICAgIHsKICAgICAg
ICAgaW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luLCBlbmQpOwogICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVdpdGhBcmdzKFQq
IGJlZ2luLCBUKiBlbmQsIEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZm9yIChUICpj
dXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIpCisgICAgICAgICAgICBuZXcoTm90TnVsbCwg
Y3VyKSBUKGFyZ3MuLi4pOworICAgIH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0y
NTUsNiArMjYyLDEyIEBAIHN0cnVjdCBWZWN0b3JUeXBlT3BlcmF0aW9ucwogICAgICAgICBWZWN0
b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZlY3Rv
clRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojppbml0aWFsaXplKGJlZ2lu
LCBlbmQpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIC4uLiBBcmdzPgorICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVXaXRoQXJncyhUKiBiZWdpbiwgVCogZW5kLCBBcmdzJiYuLi4g
YXJncykKKyAgICB7CisgICAgICAgIFZlY3RvckluaXRpYWxpemVyPFZlY3RvclRyYWl0czxUPjo6
bmVlZHNJbml0aWFsaXphdGlvbiwgVmVjdG9yVHJhaXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0aE1l
bXNldCwgVD46OmluaXRpYWxpemVXaXRoQXJncyhiZWdpbiwgZW5kLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1vdmUoVCogc3JjLCBUKiBz
cmNFbmQsIFQqIGRzdCkKICAgICB7CiAgICAgICAgIFZlY3Rvck1vdmVyPFZlY3RvclRyYWl0czxU
Pjo6Y2FuTW92ZVdpdGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywgc3JjRW5kLCBkc3QpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxMDFmZWEw
ZTEwOGQyZjEyMTIzMDgyZDU0NDc0MzBhMmIyNDI4NDkzLi5iM2MzOWZmZDYzN2IxNDg1OTdkNTgz
ZjdiMWE4MTFmNWNmNzc5YmJkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAzLTIxICBHZXphIExvcmUg
IDxnbG9yZUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdW0FSTXY3XSBTdXBwb3J0IHByb3Bl
ciBuZWFyIGNhbGxzIGFuZCBKVU1QX0lTTEFORFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2xldC1jb25zdC10ZHotZW52
aXJvbm1lbnQtcGFyc2luZy1hbmQtaGFzaC1jb25zaW5nLXNwZWVkLmpzOgorCiAyMDIyLTAzLTA4
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgaW52YWxp
ZCBBU1NFUlQgaW4gTG9jYWxlSURCdWlsZGVyOjpvdmVycmlkZUxhbmd1YWdlU2NyaXB0UmVnaW9u
KCkuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9sZXQtY29uc3QtdGR6LWVu
dmlyb25tZW50LXBhcnNpbmctYW5kLWhhc2gtY29uc2luZy1zcGVlZC5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2xldC1jb25zdC10ZHotZW52aXJvbm1lbnQtcGFyc2luZy1hbmQtaGFzaC1j
b25zaW5nLXNwZWVkLmpzCmluZGV4IDI2MTgyM2VmM2M1ZjUyMzViMjdmOWFlN2ZhMjZhODA0NzI0
ZTBjMTYuLjQxOWE1MGU3ZDNhMGUxNzVjODFhYTE2NTExMzI3NmExODViODA2MjcgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2xldC1jb25zdC10ZHotZW52aXJvbm1lbnQtcGFy
c2luZy1hbmQtaGFzaC1jb25zaW5nLXNwZWVkLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2xldC1jb25zdC10ZHotZW52aXJvbm1lbnQtcGFyc2luZy1hbmQtaGFzaC1jb25zaW5nLXNw
ZWVkLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIGRlZmF1bHROb05vTExJbnRSdW4gaWYgJGFyY2hp
dGVjdHVyZSA9PSAibWlwcyIKKy8vQCBkZWZhdWx0Tm9Ob0xMSW50UnVuIGlmICRhcmNoaXRlY3R1
cmUgPT0gIm1pcHMiIHx8ICRhcmNoaXRlY3R1cmUgPT0gImFybSIKIC8qCiAgKiBDb3B5cmlnaHQg
alF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycywgaHR0cHM6Ly9qcXVlcnku
b3JnLwogICoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455907</attachid>
            <date>2022-03-28 05:52:15 -0700</date>
            <delta_ts>2022-04-07 02:07:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238143-20220328125213.patch</filename>
            <type>text/plain</type>
            <size>49940</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZTFhZWQ1NDFlYzA0NTAzM2E2ZGM3Y2RjZTNkZGRhYTEwYWU5NTM0Li4wNzJjNGE3NTY3MDk3NTE5
OGI0ZDg2YmEzM2IzZjJkYmQ5ZjMwOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAyMi0wMy0yOCAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXVtBUk12N10gU3VwcG9ydCBwcm9wZXIgbmVhciBjYWxscyBhbmQgSlVNUF9J
U0xBTkRTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgbmVhckNhbGwgYW5kIG5lYXJUYWlsQ2FsbCBhcyBzaW5nbGUgaW5zdHJ1Y3Rpb24g
ZGlyZWN0CisgICAgICAgIGJyYW5jaGVzIG9uIEFSTXY3L1RodW1iLTIuIChXaWxsIG5lZWQgdG8g
c3VwcG9ydCB0aGVzZSBmb3IgV2FzbSBKSVRzLAorICAgICAgICB0byBpbXBsZW1lbnQgdGhyZWFk
U2FmZVBhdGNoYWJsZU5lYXJjYWxsLikgVG8gbWFrZSB0aGlzIHBvc3NpYmxlIHdoaWxlCisgICAg
ICAgIGFsc28gaGF2aW5nIGFuIGV4ZWN1dGFibGUgcG9vbCBzaXplIGxhcmdlciB0aGFuIHRoZSBi
cmFuY2ggcmFuZ2UsIEkKKyAgICAgICAgYWxzbyBwb3J0ZWQgSlVNUF9JU0xBTkRTLgorCisgICAg
ICAgIFRvIHBvcnQgSlVNUF9JU0xBTkRTLCBhIHJlZm9ybXVsYXRpb24gb2YgdGhlIHJlZ2lvbiBh
bGxvY2F0aW9ucyB3YXMKKyAgICAgICAgbmVjZXNzYXJ5LCB3aGljaCBpcyBub3cgZG9uZSBpbiB0
ZXJtcyBvZiB0aGUgcmFuZ2Ugb2YgdGhlCisgICAgICAgIG5lYXJDYWxsL25lYXJUYWlsQ2FsbCBt
YWNyb2Fzc2VtYmxlciBtYWNyb3MuIEZvciBBUk02NCwgdGhlIGJlaGF2aW91cgorICAgICAgICBz
aG91bGQgYmUgaWRlbnRpY2FsLgorCisgICAgICAgIFRoZSBqdW1wIGlzbGFkIHJlc2VydmF0aW9u
IG9uIEFSTXY3IGlzIHNldCB0byA1JSBvZiBleGVjdXRhYmxlIG1lbW9yeQorICAgICAgICBzaXpl
LCB3aGljaCBpcyBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGFzIHRoZSBiYXNlbGluZSBKSVQgY29k
ZSBzaXplCisgICAgICAgIHNhdmluZyBwcm92aWRlZCBieSB1c2luZyBzaG9ydCBicmFuY2hlcyBm
b3IgbmVhciBjYWxscywgc28gdGhlIGNoYW5nZQorICAgICAgICBzaG91bGQgYmUgbmV1dHJhbCBv
dmVyYWxsIHdpdGggcmVzcGVjdCB0byBleGVjdXRhYmxlIG1lbW9yeQorICAgICAgICBjb25zdW1w
dGlvbi4KKworICAgICAgICBBbHNvIG1hZGUgaXQgcG9zc2libGUgZm9yIHRoZSAtLWppdE1lbW9y
eVJlc2VydmF0aW9uU2l6ZSBvcHRpb24gdG8KKyAgICAgICAgcmVxdWVzdCBKSVQgbWVtb3J5IHRo
YXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGRlZmF1bHQgaGFyZGNvZGVkIHNpemUKKyAgICAgICAgd2hp
bGUgdXNpbmcgSlVNUF9JU0xBTkRTICh3ZSBuZWVkIHRoaXMgZm9yIHRlc3Rpbmcgb24gQVJNdjcs
IHdoaWNoIGhhcworICAgICAgICBhIHNtYWxsZXIgZGVmYXVsdCBleGVjdXRhYmxlIHBvb2wgc2l6
ZSkuIFRvIGRvIHRoaXMgdGhlIHJlZ2lvbgorICAgICAgICBhbGxvY2F0b3JzIGFyZSBubyBsb25n
ZXIgc3RhdGljYWxseSBhbGxvY2F0ZWQgYnV0IGFyZSBoZWxkIGluIGEKKyAgICAgICAgRml4ZWRW
ZWN0b3IuCisKKyAgICAgICAgQWxzbyByZW1vdmVkIHRoZSB1bnVzZWQgcmVwYXRjaENvbXBhY3Qg
bWV0aG9kcyBmcm9tIGFzc2VtYmxlcnMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6QVJNdjdBc3NlbWJsZXI6OmlzRXZlbik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1i
bGVyOjptYWtlRXZlbik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpibCk6CisgICAg
ICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3Nl
bWJsZXI6OmxpbmtUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5r
Q2FsbCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZWxpbmtDYWxsKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlbGlua1RhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OnByZXBhcmVGb3JBdG9taWNSZWxpbmtKdW1wQ29uY3VycmVudGx5KToK
KyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnByZXBhcmVGb3JBdG9taWNSZWxpbmtDYWxs
Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRo
SnVtcCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpjYW5FbWl0SnVtcCk6CisgICAg
ICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjppc0JMKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3Nl
bWJsZXI6OmxpbmtKdW1wVDQpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGlua0Nv
bmRpdGlvbmFsSnVtcFQ0KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmtKdW1w
QWJzb2x1dGUpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGlua0JyYW5jaCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmlzSW50KToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bmVhckNhbGwpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpuZWFyVGFpbENhbGwpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpsaW5rQ2FsbCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clJJU0NWNjQuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aDoKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAg
ICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlh
bGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisKIDIwMjItMDMtMjcgIExhdXJvIE1vdXJhICA8bG1v
dXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgbm9uLXVuaWZpZWQgYnVpbGRm
aXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggODE5OWYxMDlmNjA3ZDg2NjBmODE2ZWY5MDY4MzlkYzhkZTE2ODc5Ny4uOWE0MDdm
YjI1MTI0NmFlN2JjZDVkYjM3ZWZkZThkYWM1NmY5Mzg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAyMi0wMy0yOCAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlND
XVtBUk12N10gU3VwcG9ydCBwcm9wZXIgbmVhciBjYWxscyBhbmQgSlVNUF9JU0xBTkRTCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxNDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IGNvbnN0
cnVjdG9yIGFyZ3VtZW50cyBmb3IgRml4ZWRWZWN0b3IgZWxlbWVudCBpbml0aWFsaXphdGlvbi4K
KworICAgICAgICAqIHd0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmg6CisgICAgICAgICogd3RmL0Zp
eGVkVmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpGaXhlZFZlY3Rvcik6Cisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisgICAgICAgICogd3RmL1RyYWlsaW5nQXJy
YXkuaDoKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6VHJhaWxpbmdBcnJheSk6CisgICAg
ICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjpWZWN0b3JUeXBlT3BlcmF0aW9uczo6
aW5pdGlhbGl6ZVdpdGhBcmdzKToKKwogMjAyMi0wMy0yNyAgQWxleGFuZGVyIE1pa2hheWxlbmtv
ICA8YWxleG1AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdW1dQRV0gU3VwcG9ydCBDU1MgYWNj
ZW50LWNvbG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TTY0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNz
ZW1ibGVyLmgKaW5kZXggMjllNWZmOTVkNmM4ZjE0Nzc2MWJjMTdjNTZjNTc4MzUyNzYxYTE2My4u
ZjJmNjMzNTI2N2UxNmFhODkyYTcwODM5ZWIzNWFhYmY1NWNmNDI4OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtNTYsMTQgKzU2
LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRzLCB0eXBlbmFt
ZSBUeXBlPgotQUxXQVlTX0lOTElORSBjb25zdGV4cHIgYm9vbCBpc0ludChUeXBlIHQpCi17Ci0g
ICAgY29uc3RleHByIHNpemVfdCBzaGlmdCA9IHNpemVvZihUeXBlKSAqIENIQVJfQklUIC0gYml0
czsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUeXBlKSAqIENIQVJfQklUID4gc2hpZnQsICJz
aGlmdCBpcyBsYXJnZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUiKTsKLSAgICByZXR1cm4g
KCh0IDw8IHNoaWZ0KSA+PiBzaGlmdCkgPT0gdDsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUg
Ym9vbCBpczRCeXRlQWxpZ25lZChjb25zdCB2b2lkKiBwdHIpCiB7CiAgICAgcmV0dXJuICEocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocHRyKSAmIDB4Myk7CkBAIC0yODg5LDYgKzI4ODEsMTEg
QEAgcHVibGljOgogICAgICAgICBjYWNoZUZsdXNoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJv
bSkgLSAxLCBzaXplb2YoaW50KSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVsaW5rVGFp
bENhbGwodm9pZCogZnJvbSwgdm9pZCogdG8pCisgICAgeworICAgICAgICByZWxpbmtKdW1wKGZy
b20sIHRvKTsKKyAgICB9CisKICNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQogICAgIHN0YXRpYyB2
b2lkKiBwcmVwYXJlRm9yQXRvbWljUmVsaW5rSnVtcENvbmN1cnJlbnRseSh2b2lkKiBmcm9tLCB2
b2lkKiB0bykKICAgICB7CkBAIC0yOTA4LDMwICsyOTA1LDYgQEAgcHVibGljOgogICAgIH0KICNl
bmRpZgogICAgIAotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0KHZvaWQqIHdoZXJlLCBp
bnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCEodmFsdWUgJiB+MHgzZmY4KSk7
Ci0KLSAgICAgICAgTWVtT3BTaXplIHNpemU7Ci0gICAgICAgIGJvb2wgVjsKLSAgICAgICAgTWVt
T3Agb3BjOwotICAgICAgICBpbnQgaW1tMTI7Ci0gICAgICAgIFJlZ2lzdGVySUQgcm47Ci0gICAg
ICAgIFJlZ2lzdGVySUQgcnQ7Ci0gICAgICAgIGJvb2wgZXhwZWN0ZWQgPSBkaXNhc3NlbWJsZUxv
YWRTdG9yZVJlZ2lzdGVyVW5zaWduZWRJbW1lZGlhdGUod2hlcmUsIHNpemUsIFYsIG9wYywgaW1t
MTIsIHJuLCBydCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0ZWQsIGV4cGVjdGVkICYm
IHNpemUgPj0gTWVtT3BTaXplXzMyICYmICFWICYmIG9wYyA9PSBNZW1PcF9MT0FEKTsgLy8gZXhw
ZWN0IDMyLzY0IGJpdCBsb2FkIHRvIEdQUi4KLQotICAgICAgICBpZiAoc2l6ZSA9PSBNZW1PcFNp
emVfMzIpCi0gICAgICAgICAgICBpbW0xMiA9IGVuY29kZVBvc2l0aXZlSW1tZWRpYXRlPDMyPih2
YWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGltbTEyID0gZW5jb2RlUG9zaXRpdmVJ
bW1lZGlhdGU8NjQ+KHZhbHVlKTsKLSAgICAgICAgaW50IGluc24gPSBsb2FkU3RvcmVSZWdpc3Rl
clVuc2lnbmVkSW1tZWRpYXRlKHNpemUsIFYsIG9wYywgaW1tMTIsIHJuLCBydCk7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPih3aGVy
ZSkgPT0gd2hlcmUpOwotICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwgc2l6
ZW9mKGludCkpOwotCi0gICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsKLSAg
ICB9Ci0KICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmRlYnVn
T2Zmc2V0KCk7IH0KIAogI2lmIE9TKExJTlVYKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJs
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaApp
bmRleCA2ZDE4YmU4ZDY2MGY4OGY5NzM0N2UyOWM2OTViMTJmYzg4Y2Q2ODhkLi45Y2E2YTRhNmM4
NDFjNjc2NTlmY2I1NDZjN2Y0NDJiZDdkMjg5ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC00OTEsNiArNDkxLDE2IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKIAorICAgIC8vIEluIHRoZSBBUk12NyBJU0EsIHRoZSBMU0Igb2Yg
YSBjb2RlIHBvaW50ZXIgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhcmdldCB1c2VzIFRodW1iIHZz
IEFSTQorICAgIC8vIGVuY29kaW5nLiBUaGVzZSB1dGlsaXR5IGZ1bmN0aW9ucyBhcmUgdGhlcmUg
Zm9yIHdoZW4gd2UgbmVlZCB0byBkZWFsIHdpdGggdGhpcy4KKyAgICBzdGF0aWMgYm9vbCBpc0V2
ZW4oY29uc3Qgdm9pZCogcHRyKSB7IHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihwdHIpICYgMSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0V2ZW4oQXNzZW1ibGVyTGFiZWwgJmxh
YmVsKSB7IHJldHVybiAhKGxhYmVsLm9mZnNldCgpICYgMSk7IH0KKyAgICBzdGF0aWMgdm9pZCog
bWFrZUV2ZW4oY29uc3Qgdm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc0V2ZW4o
cHRyKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIH4xKTsKKyAgICB9CisKICAgICAvLyBBUk12NywgQXBw
eC1BLjYuMwogICAgIHN0YXRpYyBib29sIEJhZFJlZyhSZWdpc3RlcklEIHJlZykKICAgICB7CkBA
IC02MDksNiArNjE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfVk9SUl9UMSAgICAgID0gMHhF
RjIwLAogICAgICAgICBPUF9CX1QzYSAgICAgICAgPSAweEYwMDAsCiAgICAgICAgIE9QX0JfVDRh
ICAgICAgICA9IDB4RjAwMCwKKyAgICAgICAgT1BfQkxfVDRhICAgICAgID0gMHhGMDAwLAogICAg
ICAgICBPUF9BTkRfaW1tX1QxICAgPSAweEYwMDAsCiAgICAgICAgIE9QX1RTVF9pbW0gICAgICA9
IDB4RjAxMCwKICAgICAgICAgT1BfQklDX2ltbV9UMSAgID0gMHhGMDIwLApAQCAtNjk3LDYgKzcw
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX0RNQl9JU0hTVF9UMWIgPSAweDhGNUEsCiAgICAg
ICAgIE9QX0JfVDNiICAgICAgICAgPSAweDgwMDAsCiAgICAgICAgIE9QX0JfVDRiICAgICAgICAg
PSAweDkwMDAsCisgICAgICAgIE9QX0JMX1Q0YiAgICAgICAgPSAweEQwMDAsCiAgICAgfSBPcGNv
ZGVJRDI7CiAKICAgICBzdHJ1Y3QgRm91ckZvdXJzIHsKQEAgLTcxOSw2ICs3MzEsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgfSBtX3U7CiAgICAgfTsKIAorICAgIGVudW0gY2xhc3MgQnJhbmNoV2l0
aExpbmsgOiBib29sIHsKKyAgICAgICAgTm8gPSBmYWxzZSwKKyAgICAgICAgWWVzID0gdHJ1ZQor
ICAgIH07CisKICAgICBjbGFzcyBBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjsKIAogICAgIC8vIGZh
bHNlIG1lYW5zIGVsc2UhCkBAIC05MjEsNiArOTM4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9m
b3JtYXR0ZXIudHdvV29yZE9wMTZPcDE2KE9QX0JfVDRhLCBPUF9CX1Q0Yik7CiAgICAgICAgIHJl
dHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOwogICAgIH0KKworICAgIC8vIE9ubHkgYWxsb3dlZCBp
biBJVCAoaWYgdGhlbikgYmxvY2sgaWYgbGFzdCBpbnN0cnVjdGlvbi4KKyAgICBBTFdBWVNfSU5M
SU5FIEFzc2VtYmxlckxhYmVsIGJsKCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dv
cmRPcDE2T3AxNihPUF9CTF9UNGEsIE9QX0JMX1Q0Yik7CisgICAgICAgIHJldHVybiBtX2Zvcm1h
dHRlci5sYWJlbCgpOworICAgIH0KICAgICAKICAgICAvLyBPbmx5IGFsbG93ZWQgaW4gSVQgKGlm
IHRoZW4pIGJsb2NrIGlmIGxhc3QgaW5zdHJ1Y3Rpb24uCiAgICAgQUxXQVlTX0lOTElORSBBc3Nl
bWJsZXJMYWJlbCBibHgoUmVnaXN0ZXJJRCBybSkKQEAgLTIyNzMsNyArMjI5Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGxpbmtKdW1wVDM8Y29weT4ocmVjb3JkLmNvbmRpdGlvbigpLCByZWlu
dGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRvKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExpbmtKdW1wVDQ6Ci0gICAgICAgICAg
ICBsaW5rSnVtcFQ0PGNvcHk+KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4oZnJvbSks
IGZyb21JbnN0cnVjdGlvbiwgdG8pOworICAgICAgICAgICAgbGlua0p1bXBUNDxjb3B5PihyZWlu
dGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRvLCBC
cmFuY2hXaXRoTGluazo6Tm8pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGlu
a0NvbmRpdGlvbmFsSnVtcFQ0OgogICAgICAgICAgICAgbGlua0NvbmRpdGlvbmFsSnVtcFQ0PGNv
cHk+KHJlY29yZC5jb25kaXRpb24oKSwgcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3QqPihm
cm9tKSwgZnJvbUluc3RydWN0aW9uLCB0byk7CkBAIC0yMzIxLDEyICsyMzQ1LDIwIEBAIHB1Ymxp
YzoKICAgICAgICAgbGlua0p1bXBBYnNvbHV0ZShsb2NhdGlvbiwgbG9jYXRpb24sIHRvKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJl
bCBmcm9tLCB2b2lkKiB0bykKKyAgICBzdGF0aWMgdm9pZCBsaW5rVGFpbENhbGwodm9pZCogY29k
ZSwgQXNzZW1ibGVyTGFiZWwgZnJvbSwgdm9pZCogdG8pCiAgICAgewotICAgICAgICBBU1NFUlQo
IShyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSAmIDEpKTsKICAgICAgICAgQVNTRVJU
KGZyb20uaXNTZXQoKSk7CiAKLSAgICAgICAgc2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0PHVp
bnQxNl90Kj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkgKyBmcm9tLm9mZnNldCgp
KSAtIDEsIHRvLCBmYWxzZSk7CisgICAgICAgIHVpbnQxNl90KiBsb2NhdGlvbiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDE2X3QqPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSArIGZy
b20ub2Zmc2V0KCkpOworICAgICAgICBsaW5rQnJhbmNoKGxvY2F0aW9uLCBsb2NhdGlvbiwgbWFr
ZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6Tm8pOworICAgIH0KKworICAgIHN0YXRpYyB2b2lk
IGxpbmtDYWxsKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGZyb20uaXNTZXQoKSk7CisKKyAgICAgICAgdWludDE2X3QqIGxv
Y2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGNvZGUpICsgZnJvbS5vZmZzZXQoKSk7CisgICAgICAgIGxpbmtCcmFuY2gobG9jYXRp
b24sIGxvY2F0aW9uLCBtYWtlRXZlbih0byksIEJyYW5jaFdpdGhMaW5rOjpZZXMpOwogICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVs
IHdoZXJlLCB2b2lkKiB2YWx1ZSkKQEAgLTIzNTAsMTEgKzIzODIsNTAgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHZvaWQgcmVsaW5rQ2FsbCh2b2lkKiBmcm9tLCB2b2lkKiB0bykKICAgICB7Ci0g
ICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICYgMSkpOwor
ICAgICAgICBBU1NFUlQoaXNFdmVuKGZyb20pKTsKIAotICAgICAgICBzZXRQb2ludGVyKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDEsIHRvLCB0cnVlKTsKKyAgICAgICAgdWlu
dDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pOworICAg
ICAgICBpZiAoaXNCTChsb2NhdGlvbiAtIDIpKSB7CisgICAgICAgICAgICBsaW5rQnJhbmNoKGxv
Y2F0aW9uLCBsb2NhdGlvbiwgbWFrZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6WWVzKTsKKyAg
ICAgICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24gLSAyLCAyICogc2l6ZW9mKHVpbnQxNl90KSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRQb2ludGVyKGxv
Y2F0aW9uIC0gMSwgdG8sIHRydWUpOwogICAgIH0KLSAgICAKKworICAgIHN0YXRpYyB2b2lkIHJl
bGlua1RhaWxDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzRXZlbihmcm9tKSk7CisKKyAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pOworICAgICAgICBsaW5rQnJhbmNoKGxvY2F0aW9uLCBs
b2NhdGlvbiwgdG8sIEJyYW5jaFdpdGhMaW5rOjpObyk7CisgICAgICAgIGNhY2hlRmx1c2gobG9j
YXRpb24gLSAyLCAyICogc2l6ZW9mKHVpbnQxNl90KSk7CisgICAgfQorCisjaWYgRU5BQkxFKEpV
TVBfSVNMQU5EUykKKyAgICBzdGF0aWMgdm9pZCogcHJlcGFyZUZvckF0b21pY1JlbGlua0p1bXBD
b25jdXJyZW50bHkodm9pZCogZnJvbSwgdm9pZCogdG8pCisgICAgeworICAgICAgICBBU1NFUlQo
aXNFdmVuKGZyb20pKTsKKyAgICAgICAgQVNTRVJUKGlzRXZlbih0bykpOworCisgICAgICAgIGlu
dHB0cl90IG9mZnNldCA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odG8pIC0gYml0d2lzZV9jYXN0
PGludHB0cl90Pihmcm9tKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ob2Zmc2V0
KSA9PSBvZmZzZXQpOworCisgICAgICAgIGlmIChpc0ludDwyNT4ob2Zmc2V0KSkKKyAgICAgICAg
ICAgIHJldHVybiB0bzsKKworICAgICAgICByZXR1cm4gRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2lu
Z2xldG9uKCkuZ2V0SnVtcElzbGFuZFRvQ29uY3VycmVudGx5KGZyb20sIHRvKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCogcHJlcGFyZUZvckF0b21pY1JlbGlua0NhbGxDb25jdXJyZW50bHko
dm9pZCogZnJvbSwgdm9pZCogdG8pCisgICAgeworICAgICAgICBBU1NFUlQoaXNFdmVuKGZyb20p
KTsKKworICAgICAgICByZXR1cm4gcHJlcGFyZUZvckF0b21pY1JlbGlua0p1bXBDb25jdXJyZW50
bHkoZnJvbSwgbWFrZUV2ZW4odG8pKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lk
KiByZWFkQ2FsbFRhcmdldCh2b2lkKiBmcm9tKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlYWRQ
b2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDEpOwpAQCAtMjM2Nywy
NyArMjQzOCw2IEBAIHB1YmxpYzoKICAgICAgICAgc2V0SW50MzIod2hlcmUsIHZhbHVlLCB0cnVl
KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENvbXBhY3Qodm9pZCogd2hl
cmUsIGludDMyX3Qgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG9mZnNldCA+PSAtMjU1
ICYmIG9mZnNldCA8PSAyNTUpOwotCi0gICAgICAgIGJvb2wgYWRkID0gdHJ1ZTsKLSAgICAgICAg
aWYgKG9mZnNldCA8IDApIHsKLSAgICAgICAgICAgIGFkZCA9IGZhbHNlOwotICAgICAgICAgICAg
b2Zmc2V0ID0gLW9mZnNldDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgb2Zmc2V0IHw9
IChhZGQgPDwgOSk7Ci0gICAgICAgIG9mZnNldCB8PSAoMSA8PCAxMCk7Ci0gICAgICAgIG9mZnNl
dCB8PSAoMSA8PCAxMSk7Ci0KLSAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KHdoZXJlKTsKLSAgICAgICAgdWludDE2X3QgaW5zdHJ1Y3Rpb24g
PSBsb2NhdGlvblsxXSAmIH4oKDEgPDwgMTIpIC0gMSk7Ci0gICAgICAgIGluc3RydWN0aW9uIHw9
IG9mZnNldDsKLSAgICAgICAgcGVyZm9ybUpJVE1lbWNweShsb2NhdGlvbiArIDEsICZpbnN0cnVj
dGlvbiwgc2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24sIHNp
emVvZih1aW50MTZfdCkgKiAyKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBhdGNoUG9p
bnRlcih2b2lkKiB3aGVyZSwgdm9pZCogdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoIShy
ZWludGVycHJldF9jYXN0PGludHB0cl90Pih3aGVyZSkgJiAxKSk7CkBAIC0yNDA4LDcgKzI0NTgs
NyBAQCBwdWJsaWM6CiAjaWYgT1MoTElOVVgpCiAgICAgICAgIGlmIChjYW5CZUp1bXBUNChyZWlu
dGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCksIHRvKSkgewogICAgICAg
ICAgICAgdWludDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVj
dGlvblN0YXJ0KSArIDI7Ci0gICAgICAgICAgICBsaW5rSnVtcFQ0KHB0ciwgcHRyLCB0byk7Cisg
ICAgICAgICAgICBsaW5rSnVtcFQ0KHB0ciwgcHRyLCB0bywgQnJhbmNoV2l0aExpbms6Ok5vKTsK
ICAgICAgICAgICAgIGNhY2hlRmx1c2gocHRyIC0gMiwgc2l6ZW9mKHVpbnQxNl90KSAqIDIpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdWludDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVjdGlvblN0YXJ0KSArIDU7CkBAIC0yNDE3LDcgKzI0Njcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIHVpbnQxNl90KiBwdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOwotICAgICAg
ICBsaW5rSnVtcFQ0KHB0ciwgcHRyLCB0byk7CisgICAgICAgIGxpbmtKdW1wVDQocHRyLCBwdHIs
IHRvLCBCcmFuY2hXaXRoTGluazo6Tm8pOwogICAgICAgICBjYWNoZUZsdXNoKHB0ciAtIDIsIHNp
emVvZih1aW50MTZfdCkgKiAyKTsKICNlbmRpZgogICAgIH0KQEAgLTI1MjgsMTAgKzI1NzgsMTgg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9v
bCBjYW5FbWl0SnVtcCh2b2lkKiBmcm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIC8vICdm
cm9tJyBob2xkcyB0aGUgYWRkcmVzcyBvZiB0aGUgYnJhbmNoIGluc3RydWN0aW9uLiBUaGUgYnJh
bmNoIHJhbmdlIGhvd2V2ZXIgaXMgcmVsYXRpdmUKKyAgICAgICAgLy8gdG8gdGhlIGFyY2hpdGVj
dHVyYWwgdmFsdWUgb2YgdGhlIFBDIHdoaWNoIGlzIDQgbGFyZ2VyIHRoYW4gdGhlIGFkZHJlc3Mg
b2YgdGhlIGJyYW5jaC4KKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYml0d2lzZV9jYXN0PGlu
dHB0cl90Pih0bykgLSAoYml0d2lzZV9jYXN0PGludHB0cl90Pihmcm9tKSArIDQpOworICAgICAg
ICByZXR1cm4gaXNJbnQ8MjU+KG9mZnNldCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIC8vIFZG
UCBvcGVyYXRpb25zIGNvbW1vbmx5IHRha2Ugb25lIG9yIG1vcmUgNS1iaXQgb3BlcmFuZHMsIHR5
cGljYWxseSByZXByZXNlbnRpbmcgYQotICAgIC8vIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVyIG51
bWJlci4gIFRoaXMgd2lsbCBjb21tb25seSBiZSBlbmNvZGVkIGluIHRoZSBpbnN0cnVjdGlvbgot
ICAgIC8vIGluIHR3byBwYXJ0cywgd2l0aCBvbmUgc2luZ2xlIGJpdCBmaWVsZCwgYW5kIG9uZSA0
LWJpdCBmaWVsZC4gIEluIHRoZSBjYXNlIG9mCisgICAgLy8gZmxvYXRpbmcgcG9pbnQgcmVnaXN0
ZXIgbnVtYmVyLiBUaGlzIHdpbGwgY29tbW9ubHkgYmUgZW5jb2RlZCBpbiB0aGUgaW5zdHJ1Y3Rp
b24KKyAgICAvLyBpbiB0d28gcGFydHMsIHdpdGggb25lIHNpbmdsZSBiaXQgZmllbGQsIGFuZCBv
bmUgNC1iaXQgZmllbGQuIEluIHRoZSBjYXNlIG9mCiAgICAgLy8gZG91YmxlIHByZWNpc2lvbiBv
cGVyYW5kcyB0aGUgaGlnaCBiaXQgb2YgdGhlIHJlZ2lzdGVyIG51bWJlciB3aWxsIGJlIGVuY29k
ZWQKICAgICAvLyBzZXBhcmF0ZWx5LCBhbmQgZm9yIHNpbmdsZSBwcmVjaXNpb24gb3BlcmFuZHMg
dGhlIGhpZ2ggYml0IG9mIHRoZSByZWdpc3RlciBudW1iZXIKICAgICAvLyB3aWxsIGJlIGVuY29k
ZWQgaW5kaXZpZHVhbGx5LgpAQCAtMjY1NCw2ICsyNzEyLDEyIEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiAoKGluc3RydWN0aW9uWzBdICYgMHhmODAwKSA9PSBPUF9CX1Q0YSkgJiYgKChpbnN0
cnVjdGlvblsxXSAmIDB4ZDAwMCkgPT0gT1BfQl9UNGIpOwogICAgIH0KIAorICAgIHN0YXRpYyBi
b29sIGlzQkwoY29uc3Qgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGNvbnN0IHVpbnQx
Nl90KiBpbnN0cnVjdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oYWRkcmVzcyk7
CisgICAgICAgIHJldHVybiAoKGluc3RydWN0aW9uWzBdICYgMHhmODAwKSA9PSBPUF9CTF9UNGEp
ICYmICgoaW5zdHJ1Y3Rpb25bMV0gJiAweGQwMDApID09IE9QX0JMX1Q0Yik7CisgICAgfQorCiAg
ICAgc3RhdGljIGJvb2wgaXNCWChjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAg
Y29uc3QgdWludDE2X3QqIGluc3RydWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3Qq
PihhZGRyZXNzKTsKQEAgLTI3ODcsNyArMjg1MSw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPENvcHlGdW5jdGlvbiBjb3B5ID0gcGVyZm9ybUpJVE1lbWNweT4KLSAgICBz
dGF0aWMgdm9pZCBsaW5rSnVtcFQ0KHVpbnQxNl90KiB3cml0ZVRhcmdldCwgY29uc3QgdWludDE2
X3QqIGluc3RydWN0aW9uLCB2b2lkKiB0YXJnZXQpCisgICAgc3RhdGljIHZvaWQgbGlua0p1bXBU
NCh1aW50MTZfdCogd3JpdGVUYXJnZXQsIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9p
ZCogdGFyZ2V0LCBCcmFuY2hXaXRoTGluayBsaW5rKQogICAgIHsKICAgICAgICAgLy8gRklNWEU6
IHRoaXMgc2hvdWxkIGJlIHVwIGluIHRoZSBNYWNyb0Fzc2VtYmxlciBsYXllci4gOi0oICAgICAg
ICAKICAgICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rp
b24pICYgMSkpOwpAQCAtMjgwMyw3ICsyODY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KCEocmVsYXRpdmUgJiAxKSk7CiAgICAgICAgIHVpbnQxNl90IGluc3RydWN0aW9uc1syXTsKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zWzBdID0gT1BfQl9UNGEgfCAoKHJlbGF0aXZlICYgMHgxMDAwMDAw
KSA+PiAxNCkgfCAoKHJlbGF0aXZlICYgMHgzZmYwMDApID4+IDEyKTsKLSAgICAgICAgaW5zdHJ1
Y3Rpb25zWzFdID0gT1BfQl9UNGIgfCAoKHJlbGF0aXZlICYgMHg4MDAwMDApID4+IDEwKSB8ICgo
cmVsYXRpdmUgJiAweDQwMDAwMCkgPj4gMTEpIHwgKChyZWxhdGl2ZSAmIDB4ZmZlKSA+PiAxKTsK
KyAgICAgICAgaW5zdHJ1Y3Rpb25zWzFdID0gT1BfQl9UNGIgfCAoc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KGxpbmspIDw8IDE0KSB8ICgocmVsYXRpdmUgJiAweDgwMDAwMCkgPj4gMTApIHwgKChyZWxh
dGl2ZSAmIDB4NDAwMDAwKSA+PiAxMSkgfCAoKHJlbGF0aXZlICYgMHhmZmUpID4+IDEpOwogICAg
ICAgICBjb3B5KHdyaXRlVGFyZ2V0IC0gMiwgaW5zdHJ1Y3Rpb25zLCAyICogc2l6ZW9mKHVpbnQx
Nl90KSk7CiAgICAgfQogCkBAIC0yODE2LDcgKzI4ODAsNyBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgdWludDE2X3QgbmV3SW5zdHJ1Y3Rpb24gPSBpZlRoZW5FbHNlKGNvbmQpIHwgT1Bf
SVQ7CiAgICAgICAgIGNvcHkod3JpdGVUYXJnZXQgLSAzLCAmbmV3SW5zdHJ1Y3Rpb24sIHNpemVv
Zih1aW50MTZfdCkpOwotICAgICAgICBsaW5rSnVtcFQ0PGNvcHk+KHdyaXRlVGFyZ2V0LCBpbnN0
cnVjdGlvbiwgdGFyZ2V0KTsKKyAgICAgICAgbGlua0p1bXBUNDxjb3B5Pih3cml0ZVRhcmdldCwg
aW5zdHJ1Y3Rpb24sIHRhcmdldCwgQnJhbmNoV2l0aExpbms6Ok5vKTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTxDb3B5RnVuY3Rpb24gY29weSA9IHBlcmZvcm1KSVRNZW1jcHk+CkBAIC0yODcyLDcg
KzI5MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zWzFdID0gT1BfTk9Q
X1QyYTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1syXSA9IE9QX05PUF9UMmI7CiAgICAgICAg
ICAgICBwZXJmb3JtSklUTWVtY3B5KHdyaXRlVGFyZ2V0IC0gNSwgaW5zdHJ1Y3Rpb25zLCAzICog
c2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAgICAgICAgICBsaW5rSnVtcFQ0KHdyaXRlVGFyZ2V0LCBp
bnN0cnVjdGlvbiwgdGFyZ2V0KTsKKyAgICAgICAgICAgIGxpbmtKdW1wVDQod3JpdGVUYXJnZXQs
IGluc3RydWN0aW9uLCB0YXJnZXQsIEJyYW5jaFdpdGhMaW5rOjpObyk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCBKVU1QX1RFTVBPUkFSWV9SRUdJU1RFUiA9
IEFSTVJlZ2lzdGVyczo6aXA7CiAgICAgICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBsbzE2ID0g
QVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHRhcmdldCkgKyAxKSk7CkBAIC0yODg3LDcgKzI5NTEsMjYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod3JpdGVUYXJnZXQgLSA1
LCBpbnN0cnVjdGlvbnMsIDUgKiBzaXplb2YodWludDE2X3QpKTsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKworICAgIHN0YXRpYyB2b2lkIGxpbmtCcmFuY2godWludDE2X3QqIGZyb20sIGNvbnN0
IHVpbnQxNl90KiBmcm9tSW5zdHJ1Y3Rpb24sIHZvaWQqIHRvLCBCcmFuY2hXaXRoTGluayBsaW5r
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRXZlbihmcm9tSW5zdHJ1Y3Rpb24pKTsKKyAgICAg
ICAgQVNTRVJUKGlzRXZlbihmcm9tKSk7CisgICAgICAgIEFTU0VSVChpc0V2ZW4odG8pKTsKKyAg
ICAgICAgQVNTRVJUKGxpbmsgPT0gQnJhbmNoV2l0aExpbms6OlllcyA/IGlzQkwoZnJvbSAtIDIp
IDogaXNCKGZyb20gLSAyKSk7CisKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYml0d2lzZV9j
YXN0PGludHB0cl90Pih0bykgLSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGZyb21JbnN0cnVjdGlv
bik7CisjaWYgRU5BQkxFKEpVTVBfSVNMQU5EUykKKyAgICAgICAgaWYgKCFpc0ludDwyNT4ob2Zm
c2V0KSkgeworICAgICAgICAgICAgdG8gPSBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzaW5nbGV0b24o
KS5nZXRKdW1wSXNsYW5kVG8oYml0d2lzZV9jYXN0PHZvaWQqPihmcm9tSW5zdHJ1Y3Rpb24pLCB0
byk7CisgICAgICAgICAgICBvZmZzZXQgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4oZnJvbUluc3RydWN0aW9uKTsKKyAgICAgICAgfQorI2VuZGlm
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW50PDI1PihvZmZzZXQpKTsKKworICAgICAgICBs
aW5rSnVtcFQ0KGZyb20sIGZyb21JbnN0cnVjdGlvbiwgdG8sIGxpbmspOworICAgIH0KKwogICAg
IHN0YXRpYyB1aW50MTZfdCB0d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1GaXJzdCh1aW50
MTZfdCBvcCwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9w
IHwgKGltbS5tX3ZhbHVlLmkgPDwgMTApIHwgaW1tLm1fdmFsdWUuaW1tNDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgKaW5kZXggMmFmOWJiOTA1YWRlMzE5MGU0NmU1NmRhNjAzMjcyNDAwYTA4YTU0YS4uMTYwY2M1
MjlhMGVjM2I0ZDdlNGRkNzg2OTE5MGUyMzNlNjg1ODU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAg
LTU0NSw4ICs1NDUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBMaW5rYWJsZSA9IDB4MSwKICAg
ICAgICAgICAgIE5lYXIgPSAweDIsCiAgICAgICAgICAgICBUYWlsID0gMHg0LAotICAgICAgICAg
ICAgTGlua2FibGVOZWFyID0gMHgzLAotICAgICAgICAgICAgTGlua2FibGVOZWFyVGFpbCA9IDB4
NywKKyAgICAgICAgICAgIExpbmthYmxlTmVhciA9IExpbmthYmxlIHwgTmVhciwKKyAgICAgICAg
ICAgIExpbmthYmxlTmVhclRhaWwgPSBMaW5rYWJsZSB8IE5lYXIgfCBUYWlsLAogICAgICAgICB9
OwogCiAgICAgICAgIENhbGwoKQpAQCAtOTA0LDcgKzkwNCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobmVhckNhbGwuY2FsbE1vZGUoKSkgewogICAgICAgICBjYXNlIE5lYXJD
YWxsTW9kZTo6VGFpbDoKLSAgICAgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlbGlua0p1bXAobmVh
ckNhbGwuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKKyAgICAg
ICAgICAgIEFzc2VtYmxlclR5cGU6OnJlbGlua1RhaWxDYWxsKG5lYXJDYWxsLmRhdGFMb2NhdGlv
bigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGNhc2UgTmVhckNhbGxNb2RlOjpSZWd1bGFyOgogICAgICAgICAgICAgQXNzZW1ibGVy
VHlwZTo6cmVsaW5rQ2FsbChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24udW50
YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpKTsKQEAgLTkyOSwxMiArOTI5LDYgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogCi0gICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KLSAgICBzdGF0aWMgdm9p
ZCByZXBhdGNoQ29tcGFjdChDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0PHRhZz4gZGF0YUxh
YmVsQ29tcGFjdCwgaW50MzJfdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFzc2VtYmxlclR5cGU6
OnJlcGF0Y2hDb21wYWN0KGRhdGFMYWJlbENvbXBhY3QudGVtcGxhdGUgZGF0YUxvY2F0aW9uKCks
IHZhbHVlKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAgIHN0YXRpYyB2
b2lkIHJlcGF0Y2hJbnQzMihDb2RlTG9jYXRpb25EYXRhTGFiZWwzMjx0YWc+IGRhdGFMYWJlbDMy
LCBpbnQzMl90IHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5oCmluZGV4IDJlNTBmZmRiYzgyYTkxOWYyOWI0ODJiOTFj
MjA0NjdjZGVjMDliNjMuLjYxZTM3OTE0MzZiN2YyMThhYTJjYzU2MDk3MDg5NzMzYjg0NjczNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQ29t
bW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21t
b24uaApAQCAtNDUsNiArNDUsMTQgQEAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgYm9vbCBpc0lP
UygpCiAjZW5kaWYKIH0KIAordGVtcGxhdGU8c2l6ZV90IGJpdHMsIHR5cGVuYW1lIFR5cGU+CitB
TFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBib29sIGlzSW50KFR5cGUgdCkKK3sKKyAgICBjb25zdGV4
cHIgc2l6ZV90IHNoaWZ0ID0gc2l6ZW9mKFR5cGUpICogQ0hBUl9CSVQgLSBiaXRzOworICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKFR5cGUpICogQ0hBUl9CSVQgPiBzaGlmdCwgInNoaWZ0IGlzIGxh
cmdlciB0aGFuIHRoZSBzaXplIG9mIHRoZSB2YWx1ZSIpOworICAgIHJldHVybiAoKHQgPDwgc2hp
ZnQpID4+IHNoaWZ0KSA9PSB0OworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJbnQ5KGludDMy
X3QgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlID09ICgodmFsdWUgPDwgMjMpID4+IDIzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5k
ZXggYjAyMjM1MTE5MjgxNGEyM2VjZjYyNjRiYzQ5NzVhMzg3ZWQ5NjVhMi4uYzAzOGE5N2ViNDA2
Y2ViNjRhYTZjYjc3ODE2ZTQ3OGM1NWY4ODdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKQEAgLTg0NSw2ICs4NDUsMTEgQEAgcHVibGlj
OgogICAgICAgICBjYWNoZUZsdXNoKHN0YXJ0LCBzaXplKTsKICAgICB9CiAKKyAgICBzdGF0aWMg
dm9pZCByZWxpbmtUYWlsQ2FsbCh2b2lkKiBmcm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAg
IHJlbGlua0p1bXAoZnJvbSwgdG8pOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJ
bnQzMih2b2lkKiBmcm9tLCBpbnQzMl90IHRvKQogICAgIHsKICAgICAgICAgTUlQU1dvcmQqIGlu
c24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oZnJvbSk7CkBAIC04NjcsMTEgKzg3Miw2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgc3Rh
dGljIHZvaWQgcmVwYXRjaENvbXBhY3Qodm9pZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCi0gICAg
ewotICAgICAgICByZXBhdGNoSW50MzIod2hlcmUsIHZhbHVlKTsKLSAgICB9Ci0KICAgICBzdGF0
aWMgdm9pZCByZXBhdGNoUG9pbnRlcih2b2lkKiBmcm9tLCB2b2lkKiB0bykKICAgICB7CiAgICAg
ICAgIHJlcGF0Y2hJbnQzMihmcm9tLCByZWludGVycHJldF9jYXN0PGludDMyX3Q+KHRvKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oCmluZGV4IDYzMzc3M2FlZWM5ZDFjOTY3ZmE5OGE1YWNiMmExMjQ1MmViMjUwN2MuLmU5
NjdmMmM3MWYyYmU0NjBkN2Q5Y2YxYjIxMjVmYWU2MmZmOWRhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC00
MSw3ICs0MSw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG51bUdQUnMgPSAzMjsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51
bUZQUnMgPSAzMjsKLSAgICAKKworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG5lYXJKdW1w
UmFuZ2UgPSAxMjggKiBNQjsKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBkYXRh
VGVtcFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmlwMDsKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgbWVtb3J5VGVtcFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmlwMTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaAppbmRleCBmZTdmMmQ1YzRmM2ZiNDFjMWQzNTVlZTk0NGRkZDVhNWFlMTQwMDhiLi41
MGViOWNmOWRmNDkxZjY0NDJkOWI5M2RlYjVjMWEzMmQ5NjY1MThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAt
MzgsNiArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBBc3NlbWJsZXIgPSBUQVJHRVRf
QVNTRU1CTEVSOwogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgbmVhckp1bXBSYW5nZSA9IDE2ICogTUI7CisKK3ByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6Omlw
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0g
QVJNUmVnaXN0ZXJzOjpyNjsKIApAQCAtMjIzNywxNiArMjI0MSwxNCBAQCBwdWJsaWM6CiAKICAg
ICBBTFdBWVNfSU5MSU5FIENhbGwgbmVhckNhbGwoKQogICAgIHsKLSAgICAgICAgbW92ZUZpeGVk
V2lkdGhFbmNvZGluZyhUcnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICByZXR1cm4gQ2FsbChtX2Fz
c2VtYmxlci5ibHgoZGF0YVRlbXBSZWdpc3RlciksIENhbGw6OkxpbmthYmxlTmVhcik7CisgICAg
ICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJsKCksIENhbGw6OkxpbmthYmxlTmVhcik7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIG5lYXJUYWlsQ2FsbCgpCiAgICAgewotICAg
ICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgIGludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7Ci0gICAgICAgIHJl
dHVybiBDYWxsKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpLCBDYWxsOjpMaW5rYWJs
ZU5lYXJUYWlsKTsKKyAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYigpLCBDYWxsOjpM
aW5rYWJsZU5lYXJUYWlsKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQ
dHJUYWcpCkBAIC0yNjU0LDEwICsyNjU2LDEyIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8UHRy
VGFnIHRhZz4KICAgICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBDYWxsIGNhbGws
IEZ1bmN0aW9uUHRyPHRhZz4gZnVuY3Rpb24pCiAgICAgewotICAgICAgICBpZiAoY2FsbC5pc0Zs
YWdTZXQoQ2FsbDo6VGFpbCkpCi0gICAgICAgICAgICBBUk12N0Fzc2VtYmxlcjo6bGlua0p1bXAo
Y29kZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgaWYgKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSkKKyAgICAgICAgICAgIEFzc2VtYmxl
cjo6bGlua1BvaW50ZXIoY29kZSwgY2FsbC5tX2xhYmVsLmxhYmVsQXRPZmZzZXQoLTIpLCBmdW5j
dGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgZWxzZSBpZiAoY2FsbC5pc0ZsYWdT
ZXQoQ2FsbDo6VGFpbCkpCisgICAgICAgICAgICBBc3NlbWJsZXI6OmxpbmtUYWlsQ2FsbChjb2Rl
LCBjYWxsLm1fbGFiZWwsIGZ1bmN0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBBUk12N0Fzc2VtYmxlcjo6bGlua0NhbGwoY29kZSwgY2FsbC5tX2xh
YmVsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIEFzc2VtYmxl
cjo6bGlua0NhbGwoY29kZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpKTsKICAgICB9CiAKICAgICBib29sIG1fbWFrZUp1bXBQYXRjaGFibGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRl
eCA5NGViNjJmNGExMjFhNjE0NTMyMzY5MTNhYzlkM2NiMzk0YWRiMGQyLi5lZDc3ZDI5OTY1NGNi
Mzc5YWI0ODdiYjc5ZjdjYjQwMGExODExZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTQxLDYgKzQxLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtR1BScyA9IDMyOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IDMyOwogCisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3QgbmVhckp1bXBSYW5nZSA9IDIgKiBHQjsKKwogICAgIE1hY3JvQXNzZW1i
bGVyTUlQUygpCiAgICAgICAgIDogbV9maXhlZFdpZHRoKGZhbHNlKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2
NC5oCmluZGV4IDM2NDY4NmRmZjY4OTk0ZGVhYTA0ZTk1NjYzNmFkNjJmMDJlYzExNTUuLjU2ZDRl
Y2JlY2M5MGM3Njg4MTI3NjQyZDQ3MTJmMzc4ZTQ1MGFlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaApAQCAt
NDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1H
UFJzID0gMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gMzI7CiAK
KyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBuZWFySnVtcFJhbmdlID0gMiAqIEdCOworCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBSSVNDVjY0
UmVnaXN0ZXJzOjp4MzA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIG1lbW9yeVRl
bXBSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6OngzMTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmlu
ZGV4IGNhMTQ1MTUyY2M1ZTQzNjM0NGFhNDhhMWFhMWMxMmM5ZjYzOGM4MjkuLmI0MDFlM2JmYTQ4
MTBiNGI0MjUxNGI0NzExNjAyNzQ3MmNmMDU1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTM3
LDYgKzM3LDggQEAgdXNpbmcgQXNzZW1ibGVyID0gVEFSR0VUX0FTU0VNQkxFUjsKIAogY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBuZWFySnVt
cFJhbmdlID0gMiAqIEdCOworCiAjaWYgQ1BVKFg4Nl82NCkKICAgICAvLyBVc2UgdGhpcyBkaXJl
Y3RseSBvbmx5IGlmIHlvdSdyZSBub3QgZ2VuZXJhdGluZyBjb2RlIHdpdGggaXQuCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgc19zY3JhdGNoUmVnaXN0ZXIg
PSBYODZSZWdpc3RlcnM6OnIxMTsKQEAgLTEyMzUsMTMgKzEyMzcsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGxvYWQxNihhZGRyZXNzLCBkZXN0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxQdHJUYWcg
dGFnPgotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0KENvZGVMb2NhdGlvbkRhdGFMYWJl
bENvbXBhY3Q8dGFnPiBkYXRhTGFiZWxDb21wYWN0LCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KHZhbHVlKSk7Ci0g
ICAgICAgIEFzc2VtYmxlclR5cGVfVDo6cmVwYXRjaENvbXBhY3QoZGF0YUxhYmVsQ29tcGFjdC5k
YXRhTG9jYXRpb24oKSwgdmFsdWUpOwotICAgIH0KLSAgICAKICAgICBEYXRhTGFiZWxDb21wYWN0
IGxvYWRDb21wYWN0V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JJU0NWNjRBc3NlbWJsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUklTQ1Y2NEFzc2VtYmxlci5oCmluZGV4IDE5
ZGRlMGI0M2JjOWY5NDg4MDIxZDE3MGFhMzg2OTBiMWYxMzM4YjEuLjk4YjZhMGI2M2I1OTQ4YzU0
NjE4NDNiZjFmNjQ4YTg3YjFlMzdiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUklTQ1Y2NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUklTQ1Y2NEFzc2VtYmxlci5oCkBAIC0xNjQyLDYgKzE2NDIsMTEgQEAgcHVi
bGljOgogICAgICAgICBjYWNoZUZsdXNoKGxvY2F0aW9uLCBzaXplb2YodWludDMyX3QpICogMik7
CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVsaW5rVGFpbENhbGwodm9pZCogZnJvbSwgdm9p
ZCogdG8pCisgICAgeworICAgICAgICByZWxpbmtKdW1wKGZyb20sIHRvKTsKKyAgICB9CisKICAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aFZNSGFsdCh2b2lkKiB3aGVyZSkKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90KiBsb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih3aGVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApp
bmRleCBhNDBlYzdkYTFhYjc0YTA4MDZkOTRiNmE3MGM5ZWI5ZmViY2U4NGJkLi5iMzliNzE4MmI5
YjgwZDljYzQyZjg1ZDZkY2ViMjQxNGUyMGIwZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTM3OTgsMTIgKzM3OTgsMTAgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgc2V0UmVsMzIoZnJvbSwgdG8pOwogICAgIH0KLSAgICAKLSAg
ICBzdGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdCh2b2lkKiB3aGVyZSwgaW50MzJfdCB2YWx1ZSkK
KworICAgIHN0YXRpYyB2b2lkIHJlbGlua1RhaWxDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVlID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50OF90
Pjo6bWluKCkpOwotICAgICAgICBBU1NFUlQodmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ4X3Q+OjptYXgoKSk7Ci0gICAgICAgIHNldEludDgod2hlcmUsIHZhbHVlKTsKKyAgICAgICAg
cmVsaW5rSnVtcChmcm9tLCB0byk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaElu
dDMyKHZvaWQqIHdoZXJlLCBpbnQzMl90IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlcGF0Y2guY3BwCmluZGV4IGU5NzYwY2NjOGVlNDA1MjY2Y2ZmNGEwYTMwNGQyOWEx
NThhYzg0MTYuLjJmZDVhYjZhOTE2NDA5ODNkMDEwMmI5MjM0MGNkMDJkNDg4ZWY4ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTE4OTUsMTcgKzE4
OTUsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgIH0KICAgICAKICAgICBSRUxFQVNF
X0FTU0VSVChjYWxsQ2FzZXMuc2l6ZSgpID09IGNhbGxzLnNpemUoKSk7Ci0gICAgZm9yIChDYWxs
VG9Db2RlUHRyIGNhbGxUb0NvZGVQdHIgOiBjYWxscykgewotI2lmIENQVShBUk1fVEhVTUIyKQot
ICAgICAgICAvLyBUYWlsIGNhbGwgc3BlY2lhbC1jYXNpbmcgZW5zdXJlcyBwcm9wZXIgbGlua2lu
ZyBvbiBBUk0gVGh1bWIyLCB3aGVyZSBhIHRhaWwgY2FsbCBqdW1wcyB0byBhbiBhZGRyZXNzCi0g
ICAgICAgIC8vIHdpdGggYSBub24tZGVjb3JhdGVkIGJvdHRvbSBiaXQgYnV0IGEgbm9ybWFsIGNh
bGwgY2FsbHMgYW4gYWRkcmVzcyB3aXRoIGEgZGVjb3JhdGVkIGJvdHRvbSBiaXQuCi0gICAgICAg
IGJvb2wgaXNUYWlsQ2FsbCA9IGNhbGxUb0NvZGVQdHIuY2FsbC5pc0ZsYWdTZXQoQ0NhbGxIZWxw
ZXJzOjpDYWxsOjpUYWlsKTsKLSAgICAgICAgdm9pZCogdGFyZ2V0ID0gaXNUYWlsQ2FsbCA/IGNh
bGxUb0NvZGVQdHIuY29kZVB0ci5kYXRhTG9jYXRpb24oKSA6IGNhbGxUb0NvZGVQdHIuY29kZVB0
ci5leGVjdXRhYmxlQWRkcmVzcygpOwotICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxUb0Nv
ZGVQdHIuY2FsbCwgRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3ModGFyZ2V0KSkp
OwotI2Vsc2UKKyAgICBmb3IgKENhbGxUb0NvZGVQdHIgY2FsbFRvQ29kZVB0ciA6IGNhbGxzKQog
ICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVuY3Rpb25QdHI8
SlNFbnRyeVB0clRhZz4oY2FsbFRvQ29kZVB0ci5jb2RlUHRyKSk7Ci0jZW5kaWYKLSAgICB9CiAK
ICAgICBpZiAoIWRvbmUuZW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoIWlzRGF0YUlDKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmlu
ZGV4IGJkZDk1OWNlYzc5MWU0NDczNmIxN2Q0YmU1OTZhMGM4ZjRlYjRkZDYuLmQzMjRlZDYyNWVj
YTgyZGY0ZGY4ZWVlNDI1YjE3ZjU5YjY1OTJiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL0l0ZXJhdGlvblN0YXR1cy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlUmVzZXJ2
YXRpb24uaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC05NCwyMiArOTUsMzYgQEAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSBG
SVhFRF9FWEVDVVRBQkxFX01FTU9SWV8KICNlbGlmIENQVShBUk02NCkKICNpZiBFTkFCTEUoSlVN
UF9JU0xBTkRTKQogc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5
UG9vbFNpemUgPSA1MTIgKiBNQjsKLS8vIFRoZXNlIHNpemVzIGd1YXJhbnRlZSB0aGF0IGFueSBq
dW1wIHdpdGhpbiBhbiBpc2xhbmQgY2FuIGp1bXAgZm9yd2FyZHMgb3IgYmFja3dhcmRzCi0vLyB0
byB0aGUgYWRqYWNlbnQgaXNsYW5kIGluIGEgc2luZ2xlIGluc3RydWN0aW9uLgotc3RhdGljIGNv
bnN0ZXhwciBzaXplX3QgcmVnaW9uU2l6ZSA9IDExMiAqIE1COwotc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgaXNsYW5kUmVnaW9uU2l6ZSA9IDE2ICogTUI7Ci1zdGF0aWMgY29uc3RleHByIHNpemVf
dCBtYXhOdW1iZXJPZlJlZ2lvbnMgPSBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSAvIHJl
Z2lvblNpemU7Ci1zdGF0aWMgY29uc3RleHByIHNpemVfdCBpc2xhbmRTaXplSW5CeXRlcyA9IDQ7
Ci1zdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhJc2xhbmRzUGVyUmVnaW9uID0gaXNsYW5kUmVn
aW9uU2l6ZSAvIGlzbGFuZFNpemVJbkJ5dGVzOwogI2Vsc2UKIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xTaXplID0gMTI4ICogTUI7CiAjZW5kaWYKKyNl
bGlmIENQVShBUk0pCisjaWYgRU5BQkxFKEpVTVBfSVNMQU5EUykKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xTaXplID0gMzIgKiBNQjsKKyNlbHNlCitz
dGF0aWMgY29uc3RleHByIHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDE2
ICogTUI7CisjZW5kaWYKICNlbGlmIENQVShYODZfNjQpCiBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDEgKiBHQjsKICNlbHNlCiBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDMyICogTUI7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShKVU1QX0lTTEFORFMpCisjaWYgQ1BVKEFSTTY0KQorc3Rh
dGljIGNvbnN0ZXhwciBkb3VibGUgaXNsYW5kUmVnaW9uU2l6ZUZyYWN0aW9uID0gMC4xMjU7Citz
dGF0aWMgY29uc3RleHByIHNpemVfdCBpc2xhbmRTaXplSW5CeXRlcyA9IDQ7CisjZWxpZiBDUFUo
QVJNKQorc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgaXNsYW5kUmVnaW9uU2l6ZUZyYWN0aW9uID0g
MC4wNTsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGlzbGFuZFNpemVJbkJ5dGVzID0gNDsKKyNl
bmRpZgorI2VuZGlmCisKKy8vIFF1aWNrIHNhbml0eSBjaGVjaywgaW4gY2FzZSBGSVhFRF9FWEVD
VVRBQkxFX01FTU9SWV9QT09MX1NJWkVfSU5fTUIgd2FzIHNldC4KKyNpZiAhRU5BQkxFKEpVTVBf
SVNMQU5EUykKK3N0YXRpY19hc3NlcnQoZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPD0g
TWFjcm9Bc3NlbWJsZXI6Om5lYXJKdW1wUmFuZ2UsICJFeGVjdXRhYmxlIHBvb2wgc2l6ZSBpcyB0
b28gbGFyZ2UgZm9yIG5lYXIganVtcC9jYWxsIHdpdGhvdXQgSlVNUF9JU0xBTkRTIik7CisjZW5k
aWYKKwogI2lmIENQVShBUk0pCiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBleGVjdXRhYmxlUG9v
bFJlc2VydmF0aW9uRnJhY3Rpb24gPSAwLjE1OwogI2Vsc2UKQEAgLTM0MywyMCArMzU4LDEzIEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpJVFJlc2VydmF0aW9uIGluaXRpYWxpemVKSVRQYWdlUmVz
ZXJ2YXRpb24oKQogICAgICAgICBpZiAocmVzZXJ2YXRpb24uc2l6ZSAqIGV4ZWN1dGFibGVQb29s
UmVzZXJ2YXRpb25GcmFjdGlvbiA8IG1pbmltdW1FeGVjdXRhYmxlUG9vbFJlc2VydmF0aW9uU2l6
ZSkKICAgICAgICAgICAgIHJlc2VydmF0aW9uLnNpemUgKz0gbWluaW11bUV4ZWN1dGFibGVQb29s
UmVzZXJ2YXRpb25TaXplOwogI2VuZGlmCi0KLSNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQotICAg
ICAgICAvLyBJZiBhc2tlZCBmb3IgYSByZXNlcnZhdGlvbiBzbWFsbGVyIHRoYW4gaXNsYW5kIHNp
emUsIGFzc3VtZSB0aGF0IHdlIHdhbnQgdGhhdCBzaXplIGFsbG9jYXRpb24KLSAgICAgICAgLy8g
cGx1cyBhbiBpc2xhbmQuIFRoZSBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byB0dXJuIG9mZiBqdW1w
IGlzbGFuZHMsIGJ1dCBzaW5jZSB3ZSBvbmx5IHVzZQotICAgICAgICAvLyB0aGlzIGZvciB0ZXN0
aW5nLCB0aGlzIGlzIHByb2JhYmx5IHRoZSBlYXNpZXIgd2F5IHRvIGRvIGl0LgotICAgICAgICAv
LwotICAgICAgICAvLyBUaGUgbWFpbiByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBzb21lIEpTQyBz
dHJlc3MgdGVzdHMgcnVuIHdpdGggYSA1MEtCIHBvb2wuIFRoaXMgaGFjayBtZWFucwotICAgICAg
ICAvLyB3ZSBkb24ndCBoYXZlIHRvIGNoYW5nZSBhbnl0aGluZyBhYm91dCB0aG9zZSB0ZXN0cy4K
LSAgICAgICAgaWYgKHJlc2VydmF0aW9uLnNpemUgPCBpc2xhbmRSZWdpb25TaXplKQotICAgICAg
ICAgICAgcmVzZXJ2YXRpb24uc2l6ZSArPSBpc2xhbmRSZWdpb25TaXplOwotI2VuZGlmIC8vIEVO
QUJMRShKVU1QX0lTTEFORFMpCiAgICAgfQogICAgIHJlc2VydmF0aW9uLnNpemUgPSBzdGQ6Om1h
eChyb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplKCksIHJlc2VydmF0aW9uLnNpemUpLCBwYWdl
U2l6ZSgpICogMik7CiAKKyNpZiAhRU5BQkxFKEpVTVBfSVNMQU5EUykKKyAgICBSRUxFQVNFX0FT
U0VSVChyZXNlcnZhdGlvbi5zaXplIDw9IE1hY3JvQXNzZW1ibGVyOjpuZWFySnVtcFJhbmdlLCAi
RXhlY3V0YWJsZSBwb29sIHNpemUgaXMgdG9vIGxhcmdlIGZvciBuZWFyIGp1bXAvY2FsbCB3aXRo
b3V0IEpVTVBfSVNMQU5EUyIpOworI2VuZGlmCisKICNpZiBVU0UoTElCUEFTX0pJVF9IRUFQKQog
ICAgIGlmIChyZXNlcnZhdGlvbi5zaXplIDwgbWluaW11bVBvb2xTaXplRm9yU2VncmVnYXRlZEhl
YXApCiAgICAgICAgIGppdF9oZWFwX3J1bnRpbWVfY29uZmlnLm1heF9zZWdyZWdhdGVkX29iamVj
dF9zaXplID0gMDsKQEAgLTQzMCwxMCArNDM4LDcgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRh
YmxlQWxsb2NhdG9yIGZpbmFsIHsKIAogcHVibGljOgogICAgIEZpeGVkVk1Qb29sRXhlY3V0YWJs
ZUFsbG9jYXRvcigpCi0jaWYgRU5BQkxFKEpVTVBfSVNMQU5EUykKLSAgICAgICAgOiBtX2FsbG9j
YXRvcnMoY29uc3RydWN0Rml4ZWRTaXplQXJyYXlXaXRoQXJndW1lbnRzPFJlZ2lvbkFsbG9jYXRv
ciwgbWF4TnVtYmVyT2ZSZWdpb25zPigqdGhpcykpCi0gICAgICAgICwgbV9udW1BbGxvY2F0b3Jz
KG1heE51bWJlck9mUmVnaW9ucykKLSNlbHNlCisjaWYgIUVOQUJMRShKVU1QX0lTTEFORFMpCiAg
ICAgICAgIDogbV9hbGxvY2F0b3IoKnRoaXMpCiAjZW5kaWYKICAgICB7CkBAIC00NDEsMzEgKzQ0
NiwyOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVzZXJ2YXRpb24gPSBXVEZNb3ZlKHJlc2VydmF0
aW9uLnBhZ2VSZXNlcnZhdGlvbik7CiAgICAgICAgIGlmIChtX3Jlc2VydmF0aW9uKSB7CiAjaWYg
RU5BQkxFKEpVTVBfSVNMQU5EUykKKyAgICAgICAgICAgIC8vIFRoZXNlIHNpemVzIGd1YXJhbnRl
ZSB0aGF0IGFueSBqdW1wIHdpdGhpbiBhbiBpc2xhbmQgY2FuIGp1bXAgZm9yd2FyZHMgb3IgYmFj
a3dhcmRzCisgICAgICAgICAgICAvLyB0byB0aGUgYWRqYWNlbnQgaXNsYW5kIGluIGEgc2luZ2xl
IGluc3RydWN0aW9uLgorICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGlzbGFuZFJlZ2lvblNpemUg
PSByb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4oTWFj
cm9Bc3NlbWJsZXI6Om5lYXJKdW1wUmFuZ2UgKiBpc2xhbmRSZWdpb25TaXplRnJhY3Rpb24pKTsK
KyAgICAgICAgICAgIG1fcmVnaW9uU2l6ZSA9IE1hY3JvQXNzZW1ibGVyOjpuZWFySnVtcFJhbmdl
IC0gaXNsYW5kUmVnaW9uU2l6ZTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzUGFnZUFs
aWduZWQoaXNsYW5kUmVnaW9uU2l6ZSkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNQ
YWdlQWxpZ25lZChtX3JlZ2lvblNpemUpKTsKKyAgICAgICAgICAgIG1fbnVtQWxsb2NhdG9ycyA9
IChyZXNlcnZhdGlvbi5zaXplICsgbV9yZWdpb25TaXplIC0gMSkgLyBtX3JlZ2lvblNpemU7Cisg
ICAgICAgICAgICBtX2FsbG9jYXRvcnMgPSBGaXhlZFZlY3RvcjxSZWdpb25BbGxvY2F0b3I+Ojpj
cmVhdGVXaXRoU2l6ZUFuZENvbnN0cnVjdG9yQXJndW1lbnRzKG1fbnVtQWxsb2NhdG9ycywgKnRo
aXMpOworCiAgICAgICAgICAgICB1aW50cHRyX3Qgc3RhcnQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihtZW1vcnlTdGFydCgpKTsKICAgICAgICAgICAgIHVpbnRwdHJfdCByZXNlcnZhdGlvbkVu
ZCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG1lbW9yeUVuZCgpKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtYmVyT2ZSZWdpb25zOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGFydCA8IHJlc2VydmF0aW9uRW5kIHx8IE9wdGlvbnM6
OmppdE1lbW9yeVJlc2VydmF0aW9uU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhcnQg
Pj0gcmVzZXJ2YXRpb25FbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9udW1BbGxvY2F0b3Jz
ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIG1fYWxsb2NhdG9yc1tpXS5tX3N0YXJ0ID0gdGFnQ29kZVB0cjxFeGVjdXRh
YmxlTWVtb3J5UHRyVGFnPihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXJ0KSk7Ci0gICAgICAgICAg
ICAgICAgbV9hbGxvY2F0b3JzW2ldLm1fZW5kID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5
UHRyVGFnPihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXJ0ICsgcmVnaW9uU2l6ZSkpOwotICAgICAg
ICAgICAgICAgIGlmIChtX2FsbG9jYXRvcnNbaV0uZW5kKCkgPiByZXNlcnZhdGlvbkVuZCkgewot
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSB0YWtlbiBhIHBhZ2UgZm9yIHRoZSBl
eGVjdXRhYmxlIG9ubHkgY29weSB0aHVuay4KLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaSA9PSBtYXhOdW1iZXJPZlJlZ2lvbnMgLSAxIHx8IE9wdGlvbnM6OmppdE1lbW9yeVJl
c2VydmF0aW9uU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9hbGxvY2F0b3JzW2ldLm1f
ZW5kID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHJlc2VydmF0aW9uRW5kKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gbV9hbGxvY2F0b3JzW2ldLmFsbG9jYXRvclNpemUoKTsK
LSAgICAgICAgICAgICAgICBtX2FsbG9jYXRvcnNbaV0uYWRkRnJlc2hGcmVlU3BhY2UoYml0d2lz
ZV9jYXN0PHZvaWQqPihtX2FsbG9jYXRvcnNbaV0uc3RhcnQoKSksIHNpemVJbkJ5dGVzKTsKLSAg
ICAgICAgICAgICAgICBtX2J5dGVzUmVzZXJ2ZWQgKz0gc2l6ZUluQnl0ZXM7Ci0KLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2FsbG9jYXRvcnNbaV0uYWxsb2NhdG9yU2l6ZSgpIDwg
cmVnaW9uU2l6ZSk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hbGxvY2F0b3Jz
W2ldLmlzbGFuZEJlZ2luKCkgPiBtX2FsbG9jYXRvcnNbaV0uc3RhcnQoKSk7Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9hbGxvY2F0b3JzW2ldLmlzbGFuZEJlZ2luKCkgPCBtX2Fs
bG9jYXRvcnNbaV0uZW5kKCkpOwotCi0gICAgICAgICAgICAgICAgc3RhcnQgKz0gcmVnaW9uU2l6
ZTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1BbGxvY2F0b3JzOyAr
K2kpIHsKKyAgICAgICAgICAgICAgICB1aW50cHRyX3QgZW5kID0gc3RhcnQgKyBtX3JlZ2lvblNp
emU7CisgICAgICAgICAgICAgICAgdWludHB0cl90IGlzbGFuZEJlZ2luID0gZW5kIC0gaXNsYW5k
UmVnaW9uU2l6ZTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgaXNsYW5kIGluIHRoZSB2ZXJ5IGxh
c3QgcmVnaW9uIGlzIG5ldmVyIGFjdHVhbGx5IHVzZWQgKGV2ZXJ5dGhpbmcgZ29lcyBiYWNrd2Fy
ZHMpLCBidXQgd2UKKyAgICAgICAgICAgICAgICAvLyBjYW4ndCBwdXQgY29kZSB0aGVyZSBpbiBj
YXNlIHRoZXkgZG8gbmVlZCB0byB1c2UgYSBiYWNrd2FyZCBqdW1wIGlzbGFuZCwgc28gc2V0IHVw
IGFjY29yZGluZ2x5LgorICAgICAgICAgICAgICAgIGlmIChpID09IG1fbnVtQWxsb2NhdG9ycyAt
IDEpCisgICAgICAgICAgICAgICAgICAgIGlzbGFuZEJlZ2luID0gZW5kID0gc3RkOjptaW4oaXNs
YW5kQmVnaW4sIHJlc2VydmF0aW9uRW5kKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChlbmQgPD0gcmVzZXJ2YXRpb25FbmQpOworICAgICAgICAgICAgICAgIG1fYWxsb2NhdG9yc1tp
XS5jb25maWd1cmUoc3RhcnQsIGlzbGFuZEJlZ2luLCBlbmQpOworICAgICAgICAgICAgICAgIG1f
Ynl0ZXNSZXNlcnZlZCArPSBtX2FsbG9jYXRvcnNbaV0uYWxsb2NhdG9yU2l6ZSgpOworICAgICAg
ICAgICAgICAgIHN0YXJ0ICs9IG1fcmVnaW9uU2l6ZTsKICAgICAgICAgICAgIH0KICNlbHNlCiAg
ICAgICAgICAgICBtX2FsbG9jYXRvci5hZGRGcmVzaEZyZWVTcGFjZShyZXNlcnZhdGlvbi5iYXNl
LCByZXNlcnZhdGlvbi5zaXplKTsKQEAgLTcwMCw3ICs3MDIsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9pc2xhbmRzRm9ySnVtcFNvdXJjZUxvY2F0aW9uLmluc2VydChpc2xhbmRzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFJlZ2lvbkFsbG9jYXRvciogYWxsb2NhdG9yID0gZmluZFJlZ2lv
bihqdW1wTG9jYXRpb24gPiB0YXJnZXQgPyBqdW1wTG9jYXRpb24gLSByZWdpb25TaXplIDoganVt
cExvY2F0aW9uKTsKKyAgICAgICAgUmVnaW9uQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBmaW5kUmVn
aW9uKGp1bXBMb2NhdGlvbiA+IHRhcmdldCA/IGp1bXBMb2NhdGlvbiAtIG1fcmVnaW9uU2l6ZSA6
IGp1bXBMb2NhdGlvbik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFsbG9jYXRvcik7CiAgICAg
ICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+YWxsb2NhdGVJc2xhbmQoKTsKICAgICAgICAg
dm9pZCogY3VycmVudElzbGFuZCA9IHJlc3VsdDsKQEAgLTcwOSwxMCArNzExLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBpc2xhbmRzLT5qdW1wSXNsYW5kcy5hcHBlbmQoQ29kZUxvY2F0aW9u
TGFiZWw8RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4odGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5
UHRyVGFnPihjdXJyZW50SXNsYW5kKSkpOwogCiAgICAgICAgICAgICBhdXRvIGVtaXRKdW1wVG8g
PSBbJl0gKHZvaWQqIHRhcmdldCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFS
TTY0QXNzZW1ibGVyOjpjYW5FbWl0SnVtcChiaXR3aXNlX2Nhc3Q8dm9pZCo+KGp1bXBMb2NhdGlv
biksIHRhcmdldCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFzc2VtYmxlcjo6
Y2FuRW1pdEp1bXAoYml0d2lzZV9jYXN0PHZvaWQqPihqdW1wTG9jYXRpb24pLCB0YXJnZXQpKTsK
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyIGppdDsKLSAgICAgICAgICAgICAgICBh
dXRvIGp1bXAgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIGF1dG8gbmVhclRhaWxDYWxs
ID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcihqaXQsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4oY3VycmVudElzbGFuZCks
IGlzbGFuZFNpemVJbkJ5dGVzLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpKdW1wSXNsYW5kLCBKSVRD
b21waWxhdGlvbk11c3RTdWNjZWVkLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOwogCkBAIC03MjQsMjAgKzcyNiwyMCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIC8vIGhhcyBhIGp1bXAgbGlua2VkIHRvIHRoaXMgaXNsYW5k
IGhhc24ndCBmaW5hbGl6ZWQgeWV0LCB0aGV5J3JlIGd1YXJhbnRlZWQgdG8gZmluYWxpemUgdGhl
cmUgY29kZSBhbmQgcnVuIGFuIGlzYi4KICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnNldElz
SnVtcElzbGFuZCgpOwogCi0gICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIENv
ZGVMb2NhdGlvbkxhYmVsPE5vUHRyVGFnPih0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICBsaW5r
QnVmZmVyLmxpbmsobmVhclRhaWxDYWxsLCBDb2RlTG9jYXRpb25MYWJlbDxOb1B0clRhZz4odGFy
Z2V0KSk7CiAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRh
ZywgIkp1bXAgSXNsYW5kOiAlbHUiLCBqdW1wTG9jYXRpb24pOwogICAgICAgICAgICAgfTsKIAot
ICAgICAgICAgICAgaWYgKEFSTTY0QXNzZW1ibGVyOjpjYW5FbWl0SnVtcChiaXR3aXNlX2Nhc3Q8
dm9pZCo+KGp1bXBMb2NhdGlvbiksIGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSkpIHsKKyAg
ICAgICAgICAgIGlmIChBc3NlbWJsZXI6OmNhbkVtaXRKdW1wKGJpdHdpc2VfY2FzdDx2b2lkKj4o
anVtcExvY2F0aW9uKSwgYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSkgewogICAgICAgICAg
ICAgICAgIGVtaXRKdW1wVG8oYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdWludHB0cl90IG5l
eHRJc2xhbmRSZWdpb247CiAgICAgICAgICAgICBpZiAoanVtcExvY2F0aW9uID4gdGFyZ2V0KQot
ICAgICAgICAgICAgICAgIG5leHRJc2xhbmRSZWdpb24gPSBqdW1wTG9jYXRpb24gLSByZWdpb25T
aXplOworICAgICAgICAgICAgICAgIG5leHRJc2xhbmRSZWdpb24gPSBqdW1wTG9jYXRpb24gLSBt
X3JlZ2lvblNpemU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV4dElzbGFu
ZFJlZ2lvbiA9IGp1bXBMb2NhdGlvbiArIHJlZ2lvblNpemU7CisgICAgICAgICAgICAgICAgbmV4
dElzbGFuZFJlZ2lvbiA9IGp1bXBMb2NhdGlvbiArIG1fcmVnaW9uU2l6ZTsKIAogICAgICAgICAg
ICAgUmVnaW9uQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBmaW5kUmVnaW9uKG5leHRJc2xhbmRSZWdp
b24pOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWxsb2NhdG9yKTsKQEAgLTgyMSw2ICs4
MjMsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgUmVnaW9uQWxsb2NhdG9yKEZpeGVkVk1Qb29sRXhl
Y3V0YWJsZUFsbG9jYXRvciYgYWxsb2NhdG9yKQogICAgICAgICAgICAgOiBCYXNlKGFsbG9jYXRv
cikKICAgICAgICAgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShwYWdlU2l6ZSgpICUg
aXNsYW5kU2l6ZUluQnl0ZXMpLCAiQ3VycmVudCBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gdGhp
cyIpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb25maWd1cmUodWludHB0cl90IHN0YXJ0
LCB1aW50cHRyX3QgaXNsYW5kQmVnaW4sIHVpbnRwdHJfdCBlbmQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXJ0IDwgaXNsYW5kQmVnaW4pOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNsYW5kQmVnaW4gPD0gZW5kKTsKKyAgICAgICAgICAgIG1fc3RhcnQg
PSB0YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KGJpdHdpc2VfY2FzdDx2b2lkKj4o
c3RhcnQpKTsKKyAgICAgICAgICAgIG1faXNsYW5kQmVnaW4gPSB0YWdDb2RlUHRyPEV4ZWN1dGFi
bGVNZW1vcnlQdHJUYWc+KGJpdHdpc2VfY2FzdDx2b2lkKj4oaXNsYW5kQmVnaW4pKTsKKyAgICAg
ICAgICAgIG1fZW5kID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KGVuZCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISgodGhpcy0+
ZW5kKCkgLSB0aGlzLT5zdGFydCgpKSAlIHBhZ2VTaXplKCkpKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCEoKHRoaXMtPmVuZCgpIC0gdGhpcy0+aXNsYW5kQmVnaW4oKSkgJSBwYWdlU2l6
ZSgpKSk7CisgICAgICAgICAgICBhZGRGcmVzaEZyZWVTcGFjZShiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHRoaXMtPnN0YXJ0KCkpLCBhbGxvY2F0b3JTaXplKCkpOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODI4LDEzICs4NDMs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogICAgICAgICB1aW50cHRyX3Qgc3RhcnQoKSB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90Pih1bnRhZ0NvZGVQdHI8RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4obV9zdGFy
dCkpOyB9CisgICAgICAgIHVpbnRwdHJfdCBpc2xhbmRCZWdpbigpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KHVudGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihtX2lz
bGFuZEJlZ2luKSk7IH0KICAgICAgICAgdWludHB0cl90IGVuZCgpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KHVudGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihtX2Vu
ZCkpOyB9CiAKLSAgICAgICAgdWludHB0cl90IGlzbGFuZEJlZ2luKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgLy8gW3N0YXJ0LCBhbGxvY2F0b3JFbmQpCi0gICAgICAgICAgICByZXR1cm4gZW5k
KCkgLSBpc2xhbmRSZWdpb25TaXplOwotICAgICAgICB9CisgICAgICAgIHNpemVfdCBtYXhJc2xh
bmRzSW5UaGlzUmVnaW9uKCkgeyByZXR1cm4gKGVuZCgpIC0gaXNsYW5kQmVnaW4oKSkgLyBpc2xh
bmRTaXplSW5CeXRlczsgfQogCiAgICAgICAgIHVpbnRwdHJfdCBhbGxvY2F0b3JTaXplKCkKICAg
ICAgICAgewpAQCAtODcyLDEyICs4ODQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh2
b2lkKiByZXN1bHQgPSBmaW5kUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKIAotICAgICAgICAgICAgaXNsYW5kQml0cy5yZXNpemUoaXNsYW5kQml0cy5zaXplKCkgKyBp
c2xhbmRzUGVyUGFnZSgpKTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc2xhbmRCaXRzLnNp
emUoKSA+IG1heElzbGFuZHNQZXJSZWdpb24pKQorICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG9s
ZFNpemUgPSBpc2xhbmRCaXRzLnNpemUoKTsKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhJ
c2xhbmRzSW5UaGlzUmVnaW9uID0gdGhpcy0+bWF4SXNsYW5kc0luVGhpc1JlZ2lvbigpOworCisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvbGRTaXplIDw9IG1heElzbGFuZHNJblRoaXNSZWdp
b24pOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKG9sZFNpemUgPT0gbWF4SXNsYW5kc0luVGhp
c1JlZ2lvbikpCiAgICAgICAgICAgICAgICAgY3Jhc2hPbkp1bXBJc2xhbmRFeGhhdXN0aW9uKCk7
CiAKLSAgICAgICAgICAgIHVpbnRwdHJfdCBwYWdlQmVnaW4gPSBlbmQgLSAoaXNsYW5kQml0cy5z
aXplKCkgKiBpc2xhbmRTaXplSW5CeXRlcyk7IC8vIFtpc2xhbmRCZWdpbiwgZW5kKQotICAgICAg
ICAgICAgbV9maXhlZEFsbG9jYXRvci5tX3Jlc2VydmF0aW9uLmNvbW1pdChiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHBhZ2VCZWdpbiksIHBhZ2VTaXplKCkpOworICAgICAgICAgICAgY29uc3Qgc2l6ZV90
IG5ld1NpemUgPSBzdGQ6Om1pbihvbGRTaXplICsgaXNsYW5kc1BlclBhZ2UoKSwgbWF4SXNsYW5k
c0luVGhpc1JlZ2lvbik7CisgICAgICAgICAgICBpc2xhbmRCaXRzLnJlc2l6ZShuZXdTaXplKTsK
KworICAgICAgICAgICAgdWludHB0cl90IGlzbGFuZHNCZWdpbiA9IGVuZCAtIChuZXdTaXplICog
aXNsYW5kU2l6ZUluQnl0ZXMpOyAvLyBbaXNsYW5kc0JlZ2luLCBlbmQpCisgICAgICAgICAgICBt
X2ZpeGVkQWxsb2NhdG9yLm1fcmVzZXJ2YXRpb24uY29tbWl0KGJpdHdpc2VfY2FzdDx2b2lkKj4o
aXNsYW5kc0JlZ2luKSwgKG5ld1NpemUgLSBvbGRTaXplKSAqIGlzbGFuZFNpemVJbkJ5dGVzKTsK
IAogICAgICAgICAgICAgdm9pZCogcmVzdWx0ID0gZmluZFJlc3VsdCgpOwogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTkxNiw4ICs5MzQsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCisgICAgcHJpdmF0ZToKICAgICAg
ICAgLy8gUmFuZ2U6IFtzdGFydCwgZW5kKQogICAgICAgICB2b2lkKiBtX3N0YXJ0OworICAgICAg
ICB2b2lkKiBtX2lzbGFuZEJlZ2luOwogICAgICAgICB2b2lkKiBtX2VuZDsKICAgICAgICAgRmFz
dEJpdFZlY3RvciBpc2xhbmRCaXRzOwogICAgIH07CkBAIC05NTUsOCArOTc1LDkgQEAgcHJpdmF0
ZToKICAgICBMb2NrIG1fbG9jazsKICAgICBQYWdlUmVzZXJ2YXRpb24gbV9yZXNlcnZhdGlvbjsK
ICNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQotICAgIHN0ZDo6YXJyYXk8UmVnaW9uQWxsb2NhdG9y
LCBtYXhOdW1iZXJPZlJlZ2lvbnM+IG1fYWxsb2NhdG9yczsKLSAgICB1bnNpZ25lZCBtX251bUFs
bG9jYXRvcnM7CisgICAgc2l6ZV90IG1fcmVnaW9uU2l6ZTsKKyAgICBzaXplX3QgbV9udW1BbGxv
Y2F0b3JzOworICAgIEZpeGVkVmVjdG9yPFJlZ2lvbkFsbG9jYXRvcj4gbV9hbGxvY2F0b3JzOwog
ICAgIFJlZEJsYWNrVHJlZTxJc2xhbmRzLCB2b2lkKj4gbV9pc2xhbmRzRm9ySnVtcFNvdXJjZUxv
Y2F0aW9uOwogI2Vsc2UKICAgICBBbGxvY2F0b3IgbV9hbGxvY2F0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9FbWJl
ZGRlZEZpeGVkVmVjdG9yLmgKaW5kZXggNGRmYjc5NjM0YmQ4NjZiNDQ0OGEyMWQ4NzZiMjFkODU5
ZTk3ZWIzMC4uNGY3NzgxZWM2ZTU1YmU3ZmM0ZTdkODcyNGVmNzAyYzFiZDlhMzFmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaApAQCAtNjcsNiArNjcsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gVW5pcXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNl
OjphbGxvY2F0aW9uU2l6ZShzaXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSwgc3RkOjpt
b3ZlX2l0ZXJhdG9yIHsgY29udGFpbmVyLmJlZ2luKCkgfSwgc3RkOjptb3ZlX2l0ZXJhdG9yIHsg
Y29udGFpbmVyLmVuZCgpIH0pIH07CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBzdGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZVdp
dGhTaXplQW5kQ29uc3RydWN0b3JBcmd1bWVudHModW5zaWduZWQgc2l6ZSwgQXJncyYmLi4uIGFy
Z3MpCisgICAgeworICAgICAgICByZXR1cm4gVW5pcXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFz
dE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShzaXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Io
c2l6ZSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB9OworICAgIH0KKwogICAgIFVuaXF1
ZVJlZjxFbWJlZGRlZEZpeGVkVmVjdG9yPiBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gY3JlYXRlKEJhc2U6OmJlZ2luKCksIEJhc2U6OmVuZCgpKTsKQEAgLTk0LDExICsxMDAs
MTggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bnB1dEl0ZXJhdG9yPgogICAgIEVtYmVkZGVkRml4ZWRWZWN0b3IodW5zaWduZWQgc2l6ZSwgSW5w
dXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQogICAgICAgICA6IEJhc2Uoc2l6
ZSwgZmlyc3QsIGxhc3QpCiAgICAgewogICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgZXhwbGljaXQgRW1iZWRkZWRGaXhlZFZlY3Rvcih1bnNpZ25lZCBzaXplLCBB
cmdzJiYuLi4gYXJncykgLy8gY3JlYXRlIHdpdGggZ2l2ZW4gc2l6ZSBhbmQgY29uc3RydWN0b3Ig
YXJndW1lbnRzIGZvciBhbGwgZWxlbWVudHMKKyAgICAgICAgOiBCYXNlKHNpemUsIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oIGIvU291cmNlL1dU
Ri93dGYvRml4ZWRWZWN0b3IuaAppbmRleCAyNmRmYWY5MDkwZDQ5YWEwOThlZDEwNjVlNmQyNjYw
NTM3NjE2MGUyLi4wOTQ4OGVjY2FjNjRjMDc1YzgyZjkwOWU1NDkxMzJjYTJkNDFjMDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpeGVkVmVjdG9yLmgKQEAgLTk5LDYgKzk5LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIAorcHJpdmF0ZToKKyAgICBGaXhlZFZlY3RvcihzdGQ6OnVuaXF1ZV9w
dHI8U3RvcmFnZT4gc3RvcmFnZSkKKyAgICAgICAgOiAgbV9zdG9yYWdlIHsgV1RGTW92ZShzdG9y
YWdlKSB9CisgICAgeyB9CisKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHN0YXRpYyBGaXhlZFZlY3RvciBjcmVhdGVXaXRoU2l6ZUFuZENvbnN0cnVjdG9yQXJn
dW1lbnRzKHNpemVfdCBzaXplLCBBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVy
biBGaXhlZFZlY3RvcjxUPiB7IHNpemUgPyBTdG9yYWdlOjpjcmVhdGVXaXRoU2l6ZUFuZENvbnN0
cnVjdG9yQXJndW1lbnRzKHNpemUsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikubW92ZVRv
VW5pcXVlUHRyKCkgOiBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZT4geyBudWxscHRyIH0gfTsKKyAg
ICB9CisKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3Rv
cmFnZS0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZSA/IG1fc3RvcmFnZS0+aXNFbXB0eSgpIDogdHJ1ZTsgfQogICAgIHNpemVfdCBieXRl
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+Ynl0ZVNpemUoKSA6
IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDQxMTM1NGY2YzExZjk0MWQ3M2QzNWM2
MmFhZGQwZGE3M2VjNGE1ZDMuLjM1NTBkNDFiNDUyYTljYTE0OWExNWFjMDBmNWVmMDUzODkzMTA4
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtNjExLDkgKzYxMSwxMSBAQAogI2VuZGlm
CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9KVU1QX0lTTEFORFMpICYmIENQVShBUk02
NCkgJiYgQ1BVKEFERFJFU1M2NCkgJiYgRU5BQkxFKEpJVCkKKyNpZiAhZGVmaW5lZChFTkFCTEVf
SlVNUF9JU0xBTkRTKSAmJiBFTkFCTEUoSklUKQorI2lmIChDUFUoQVJNNjQpICYmIENQVShBRERS
RVNTNjQpKSB8fCBDUFUoQVJNX1RIVU1CMikKICNkZWZpbmUgRU5BQkxFX0pVTVBfSVNMQU5EUyAx
CiAjZW5kaWYKKyNlbmRpZgogCiAvKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgdHVybmVkIGludG8g
YW4gI2Vycm9yIGludmFyaWFudCAqLwogLyogVGhlIEZUTCAqZG9lcyBub3QqIHdvcmsgb24gMzIt
Yml0IHBsYXRmb3Jtcy4gRGlzYWJsZSBpdCBldmVuIGlmIHNvbWVvbmUgYXNrZWQgdXMgdG8gZW5h
YmxlIGl0LiAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVHJhaWxpbmdBcnJheS5oIGIv
U291cmNlL1dURi93dGYvVHJhaWxpbmdBcnJheS5oCmluZGV4IGYyYmE5ZWY4ZDdiY2Q2MzcyMDk0
YjFlMzJhNGFlYTYzZTk0MzUxYzguLmVkZDJlNDgyYmVjYzc4ZWViMGMzNzM5YzA2MGJkODgxZjE4
MWZlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJyYXkuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9UcmFpbGluZ0FycmF5LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0
b3I+OwogICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRl
cmF0b3I8Y29uc3RfaXRlcmF0b3I+OwogCitwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVHJhaWxp
bmdBcnJheSh1bnNpZ25lZCBzaXplKQogICAgICAgICA6IG1fc2l6ZShzaXplKQogICAgIHsKQEAg
LTcwLDExICs3MSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5
KGZpcnN0LCBsYXN0LCBiZWdpbigpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIFRyYWlsaW5nQXJyYXkodW5zaWduZWQgc2l6ZSwgQXJncyYmLi4uIGFyZ3Mp
IC8vIGNyZWF0ZSB3aXRoIGdpdmVuIHNpemUgYW5kIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBmb3Ig
YWxsIGVsZW1lbnRzCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWxfdjxEZXJpdmVkPik7CisgICAgICAgIFZlY3RvclR5cGVP
cGVyYXRpb25zPFQ+Ojppbml0aWFsaXplV2l0aEFyZ3MoYmVnaW4oKSwgZW5kKCksIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCiAgICAgflRyYWlsaW5nQXJyYXkoKQogICAg
IHsKICAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46OmRlc3RydWN0KGJlZ2luKCksIGVu
ZCgpKTsKICAgICB9CiAKK3B1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZSh1bnNpZ25lZCBzaXplKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9mZnNldE9m
RGF0YSgpICsgc2l6ZSAqIHNpemVvZihUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Zl
Y3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggYzA1MGE4M2Q3ZWM5MjJmN2Yy
NmUwOGFlZjNmNmIxMmY2MDJjOWZmZC4uZWJhYThmZTkwYzA4MWQ1NmZiMDU1NjYwZGNlZWM2YTQw
MGIzZjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNl
L1dURi93dGYvVmVjdG9yLmgKQEAgLTk3LDYgKzk3LDEzIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFs
aXplcjx0cnVlLCBmYWxzZSwgVD4KICAgICB7CiAgICAgICAgIGluaXRpYWxpemVJZk5vblBPRChi
ZWdpbiwgZW5kKTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVXaXRoQXJncyhUKiBiZWdpbiwgVCogZW5kLCBBcmdzJiYu
Li4gYXJncykKKyAgICB7CisgICAgICAgIGZvciAoVCAqY3VyID0gYmVnaW47IGN1ciAhPSBlbmQ7
ICsrY3VyKQorICAgICAgICAgICAgbmV3KE5vdE51bGwsIGN1cikgVChhcmdzLi4uKTsKKyAgICB9
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjU1LDYgKzI2MiwxMiBAQCBzdHJ1Y3Qg
VmVjdG9yVHlwZU9wZXJhdGlvbnMKICAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8VmVjdG9yVHJh
aXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46OmNhbkluaXRpYWxp
emVXaXRoTWVtc2V0LCBUPjo6aW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKICAgICB9CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gQXJncz4KKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplV2l0
aEFyZ3MoVCogYmVnaW4sIFQqIGVuZCwgQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBW
ZWN0b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZl
Y3RvclRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojppbml0aWFsaXplV2l0
aEFyZ3MoYmVnaW4sIGVuZCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisK
ICAgICBzdGF0aWMgdm9pZCBtb3ZlKFQqIHNyYywgVCogc3JjRW5kLCBUKiBkc3QpCiAgICAgewog
ICAgICAgICBWZWN0b3JNb3ZlcjxWZWN0b3JUcmFpdHM8VD46OmNhbk1vdmVXaXRoTWVtY3B5LCBU
Pjo6bW92ZShzcmMsIHNyY0VuZCwgZHN0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDE3ZWRhMGRiNzgwYmExZjBhOTFmY2M3MTc5MDk3
ZGQyOGE5NThmMy4uYzU4NDQ1YzUwZGI1NmE3YmY1NGRkZmQwMDY4ZjJiZGRhZDNiZGNhYyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMi0wMy0yOCAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXVtBUk12N10gU3VwcG9ydCBwcm9wZXIgbmVhciBjYWxscyBhbmQgSlVNUF9J
U0xBTkRTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IG1pY3JvYmVuY2htYXJrcy9sZXQtY29uc3QtdGR6LWVudmlyb25tZW50LXBhcnNpbmctYW5kLWhh
c2gtY29uc2luZy1zcGVlZC5qczoKKwogMjAyMi0wMy0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhZGRpdGlvbmFsIHJlcG9ydGVkIHJlZ3Jlc3Np
b24gdGVzdHMgdG8gZW5zdXJlIG11bHRpbGluZSB0b2tlbidzIGNvbHVtbiBvZmZzZXQgaXMgcmVz
ZXQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2xldC1jb25zdC10ZHotZW52
aXJvbm1lbnQtcGFyc2luZy1hbmQtaGFzaC1jb25zaW5nLXNwZWVkLmpzIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvbGV0LWNvbnN0LXRkei1lbnZpcm9ubWVudC1wYXJzaW5nLWFuZC1oYXNoLWNv
bnNpbmctc3BlZWQuanMKaW5kZXggMjYxODIzZWYzYzVmNTIzNWIyN2Y5YWU3ZmEyNmE4MDQ3MjRl
MGMxNi4uNDE5YTUwZTdkM2EwZTE3NWM4MWFhMTY1MTEzMjc2YTE4NWI4MDYyNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbGV0LWNvbnN0LXRkei1lbnZpcm9ubWVudC1wYXJz
aW5nLWFuZC1oYXNoLWNvbnNpbmctc3BlZWQuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvbGV0LWNvbnN0LXRkei1lbnZpcm9ubWVudC1wYXJzaW5nLWFuZC1oYXNoLWNvbnNpbmctc3Bl
ZWQuanMKQEAgLTEsNCArMSw0IEBACi0vL0AgZGVmYXVsdE5vTm9MTEludFJ1biBpZiAkYXJjaGl0
ZWN0dXJlID09ICJtaXBzIgorLy9AIGRlZmF1bHROb05vTExJbnRSdW4gaWYgJGFyY2hpdGVjdHVy
ZSA9PSAibWlwcyIgfHwgJGFyY2hpdGVjdHVyZSA9PSAiYXJtIgogLyoKICAqIENvcHlyaWdodCBq
UXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzLCBodHRwczovL2pxdWVyeS5v
cmcvCiAgKgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456900</attachid>
            <date>2022-04-07 02:07:34 -0700</date>
            <delta_ts>2022-04-07 10:04:36 -0700</delta_ts>
            <desc>review fixes</desc>
            <filename>bug-238143-20220407100733.patch</filename>
            <type>text/plain</type>
            <size>50671</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDRjODVjZjJiZTA3OWVjN2Y3NTllOWM4Zjk2YzU5YzRkNDgxYjUwLi5mZGE5NmQzMmNlYjEwNjMx
MTY2OWI4ZWZiOTg3YWM5ZDRkNDg2OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAyMi0wNC0wNyAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXVtBUk12N10gU3VwcG9ydCBwcm9wZXIgbmVhciBjYWxscyBhbmQgSlVNUF9J
U0xBTkRTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIElt
cGxlbWVudCBuZWFyQ2FsbCBhbmQgbmVhclRhaWxDYWxsIGFzIHNpbmdsZSBpbnN0cnVjdGlvbiBk
aXJlY3QKKyAgICAgICAgYnJhbmNoZXMgb24gQVJNdjcvVGh1bWItMi4gKFdpbGwgbmVlZCB0byBz
dXBwb3J0IHRoZXNlIGZvciBXYXNtIEpJVHMsCisgICAgICAgIHRvIGltcGxlbWVudCB0aHJlYWRT
YWZlUGF0Y2hhYmxlTmVhcmNhbGwuKSBUbyBtYWtlIHRoaXMgcG9zc2libGUgd2hpbGUKKyAgICAg
ICAgYWxzbyBoYXZpbmcgYW4gZXhlY3V0YWJsZSBwb29sIHNpemUgbGFyZ2VyIHRoYW4gdGhlIGJy
YW5jaCByYW5nZSwgSQorICAgICAgICBhbHNvIHBvcnRlZCBKVU1QX0lTTEFORFMuCisKKyAgICAg
ICAgVG8gcG9ydCBKVU1QX0lTTEFORFMsIGEgcmVmb3JtdWxhdGlvbiBvZiB0aGUgcmVnaW9uIGFs
bG9jYXRpb25zIHdhcworICAgICAgICBuZWNlc3NhcnksIHdoaWNoIGlzIG5vdyBkb25lIGluIHRl
cm1zIG9mIHRoZSByYW5nZSBvZiB0aGUKKyAgICAgICAgbmVhckNhbGwvbmVhclRhaWxDYWxsIG1h
Y3JvYXNzZW1ibGVyIG1hY3Jvcy4gRm9yIEFSTTY0LCB0aGUgYmVoYXZpb3VyCisgICAgICAgIHNo
b3VsZCBiZSBpZGVudGljYWwuCisKKyAgICAgICAgVGhlIGp1bXAgaXNsYWQgcmVzZXJ2YXRpb24g
b24gQVJNdjcgaXMgc2V0IHRvIDUlIG9mIGV4ZWN1dGFibGUgbWVtb3J5CisgICAgICAgIHNpemUs
IHdoaWNoIGlzIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgYXMgdGhlIGJhc2VsaW5lIEpJVCBjb2Rl
IHNpemUKKyAgICAgICAgc2F2aW5nIHByb3ZpZGVkIGJ5IHVzaW5nIHNob3J0IGJyYW5jaGVzIGZv
ciBuZWFyIGNhbGxzLCBzbyB0aGUgY2hhbmdlCisgICAgICAgIHNob3VsZCBiZSBuZXV0cmFsIG92
ZXJhbGwgd2l0aCByZXNwZWN0IHRvIGV4ZWN1dGFibGUgbWVtb3J5CisgICAgICAgIGNvbnN1bXB0
aW9uLgorCisgICAgICAgIEFsc28gbWFkZSBpdCBwb3NzaWJsZSBmb3IgdGhlIC0taml0TWVtb3J5
UmVzZXJ2YXRpb25TaXplIG9wdGlvbiB0bworICAgICAgICByZXF1ZXN0IEpJVCBtZW1vcnkgdGhh
dCBpcyBsYXJnZXIgdGhhbiB0aGUgZGVmYXVsdCBoYXJkY29kZWQgc2l6ZQorICAgICAgICB3aGls
ZSB1c2luZyBKVU1QX0lTTEFORFMgKHdlIG5lZWQgdGhpcyBmb3IgdGVzdGluZyBvbiBBUk12Nywg
d2hpY2ggaGFzCisgICAgICAgIGEgc21hbGxlciBkZWZhdWx0IGV4ZWN1dGFibGUgcG9vbCBzaXpl
KS4gVG8gZG8gdGhpcyB0aGUgcmVnaW9uCisgICAgICAgIGFsbG9jYXRvcnMgYXJlIG5vIGxvbmdl
ciBzdGF0aWNhbGx5IGFsbG9jYXRlZCBidXQgYXJlIGhlbGQgaW4gYQorICAgICAgICBGaXhlZFZl
Y3Rvci4KKworICAgICAgICBBbHNvIHJlbW92ZWQgdGhlIHVudXNlZCByZXBhdGNoQ29tcGFjdCBt
ZXRob2RzIGZyb20gYXNzZW1ibGVycy4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2Vt
Ymxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6aXNFdmVuKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6Om1ha2VFdmVuKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmJsKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2Vt
Ymxlcjo6bGlua1RhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmtD
YWxsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlbGlua0NhbGwpOgorICAgICAg
ICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVsaW5rVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpB
Uk12N0Fzc2VtYmxlcjo6cHJlcGFyZUZvckF0b21pY1JlbGlua0p1bXBDb25jdXJyZW50bHkpOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cHJlcGFyZUZvckF0b21pY1JlbGlua0NhbGxD
b25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmNhbkVtaXRKdW1wKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmlzQkwpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2Vt
Ymxlcjo6bGlua0p1bXBUNCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rQ29u
ZGl0aW9uYWxKdW1wVDQpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGlua0p1bXBB
YnNvbHV0ZSk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rQnJhbmNoKToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwpOgorICAgICAgICAqIGFz
c2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaDoKKyAgICAgICAgKEpTQzo6aXNJbnQpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpuZWFyQ2FsbCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om5lYXJUYWlsQ2FsbCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmxpbmtDYWxsKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UklTQ1Y2NC5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
OgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAg
ICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplSklUUGFnZVJlc2VydmF0aW9uKToKKwogMjAyMi0wNC0wNiAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsIFN0cnVjdHVyZTo6Z2V0IGluc3RlYWQgb2Yg
U3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkgb24gdGhlIG11dGF0b3IgdGhyZWFkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU1
YmZiZDU1ZjIyNjBkZDFlNDI2NThkMWZkZmY2NjQ3MTk2Y2RhMmMuLmMyODQ1YzI3MGZiZGY0ZjBk
ZGQxZGZjNTAzY2EyMTBmZmNhMGExNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDQtMDcg
IEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ11bQVJNdjddIFN1
cHBvcnQgcHJvcGVyIG5lYXIgY2FsbHMgYW5kIEpVTVBfSVNMQU5EUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTQzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBTdXBwb3J0IGNvbnN0cnVjdG9yIGFyZ3Vt
ZW50cyBmb3IgRml4ZWRWZWN0b3IgZWxlbWVudCBpbml0aWFsaXphdGlvbi4KKworICAgICAgICAq
IHd0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmg6CisgICAgICAgICogd3RmL0ZpeGVkVmVjdG9yLmg6
CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpGaXhlZFZlY3Rvcik6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtRW5hYmxlLmg6CisgICAgICAgICogd3RmL1RyYWlsaW5nQXJyYXkuaDoKKyAgICAg
ICAgKFdURjo6VHJhaWxpbmdBcnJheTo6VHJhaWxpbmdBcnJheSk6CisgICAgICAgICogd3RmL1Zl
Y3Rvci5oOgorICAgICAgICAoV1RGOjpWZWN0b3JUeXBlT3BlcmF0aW9uczo6aW5pdGlhbGl6ZVdp
dGhBcmdzKToKKwogMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9y
IHdpdGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1bmN0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKaW5kZXggMjll
NWZmOTVkNmM4ZjE0Nzc2MWJjMTdjNTZjNTc4MzUyNzYxYTE2My4uZjJmNjMzNTI2N2UxNmFhODky
YTcwODM5ZWIzNWFhYmY1NWNmNDI4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtNTYsMTQgKzU2LDYgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRzLCB0eXBlbmFtZSBUeXBlPgotQUxXQVlTX0lO
TElORSBjb25zdGV4cHIgYm9vbCBpc0ludChUeXBlIHQpCi17Ci0gICAgY29uc3RleHByIHNpemVf
dCBzaGlmdCA9IHNpemVvZihUeXBlKSAqIENIQVJfQklUIC0gYml0czsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihUeXBlKSAqIENIQVJfQklUID4gc2hpZnQsICJzaGlmdCBpcyBsYXJnZXIgdGhh
biB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUiKTsKLSAgICByZXR1cm4gKCh0IDw8IHNoaWZ0KSA+PiBz
aGlmdCkgPT0gdDsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpczRCeXRlQWxpZ25l
ZChjb25zdCB2b2lkKiBwdHIpCiB7CiAgICAgcmV0dXJuICEocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocHRyKSAmIDB4Myk7CkBAIC0yODg5LDYgKzI4ODEsMTEgQEAgcHVibGljOgogICAgICAg
ICBjYWNoZUZsdXNoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSkgLSAxLCBzaXplb2YoaW50
KSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVsaW5rVGFpbENhbGwodm9pZCogZnJvbSwg
dm9pZCogdG8pCisgICAgeworICAgICAgICByZWxpbmtKdW1wKGZyb20sIHRvKTsKKyAgICB9CisK
ICNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQogICAgIHN0YXRpYyB2b2lkKiBwcmVwYXJlRm9yQXRv
bWljUmVsaW5rSnVtcENvbmN1cnJlbnRseSh2b2lkKiBmcm9tLCB2b2lkKiB0bykKICAgICB7CkBA
IC0yOTA4LDMwICsyOTA1LDYgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogICAgIAotICAgIHN0
YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0KHZvaWQqIHdoZXJlLCBpbnQzMl90IHZhbHVlKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCEodmFsdWUgJiB+MHgzZmY4KSk7Ci0KLSAgICAgICAgTWVtT3BT
aXplIHNpemU7Ci0gICAgICAgIGJvb2wgVjsKLSAgICAgICAgTWVtT3Agb3BjOwotICAgICAgICBp
bnQgaW1tMTI7Ci0gICAgICAgIFJlZ2lzdGVySUQgcm47Ci0gICAgICAgIFJlZ2lzdGVySUQgcnQ7
Ci0gICAgICAgIGJvb2wgZXhwZWN0ZWQgPSBkaXNhc3NlbWJsZUxvYWRTdG9yZVJlZ2lzdGVyVW5z
aWduZWRJbW1lZGlhdGUod2hlcmUsIHNpemUsIFYsIG9wYywgaW1tMTIsIHJuLCBydCk7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0ZWQsIGV4cGVjdGVkICYmIHNpemUgPj0gTWVtT3BTaXpl
XzMyICYmICFWICYmIG9wYyA9PSBNZW1PcF9MT0FEKTsgLy8gZXhwZWN0IDMyLzY0IGJpdCBsb2Fk
IHRvIEdQUi4KLQotICAgICAgICBpZiAoc2l6ZSA9PSBNZW1PcFNpemVfMzIpCi0gICAgICAgICAg
ICBpbW0xMiA9IGVuY29kZVBvc2l0aXZlSW1tZWRpYXRlPDMyPih2YWx1ZSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGltbTEyID0gZW5jb2RlUG9zaXRpdmVJbW1lZGlhdGU8NjQ+KHZhbHVl
KTsKLSAgICAgICAgaW50IGluc24gPSBsb2FkU3RvcmVSZWdpc3RlclVuc2lnbmVkSW1tZWRpYXRl
KHNpemUsIFYsIG9wYywgaW1tMTIsIHJuLCBydCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHJv
dW5kVXBUb011bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPih3aGVyZSkgPT0gd2hlcmUpOwotICAg
ICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwgc2l6ZW9mKGludCkpOwotCi0gICAg
ICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsKLSAgICB9Ci0KICAgICB1bnNpZ25l
ZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmRlYnVnT2Zmc2V0KCk7IH0KIAogI2lm
IE9TKExJTlVYKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAppbmRleCA2ZDE4YmU4ZDY2MGY4
OGY5NzM0N2UyOWM2OTViMTJmYzg4Y2Q2ODhkLi45Y2E2YTRhNmM4NDFjNjc2NTlmY2I1NDZjN2Y0
NDJiZDdkMjg5ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTXY3QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
Uk12N0Fzc2VtYmxlci5oCkBAIC00OTEsNiArNDkxLDE2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
IAorICAgIC8vIEluIHRoZSBBUk12NyBJU0EsIHRoZSBMU0Igb2YgYSBjb2RlIHBvaW50ZXIgaW5k
aWNhdGVzIHdoZXRoZXIgdGhlIHRhcmdldCB1c2VzIFRodW1iIHZzIEFSTQorICAgIC8vIGVuY29k
aW5nLiBUaGVzZSB1dGlsaXR5IGZ1bmN0aW9ucyBhcmUgdGhlcmUgZm9yIHdoZW4gd2UgbmVlZCB0
byBkZWFsIHdpdGggdGhpcy4KKyAgICBzdGF0aWMgYm9vbCBpc0V2ZW4oY29uc3Qgdm9pZCogcHRy
KSB7IHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIpICYgMSk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc0V2ZW4oQXNzZW1ibGVyTGFiZWwgJmxhYmVsKSB7IHJldHVybiAhKGxh
YmVsLm9mZnNldCgpICYgMSk7IH0KKyAgICBzdGF0aWMgdm9pZCogbWFrZUV2ZW4oY29uc3Qgdm9p
ZCogcHRyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc0V2ZW4ocHRyKSk7CisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
cHRyKSAmIH4xKTsKKyAgICB9CisKICAgICAvLyBBUk12NywgQXBweC1BLjYuMwogICAgIHN0YXRp
YyBib29sIEJhZFJlZyhSZWdpc3RlcklEIHJlZykKICAgICB7CkBAIC02MDksNiArNjE5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgT1BfVk9SUl9UMSAgICAgID0gMHhFRjIwLAogICAgICAgICBPUF9C
X1QzYSAgICAgICAgPSAweEYwMDAsCiAgICAgICAgIE9QX0JfVDRhICAgICAgICA9IDB4RjAwMCwK
KyAgICAgICAgT1BfQkxfVDRhICAgICAgID0gMHhGMDAwLAogICAgICAgICBPUF9BTkRfaW1tX1Qx
ICAgPSAweEYwMDAsCiAgICAgICAgIE9QX1RTVF9pbW0gICAgICA9IDB4RjAxMCwKICAgICAgICAg
T1BfQklDX2ltbV9UMSAgID0gMHhGMDIwLApAQCAtNjk3LDYgKzcwOCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIE9QX0RNQl9JU0hTVF9UMWIgPSAweDhGNUEsCiAgICAgICAgIE9QX0JfVDNiICAgICAg
ICAgPSAweDgwMDAsCiAgICAgICAgIE9QX0JfVDRiICAgICAgICAgPSAweDkwMDAsCisgICAgICAg
IE9QX0JMX1Q0YiAgICAgICAgPSAweEQwMDAsCiAgICAgfSBPcGNvZGVJRDI7CiAKICAgICBzdHJ1
Y3QgRm91ckZvdXJzIHsKQEAgLTcxOSw2ICs3MzEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgfSBt
X3U7CiAgICAgfTsKIAorICAgIGVudW0gY2xhc3MgQnJhbmNoV2l0aExpbmsgOiBib29sIHsKKyAg
ICAgICAgTm8gPSBmYWxzZSwKKyAgICAgICAgWWVzID0gdHJ1ZQorICAgIH07CisKICAgICBjbGFz
cyBBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjsKIAogICAgIC8vIGZhbHNlIG1lYW5zIGVsc2UhCkBA
IC05MjEsNiArOTM4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9w
MTZPcDE2KE9QX0JfVDRhLCBPUF9CX1Q0Yik7CiAgICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5s
YWJlbCgpOwogICAgIH0KKworICAgIC8vIE9ubHkgYWxsb3dlZCBpbiBJVCAoaWYgdGhlbikgYmxv
Y2sgaWYgbGFzdCBpbnN0cnVjdGlvbi4KKyAgICBBTFdBWVNfSU5MSU5FIEFzc2VtYmxlckxhYmVs
IGJsKCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDE2T3AxNihPUF9CTF9U
NGEsIE9QX0JMX1Q0Yik7CisgICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAg
IH0KICAgICAKICAgICAvLyBPbmx5IGFsbG93ZWQgaW4gSVQgKGlmIHRoZW4pIGJsb2NrIGlmIGxh
c3QgaW5zdHJ1Y3Rpb24uCiAgICAgQUxXQVlTX0lOTElORSBBc3NlbWJsZXJMYWJlbCBibHgoUmVn
aXN0ZXJJRCBybSkKQEAgLTIyNzMsNyArMjI5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGxp
bmtKdW1wVDM8Y29weT4ocmVjb3JkLmNvbmRpdGlvbigpLCByZWludGVycHJldF9jYXN0X3B0cjx1
aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRvKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIExpbmtKdW1wVDQ6Ci0gICAgICAgICAgICBsaW5rSnVtcFQ0PGNvcHk+
KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4oZnJvbSksIGZyb21JbnN0cnVjdGlvbiwg
dG8pOworICAgICAgICAgICAgbGlua0p1bXBUNDxjb3B5PihyZWludGVycHJldF9jYXN0X3B0cjx1
aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRvLCBCcmFuY2hXaXRoTGluazo6Tm8p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGlua0NvbmRpdGlvbmFsSnVtcFQ0
OgogICAgICAgICAgICAgbGlua0NvbmRpdGlvbmFsSnVtcFQ0PGNvcHk+KHJlY29yZC5jb25kaXRp
b24oKSwgcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3QqPihmcm9tKSwgZnJvbUluc3RydWN0
aW9uLCB0byk7CkBAIC0yMzIxLDEyICsyMzQ1LDIwIEBAIHB1YmxpYzoKICAgICAgICAgbGlua0p1
bXBBYnNvbHV0ZShsb2NhdGlvbiwgbG9jYXRpb24sIHRvKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBmcm9tLCB2b2lkKiB0bykK
KyAgICBzdGF0aWMgdm9pZCBsaW5rVGFpbENhbGwodm9pZCogY29kZSwgQXNzZW1ibGVyTGFiZWwg
ZnJvbSwgdm9pZCogdG8pCiAgICAgewotICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0
PGludHB0cl90Pihjb2RlKSAmIDEpKTsKICAgICAgICAgQVNTRVJUKGZyb20uaXNTZXQoKSk7CiAK
LSAgICAgICAgc2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkgKyBmcm9tLm9mZnNldCgpKSAtIDEsIHRvLCBmYWxzZSk7
CisgICAgICAgIHVpbnQxNl90KiBsb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3Qq
PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSArIGZyb20ub2Zmc2V0KCkpOworICAg
ICAgICBsaW5rQnJhbmNoKGxvY2F0aW9uLCBsb2NhdGlvbiwgbWFrZUV2ZW4odG8pLCBCcmFuY2hX
aXRoTGluazo6Tm8pOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQqIGNv
ZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGZyb20uaXNTZXQoKSk7CisKKyAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNvZGUpICsgZnJv
bS5vZmZzZXQoKSk7CisgICAgICAgIGxpbmtCcmFuY2gobG9jYXRpb24sIGxvY2F0aW9uLCBtYWtl
RXZlbih0byksIEJyYW5jaFdpdGhMaW5rOjpZZXMpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lk
IGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIHdoZXJlLCB2b2lkKiB2YWx1
ZSkKQEAgLTIzNTAsMTEgKzIzODIsNTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVs
aW5rQ2FsbCh2b2lkKiBmcm9tLCB2b2lkKiB0bykKICAgICB7Ci0gICAgICAgIEFTU0VSVCghKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICYgMSkpOworICAgICAgICBBU1NFUlQoaXNF
dmVuKGZyb20pKTsKIAotICAgICAgICBzZXRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2
X3QqPihmcm9tKSAtIDEsIHRvLCB0cnVlKTsKKyAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pOworICAgICAgICBpZiAoaXNCTChsb2Nh
dGlvbiAtIDIpKSB7CisgICAgICAgICAgICBsaW5rQnJhbmNoKGxvY2F0aW9uLCBsb2NhdGlvbiwg
bWFrZUV2ZW4odG8pLCBCcmFuY2hXaXRoTGluazo6WWVzKTsKKyAgICAgICAgICAgIGNhY2hlRmx1
c2gobG9jYXRpb24gLSAyLCAyICogc2l6ZW9mKHVpbnQxNl90KSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRQb2ludGVyKGxvY2F0aW9uIC0gMSwgdG8sIHRy
dWUpOwogICAgIH0KLSAgICAKKworICAgIHN0YXRpYyB2b2lkIHJlbGlua1RhaWxDYWxsKHZvaWQq
IGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRXZlbihmcm9tKSk7CisK
KyAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+
KGZyb20pOworICAgICAgICBsaW5rQnJhbmNoKGxvY2F0aW9uLCBsb2NhdGlvbiwgdG8sIEJyYW5j
aFdpdGhMaW5rOjpObyk7CisgICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24gLSAyLCAyICogc2l6
ZW9mKHVpbnQxNl90KSk7CisgICAgfQorCisjaWYgRU5BQkxFKEpVTVBfSVNMQU5EUykKKyAgICBz
dGF0aWMgdm9pZCogcHJlcGFyZUZvckF0b21pY1JlbGlua0p1bXBDb25jdXJyZW50bHkodm9pZCog
ZnJvbSwgdm9pZCogdG8pCisgICAgeworICAgICAgICBBU1NFUlQoaXNFdmVuKGZyb20pKTsKKyAg
ICAgICAgQVNTRVJUKGlzRXZlbih0bykpOworCisgICAgICAgIGludHB0cl90IG9mZnNldCA9IGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4odG8pIC0gYml0d2lzZV9jYXN0PGludHB0cl90Pihmcm9tKTsK
KyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ob2Zmc2V0KSA9PSBvZmZzZXQpOworCisg
ICAgICAgIGlmIChpc0ludDwyNT4ob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiB0bzsKKwor
ICAgICAgICByZXR1cm4gRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2luZ2xldG9uKCkuZ2V0SnVtcElz
bGFuZFRvQ29uY3VycmVudGx5KGZyb20sIHRvKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCog
cHJlcGFyZUZvckF0b21pY1JlbGlua0NhbGxDb25jdXJyZW50bHkodm9pZCogZnJvbSwgdm9pZCog
dG8pCisgICAgeworICAgICAgICBBU1NFUlQoaXNFdmVuKGZyb20pKTsKKworICAgICAgICByZXR1
cm4gcHJlcGFyZUZvckF0b21pY1JlbGlua0p1bXBDb25jdXJyZW50bHkoZnJvbSwgbWFrZUV2ZW4o
dG8pKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkKiByZWFkQ2FsbFRhcmdldCh2
b2lkKiBmcm9tKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDEpOwpAQCAtMjM2NywyNyArMjQzOCw2IEBAIHB1Ymxp
YzoKICAgICAgICAgc2V0SW50MzIod2hlcmUsIHZhbHVlLCB0cnVlKTsKICAgICB9CiAgICAgCi0g
ICAgc3RhdGljIHZvaWQgcmVwYXRjaENvbXBhY3Qodm9pZCogd2hlcmUsIGludDMyX3Qgb2Zmc2V0
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG9mZnNldCA+PSAtMjU1ICYmIG9mZnNldCA8PSAyNTUp
OwotCi0gICAgICAgIGJvb2wgYWRkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG9mZnNldCA8IDApIHsK
LSAgICAgICAgICAgIGFkZCA9IGZhbHNlOwotICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgb2Zmc2V0IHw9IChhZGQgPDwgOSk7Ci0gICAg
ICAgIG9mZnNldCB8PSAoMSA8PCAxMCk7Ci0gICAgICAgIG9mZnNldCB8PSAoMSA8PCAxMSk7Ci0K
LSAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+
KHdoZXJlKTsKLSAgICAgICAgdWludDE2X3QgaW5zdHJ1Y3Rpb24gPSBsb2NhdGlvblsxXSAmIH4o
KDEgPDwgMTIpIC0gMSk7Ci0gICAgICAgIGluc3RydWN0aW9uIHw9IG9mZnNldDsKLSAgICAgICAg
cGVyZm9ybUpJVE1lbWNweShsb2NhdGlvbiArIDEsICZpbnN0cnVjdGlvbiwgc2l6ZW9mKHVpbnQx
Nl90KSk7Ci0gICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24sIHNpemVvZih1aW50MTZfdCkgKiAy
KTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBhdGNoUG9pbnRlcih2b2lkKiB3aGVyZSwg
dm9pZCogdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGlu
dHB0cl90Pih3aGVyZSkgJiAxKSk7CkBAIC0yNDA4LDcgKzI0NTgsNyBAQCBwdWJsaWM6CiAjaWYg
T1MoTElOVVgpCiAgICAgICAgIGlmIChjYW5CZUp1bXBUNChyZWludGVycHJldF9jYXN0PHVpbnQx
Nl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCksIHRvKSkgewogICAgICAgICAgICAgdWludDE2X3QqIHB0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVjdGlvblN0YXJ0KSArIDI7Ci0g
ICAgICAgICAgICBsaW5rSnVtcFQ0KHB0ciwgcHRyLCB0byk7CisgICAgICAgICAgICBsaW5rSnVt
cFQ0KHB0ciwgcHRyLCB0bywgQnJhbmNoV2l0aExpbms6Ok5vKTsKICAgICAgICAgICAgIGNhY2hl
Rmx1c2gocHRyIC0gMiwgc2l6ZW9mKHVpbnQxNl90KSAqIDIpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgdWludDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihp
bnN0cnVjdGlvblN0YXJ0KSArIDU7CkBAIC0yNDE3LDcgKzI0NjcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICNlbHNlCiAgICAgICAgIHVpbnQxNl90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVp
bnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOwotICAgICAgICBsaW5rSnVtcFQ0KHB0ciwg
cHRyLCB0byk7CisgICAgICAgIGxpbmtKdW1wVDQocHRyLCBwdHIsIHRvLCBCcmFuY2hXaXRoTGlu
azo6Tm8pOwogICAgICAgICBjYWNoZUZsdXNoKHB0ciAtIDIsIHNpemVvZih1aW50MTZfdCkgKiAy
KTsKICNlbmRpZgogICAgIH0KQEAgLTI1MjgsMTAgKzI1NzgsMTggQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogCisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5FbWl0SnVtcCh2b2lk
KiBmcm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIC8vICdmcm9tJyBob2xkcyB0aGUgYWRk
cmVzcyBvZiB0aGUgYnJhbmNoIGluc3RydWN0aW9uLiBUaGUgYnJhbmNoIHJhbmdlIGhvd2V2ZXIg
aXMgcmVsYXRpdmUKKyAgICAgICAgLy8gdG8gdGhlIGFyY2hpdGVjdHVyYWwgdmFsdWUgb2YgdGhl
IFBDIHdoaWNoIGlzIDQgbGFyZ2VyIHRoYW4gdGhlIGFkZHJlc3Mgb2YgdGhlIGJyYW5jaC4KKyAg
ICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYml0d2lzZV9jYXN0PGludHB0cl90Pih0bykgLSAoYml0
d2lzZV9jYXN0PGludHB0cl90Pihmcm9tKSArIDQpOworICAgICAgICByZXR1cm4gaXNJbnQ8MjU+
KG9mZnNldCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIC8vIFZGUCBvcGVyYXRpb25zIGNvbW1v
bmx5IHRha2Ugb25lIG9yIG1vcmUgNS1iaXQgb3BlcmFuZHMsIHR5cGljYWxseSByZXByZXNlbnRp
bmcgYQotICAgIC8vIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVyIG51bWJlci4gIFRoaXMgd2lsbCBj
b21tb25seSBiZSBlbmNvZGVkIGluIHRoZSBpbnN0cnVjdGlvbgotICAgIC8vIGluIHR3byBwYXJ0
cywgd2l0aCBvbmUgc2luZ2xlIGJpdCBmaWVsZCwgYW5kIG9uZSA0LWJpdCBmaWVsZC4gIEluIHRo
ZSBjYXNlIG9mCisgICAgLy8gZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgbnVtYmVyLiBUaGlzIHdp
bGwgY29tbW9ubHkgYmUgZW5jb2RlZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyAgICAvLyBpbiB0d28g
cGFydHMsIHdpdGggb25lIHNpbmdsZSBiaXQgZmllbGQsIGFuZCBvbmUgNC1iaXQgZmllbGQuIElu
IHRoZSBjYXNlIG9mCiAgICAgLy8gZG91YmxlIHByZWNpc2lvbiBvcGVyYW5kcyB0aGUgaGlnaCBi
aXQgb2YgdGhlIHJlZ2lzdGVyIG51bWJlciB3aWxsIGJlIGVuY29kZWQKICAgICAvLyBzZXBhcmF0
ZWx5LCBhbmQgZm9yIHNpbmdsZSBwcmVjaXNpb24gb3BlcmFuZHMgdGhlIGhpZ2ggYml0IG9mIHRo
ZSByZWdpc3RlciBudW1iZXIKICAgICAvLyB3aWxsIGJlIGVuY29kZWQgaW5kaXZpZHVhbGx5LgpA
QCAtMjY1NCw2ICsyNzEyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAoKGluc3RydWN0
aW9uWzBdICYgMHhmODAwKSA9PSBPUF9CX1Q0YSkgJiYgKChpbnN0cnVjdGlvblsxXSAmIDB4ZDAw
MCkgPT0gT1BfQl9UNGIpOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIGlzQkwoY29uc3Qgdm9p
ZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiA9
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oYWRkcmVzcyk7CisgICAgICAgIHJldHVybiAo
KGluc3RydWN0aW9uWzBdICYgMHhmODAwKSA9PSBPUF9CTF9UNGEpICYmICgoaW5zdHJ1Y3Rpb25b
MV0gJiAweGQwMDApID09IE9QX0JMX1Q0Yik7CisgICAgfQorCiAgICAgc3RhdGljIGJvb2wgaXNC
WChjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgY29uc3QgdWludDE2X3QqIGlu
c3RydWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihhZGRyZXNzKTsKQEAgLTI3
ODcsNyArMjg1MSw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPENvcHlG
dW5jdGlvbiBjb3B5ID0gcGVyZm9ybUpJVE1lbWNweT4KLSAgICBzdGF0aWMgdm9pZCBsaW5rSnVt
cFQ0KHVpbnQxNl90KiB3cml0ZVRhcmdldCwgY29uc3QgdWludDE2X3QqIGluc3RydWN0aW9uLCB2
b2lkKiB0YXJnZXQpCisgICAgc3RhdGljIHZvaWQgbGlua0p1bXBUNCh1aW50MTZfdCogd3JpdGVU
YXJnZXQsIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0LCBCcmFuY2hX
aXRoTGluayBsaW5rKQogICAgIHsKICAgICAgICAgLy8gRklNWEU6IHRoaXMgc2hvdWxkIGJlIHVw
IGluIHRoZSBNYWNyb0Fzc2VtYmxlciBsYXllci4gOi0oICAgICAgICAKICAgICAgICAgQVNTRVJU
KCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rpb24pICYgMSkpOwpAQCAtMjgw
Myw3ICsyODY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKCEocmVsYXRpdmUgJiAxKSk7
CiAgICAgICAgIHVpbnQxNl90IGluc3RydWN0aW9uc1syXTsKICAgICAgICAgaW5zdHJ1Y3Rpb25z
WzBdID0gT1BfQl9UNGEgfCAoKHJlbGF0aXZlICYgMHgxMDAwMDAwKSA+PiAxNCkgfCAoKHJlbGF0
aXZlICYgMHgzZmYwMDApID4+IDEyKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zWzFdID0gT1BfQl9U
NGIgfCAoKHJlbGF0aXZlICYgMHg4MDAwMDApID4+IDEwKSB8ICgocmVsYXRpdmUgJiAweDQwMDAw
MCkgPj4gMTEpIHwgKChyZWxhdGl2ZSAmIDB4ZmZlKSA+PiAxKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zWzFdID0gT1BfQl9UNGIgfCAoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGxpbmspIDw8IDE0KSB8
ICgocmVsYXRpdmUgJiAweDgwMDAwMCkgPj4gMTApIHwgKChyZWxhdGl2ZSAmIDB4NDAwMDAwKSA+
PiAxMSkgfCAoKHJlbGF0aXZlICYgMHhmZmUpID4+IDEpOwogICAgICAgICBjb3B5KHdyaXRlVGFy
Z2V0IC0gMiwgaW5zdHJ1Y3Rpb25zLCAyICogc2l6ZW9mKHVpbnQxNl90KSk7CiAgICAgfQogCkBA
IC0yODE2LDcgKzI4ODAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgdWludDE2X3Qg
bmV3SW5zdHJ1Y3Rpb24gPSBpZlRoZW5FbHNlKGNvbmQpIHwgT1BfSVQ7CiAgICAgICAgIGNvcHko
d3JpdGVUYXJnZXQgLSAzLCAmbmV3SW5zdHJ1Y3Rpb24sIHNpemVvZih1aW50MTZfdCkpOwotICAg
ICAgICBsaW5rSnVtcFQ0PGNvcHk+KHdyaXRlVGFyZ2V0LCBpbnN0cnVjdGlvbiwgdGFyZ2V0KTsK
KyAgICAgICAgbGlua0p1bXBUNDxjb3B5Pih3cml0ZVRhcmdldCwgaW5zdHJ1Y3Rpb24sIHRhcmdl
dCwgQnJhbmNoV2l0aExpbms6Ok5vKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxDb3B5RnVuY3Rp
b24gY29weSA9IHBlcmZvcm1KSVRNZW1jcHk+CkBAIC0yODcyLDcgKzI5MzYsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zWzFdID0gT1BfTk9QX1QyYTsKICAgICAgICAgICAg
IGluc3RydWN0aW9uc1syXSA9IE9QX05PUF9UMmI7CiAgICAgICAgICAgICBwZXJmb3JtSklUTWVt
Y3B5KHdyaXRlVGFyZ2V0IC0gNSwgaW5zdHJ1Y3Rpb25zLCAzICogc2l6ZW9mKHVpbnQxNl90KSk7
Ci0gICAgICAgICAgICBsaW5rSnVtcFQ0KHdyaXRlVGFyZ2V0LCBpbnN0cnVjdGlvbiwgdGFyZ2V0
KTsKKyAgICAgICAgICAgIGxpbmtKdW1wVDQod3JpdGVUYXJnZXQsIGluc3RydWN0aW9uLCB0YXJn
ZXQsIEJyYW5jaFdpdGhMaW5rOjpObyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBj
b25zdCB1aW50MTZfdCBKVU1QX1RFTVBPUkFSWV9SRUdJU1RFUiA9IEFSTVJlZ2lzdGVyczo6aXA7
CiAgICAgICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBsbzE2ID0gQVJNVGh1bWJJbW1lZGlhdGU6
Om1ha2VVSW50MTYoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3Q+KHRhcmdldCkgKyAxKSk7CkBAIC0yODg3LDcgKzI5NTEsMjYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod3JpdGVUYXJnZXQgLSA1LCBpbnN0cnVjdGlvbnMsIDUg
KiBzaXplb2YodWludDE2X3QpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIHN0YXRp
YyB2b2lkIGxpbmtCcmFuY2godWludDE2X3QqIGZyb20sIGNvbnN0IHVpbnQxNl90KiBmcm9tSW5z
dHJ1Y3Rpb24sIHZvaWQqIHRvLCBCcmFuY2hXaXRoTGluayBsaW5rKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGlzRXZlbihmcm9tSW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKGlzRXZlbihm
cm9tKSk7CisgICAgICAgIEFTU0VSVChpc0V2ZW4odG8pKTsKKyAgICAgICAgQVNTRVJUKGxpbmsg
PT0gQnJhbmNoV2l0aExpbms6OlllcyA/IGlzQkwoZnJvbSAtIDIpIDogaXNCKGZyb20gLSAyKSk7
CisKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYml0d2lzZV9jYXN0PGludHB0cl90Pih0bykg
LSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGZyb21JbnN0cnVjdGlvbik7CisjaWYgRU5BQkxFKEpV
TVBfSVNMQU5EUykKKyAgICAgICAgaWYgKCFpc0ludDwyNT4ob2Zmc2V0KSkgeworICAgICAgICAg
ICAgdG8gPSBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzaW5nbGV0b24oKS5nZXRKdW1wSXNsYW5kVG8o
Yml0d2lzZV9jYXN0PHZvaWQqPihmcm9tSW5zdHJ1Y3Rpb24pLCB0byk7CisgICAgICAgICAgICBv
ZmZzZXQgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4oZnJvbUluc3RydWN0aW9uKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzSW50PDI1PihvZmZzZXQpKTsKKworICAgICAgICBsaW5rSnVtcFQ0KGZyb20sIGZy
b21JbnN0cnVjdGlvbiwgdG8sIGxpbmspOworICAgIH0KKwogICAgIHN0YXRpYyB1aW50MTZfdCB0
d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1GaXJzdCh1aW50MTZfdCBvcCwgQVJNVGh1bWJJ
bW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wIHwgKGltbS5tX3ZhbHVlLmkg
PDwgMTApIHwgaW1tLm1fdmFsdWUuaW1tNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggMmFmOWJiOTA1
YWRlMzE5MGU0NmU1NmRhNjAzMjcyNDAwYTA4YTU0YS4uMTYwY2M1MjlhMGVjM2I0ZDdlNGRkNzg2
OTE5MGUyMzNlNjg1ODU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTU0NSw4ICs1NDUsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBMaW5rYWJsZSA9IDB4MSwKICAgICAgICAgICAgIE5lYXIgPSAw
eDIsCiAgICAgICAgICAgICBUYWlsID0gMHg0LAotICAgICAgICAgICAgTGlua2FibGVOZWFyID0g
MHgzLAotICAgICAgICAgICAgTGlua2FibGVOZWFyVGFpbCA9IDB4NywKKyAgICAgICAgICAgIExp
bmthYmxlTmVhciA9IExpbmthYmxlIHwgTmVhciwKKyAgICAgICAgICAgIExpbmthYmxlTmVhclRh
aWwgPSBMaW5rYWJsZSB8IE5lYXIgfCBUYWlsLAogICAgICAgICB9OwogCiAgICAgICAgIENhbGwo
KQpAQCAtOTA0LDcgKzkwNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN3aXRjaCAobmVh
ckNhbGwuY2FsbE1vZGUoKSkgewogICAgICAgICBjYXNlIE5lYXJDYWxsTW9kZTo6VGFpbDoKLSAg
ICAgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlbGlua0p1bXAobmVhckNhbGwuZGF0YUxvY2F0aW9u
KCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIEFzc2VtYmxlclR5
cGU6OnJlbGlua1RhaWxDYWxsKG5lYXJDYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5k
YXRhTG9jYXRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgTmVhckNh
bGxNb2RlOjpSZWd1bGFyOgogICAgICAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVsaW5rQ2FsbChu
ZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24udW50YWdnZWRFeGVjdXRhYmxlQWRk
cmVzcygpKTsKQEAgLTkyOSwxMiArOTI5LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KLSAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdChD
b2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0PHRhZz4gZGF0YUxhYmVsQ29tcGFjdCwgaW50MzJf
dCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGF0Y2hDb21wYWN0KGRh
dGFMYWJlbENvbXBhY3QudGVtcGxhdGUgZGF0YUxvY2F0aW9uKCksIHZhbHVlKTsKLSAgICB9Ci0K
ICAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMihD
b2RlTG9jYXRpb25EYXRhTGFiZWwzMjx0YWc+IGRhdGFMYWJlbDMyLCBpbnQzMl90IHZhbHVlKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1i
bGVyQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNv
bW1vbi5oCmluZGV4IDJlNTBmZmRiYzgyYTkxOWYyOWI0ODJiOTFjMjA0NjdjZGVjMDliNjMuLjYx
ZTM3OTE0MzZiN2YyMThhYTJjYzU2MDk3MDg5NzMzYjg0NjczNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaApAQCAtNDUsNiArNDUs
MTQgQEAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgYm9vbCBpc0lPUygpCiAjZW5kaWYKIH0KIAor
dGVtcGxhdGU8c2l6ZV90IGJpdHMsIHR5cGVuYW1lIFR5cGU+CitBTFdBWVNfSU5MSU5FIGNvbnN0
ZXhwciBib29sIGlzSW50KFR5cGUgdCkKK3sKKyAgICBjb25zdGV4cHIgc2l6ZV90IHNoaWZ0ID0g
c2l6ZW9mKFR5cGUpICogQ0hBUl9CSVQgLSBiaXRzOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFR5cGUpICogQ0hBUl9CSVQgPiBzaGlmdCwgInNoaWZ0IGlzIGxhcmdlciB0aGFuIHRoZSBzaXpl
IG9mIHRoZSB2YWx1ZSIpOworICAgIHJldHVybiAoKHQgPDwgc2hpZnQpID4+IHNoaWZ0KSA9PSB0
OworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJbnQ5KGludDMyX3QgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIHZhbHVlID09ICgodmFsdWUgPDwgMjMpID4+IDIzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggYjAyMjM1MTE5MjgxNGEy
M2VjZjYyNjRiYzQ5NzVhMzg3ZWQ5NjVhMi4uYzAzOGE5N2ViNDA2Y2ViNjRhYTZjYjc3ODE2ZTQ3
OGM1NWY4ODdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
SVBTQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBT
QXNzZW1ibGVyLmgKQEAgLTg0NSw2ICs4NDUsMTEgQEAgcHVibGljOgogICAgICAgICBjYWNoZUZs
dXNoKHN0YXJ0LCBzaXplKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZWxpbmtUYWlsQ2Fs
bCh2b2lkKiBmcm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIHJlbGlua0p1bXAoZnJvbSwg
dG8pOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMih2b2lkKiBmcm9tLCBp
bnQzMl90IHRvKQogICAgIHsKICAgICAgICAgTUlQU1dvcmQqIGluc24gPSByZWludGVycHJldF9j
YXN0PE1JUFNXb3JkKj4oZnJvbSk7CkBAIC04NjcsMTEgKzg3Miw2IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENv
bXBhY3Qodm9pZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCi0gICAgewotICAgICAgICByZXBhdGNo
SW50MzIod2hlcmUsIHZhbHVlKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBhdGNoUG9p
bnRlcih2b2lkKiBmcm9tLCB2b2lkKiB0bykKICAgICB7CiAgICAgICAgIHJlcGF0Y2hJbnQzMihm
cm9tLCByZWludGVycHJldF9jYXN0PGludDMyX3Q+KHRvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDYzMzc3
M2FlZWM5ZDFjOTY3ZmE5OGE1YWNiMmExMjQ1MmViMjUwN2MuLmU5NjdmMmM3MWYyYmU0NjBkN2Q5
Y2YxYjIxMjVmYWU2MmZmOWRhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC00MSw3ICs0MSw5IEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMg
PSAzMjsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUZQUnMgPSAzMjsKLSAgICAK
KworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG5lYXJKdW1wUmFuZ2UgPSAxMjggKiBNQjsK
KwogICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBkYXRhVGVtcFJlZ2lzdGVyID0gQVJN
NjRSZWdpc3RlcnM6OmlwMDsKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbWVtb3J5
VGVtcFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmlwMTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCBmZTdm
MmQ1YzRmM2ZiNDFjMWQzNTVlZTk0NGRkZDVhNWFlMTQwMDhiLi41MGViOWNmOWRmNDkxZjY0NDJk
OWI5M2RlYjVjMWEzMmQ5NjY1MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtMzgsNiArMzgsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiB1c2luZyBBc3NlbWJsZXIgPSBUQVJHRVRfQVNTRU1CTEVSOwogCiBjbGFz
cyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbmVhckp1bXBS
YW5nZSA9IDE2ICogTUI7CisKK3ByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3Rl
cklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNjsK
IApAQCAtMjIzNywxNiArMjI0MSwxNCBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIENh
bGwgbmVhckNhbGwoKQogICAgIHsKLSAgICAgICAgbW92ZUZpeGVkV2lkdGhFbmNvZGluZyhUcnVz
dGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBpbnZhbGlkYXRlQWxsVGVt
cFJlZ2lzdGVycygpOwotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoZGF0YVRl
bXBSZWdpc3RlciksIENhbGw6OkxpbmthYmxlTmVhcik7CisgICAgICAgIHJldHVybiBDYWxsKG1f
YXNzZW1ibGVyLmJsKCksIENhbGw6OkxpbmthYmxlTmVhcik7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSBDYWxsIG5lYXJUYWlsQ2FsbCgpCiAgICAgewotICAgICAgICBtb3ZlRml4ZWRXaWR0
aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGlu
dmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1i
bGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpLCBDYWxsOjpMaW5rYWJsZU5lYXJUYWlsKTsKKyAgICAg
ICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYigpLCBDYWxsOjpMaW5rYWJsZU5lYXJUYWlsKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJUYWcpCkBAIC0yNjU0LDEw
ICsyNjU2LDEyIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAgICBzdGF0
aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBDYWxsIGNhbGwsIEZ1bmN0aW9uUHRyPHRhZz4g
ZnVuY3Rpb24pCiAgICAgewotICAgICAgICBpZiAoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6VGFpbCkp
Ci0gICAgICAgICAgICBBUk12N0Fzc2VtYmxlcjo6bGlua0p1bXAoY29kZSwgY2FsbC5tX2xhYmVs
LCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgaWYgKCFjYWxsLmlzRmxh
Z1NldChDYWxsOjpOZWFyKSkKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6bGlua1BvaW50ZXIoY29k
ZSwgY2FsbC5tX2xhYmVsLmxhYmVsQXRPZmZzZXQoLTIpLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpKTsKKyAgICAgICAgZWxzZSBpZiAoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6VGFpbCkpCisg
ICAgICAgICAgICBBc3NlbWJsZXI6OmxpbmtUYWlsQ2FsbChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1
bmN0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBB
Uk12N0Fzc2VtYmxlcjo6bGlua0NhbGwoY29kZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6bGlua0NhbGwoY29kZSwg
Y2FsbC5tX2xhYmVsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICB9CiAKICAg
ICBib29sIG1fbWFrZUp1bXBQYXRjaGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCA5NGViNjJmNGExMjFhNjE0
NTMyMzY5MTNhYzlkM2NiMzk0YWRiMGQyLi5lZDc3ZDI5OTY1NGNiMzc5YWI0ODdiYjc5ZjdjYjQw
MGExODExZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbnVtR1BScyA9IDMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbnVtRlBScyA9IDMyOwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbmVh
ckp1bXBSYW5nZSA9IDIgKiBHQjsKKwogICAgIE1hY3JvQXNzZW1ibGVyTUlQUygpCiAgICAgICAg
IDogbV9maXhlZFdpZHRoKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCmluZGV4IDM2NDY4NmRm
ZjY4OTk0ZGVhYTA0ZTk1NjYzNmFkNjJmMDJlYzExNTUuLjU2ZDRlY2JlY2M5MGM3Njg4MTI3NjQy
ZDQ3MTJmMzc4ZTQ1MGFlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1HUFJzID0gMzI7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gMzI7CiAKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBuZWFySnVtcFJhbmdlID0gMiAqIEdCOworCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MzA7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIG1lbW9yeVRlbXBSZWdpc3RlciA9IFJJU0NW
NjRSZWdpc3RlcnM6OngzMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IGNhMTQ1MTUyY2M1ZTQz
NjM0NGFhNDhhMWFhMWMxMmM5ZjYzOGM4MjkuLmI0MDFlM2JmYTQ4MTBiNGI0MjUxNGI0NzExNjAy
NzQ3MmNmMDU1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTM3LDYgKzM3LDggQEAgdXNpbmcg
QXNzZW1ibGVyID0gVEFSR0VUX0FTU0VNQkxFUjsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIHB1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBuZWFySnVtcFJhbmdlID0gMiAqIEdCOwor
CiAjaWYgQ1BVKFg4Nl82NCkKICAgICAvLyBVc2UgdGhpcyBkaXJlY3RseSBvbmx5IGlmIHlvdSdy
ZSBub3QgZ2VuZXJhdGluZyBjb2RlIHdpdGggaXQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBYODZS
ZWdpc3RlcnM6OlJlZ2lzdGVySUQgc19zY3JhdGNoUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIx
MTsKQEAgLTEyMzUsMTMgKzEyMzcsNiBAQCBwdWJsaWM6CiAgICAgICAgIGxvYWQxNihhZGRyZXNz
LCBkZXN0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyB2
b2lkIHJlcGF0Y2hDb21wYWN0KENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Q8dGFnPiBkYXRh
TGFiZWxDb21wYWN0LCBpbnQzMl90IHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzQ29t
cGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KHZhbHVlKSk7Ci0gICAgICAgIEFzc2VtYmxlclR5
cGVfVDo6cmVwYXRjaENvbXBhY3QoZGF0YUxhYmVsQ29tcGFjdC5kYXRhTG9jYXRpb24oKSwgdmFs
dWUpOwotICAgIH0KLSAgICAKICAgICBEYXRhTGFiZWxDb21wYWN0IGxvYWRDb21wYWN0V2l0aEFk
ZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1JJU0NWNjRBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUklTQ1Y2NEFzc2VtYmxlci5oCmluZGV4IDE5ZGRlMGI0M2JjOWY5NDg4MDIx
ZDE3MGFhMzg2OTBiMWYxMzM4YjEuLjk4YjZhMGI2M2I1OTQ4YzU0NjE4NDNiZjFmNjQ4YTg3YjFl
MzdiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUklTQ1Y2
NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUklTQ1Y2
NEFzc2VtYmxlci5oCkBAIC0xNjQyLDYgKzE2NDIsMTEgQEAgcHVibGljOgogICAgICAgICBjYWNo
ZUZsdXNoKGxvY2F0aW9uLCBzaXplb2YodWludDMyX3QpICogMik7CiAgICAgfQogCisgICAgc3Rh
dGljIHZvaWQgcmVsaW5rVGFpbENhbGwodm9pZCogZnJvbSwgdm9pZCogdG8pCisgICAgeworICAg
ICAgICByZWxpbmtKdW1wKGZyb20sIHRvKTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aFZNSGFsdCh2b2lkKiB3aGVyZSkKICAgICB7CiAgICAgICAgIHVpbnQzMl90KiBsb2Nh
dGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih3aGVyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBhNDBlYzdkYTFhYjc0
YTA4MDZkOTRiNmE3MGM5ZWI5ZmViY2U4NGJkLi5iMzliNzE4MmI5YjgwZDljYzQyZjg1ZDZkY2Vi
MjQxNGUyMGIwZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKQEAgLTM3OTgsMTIgKzM3OTgsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgc2V0UmVsMzIoZnJvbSwgdG8pOwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgdm9pZCByZXBh
dGNoQ29tcGFjdCh2b2lkKiB3aGVyZSwgaW50MzJfdCB2YWx1ZSkKKworICAgIHN0YXRpYyB2b2lk
IHJlbGlua1RhaWxDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKHZhbHVlID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50OF90Pjo6bWluKCkpOwotICAgICAg
ICBBU1NFUlQodmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ4X3Q+OjptYXgoKSk7Ci0g
ICAgICAgIHNldEludDgod2hlcmUsIHZhbHVlKTsKKyAgICAgICAgcmVsaW5rSnVtcChmcm9tLCB0
byk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaEludDMyKHZvaWQqIHdoZXJlLCBp
bnQzMl90IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3Bw
CmluZGV4IGVjYzZmODIyY2QxZDJmODNjNTY3ZTIyZTVkZjA2YjBkZTVmY2UxYzYuLmNiZGNhNzc3
ZDFmYTE1ZGNiNTVhZGQyZDkyNGYwNjc0Njg5OTk0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTE5MjYsMTcgKzE5MjYsOCBAQCB2b2lkIGxpbmtQ
b2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENhbAogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsQ2FzZXMu
c2l6ZSgpID09IGNhbGxzLnNpemUoKSk7Ci0gICAgZm9yIChDYWxsVG9Db2RlUHRyIGNhbGxUb0Nv
ZGVQdHIgOiBjYWxscykgewotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAgICAvLyBUYWlsIGNh
bGwgc3BlY2lhbC1jYXNpbmcgZW5zdXJlcyBwcm9wZXIgbGlua2luZyBvbiBBUk0gVGh1bWIyLCB3
aGVyZSBhIHRhaWwgY2FsbCBqdW1wcyB0byBhbiBhZGRyZXNzCi0gICAgICAgIC8vIHdpdGggYSBu
b24tZGVjb3JhdGVkIGJvdHRvbSBiaXQgYnV0IGEgbm9ybWFsIGNhbGwgY2FsbHMgYW4gYWRkcmVz
cyB3aXRoIGEgZGVjb3JhdGVkIGJvdHRvbSBiaXQuCi0gICAgICAgIGJvb2wgaXNUYWlsQ2FsbCA9
IGNhbGxUb0NvZGVQdHIuY2FsbC5pc0ZsYWdTZXQoQ0NhbGxIZWxwZXJzOjpDYWxsOjpUYWlsKTsK
LSAgICAgICAgdm9pZCogdGFyZ2V0ID0gaXNUYWlsQ2FsbCA/IGNhbGxUb0NvZGVQdHIuY29kZVB0
ci5kYXRhTG9jYXRpb24oKSA6IGNhbGxUb0NvZGVQdHIuY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpOwotICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVuY3Rp
b25QdHI8SlNFbnRyeVB0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3ModGFyZ2V0KSkpOwotI2Vsc2UKKyAgICBmb3Ig
KENhbGxUb0NvZGVQdHIgY2FsbFRvQ29kZVB0ciA6IGNhbGxzKQogICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4oY2Fs
bFRvQ29kZVB0ci5jb2RlUHRyKSk7Ci0jZW5kaWYKLSAgICB9CiAKICAgICBpZiAoIWRvbmUuZW1w
dHkoKSkgewogICAgICAgICBBU1NFUlQoIWlzRGF0YUlDKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGQ2OWYxZjU1ODQ2YzVj
YWE5ODMzZjk1ZDg1NDQ2MjFiNjU5YTg3YmYuLjRmNGNjNTJhNDhjNzgwNjZkZjY2NjlhYTIzMDM4
Y2NkOTIyNzA4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJh
dGlvblN0YXR1cy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlUmVzZXJ2YXRpb24uaD4KICNpbmNsdWRl
IDx3dGYvUHJvY2Vzc0lELmg+CkBAIC05NCwyMiArOTUsMzYgQEAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSBGSVhFRF9FWEVDVVRBQkxFX01F
TU9SWV8KICNlbGlmIENQVShBUk02NCkKICNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQogc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSA1MTIgKiBN
QjsKLS8vIFRoZXNlIHNpemVzIGd1YXJhbnRlZSB0aGF0IGFueSBqdW1wIHdpdGhpbiBhbiBpc2xh
bmQgY2FuIGp1bXAgZm9yd2FyZHMgb3IgYmFja3dhcmRzCi0vLyB0byB0aGUgYWRqYWNlbnQgaXNs
YW5kIGluIGEgc2luZ2xlIGluc3RydWN0aW9uLgotc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVn
aW9uU2l6ZSA9IDExMiAqIE1COwotc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaXNsYW5kUmVnaW9u
U2l6ZSA9IDE2ICogTUI7Ci1zdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhOdW1iZXJPZlJlZ2lv
bnMgPSBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSAvIHJlZ2lvblNpemU7Ci1zdGF0aWMg
Y29uc3RleHByIHNpemVfdCBpc2xhbmRTaXplSW5CeXRlcyA9IDQ7Ci1zdGF0aWMgY29uc3RleHBy
IHNpemVfdCBtYXhJc2xhbmRzUGVyUmVnaW9uID0gaXNsYW5kUmVnaW9uU2l6ZSAvIGlzbGFuZFNp
emVJbkJ5dGVzOwogI2Vsc2UKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZpeGVkRXhlY3V0YWJs
ZU1lbW9yeVBvb2xTaXplID0gMTI4ICogTUI7CiAjZW5kaWYKKyNlbGlmIENQVShBUk1fVEhVTUIy
KQorI2lmIEVOQUJMRShKVU1QX0lTTEFORFMpCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBmaXhl
ZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDMyICogTUI7CisjZWxzZQorc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSAxNiAqIE1COworI2Vu
ZGlmCiAjZWxpZiBDUFUoWDg2XzY0KQogc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZml4ZWRFeGVj
dXRhYmxlTWVtb3J5UG9vbFNpemUgPSAxICogR0I7CiAjZWxzZQogc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSAzMiAqIE1COwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQorI2lmIENQVShBUk02NCkKK3N0YXRpYyBjb25zdGV4
cHIgZG91YmxlIGlzbGFuZFJlZ2lvblNpemVGcmFjdGlvbiA9IDAuMTI1Oworc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgaXNsYW5kU2l6ZUluQnl0ZXMgPSA0OworI2VsaWYgQ1BVKEFSTV9USFVNQjIp
CitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBpc2xhbmRSZWdpb25TaXplRnJhY3Rpb24gPSAwLjA1
Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaXNsYW5kU2l6ZUluQnl0ZXMgPSA0OworI2VuZGlm
CisjZW5kaWYKKworLy8gUXVpY2sgc2FuaXR5IGNoZWNrLCBpbiBjYXNlIEZJWEVEX0VYRUNVVEFC
TEVfTUVNT1JZX1BPT0xfU0laRV9JTl9NQiB3YXMgc2V0LgorI2lmICFFTkFCTEUoSlVNUF9JU0xB
TkRTKQorc3RhdGljX2Fzc2VydChmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA8PSBNYWNy
b0Fzc2VtYmxlcjo6bmVhckp1bXBSYW5nZSwgIkV4ZWN1dGFibGUgcG9vbCBzaXplIGlzIHRvbyBs
YXJnZSBmb3IgbmVhciBqdW1wL2NhbGwgd2l0aG91dCBKVU1QX0lTTEFORFMiKTsKKyNlbmRpZgor
CiAjaWYgQ1BVKEFSTSkKIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGV4ZWN1dGFibGVQb29sUmVz
ZXJ2YXRpb25GcmFjdGlvbiA9IDAuMTU7CiAjZWxzZQpAQCAtMzQzLDIwICszNTgsMTMgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSklUUmVzZXJ2YXRpb24gaW5pdGlhbGl6ZUpJVFBhZ2VSZXNlcnZh
dGlvbigpCiAgICAgICAgIGlmIChyZXNlcnZhdGlvbi5zaXplICogZXhlY3V0YWJsZVBvb2xSZXNl
cnZhdGlvbkZyYWN0aW9uIDwgbWluaW11bUV4ZWN1dGFibGVQb29sUmVzZXJ2YXRpb25TaXplKQog
ICAgICAgICAgICAgcmVzZXJ2YXRpb24uc2l6ZSArPSBtaW5pbXVtRXhlY3V0YWJsZVBvb2xSZXNl
cnZhdGlvblNpemU7CiAjZW5kaWYKLQotI2lmIEVOQUJMRShKVU1QX0lTTEFORFMpCi0gICAgICAg
IC8vIElmIGFza2VkIGZvciBhIHJlc2VydmF0aW9uIHNtYWxsZXIgdGhhbiBpc2xhbmQgc2l6ZSwg
YXNzdW1lIHRoYXQgd2Ugd2FudCB0aGF0IHNpemUgYWxsb2NhdGlvbgotICAgICAgICAvLyBwbHVz
IGFuIGlzbGFuZC4gVGhlIGFsdGVybmF0aXZlIHdvdWxkIGJlIHRvIHR1cm4gb2ZmIGp1bXAgaXNs
YW5kcywgYnV0IHNpbmNlIHdlIG9ubHkgdXNlCi0gICAgICAgIC8vIHRoaXMgZm9yIHRlc3Rpbmcs
IHRoaXMgaXMgcHJvYmFibHkgdGhlIGVhc2llciB3YXkgdG8gZG8gaXQuCi0gICAgICAgIC8vCi0g
ICAgICAgIC8vIFRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IHNvbWUgSlNDIHN0cmVz
cyB0ZXN0cyBydW4gd2l0aCBhIDUwS0IgcG9vbC4gVGhpcyBoYWNrIG1lYW5zCi0gICAgICAgIC8v
IHdlIGRvbid0IGhhdmUgdG8gY2hhbmdlIGFueXRoaW5nIGFib3V0IHRob3NlIHRlc3RzLgotICAg
ICAgICBpZiAocmVzZXJ2YXRpb24uc2l6ZSA8IGlzbGFuZFJlZ2lvblNpemUpCi0gICAgICAgICAg
ICByZXNlcnZhdGlvbi5zaXplICs9IGlzbGFuZFJlZ2lvblNpemU7Ci0jZW5kaWYgLy8gRU5BQkxF
KEpVTVBfSVNMQU5EUykKICAgICB9CiAgICAgcmVzZXJ2YXRpb24uc2l6ZSA9IHN0ZDo6bWF4KHJv
dW5kVXBUb011bHRpcGxlT2YocGFnZVNpemUoKSwgcmVzZXJ2YXRpb24uc2l6ZSksIHBhZ2VTaXpl
KCkgKiAyKTsKIAorI2lmICFFTkFCTEUoSlVNUF9JU0xBTkRTKQorICAgIFJFTEVBU0VfQVNTRVJU
KHJlc2VydmF0aW9uLnNpemUgPD0gTWFjcm9Bc3NlbWJsZXI6Om5lYXJKdW1wUmFuZ2UsICJFeGVj
dXRhYmxlIHBvb2wgc2l6ZSBpcyB0b28gbGFyZ2UgZm9yIG5lYXIganVtcC9jYWxsIHdpdGhvdXQg
SlVNUF9JU0xBTkRTIik7CisjZW5kaWYKKwogI2lmIFVTRShMSUJQQVNfSklUX0hFQVApCiAgICAg
aWYgKHJlc2VydmF0aW9uLnNpemUgPCBtaW5pbXVtUG9vbFNpemVGb3JTZWdyZWdhdGVkSGVhcCkK
ICAgICAgICAgaml0X2hlYXBfcnVudGltZV9jb25maWcubWF4X3NlZ3JlZ2F0ZWRfb2JqZWN0X3Np
emUgPSAwOwpAQCAtNDMwLDEwICs0MzgsNyBAQCBjbGFzcyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVB
bGxvY2F0b3IgZmluYWwgewogCiBwdWJsaWM6CiAgICAgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxs
b2NhdG9yKCkKLSNpZiBFTkFCTEUoSlVNUF9JU0xBTkRTKQotICAgICAgICA6IG1fYWxsb2NhdG9y
cyhjb25zdHJ1Y3RGaXhlZFNpemVBcnJheVdpdGhBcmd1bWVudHM8UmVnaW9uQWxsb2NhdG9yLCBt
YXhOdW1iZXJPZlJlZ2lvbnM+KCp0aGlzKSkKLSAgICAgICAgLCBtX251bUFsbG9jYXRvcnMobWF4
TnVtYmVyT2ZSZWdpb25zKQotI2Vsc2UKKyNpZiAhRU5BQkxFKEpVTVBfSVNMQU5EUykKICAgICAg
ICAgOiBtX2FsbG9jYXRvcigqdGhpcykKICNlbmRpZgogICAgIHsKQEAgLTQ0MSwzMSArNDQ2LDI4
IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZXNlcnZhdGlvbiA9IFdURk1vdmUocmVzZXJ2YXRpb24u
cGFnZVJlc2VydmF0aW9uKTsKICAgICAgICAgaWYgKG1fcmVzZXJ2YXRpb24pIHsKICNpZiBFTkFC
TEUoSlVNUF9JU0xBTkRTKQorICAgICAgICAgICAgLy8gVGhlc2Ugc2l6ZXMgZ3VhcmFudGVlIHRo
YXQgYW55IGp1bXAgd2l0aGluIGFuIGlzbGFuZCBjYW4ganVtcCBmb3J3YXJkcyBvciBiYWNrd2Fy
ZHMKKyAgICAgICAgICAgIC8vIHRvIHRoZSBhZGphY2VudCBpc2xhbmQgaW4gYSBzaW5nbGUgaW5z
dHJ1Y3Rpb24uCisgICAgICAgICAgICBjb25zdCBzaXplX3QgaXNsYW5kUmVnaW9uU2l6ZSA9IHJv
dW5kVXBUb011bHRpcGxlT2YocGFnZVNpemUoKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihNYWNyb0Fz
c2VtYmxlcjo6bmVhckp1bXBSYW5nZSAqIGlzbGFuZFJlZ2lvblNpemVGcmFjdGlvbikpOworICAg
ICAgICAgICAgbV9yZWdpb25TaXplID0gTWFjcm9Bc3NlbWJsZXI6Om5lYXJKdW1wUmFuZ2UgLSBp
c2xhbmRSZWdpb25TaXplOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNQYWdlQWxpZ25l
ZChpc2xhbmRSZWdpb25TaXplKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1BhZ2VB
bGlnbmVkKG1fcmVnaW9uU2l6ZSkpOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbnVtQWxs
b2NhdG9ycyA9IChyZXNlcnZhdGlvbi5zaXplICsgbV9yZWdpb25TaXplIC0gMSkgLyBtX3JlZ2lv
blNpemU7CisgICAgICAgICAgICBtX2FsbG9jYXRvcnMgPSBGaXhlZFZlY3RvcjxSZWdpb25BbGxv
Y2F0b3I+OjpjcmVhdGVXaXRoU2l6ZUFuZENvbnN0cnVjdG9yQXJndW1lbnRzKG51bUFsbG9jYXRv
cnMsICp0aGlzKTsKKwogICAgICAgICAgICAgdWludHB0cl90IHN0YXJ0ID0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4obWVtb3J5U3RhcnQoKSk7CiAgICAgICAgICAgICB1aW50cHRyX3QgcmVzZXJ2
YXRpb25FbmQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihtZW1vcnlFbmQoKSk7Ci0gICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE51bWJlck9mUmVnaW9uczsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnQgPCByZXNlcnZhdGlvbkVuZCB8fCBP
cHRpb25zOjpqaXRNZW1vcnlSZXNlcnZhdGlvblNpemUoKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHN0YXJ0ID49IHJlc2VydmF0aW9uRW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbnVtQWxs
b2NhdG9ycyA9IGk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBtX2FsbG9jYXRvcnNbaV0ubV9zdGFydCA9IHRhZ0NvZGVQdHI8
RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4oYml0d2lzZV9jYXN0PHZvaWQqPihzdGFydCkpOwotICAg
ICAgICAgICAgICAgIG1fYWxsb2NhdG9yc1tpXS5tX2VuZCA9IHRhZ0NvZGVQdHI8RXhlY3V0YWJs
ZU1lbW9yeVB0clRhZz4oYml0d2lzZV9jYXN0PHZvaWQqPihzdGFydCArIHJlZ2lvblNpemUpKTsK
LSAgICAgICAgICAgICAgICBpZiAobV9hbGxvY2F0b3JzW2ldLmVuZCgpID4gcmVzZXJ2YXRpb25F
bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgbWF5IGhhdmUgdGFrZW4gYSBwYWdlIGZv
ciB0aGUgZXhlY3V0YWJsZSBvbmx5IGNvcHkgdGh1bmsuCi0gICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGkgPT0gbWF4TnVtYmVyT2ZSZWdpb25zIC0gMSB8fCBPcHRpb25zOjpqaXRN
ZW1vcnlSZXNlcnZhdGlvblNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYWxsb2NhdG9y
c1tpXS5tX2VuZCA9IHRhZ0NvZGVQdHI8RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4oYml0d2lzZV9j
YXN0PHZvaWQqPihyZXNlcnZhdGlvbkVuZCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IG1fYWxsb2NhdG9yc1tpXS5hbGxvY2F0b3JT
aXplKCk7Ci0gICAgICAgICAgICAgICAgbV9hbGxvY2F0b3JzW2ldLmFkZEZyZXNoRnJlZVNwYWNl
KGJpdHdpc2VfY2FzdDx2b2lkKj4obV9hbGxvY2F0b3JzW2ldLnN0YXJ0KCkpLCBzaXplSW5CeXRl
cyk7Ci0gICAgICAgICAgICAgICAgbV9ieXRlc1Jlc2VydmVkICs9IHNpemVJbkJ5dGVzOwotCi0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hbGxvY2F0b3JzW2ldLmFsbG9jYXRvclNp
emUoKSA8IHJlZ2lvblNpemUpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYWxs
b2NhdG9yc1tpXS5pc2xhbmRCZWdpbigpID4gbV9hbGxvY2F0b3JzW2ldLnN0YXJ0KCkpOwotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYWxsb2NhdG9yc1tpXS5pc2xhbmRCZWdpbigp
IDwgbV9hbGxvY2F0b3JzW2ldLmVuZCgpKTsKLQotICAgICAgICAgICAgICAgIHN0YXJ0ICs9IHJl
Z2lvblNpemU7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUFsbG9jYXRv
cnM7ICsraSkgeworICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBlbmQgPSBzdGFydCArIG1fcmVn
aW9uU2l6ZTsKKyAgICAgICAgICAgICAgICB1aW50cHRyX3QgaXNsYW5kQmVnaW4gPSBlbmQgLSBp
c2xhbmRSZWdpb25TaXplOworICAgICAgICAgICAgICAgIC8vIFRoZSBpc2xhbmQgaW4gdGhlIHZl
cnkgbGFzdCByZWdpb24gaXMgbmV2ZXIgYWN0dWFsbHkgdXNlZCAoZXZlcnl0aGluZyBnb2VzIGJh
Y2t3YXJkcyksIGJ1dCB3ZQorICAgICAgICAgICAgICAgIC8vIGNhbid0IHB1dCBjb2RlIHRoZXJl
IGluIGNhc2UgdGhleSBkbyBuZWVkIHRvIHVzZSBhIGJhY2t3YXJkIGp1bXAgaXNsYW5kLCBzbyBz
ZXQgdXAgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICAgICAgaWYgKGkgPT0gbnVtQWxsb2NhdG9y
cyAtIDEpCisgICAgICAgICAgICAgICAgICAgIGlzbGFuZEJlZ2luID0gZW5kID0gc3RkOjptaW4o
aXNsYW5kQmVnaW4sIHJlc2VydmF0aW9uRW5kKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChlbmQgPD0gcmVzZXJ2YXRpb25FbmQpOworICAgICAgICAgICAgICAgIG1fYWxsb2NhdG9y
c1tpXS5jb25maWd1cmUoc3RhcnQsIGlzbGFuZEJlZ2luLCBlbmQpOworICAgICAgICAgICAgICAg
IG1fYnl0ZXNSZXNlcnZlZCArPSBtX2FsbG9jYXRvcnNbaV0uYWxsb2NhdG9yU2l6ZSgpOworICAg
ICAgICAgICAgICAgIHN0YXJ0ICs9IG1fcmVnaW9uU2l6ZTsKICAgICAgICAgICAgIH0KICNlbHNl
CiAgICAgICAgICAgICBtX2FsbG9jYXRvci5hZGRGcmVzaEZyZWVTcGFjZShyZXNlcnZhdGlvbi5i
YXNlLCByZXNlcnZhdGlvbi5zaXplKTsKQEAgLTQ5NSwxNCArNDk3LDE0IEBAIHB1YmxpYzoKIAog
ICAgICAgICB1bnNpZ25lZCBzdGFydCA9IDA7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VSYW5k
b21pemluZ0V4ZWN1dGFibGVJc2xhbmRBbGxvY2F0aW9uKCkpCi0gICAgICAgICAgICBzdGFydCA9
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkgJSBtX251bUFsbG9jYXRvcnM7CisgICAg
ICAgICAgICBzdGFydCA9IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkgJSBtX2FsbG9j
YXRvcnMuc2l6ZSgpOwogCiAgICAgICAgIHVuc2lnbmVkIGkgPSBzdGFydDsKICAgICAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgICAgIFJlZ2lvbkFsbG9jYXRvciYgYWxsb2NhdG9yID0gbV9h
bGxvY2F0b3JzW2ldOwogICAgICAgICAgICAgaWYgKFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFu
ZGxlPiByZXN1bHQgPSBhbGxvY2F0b3IuYWxsb2NhdGUobG9ja2VyLCBzaXplSW5CeXRlcykpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIGkgPSAoaSArIDEpICUg
bV9udW1BbGxvY2F0b3JzOworICAgICAgICAgICAgaSA9IChpICsgMSkgJSBtX2FsbG9jYXRvcnMu
c2l6ZSgpOwogICAgICAgICAgICAgaWYgKGkgPT0gc3RhcnQpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTcwMCw3ICs3MDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
bV9pc2xhbmRzRm9ySnVtcFNvdXJjZUxvY2F0aW9uLmluc2VydChpc2xhbmRzKTsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZ2lvbkFsbG9jYXRvciogYWxsb2NhdG9yID0gZmluZFJlZ2lvbihqdW1w
TG9jYXRpb24gPiB0YXJnZXQgPyBqdW1wTG9jYXRpb24gLSByZWdpb25TaXplIDoganVtcExvY2F0
aW9uKTsKKyAgICAgICAgUmVnaW9uQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBmaW5kUmVnaW9uKGp1
bXBMb2NhdGlvbiA+IHRhcmdldCA/IGp1bXBMb2NhdGlvbiAtIG1fcmVnaW9uU2l6ZSA6IGp1bXBM
b2NhdGlvbik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFsbG9jYXRvcik7CiAgICAgICAgIHZv
aWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+YWxsb2NhdGVJc2xhbmQoKTsKICAgICAgICAgdm9pZCog
Y3VycmVudElzbGFuZCA9IHJlc3VsdDsKQEAgLTcwOSwxMCArNzExLDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBpc2xhbmRzLT5qdW1wSXNsYW5kcy5hcHBlbmQoQ29kZUxvY2F0aW9uTGFiZWw8
RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4odGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFn
PihjdXJyZW50SXNsYW5kKSkpOwogCiAgICAgICAgICAgICBhdXRvIGVtaXRKdW1wVG8gPSBbJl0g
KHZvaWQqIHRhcmdldCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFSTTY0QXNz
ZW1ibGVyOjpjYW5FbWl0SnVtcChiaXR3aXNlX2Nhc3Q8dm9pZCo+KGp1bXBMb2NhdGlvbiksIHRh
cmdldCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFzc2VtYmxlcjo6Y2FuRW1p
dEp1bXAoYml0d2lzZV9jYXN0PHZvaWQqPihqdW1wTG9jYXRpb24pLCB0YXJnZXQpKTsKIAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyIGppdDsKLSAgICAgICAgICAgICAgICBhdXRvIGp1
bXAgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIGF1dG8gbmVhclRhaWxDYWxsID0gaml0
Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihq
aXQsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4oY3VycmVudElzbGFuZCksIGlzbGFu
ZFNpemVJbkJ5dGVzLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpKdW1wSXNsYW5kLCBKSVRDb21waWxh
dGlvbk11c3RTdWNjZWVkLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bGlua0J1ZmZlci5pc1ZhbGlkKCkpOwogCkBAIC03MjQsMjAgKzcyNiwyMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIC8vIGhhcyBhIGp1bXAgbGlua2VkIHRvIHRoaXMgaXNsYW5kIGhhc24n
dCBmaW5hbGl6ZWQgeWV0LCB0aGV5J3JlIGd1YXJhbnRlZWQgdG8gZmluYWxpemUgdGhlcmUgY29k
ZSBhbmQgcnVuIGFuIGlzYi4KICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnNldElzSnVtcElz
bGFuZCgpOwogCi0gICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsPE5vUHRyVGFnPih0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
LmxpbmsobmVhclRhaWxDYWxsLCBDb2RlTG9jYXRpb25MYWJlbDxOb1B0clRhZz4odGFyZ2V0KSk7
CiAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIkp1
bXAgSXNsYW5kOiAlbHUiLCBqdW1wTG9jYXRpb24pOwogICAgICAgICAgICAgfTsKIAotICAgICAg
ICAgICAgaWYgKEFSTTY0QXNzZW1ibGVyOjpjYW5FbWl0SnVtcChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KGp1bXBMb2NhdGlvbiksIGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSkpIHsKKyAgICAgICAg
ICAgIGlmIChBc3NlbWJsZXI6OmNhbkVtaXRKdW1wKGJpdHdpc2VfY2FzdDx2b2lkKj4oanVtcExv
Y2F0aW9uKSwgYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSkgewogICAgICAgICAgICAgICAg
IGVtaXRKdW1wVG8oYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdWludHB0cl90IG5leHRJc2xh
bmRSZWdpb247CiAgICAgICAgICAgICBpZiAoanVtcExvY2F0aW9uID4gdGFyZ2V0KQotICAgICAg
ICAgICAgICAgIG5leHRJc2xhbmRSZWdpb24gPSBqdW1wTG9jYXRpb24gLSByZWdpb25TaXplOwor
ICAgICAgICAgICAgICAgIG5leHRJc2xhbmRSZWdpb24gPSBqdW1wTG9jYXRpb24gLSBtX3JlZ2lv
blNpemU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV4dElzbGFuZFJlZ2lv
biA9IGp1bXBMb2NhdGlvbiArIHJlZ2lvblNpemU7CisgICAgICAgICAgICAgICAgbmV4dElzbGFu
ZFJlZ2lvbiA9IGp1bXBMb2NhdGlvbiArIG1fcmVnaW9uU2l6ZTsKIAogICAgICAgICAgICAgUmVn
aW9uQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBmaW5kUmVnaW9uKG5leHRJc2xhbmRSZWdpb24pOwog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWxsb2NhdG9yKTsKQEAgLTgyMSw2ICs4MjMsMTkg
QEAgcHJpdmF0ZToKICAgICAgICAgUmVnaW9uQWxsb2NhdG9yKEZpeGVkVk1Qb29sRXhlY3V0YWJs
ZUFsbG9jYXRvciYgYWxsb2NhdG9yKQogICAgICAgICAgICAgOiBCYXNlKGFsbG9jYXRvcikKICAg
ICAgICAgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShwYWdlU2l6ZSgpICUgaXNsYW5k
U2l6ZUluQnl0ZXMpLCAiQ3VycmVudCBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gdGhpcyIpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb25maWd1cmUodWludHB0cl90IHN0YXJ0LCB1aW50
cHRyX3QgaXNsYW5kQmVnaW4sIHVpbnRwdHJfdCBlbmQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0YXJ0IDwgaXNsYW5kQmVnaW4pOworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNsYW5kQmVnaW4gPD0gZW5kKTsKKyAgICAgICAgICAgIG1fc3RhcnQgPSB0YWdD
b2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhcnQp
KTsKKyAgICAgICAgICAgIG1faXNsYW5kQmVnaW4gPSB0YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1v
cnlQdHJUYWc+KGJpdHdpc2VfY2FzdDx2b2lkKj4oaXNsYW5kQmVnaW4pKTsKKyAgICAgICAgICAg
IG1fZW5kID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KGVuZCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISgodGhpcy0+ZW5kKCkg
LSB0aGlzLT5zdGFydCgpKSAlIHBhZ2VTaXplKCkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCEoKHRoaXMtPmVuZCgpIC0gdGhpcy0+aXNsYW5kQmVnaW4oKSkgJSBwYWdlU2l6ZSgpKSk7
CisgICAgICAgICAgICBhZGRGcmVzaEZyZWVTcGFjZShiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRoaXMt
PnN0YXJ0KCkpLCBhbGxvY2F0b3JTaXplKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODI4LDEzICs4NDMsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogICAgICAgICB1aW50cHRyX3Qgc3RhcnQoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pih1bnRhZ0NvZGVQdHI8RXhlY3V0YWJsZU1lbW9yeVB0clRhZz4obV9zdGFydCkpOyB9
CisgICAgICAgIHVpbnRwdHJfdCBpc2xhbmRCZWdpbigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KHVudGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihtX2lzbGFuZEJl
Z2luKSk7IH0KICAgICAgICAgdWludHB0cl90IGVuZCgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KHVudGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihtX2VuZCkpOyB9
CiAKLSAgICAgICAgdWludHB0cl90IGlzbGFuZEJlZ2luKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgLy8gW3N0YXJ0LCBhbGxvY2F0b3JFbmQpCi0gICAgICAgICAgICByZXR1cm4gZW5kKCkgLSBp
c2xhbmRSZWdpb25TaXplOwotICAgICAgICB9CisgICAgICAgIHNpemVfdCBtYXhJc2xhbmRzSW5U
aGlzUmVnaW9uKCkgeyByZXR1cm4gKGVuZCgpIC0gaXNsYW5kQmVnaW4oKSkgLyBpc2xhbmRTaXpl
SW5CeXRlczsgfQogCiAgICAgICAgIHVpbnRwdHJfdCBhbGxvY2F0b3JTaXplKCkKICAgICAgICAg
ewpAQCAtODcyLDEyICs4ODQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh2b2lkKiBy
ZXN1bHQgPSBmaW5kUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAot
ICAgICAgICAgICAgaXNsYW5kQml0cy5yZXNpemUoaXNsYW5kQml0cy5zaXplKCkgKyBpc2xhbmRz
UGVyUGFnZSgpKTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc2xhbmRCaXRzLnNpemUoKSA+
IG1heElzbGFuZHNQZXJSZWdpb24pKQorICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG9sZFNpemUg
PSBpc2xhbmRCaXRzLnNpemUoKTsKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhJc2xhbmRz
SW5UaGlzUmVnaW9uID0gdGhpcy0+bWF4SXNsYW5kc0luVGhpc1JlZ2lvbigpOworCisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChvbGRTaXplIDw9IG1heElzbGFuZHNJblRoaXNSZWdpb24pOwor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKG9sZFNpemUgPT0gbWF4SXNsYW5kc0luVGhpc1JlZ2lv
bikpCiAgICAgICAgICAgICAgICAgY3Jhc2hPbkp1bXBJc2xhbmRFeGhhdXN0aW9uKCk7CiAKLSAg
ICAgICAgICAgIHVpbnRwdHJfdCBwYWdlQmVnaW4gPSBlbmQgLSAoaXNsYW5kQml0cy5zaXplKCkg
KiBpc2xhbmRTaXplSW5CeXRlcyk7IC8vIFtpc2xhbmRCZWdpbiwgZW5kKQotICAgICAgICAgICAg
bV9maXhlZEFsbG9jYXRvci5tX3Jlc2VydmF0aW9uLmNvbW1pdChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHBhZ2VCZWdpbiksIHBhZ2VTaXplKCkpOworICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG5ld1Np
emUgPSBzdGQ6Om1pbihvbGRTaXplICsgaXNsYW5kc1BlclBhZ2UoKSwgbWF4SXNsYW5kc0luVGhp
c1JlZ2lvbik7CisgICAgICAgICAgICBpc2xhbmRCaXRzLnJlc2l6ZShuZXdTaXplKTsKKworICAg
ICAgICAgICAgdWludHB0cl90IGlzbGFuZHNCZWdpbiA9IGVuZCAtIChuZXdTaXplICogaXNsYW5k
U2l6ZUluQnl0ZXMpOyAvLyBbaXNsYW5kc0JlZ2luLCBlbmQpCisgICAgICAgICAgICBtX2ZpeGVk
QWxsb2NhdG9yLm1fcmVzZXJ2YXRpb24uY29tbWl0KGJpdHdpc2VfY2FzdDx2b2lkKj4oaXNsYW5k
c0JlZ2luKSwgKG5ld1NpemUgLSBvbGRTaXplKSAqIGlzbGFuZFNpemVJbkJ5dGVzKTsKIAogICAg
ICAgICAgICAgdm9pZCogcmVzdWx0ID0gZmluZFJlc3VsdCgpOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKQEAgLTkxNiw4ICs5MzQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCisgICAgcHJpdmF0ZToKICAgICAgICAgLy8g
UmFuZ2U6IFtzdGFydCwgZW5kKQogICAgICAgICB2b2lkKiBtX3N0YXJ0OworICAgICAgICB2b2lk
KiBtX2lzbGFuZEJlZ2luOwogICAgICAgICB2b2lkKiBtX2VuZDsKICAgICAgICAgRmFzdEJpdFZl
Y3RvciBpc2xhbmRCaXRzOwogICAgIH07CkBAIC05NTUsOCArOTc1LDggQEAgcHJpdmF0ZToKICAg
ICBMb2NrIG1fbG9jazsKICAgICBQYWdlUmVzZXJ2YXRpb24gbV9yZXNlcnZhdGlvbjsKICNpZiBF
TkFCTEUoSlVNUF9JU0xBTkRTKQotICAgIHN0ZDo6YXJyYXk8UmVnaW9uQWxsb2NhdG9yLCBtYXhO
dW1iZXJPZlJlZ2lvbnM+IG1fYWxsb2NhdG9yczsKLSAgICB1bnNpZ25lZCBtX251bUFsbG9jYXRv
cnM7CisgICAgc2l6ZV90IG1fcmVnaW9uU2l6ZTsKKyAgICBGaXhlZFZlY3RvcjxSZWdpb25BbGxv
Y2F0b3I+IG1fYWxsb2NhdG9yczsKICAgICBSZWRCbGFja1RyZWU8SXNsYW5kcywgdm9pZCo+IG1f
aXNsYW5kc0Zvckp1bXBTb3VyY2VMb2NhdGlvbjsKICNlbHNlCiAgICAgQWxsb2NhdG9yIG1fYWxs
b2NhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5o
IGIvU291cmNlL1dURi93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oCmluZGV4IDRkZmI3OTYzNGJk
ODY2YjQ0NDhhMjFkODc2YjIxZDg1OWU5N2ViMzAuLjRmNzc4MWVjNmU1NWJlN2ZjNGU3ZDg3MjRl
ZjcwMmMxYmQ5YTMxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRW
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmgKQEAgLTY3
LDYgKzY3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5v
dE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZp
eGVkVmVjdG9yKHNpemUsIHN0ZDo6bW92ZV9pdGVyYXRvciB7IGNvbnRhaW5lci5iZWdpbigpIH0s
IHN0ZDo6bW92ZV9pdGVyYXRvciB7IGNvbnRhaW5lci5lbmQoKSB9KSB9OwogICAgIH0KIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFVuaXF1ZVJlZjxFbWJlZGRl
ZEZpeGVkVmVjdG9yPiBjcmVhdGVXaXRoU2l6ZUFuZENvbnN0cnVjdG9yQXJndW1lbnRzKHVuc2ln
bmVkIHNpemUsIEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJl
ZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkp
KSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikg
fTsKKyAgICB9CisKICAgICBVbmlxdWVSZWY8RW1iZWRkZWRGaXhlZFZlY3Rvcj4gY2xvbmUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigpLCBCYXNlOjpl
bmQoKSk7CkBAIC05NCwxMSArMTAwLDE4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KICAgICBFbWJlZGRlZEZpeGVkVmVj
dG9yKHVuc2lnbmVkIHNpemUsIElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFz
dCkKICAgICAgICAgOiBCYXNlKHNpemUsIGZpcnN0LCBsYXN0KQogICAgIHsKICAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIGV4cGxpY2l0IEVtYmVkZGVkRml4ZWRW
ZWN0b3IodW5zaWduZWQgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpIC8vIGNyZWF0ZSB3aXRoIGdpdmVu
IHNpemUgYW5kIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBmb3IgYWxsIGVsZW1lbnRzCisgICAgICAg
IDogQmFzZShzaXplLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pCisgICAgeworICAgIH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRml4
ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKaW5kZXggMjZkZmFmOTA5
MGQ0OWFhMDk4ZWQxMDY1ZTZkMjY2MDUzNzYxNjBlMi4uYzI5Y2I5ZTE3MDdhZjBkNzAxNmEwMjFi
NmU3NmM2ZWQzYzM5OGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCkBAIC05OSw2ICs5OSwxOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKK3ByaXZhdGU6CisgICAgRml4
ZWRWZWN0b3Ioc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U+JiYgc3RvcmFnZSkKKyAgICAgICAgOiAg
bV9zdG9yYWdlIHsgV1RGTW92ZShzdG9yYWdlKSB9CisgICAgeyB9CisKK3B1YmxpYzoKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBGaXhlZFZlY3RvciBjcmVhdGVX
aXRoU2l6ZUFuZENvbnN0cnVjdG9yQXJndW1lbnRzKHNpemVfdCBzaXplLCBBcmdzJiYuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIHJldHVybiBGaXhlZFZlY3RvcjxUPiB7IHNpemUgPyBTdG9yYWdl
OjpjcmVhdGVXaXRoU2l6ZUFuZENvbnN0cnVjdG9yQXJndW1lbnRzKHNpemUsIHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikubW92ZVRvVW5pcXVlUHRyKCkgOiBzdGQ6OnVuaXF1ZV9wdHI8U3Rv
cmFnZT4geyBudWxscHRyIH0gfTsKKyAgICB9CisKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+aXNFbXB0eSgpIDog
dHJ1ZTsgfQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA/
IG1fc3RvcmFnZS0+Ynl0ZVNpemUoKSA6IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4
IDQxMTM1NGY2YzExZjk0MWQ3M2QzNWM2MmFhZGQwZGE3M2VjNGE1ZDMuLjM1NTBkNDFiNDUyYTlj
YTE0OWExNWFjMDBmNWVmMDUzODkzMTA4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAt
NjExLDkgKzYxMSwxMSBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9K
VU1QX0lTTEFORFMpICYmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkgJiYgRU5BQkxFKEpJ
VCkKKyNpZiAhZGVmaW5lZChFTkFCTEVfSlVNUF9JU0xBTkRTKSAmJiBFTkFCTEUoSklUKQorI2lm
IChDUFUoQVJNNjQpICYmIENQVShBRERSRVNTNjQpKSB8fCBDUFUoQVJNX1RIVU1CMikKICNkZWZp
bmUgRU5BQkxFX0pVTVBfSVNMQU5EUyAxCiAjZW5kaWYKKyNlbmRpZgogCiAvKiBGSVhNRTogVGhp
cyBzaG91bGQgYmUgdHVybmVkIGludG8gYW4gI2Vycm9yIGludmFyaWFudCAqLwogLyogVGhlIEZU
TCAqZG9lcyBub3QqIHdvcmsgb24gMzItYml0IHBsYXRmb3Jtcy4gRGlzYWJsZSBpdCBldmVuIGlm
IHNvbWVvbmUgYXNrZWQgdXMgdG8gZW5hYmxlIGl0LiAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVHJhaWxpbmdBcnJheS5oIGIvU291cmNlL1dURi93dGYvVHJhaWxpbmdBcnJheS5oCmlu
ZGV4IGYyYmE5ZWY4ZDdiY2Q2MzcyMDk0YjFlMzJhNGFlYTYzZTk0MzUxYzguLmVkZDJlNDgyYmVj
Yzc4ZWViMGMzNzM5YzA2MGJkODgxZjE4MWZlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1RyYWlsaW5nQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UcmFpbGluZ0FycmF5LmgKQEAg
LTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6
OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwogICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OwogCitwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgVHJhaWxpbmdBcnJheSh1bnNpZ25lZCBzaXplKQogICAgICAgICA6
IG1fc2l6ZShzaXplKQogICAgIHsKQEAgLTcwLDExICs3MSwyMCBAQCBwdWJsaWM6CiAgICAgICAg
IHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KGZpcnN0LCBsYXN0LCBiZWdpbigpKTsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFRyYWlsaW5nQXJyYXkodW5zaWdu
ZWQgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpIC8vIGNyZWF0ZSB3aXRoIGdpdmVuIHNpemUgYW5kIGNv
bnN0cnVjdG9yIGFyZ3VtZW50cyBmb3IgYWxsIGVsZW1lbnRzCisgICAgICAgIDogbV9zaXplKHNp
emUpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWxfdjxEZXJpdmVk
Pik7CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojppbml0aWFsaXplV2l0aEFyZ3Mo
YmVnaW4oKSwgZW5kKCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCiAg
ICAgflRyYWlsaW5nQXJyYXkoKQogICAgIHsKICAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8
VD46OmRlc3RydWN0KGJlZ2luKCksIGVuZCgpKTsKICAgICB9CiAKK3B1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSh1bnNpZ25lZCBzaXplKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG9mZnNldE9mRGF0YSgpICsgc2l6ZSAqIHNpemVvZihUKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgK
aW5kZXggYzA1MGE4M2Q3ZWM5MjJmN2YyNmUwOGFlZjNmNmIxMmY2MDJjOWZmZC4uZmMwZjNiNTcy
Mzk3MTZjNjU4MjZhMjM2OWUwNjlkMzI3MzVlZDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTk3LDYgKzk3LDEz
IEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCBmYWxzZSwgVD4KICAgICB7CiAgICAg
ICAgIGluaXRpYWxpemVJZk5vblBPRChiZWdpbiwgZW5kKTsKICAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVXaXRoQXJncyhU
KiBiZWdpbiwgVCogZW5kLCBBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGZvciAoVCAq
Y3VyID0gYmVnaW47IGN1ciAhPSBlbmQ7ICsrY3VyKQorICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCBjdXIpIFQoYXJncy4uLik7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAg
LTI1NSw2ICsyNjIsMTIgQEAgc3RydWN0IFZlY3RvclR5cGVPcGVyYXRpb25zCiAgICAgICAgIFZl
Y3RvckluaXRpYWxpemVyPFZlY3RvclRyYWl0czxUPjo6bmVlZHNJbml0aWFsaXphdGlvbiwgVmVj
dG9yVHJhaXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD46OmluaXRpYWxpemUoYmVn
aW4sIGVuZCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uIEFyZ3M+CisgICAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVdpdGhBcmdzKFQqIGJlZ2luLCBUKiBlbmQsIEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8VmVjdG9yVHJhaXRzPFQ+
OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46OmNhbkluaXRpYWxpemVXaXRo
TWVtc2V0LCBUPjo6aW5pdGlhbGl6ZVdpdGhBcmdzKGJlZ2luLCBlbmQsIHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgbW92ZShUKiBzcmMsIFQq
IHNyY0VuZCwgVCogZHN0KQogICAgIHsKICAgICAgICAgVmVjdG9yTW92ZXI8VmVjdG9yVHJhaXRz
PFQ+OjpjYW5Nb3ZlV2l0aE1lbWNweSwgVD46Om1vdmUoc3JjLCBzcmNFbmQsIGRzdCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE2ZDVk
MjZhNDdjNjlhMTUzYTdlMDc4Mzc5MDNmOGU3NWJlZTc5ZDAuLjM1MDBiN2QxYzE3ZjFlNTNlZjM1
MGQwMzY4NmQ0ZDQ3M2NmYTg0YzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDQtMDcgIEdlemEgTG9y
ZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ11bQVJNdjddIFN1cHBvcnQgcHJv
cGVyIG5lYXIgY2FsbHMgYW5kIEpVTVBfSVNMQU5EUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVz
dWtlIFN1enVraS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9sZXQtY29uc3QtdGR6LWVu
dmlyb25tZW50LXBhcnNpbmctYW5kLWhhc2gtY29uc2luZy1zcGVlZC5qczoKKwogMjAyMi0wNC0w
NiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFN1
YnN0cmluZyByZXNvbHZpbmcgc2hvdWxkIGNoZWNrIDhiaXQgLyAxNmJpdCBhZ2FpbgpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbGV0LWNvbnN0LXRkei1lbnZpcm9ubWVudC1w
YXJzaW5nLWFuZC1oYXNoLWNvbnNpbmctc3BlZWQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9sZXQtY29uc3QtdGR6LWVudmlyb25tZW50LXBhcnNpbmctYW5kLWhhc2gtY29uc2luZy1zcGVl
ZC5qcwppbmRleCAyNjE4MjNlZjNjNWY1MjM1YjI3ZjlhZTdmYTI2YTgwNDcyNGUwYzE2Li40MTlh
NTBlN2QzYTBlMTc1YzgxYWExNjUxMTMyNzZhMTg1YjgwNjI3IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9sZXQtY29uc3QtdGR6LWVudmlyb25tZW50LXBhcnNpbmctYW5kLWhh
c2gtY29uc2luZy1zcGVlZC5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9sZXQtY29u
c3QtdGR6LWVudmlyb25tZW50LXBhcnNpbmctYW5kLWhhc2gtY29uc2luZy1zcGVlZC5qcwpAQCAt
MSw0ICsxLDQgQEAKLS8vQCBkZWZhdWx0Tm9Ob0xMSW50UnVuIGlmICRhcmNoaXRlY3R1cmUgPT0g
Im1pcHMiCisvL0AgZGVmYXVsdE5vTm9MTEludFJ1biBpZiAkYXJjaGl0ZWN0dXJlID09ICJtaXBz
IiB8fCAkYXJjaGl0ZWN0dXJlID09ICJhcm0iCiAvKgogICogQ29weXJpZ2h0IGpRdWVyeSBGb3Vu
ZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMsIGh0dHBzOi8vanF1ZXJ5Lm9yZy8KICAqCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>