<?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>237347</bug_id>
          
          <creation_ts>2022-03-01 16:09:39 -0800</creation_ts>
          <short_desc>Refactor OpcodeTraits to support the possibility of having 2-byte WASM opcode ids in bytecode streams</short_desc>
          <delta_ts>2022-03-02 22:51:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1847234</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-01 16:09:39 -0800</bug_when>
    <thetext>Refactor OpcodeTraits to support the possibility of having 2-byte WASM opcode ids in bytecode streams</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847243</commentid>
    <comment_count>1</comment_count>
      <attachid>453547</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-01 16:23:36 -0800</bug_when>
    <thetext>Created attachment 453547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847246</commentid>
    <comment_count>2</comment_count>
      <attachid>453547</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-01 16:26:44 -0800</bug_when>
    <thetext>Comment on attachment 453547
Patch

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

&gt; Source/JavaScriptCore/jit/JITExceptions.cpp:66
&gt; +        std::visit([&amp;](auto* pc) {

I am calling this out as an area that needs special review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847253</commentid>
    <comment_count>3</comment_count>
      <attachid>453549</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-01 16:45:25 -0800</bug_when>
    <thetext>Created attachment 453549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847254</commentid>
    <comment_count>4</comment_count>
      <attachid>453550</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-01 16:51:44 -0800</bug_when>
    <thetext>Created attachment 453550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847259</commentid>
    <comment_count>5</comment_count>
      <attachid>453554</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-01 17:03:15 -0800</bug_when>
    <thetext>Created attachment 453554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847265</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-03-01 17:20:03 -0800</bug_when>
    <thetext>Oooh, I think this will be really nice for cleaning up my bytecode metadata pointer patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847296</commentid>
    <comment_count>7</comment_count>
      <attachid>453570</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-01 21:57:37 -0800</bug_when>
    <thetext>Created attachment 453570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847456</commentid>
    <comment_count>8</comment_count>
      <attachid>453625</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-02 09:17:42 -0800</bug_when>
    <thetext>Created attachment 453625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847473</commentid>
    <comment_count>9</comment_count>
      <attachid>453625</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-03-02 09:51:27 -0800</bug_when>
    <thetext>Comment on attachment 453625
Patch

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

r=me with comments.

&gt; Source/JavaScriptCore/bytecode/BytecodeDumper.h:-135
&gt; -class BytecodeDumper final : public JSC::BytecodeDumper&lt;FunctionCodeBlockGenerator&gt; {

How come we don&apos;t need this one anymore?

&gt; Source/JavaScriptCore/bytecode/BytecodeDumper.h:151
&gt; +    int outOfLineJumpOffset(JSInstructionStream::Offset) const override;

Why is this JSInstructionStream? I&apos;m assuming it&apos;s just a copy paste error and the two `Offset` types are the same in practice?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:45
&gt; +    typename JSInstructionStream::Offset point { 0 };

Do you need `typename` here? I thought that wasn&apos;t necessary as of C++20. Ditto a bunch of other places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847483</commentid>
    <comment_count>10</comment_count>
      <attachid>453625</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-02 10:10:38 -0800</bug_when>
    <thetext>Comment on attachment 453625
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeDumper.h:-135
&gt;&gt; -class BytecodeDumper final : public JSC::BytecodeDumper&lt;FunctionCodeBlockGenerator&gt; {
&gt; 
&gt; How come we don&apos;t need this one anymore?

I&apos;m not sure what you mean?

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeDumper.h:151
&gt;&gt; +    int outOfLineJumpOffset(JSInstructionStream::Offset) const override;
&gt; 
&gt; Why is this JSInstructionStream? I&apos;m assuming it&apos;s just a copy paste error and the two `Offset` types are the same in practice?

Good catch!

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:45
&gt;&gt; +    typename JSInstructionStream::Offset point { 0 };
&gt; 
&gt; Do you need `typename` here? I thought that wasn&apos;t necessary as of C++20. Ditto a bunch of other places.

Yeah probably. I&apos;ll review the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847492</commentid>
    <comment_count>11</comment_count>
      <attachid>453633</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-02 10:23:12 -0800</bug_when>
    <thetext>Created attachment 453633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847516</commentid>
    <comment_count>12</comment_count>
      <attachid>453625</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-03-02 11:06:54 -0800</bug_when>
    <thetext>Comment on attachment 453625
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeDumper.h:-135
&gt;&gt;&gt; -class BytecodeDumper final : public JSC::BytecodeDumper&lt;FunctionCodeBlockGenerator&gt; {
&gt;&gt; 
&gt;&gt; How come we don&apos;t need this one anymore?
&gt; 
&gt; I&apos;m not sure what you mean?

I meant this subclass override but I now realize that question doesn&apos;t make any sense since it&apos;s just a different superclass now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847517</commentid>
    <comment_count>13</comment_count>
      <attachid>453625</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-03-02 11:06:55 -0800</bug_when>
    <thetext>Comment on attachment 453625
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeDumper.h:-135
&gt;&gt;&gt; -class BytecodeDumper final : public JSC::BytecodeDumper&lt;FunctionCodeBlockGenerator&gt; {
&gt;&gt; 
&gt;&gt; How come we don&apos;t need this one anymore?
&gt; 
&gt; I&apos;m not sure what you mean?

I meant this subclass override but I now realize that question doesn&apos;t make any sense since it&apos;s just a different superclass now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847752</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-02 22:50:56 -0800</bug_when>
    <thetext>Committed r290768 (248012@main): &lt;https://commits.webkit.org/248012@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453633.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847753</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-02 22:51:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89734679&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453547</attachid>
            <date>2022-03-01 16:23:36 -0800</date>
            <delta_ts>2022-03-01 16:46:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237347-20220301162334.patch</filename>
            <type>text/plain</type>
            <size>374758</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDBlZmU2YjYzNDkzM2Q3NzkxM2Y3MzU5MmNmNWY5MjJiY2NhYWJkLi5iODMxMDI2YTQ0ZjgyMjRk
ZDM2NWRlODg5ZWQ1ZGFmOTdkN2Q2NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NjQgQEAKKzIwMjItMDMtMDEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE9wY29kZVRyYWl0cyB0byBzdXBwb3J0IHRo
ZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgMi1ieXRlIFdBU00gb3Bjb2RlIGlkcyBpbiBieXRlY29k
ZSBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzczNDcKKworICAgICAgICBUaGUgbnVtYmVyIG9mIFdBU00gb3Bjb2RlcyB3aWxsIGluY3Jl
YXNlIGJleW9uZCAyNTUgd2hlbiBXQVNNIFNJTUQgaXMgaW1wbGVtZW50ZWQsIGFuZCBzbyB0aGlz
IHBhdGNoCisgICAgICAgIGNoYW5nZXMgT3Bjb2RlVHJhaXRzIHRvIGFsbG93IGZvciB0aGUgcG9z
c2liaWxpdHkgb2YgaGF2aW5nIHR3by1ieXRlIFdBU00gb3Bjb2RlcyB3aXRob3V0IHJlZ3Jlc3Np
bmcKKyAgICAgICAgSlMuIFdlIGhhdmUgdG8gdGhyZWFkIHRoZXNlIE9wY29kZVRyYWl0cyBldmVy
eXdoZXJlIHRoYXQgdGhleSBhcmUgdXNlZCBzbyB0aGF0IGNvZGUgY2FuIHJlYWQgdGhlCisgICAg
ICAgIGNvcnJlY3QgdmFsdWUgd2hlbiBkZWNvZGluZyBhbiBpbnN0cnVjdGlvbiBzdHJlYW0uIFRo
aXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIHRoZSBzaXplIG9mIFdBU00gb3Bjb2RlcworICAgICAg
ICB5ZXQsIGFsdGhvdWdoIEkgaGF2ZSB0ZXN0ZWQgdGhhdCB0aGUgdGVzdCBzdWl0ZSBzdGlsbCBw
YXNzZXMgaWYgd2UgZG8gaW5jcmVhc2UgdGhlIG9wY29kZSBzaXplLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OkJ5dGVjb2RlQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjphZGRMZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2lj
QmxvY2s8T3Bjb2RlVHJhaXRzPjo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjppc0p1bXBU
YXJnZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6
Y29tcHV0ZUltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVU
cmFpdHM+Ojpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRl
Y29kZUJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmFkZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25B
bmRPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVh
bVR5cGU+OjpkdW1wVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
Om91dE9mTGluZUp1bXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAg
IChKU0M6Oldhc206OkJ5dGVjb2RlRHVtcGVyOjpyZWdpc3Rlck5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCBjb25zdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppbnN0cnVjdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4p
OgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3Jb
XSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmR1bXApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBoKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRl
TG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEluc3Ry
dWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5M
aXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjpyZXBsYWNlQnl0ZWNvZGVXaXRoRnJhZ21lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjphZGp1c3RBYnNvbHV0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdEp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFu
ZENvbHVtbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdV
cGRhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5h
cnlBcml0aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0
aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlv
bkF0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAo
SlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om9wY29kZUlEIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
Ojppc1dpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aXNXaWRl
MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNNZXRhZGF0YSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om51bWJlck9mQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OnNpemVTaGlmdEFtb3VudCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURXaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURCeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0
cnVjdGlvbjo6aXMgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmNhc3QpOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OmNhc3QgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rp
b246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHA6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5CeXRlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaDoKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6Om9wZXJhdG9yLT4gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6QmFzZVJlZjo6cHRyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6OnVud3JhcCBjb25zdCk6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6cHRyKToK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6OnB0ciBjb25zdCk6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjp1bndyYXApOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6dW53cmFwIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Oml0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVy
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OnN3YXApOgorICAgICAgICAoSlND
OjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNPcGNvZGVTaGFwZSk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlU2l6ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6Cisg
ICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6anVtcFRh
cmdldEZvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6ZXh0cmFjdFN0b3JlZEp1bXBUYXJn
ZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjp1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0
c0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OmR1bXBMaW5lQ29sdW1uRW50cnkpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
bnN0cnVjdGlvbkF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6
b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6d2l0aFdyaXRlcik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjpyZWNvcmRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRlT3Bjb2RlMTYp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRl
T3Bjb2RlMzIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
Lmg6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMpOgorICAgICAgICAo
SlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVW
YXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJl
Y3Vyc2l2ZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0
eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJl
dHVyblBDKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
b21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToK
KyAgICAgICAgKiBnZW5lcmF0b3IvQXJndW1lbnQucmI6CisgICAgICAgICogZ2VuZXJhdG9yL0RT
TC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvT3Bjb2RlLnJiOgorICAgICAgICAqIGludGVycHJl
dGVyL0Fic3RyYWN0UEMuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmN1cnJlbnRWUEMgY29uc3QpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2F0Y2hJbmZvOjpDYXRjaEluZm8pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGht
ZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbGVzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pn
cmVhdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pncmVhdGVyZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5sZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2pubGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZ3JlYXRlcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3Bfamxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2psZXNz
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9qbmxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pubGVz
c2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2JlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JlbG93ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamJlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2piZWxvd2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Bvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcG93KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0
aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRub3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdHhvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Vyc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9z
dWIpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jYWxsX2V2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2FsbF92
YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1bWVQb2ludCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpJVDo6anVtcFRhcmdldCk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW92KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbXApOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfZW1wdHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191
bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X2NlbGxfd2l0aF90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3NldF9mdW5jdGlvbl9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2plcV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5l
cV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9z
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5zdHJpY3Rl
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmlj
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zd2l0Y2hfY2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5n
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRl
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVidWcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19yZWdleHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Fz
eW5jX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhf
c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1l
bnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2plcSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9zdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pz
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcSk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
dHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGly
ZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRl
X2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpMTEludDo6d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgor
ICAgICAgICAoSlNDOjpMTEludDo6d2FzbVJldHVyblRvVGhyb3cpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50
R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTEludDo6ZGlzcGF0
Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkNMb29w
UmVnaXN0ZXI6Om9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKToKKyAgICAgICAgKEpTQzo6
Q0xvb3A6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpDTG9vcFJlZ2lzdGVyOjpvcGVyYXRvciBj
b25zdCBJbnN0cnVjdGlvbiopOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZEluc3RydWN0aW9uU3RyZWFt
OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFz
dEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpGaWxl
QmFzZWRGdXp6ZXJBZ2VudEJhc2U6OmdldFByZWRpY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDQ29uZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICog
cnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjphZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAo
SlNDOjpWTTo6Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKEpTQzo6Vk06
OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAqIHdhc20vV2FzbUNhbGxlZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50Q2FsbGVlOjpMTEludENhbGxlZSk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50Q2FsbGVl
OjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRDYWxsZWU6
Om91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxlZS5oOgorICAg
ICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OnNldEluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRP
ZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tH
ZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29k
ZUJsb2NrR2VuZXJhdG9yOjpjb25zdGFudFJlZ2lzdGVycyBjb25zdCk6CisgICAgICAgIChKU0M6
Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkSnVtcFRh
cmdldCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpu
dW1iZXJPZkp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxv
Y2tHZW5lcmF0b3I6Omxhc3RKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rp
b25Db2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAoSlND
OjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6Ynl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6dGllclVwQ291bnRl
cik6CisgICAgICAgICogd2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRzLmg6CisgICAgICAgICogd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6YWRkU3dpdGNoKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0xhYmVsPFdhc206OkdlbmVy
YXRvclRyYWl0cz46OnNldExvY2F0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludFRpZXJV
cENvdW50ZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFRpZXJVcENvdW50ZXI6OmFk
ZE9TUkVudHJ5RGF0YUZvckxvb3ApOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFRpZXJVcENv
dW50ZXI6Om9zckVudHJ5RGF0YUZvckxvb3AgY29uc3QgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbUxMSW50VGllclVwQ291bnRlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFRpZXJV
cENvdW50ZXI6OkxMSW50VGllclVwQ291bnRlcik6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OldBU01fU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNsb3dfcGF0aF93YXNtX3BvcGNvdW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwpOgorICAgICAgICAqIHdhc20vV2FzbVNs
b3dQYXRocy5oOgorCiAyMDIyLTAzLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FwcGxlV2luXSBTdGFydCB1c2luZyBWaXN1YWwgU3R1
ZGlvIDIwMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKaW5kZXggNzVhNDdiY2U1YzEwNGVkNzlkNjczOWU5OGRlYTQ4YWRi
NGVkMTYyMS4uYjgyMmJiNGVmOGYxNmYzYWQ3YTliZjRiN2U5NmNjMTg3Zjc3MTI3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKQEAgLTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIERFRklORV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsKIAotQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGJsb2NrSW5kZXgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGNvZGVUcmFpdHM+CitCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrKGNvbnN0IHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6UmVmJiBpbnN0
cnVjdGlvbiwgdW5zaWduZWQgYmxvY2tJbmRleCkKICAgICA6IG1fbGVhZGVyT2Zmc2V0KGluc3Ry
dWN0aW9uLm9mZnNldCgpKQogICAgICwgbV90b3RhbExlbmd0aCgwKQogICAgICwgbV9pbmRleChi
bG9ja0luZGV4KQpAQCAtNDIsMjYgKzQzLDMwIEBAIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uCiAg
ICAgYWRkTGVuZ3RoKGluc3RydWN0aW9uLT5zaXplKCkpOwogfQogCi1CeXRlY29kZUJhc2ljQmxv
Y2s6OkJ5dGVjb2RlQmFzaWNCbG9jayhCeXRlY29kZUJhc2ljQmxvY2s6OlNwZWNpYWxCbG9ja1R5
cGUgYmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0luZGV4KQotICAgIDogbV9sZWFkZXJPZmZzZXQo
YmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayA/IDAgOiBVSU5UX01B
WCkKLSAgICAsIG1fdG90YWxMZW5ndGgoYmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazo6
RW50cnlCbG9jayA/IDAgOiBVSU5UX01BWCkKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0
cz4KK0J5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpCeXRlY29kZUJhc2ljQmxvY2so
dHlwZW5hbWUgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OlNwZWNpYWxCbG9ja1R5
cGUgYmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0luZGV4KQorICAgIDogbV9sZWFkZXJPZmZzZXQo
YmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpFbnRyeUJsb2Nr
ID8gMCA6IFVJTlRfTUFYKQorICAgICwgbV90b3RhbExlbmd0aChibG9ja1R5cGUgPT0gQnl0ZWNv
ZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2sgPyAwIDogVUlOVF9NQVgpCiAg
ICAgLCBtX2luZGV4KGJsb2NrSW5kZXgpCiB7CiB9CiAKLXZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjphZGRMZW5ndGgodW5zaWduZWQgYnl0ZWNvZGVMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGNvZGVUcmFpdHM+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjphZGRM
ZW5ndGgodW5zaWduZWQgYnl0ZWNvZGVMZW5ndGgpCiB7CiAgICAgbV9kZWx0YS5hcHBlbmQoYnl0
ZWNvZGVMZW5ndGgpOwogICAgIG1fdG90YWxMZW5ndGggKz0gYnl0ZWNvZGVMZW5ndGg7CiB9CiAK
LXZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpzaHJpbmtUb0ZpdCgpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGNvZGVUcmFpdHM+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+Ojpz
aHJpbmtUb0ZpdCgpCiB7CiAgICAgbV9kZWx0YS5zaHJpbmtUb0ZpdCgpOwogICAgIG1fc3VjY2Vz
c29ycy5zaHJpbmtUb0ZpdCgpOwogfQogCi1zdGF0aWMgYm9vbCBpc0p1bXBUYXJnZXQoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4m
IGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3RlbXBsYXRlPHR5cGVuYW1l
IE9wY29kZVRyYWl0cz4KK3N0YXRpYyBib29sIGlzSnVtcFRhcmdldCh0eXBlbmFtZSBPcGNvZGVU
cmFpdHM6Ok9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dHlwZW5hbWUgQnl0ZWNvZGVC
YXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46Okluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0LCAz
Mj4mIGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfY2F0Y2gpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjksMTQgKzc0LDE1
IEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVj
dG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJj
aChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQp
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUcmFpdHM+CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBCbG9jaz4KLWF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Js
b2NrVmVjdG9yCithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+Ojpjb21wdXRl
SW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGluc3Ry
dWN0aW9ucykgLT4gQmFzaWNCbG9ja1ZlY3RvcgogewogICAgIEJhc2ljQmxvY2tWZWN0b3IgYmFz
aWNCbG9ja3M7Ci0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiBqdW1w
VGFyZ2V0czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZz
ZXQsIDMyPiBqdW1wVGFyZ2V0czsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zLCBqdW1wVGFyZ2V0cyk7CiAKLSAgICBhdXRvIGxpbmtCbG9ja3Mg
PSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayYgZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrJiB0bykg
eworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz4mIGZyb20sIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiB0bykgewogICAg
ICAgICBmcm9tLmFkZFN1Y2Nlc3Nvcih0byk7CiAgICAgfTsKIApAQCAtODUsMjUgKzkxLDI1IEBA
IGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFj
aXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwogICAgICAgICB7CiAgICAgICAgICAgICAvLyBF
bnRyeSBibG9jay4KLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChC
eXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CisgICAg
ICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoQnl0ZWNvZGVCYXNpY0Jsb2Nr
PE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAg
ICAgICAvLyBGaXJzdCBibG9jay4KLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFu
ZEFwcGVuZChCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUo
KSk7CisgICAgICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoQnl0ZWNvZGVC
YXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7
CiAgICAgICAgICAgICBsaW5rQmxvY2tzKGJhc2ljQmxvY2tzWzBdLCBiYXNpY0Jsb2Nrc1sxXSk7
CiAgICAgICAgIH0KIAotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSAmYmFz
aWNCbG9ja3MubGFzdCgpOwotICAgICAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikgLT4gQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiB7CisgICAgICAgIGF1dG8qIGN1cnJlbnQgPSAmYmFzaWNCbG9ja3MubGFzdCgpOworICAgICAg
ICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChjb25zdCB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVh
bVR5cGU6OlJlZiYgaW5zdHJ1Y3Rpb24pIC0+IEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFp
dHM+KiB7CiAgICAgICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoaW5zdHJ1
Y3Rpb24sIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gJmJhc2ljQmxv
Y2tzLmxhc3QoKTsKICAgICAgICAgfTsKICAgICAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xl
YWRlciA9IGZhbHNlOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5z
dHJ1Y3Rpb25zKSB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rp
b24ub2Zmc2V0KCk7Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9u
LT5vcGNvZGVJRCgpOworICAgICAgICAgICAgYXV0byBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5v
cGNvZGVJRCgpOwogCiAgICAgICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwogICAg
ICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1wIHRhcmdldCwgdGhl
biBpdCdzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KLSAgICAgICAgICAgIGlm
IChuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciB8fCBpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBU
YXJnZXRzLCBieXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAgICAgIGlmIChuZXh0SW5zdHJ1Y3Rp
b25Jc0xlYWRlciB8fCBpc0p1bXBUYXJnZXQ8T3Bjb2RlVHJhaXRzPihvcGNvZGVJRCwganVtcFRh
cmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBhcHBl
bmRCbG9jayhpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwpAQCAt
MTIwLDcgKzEyNiw3IEBAIGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgICAgIGN1cnJl
bnQtPmFkZExlbmd0aChpbnN0cnVjdGlvbi0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICAv
LyBFeGl0IGJsb2NrLgotICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CisgICAgICAg
IGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2Rl
VHJhaXRzPjo6RXhpdEJsb2NrLCBiYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgICAgICBiYXNpY0Js
b2Nrcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBBU1NFUlQoYmFzaWNCbG9ja3MubGFzdCgpLmlz
RXhpdEJsb2NrKCkpOwogICAgIH0KQEAgLTEyOCwxNSArMTM0LDE1IEBAIGF1dG8gQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYKIAogICAgIC8vIExpbmsgYmFzaWMgYmxvY2tzIHRvZ2V0aGVyLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2smIGJsb2NrID0gYmFzaWNCbG9ja3NbaV07CisgICAgICAgIGF1dG8m
IGJsb2NrID0gYmFzaWNCbG9ja3NbaV07CiAKICAgICAgICAgaWYgKGJsb2NrLmlzRW50cnlCbG9j
aygpIHx8IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBib29sIGZhbGxzVGhyb3VnaCA9IHRydWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgdmlz
aXRlZExlbmd0aCA9IDA7IHZpc2l0ZWRMZW5ndGggPCBibG9jay50b3RhbExlbmd0aCgpOykgewot
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBpbnN0cnVjdGlvbiA9IGluc3RydWN0
aW9ucy5hdChibG9jay5sZWFkZXJPZmZzZXQoKSArIHZpc2l0ZWRMZW5ndGgpOwotICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKKyAgICAgICAg
ICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYmxvY2subGVhZGVyT2Zmc2V0
KCkgKyB2aXNpdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gb3Bjb2RlSUQgPSBpbnN0cnVj
dGlvbi0+b3Bjb2RlSUQoKTsKIAogICAgICAgICAgICAgdmlzaXRlZExlbmd0aCArPSBpbnN0cnVj
dGlvbi0+c2l6ZSgpOwogCkBAIC0xNzEsNyArMTc3LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
JgogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBicmFuY2gsIGxpbmsgdG8gdGhlIGJsb2Nr
KHMpIHRoYXQgd2UganVtcCB0by4KICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBpbnN0cnVj
dGlvbi0+c2l6ZSgpID09IGJsb2NrLmxlYWRlck9mZnNldCgpICsgYmxvY2sudG90YWxMZW5ndGgo
KSk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+
IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOworICAgICAgICAgICAgICAgIFZlY3Rvcjx0eXBlbmFt
ZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVk
VG87CiAgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAgICAgICAgICAg
ICAgICAgc2l6ZV90IG51bWJlck9mSnVtcFRhcmdldHMgPSBieXRlY29kZU9mZnNldHNKdW1wZWRU
by5zaXplKCk7CkBAIC0yMDAsNyArMjA2LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNv
bXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAg
ICAgICAvLyBJZiB3ZSBmYWxsIHRocm91Z2ggdGhlbiBsaW5rIHRvIHRoZSBuZXh0IGJsb2NrIGlu
IHByb2dyYW0gb3JkZXIuCiAgICAgICAgIGlmIChmYWxsc1Rocm91Z2gpIHsKICAgICAgICAgICAg
IEFTU0VSVChpICsgMSA8IGJhc2ljQmxvY2tzLnNpemUoKSk7Ci0gICAgICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2smIG5leHRCbG9jayA9IGJhc2ljQmxvY2tzW2kgKyAxXTsKKyAgICAgICAgICAg
IGF1dG8mIG5leHRCbG9jayA9IGJhc2ljQmxvY2tzW2kgKyAxXTsKICAgICAgICAgICAgIGxpbmtC
bG9ja3MoYmxvY2ssIG5leHRCbG9jayk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTQsMTIgKzIy
MCwxNCBAQCBhdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgcmV0dXJuIGJhc2ljQmxvY2tzOwog
fQogCi1hdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZShDb2RlQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucykgLT4gQmFzaWNCbG9ja1Zl
Y3RvcgordGVtcGxhdGU8PgorYXV0byBCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVUcmFpdHM+
Ojpjb21wdXRlKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFt
JiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tWZWN0b3IKIHsKICAgICByZXR1cm4gY29tcHV0
ZUltcGwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpOwogfQogCi1hdXRvIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCit0
ZW1wbGF0ZTw+CithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29kZVRyYWl0cz46OmNvbXB1
dGUoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVj
dGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCiB7CiAgICAgcmV0
dXJuIGNvbXB1dGVJbXBsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBk
MGE4ODJkNTQ2MzIyOTExYzM3ZWVhYmRjMGFmZDMwZjVhZWY3MzRhLi5kNzY0M2QxOWY4MmNkNGM2
MmRiMzZmOGM2YzE1MjRlZGFiYjA2OTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNywyMSArMzcsMjQgQEAgY2xh
c3MgQnl0ZWNvZGVHcmFwaDsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rp
b247Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEluc3RydWN0aW9uOwogCiBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihCeXRlY29kZUJhc2ljQmxvY2spOwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGNvZGVUcmFpdHM+CiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJ5dGVjb2RlQmFzaWNCbG9jayk7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsKICAgICBmcmllbmQgY2xhc3Mg
Qnl0ZWNvZGVHcmFwaDsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNpY0Jsb2NrVmVjdG9yID0gVmVj
dG9yPEJ5dGVjb2RlQmFzaWNCbG9jaywgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3csIDE2LCBCeXRl
Y29kZUJhc2ljQmxvY2tNYWxsb2M+OwotICAgIHN0YXRpY19hc3NlcnQobWF4T3Bjb2RlTGVuZ3Ro
IDw9IFVJTlQ4X01BWCk7CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25UeXBlID0gQmFzZUluc3RydWN0
aW9uPE9wY29kZVRyYWl0cz47CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlID0gSW5z
dHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPjsKKyAgICBzdGF0aWNfYXNzZXJ0KG1heEJ5
dGVjb2RlU3RydWN0TGVuZ3RoIDw9IFVJTlQ4X01BWCk7CiAgICAgZW51bSBTcGVjaWFsQmxvY2tU
eXBlIHsgRW50cnlCbG9jaywgRXhpdEJsb2NrIH07Ci0gICAgaW5saW5lIEJ5dGVjb2RlQmFzaWNC
bG9jayhjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgdW5zaWduZWQgYmxvY2tJbmRleCk7
CisgICAgaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jayhjb25zdCB0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU6OlJlZiYsIHVuc2lnbmVkIGJsb2NrSW5kZXgpOwogICAgIGlubGluZSBCeXRl
Y29kZUJhc2ljQmxvY2soU3BlY2lhbEJsb2NrVHlwZSwgdW5zaWduZWQgYmxvY2tJbmRleCk7Ci0g
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayYmKSA9IGRlZmF1bHQ7Cisg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiYp
ID0gZGVmYXVsdDsKIAogCiAgICAgYm9vbCBpc0VudHJ5QmxvY2soKSB7IHJldHVybiAhbV9sZWFk
ZXJPZmZzZXQgJiYgIW1fdG90YWxMZW5ndGg7IH0KQEAgLTcyLDEyICs3NSwxMiBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgLy8gT25seSBjYWxsZWQgZnJvbSBCeXRlY29kZUdyYXBoLgotICAg
IHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGUoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucyk7Ci0gICAgc3RhdGljIEJhc2ljQmxvY2tWZWN0b3Ig
Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciosIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvbnMpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPiBzdGF0aWMg
QmFzaWNCbG9ja1ZlY3RvciBjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKTsKKyAgICBzdGF0aWMgQmFzaWNCbG9ja1ZlY3Rv
ciBjb21wdXRlKENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlwZSYgaW5zdHJ1
Y3Rpb25zKTsKKyAgICBzdGF0aWMgQmFzaWNCbG9ja1ZlY3RvciBjb21wdXRlKFVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlJiBpbnN0cnVjdGlv
bnMpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPiBzdGF0aWMgQmFzaWNCbG9ja1ZlY3Rv
ciBjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5
cGUmIGluc3RydWN0aW9ucyk7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCi0gICAgdm9pZCBh
ZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaykKKyAgICB2b2lkIGFkZFN1Y2Nl
c3NvcihCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPiYgYmxvY2spCiAgICAgewogICAg
ICAgICBpZiAoIW1fc3VjY2Vzc29ycy5jb250YWlucyhibG9jay5pbmRleCgpKSkKICAgICAgICAg
ICAgIG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2suaW5kZXgoKSk7CkBAIC04NSw3ICs4OCw3IEBA
IHByaXZhdGU6CiAKICAgICBpbmxpbmUgdm9pZCBhZGRMZW5ndGgodW5zaWduZWQpOwogCi0gICAg
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2xlYWRlck9mZnNldDsKKyAgICB0eXBlbmFtZSBJ
bnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBtX2xlYWRlck9mZnNldDsKICAgICB1bnNpZ25l
ZCBtX3RvdGFsTGVuZ3RoOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAKQEAgLTk2LDQgKzk5LDcg
QEAgcHJpdmF0ZToKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAordXNpbmcgSlNCeXRl
Y29kZUJhc2ljQmxvY2sgPSBCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVUcmFpdHM+OwordXNp
bmcgV2FzbUJ5dGVjb2RlQmFzaWNCbG9jayA9IEJ5dGVjb2RlQmFzaWNCbG9jazxXYXNtT3Bjb2Rl
VHJhaXRzPjsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCA1YmY2N2I2MWI2MmJjMTJlMDRj
MmZhN2NhOTM0M2MwYzdhZGU2NzAwLi4wNjFkN2JkMTQyZGI0OWVmMDNjOWYzMDU2ODRlZjcxNjk0
NDI1ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHAKQEAgLTQxLDMxICs0MSwzNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9p
ZCBCeXRlY29kZUR1bXBlckJhc2U6OnByaW50TG9jYXRpb25BbmRPcChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKK3RlbXBsYXRlPHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZT4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9u
U3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25BbmRPcCh0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVh
bVR5cGU6Ok9mZnNldCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApCiB7CiAgICAgbV9jdXJyZW50
TG9jYXRpb24gPSBsb2NhdGlvbjsKICAgICBtX291dC5wcmludGYoIlslNHVdICUtMThzICIsIGxv
Y2F0aW9uLCBvcCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoVmly
dHVhbFJlZ2lzdGVyIHJlZykKK3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlw
ZT4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OmR1bXBW
YWx1ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewogICAgIG1fb3V0LnByaW50ZigiJXMiLCByZWdp
c3Rlck5hbWUocmVnKS5kYXRhKCkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+Ci12b2lkIEJ5dGVjb2RlRHVt
cGVyQmFzZTo6ZHVtcFZhbHVlKEdlbmVyaWNCb3VuZExhYmVsPFRyYWl0cz4gbGFiZWwpCit2b2lk
IEJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVhbVR5cGU+OjpkdW1wVmFsdWUoR2Vu
ZXJpY0JvdW5kTGFiZWw8VHJhaXRzPiBsYWJlbCkKIHsKICAgICBpbnQgdGFyZ2V0ID0gbGFiZWwu
dGFyZ2V0KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHRhcmdldCA9IG91dE9mTGluZUp1
bXBPZmZzZXQobV9jdXJyZW50TG9jYXRpb24pOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgdGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0ICsgbV9jdXJyZW50TG9jYXRpb247CisgICAgYXV0byB0
YXJnZXRPZmZzZXQgPSB0YXJnZXQgKyBtX2N1cnJlbnRMb2NhdGlvbjsKICAgICBtX291dC5wcmlu
dCh0YXJnZXQsICIoLT4iLCB0YXJnZXRPZmZzZXQsICIpIik7CiB9CiAKLXRlbXBsYXRlIHZvaWQg
Qnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8SlNHZW5lcmF0
b3JUcmFpdHM+KTsKK3RlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1Y3Rp
b25TdHJlYW0+OjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8SlNHZW5lcmF0b3JUcmFpdHM+
KTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLXRlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1w
ZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8V2FzbTo6R2VuZXJhdG9yVHJhaXRz
Pik7Cit0ZW1wbGF0ZSB2b2lkIEJ5dGVjb2RlRHVtcGVyQmFzZTxXYXNtSW5zdHJ1Y3Rpb25TdHJl
YW0+OjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8V2FzbTo6R2VuZXJhdG9yVHJhaXRzPik7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4K
QEAgLTc4LDcgKzgxLDcgQEAgQ1N0cmluZyBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnJlZ2lzdGVy
TmFtZShWaXJ0dWFsUmVnaXN0ZXIgcikgY29uc3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEJsb2Nr
PgotaW50IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6b3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkgY29uc3QKK2ludCBCeXRlY29kZUR1bXBlcjxCbG9j
az46Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IG9mZnNldCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ibG9jay0+b3V0T2ZMaW5lSnVtcE9m
ZnNldChvZmZzZXQpOwogfQpAQCAtOTEsMTQgKzk0LDE0IEBAIENTdHJpbmcgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+Ojpjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5
dGVjb2RlKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01h
cCYpCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKGNvbnN0IHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJikKIHsK
ICAgICA6OkpTQzo6ZHVtcEJ5dGVjb2RlKHRoaXMsIGl0Lm9mZnNldCgpLCBpdC5wdHIoKSk7CiAg
ICAgdGhpcy0+bV9vdXQucHJpbnQoIlxuIik7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgot
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShCbG9jayogYmxvY2ssIFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJ
Q1N0YXR1c01hcCYgc3RhdHVzTWFwKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZShCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAp
CiB7CiAgICAgQnl0ZWNvZGVEdW1wZXIgZHVtcGVyKGJsb2NrLCBvdXQpOwogICAgIGR1bXBlci5k
dW1wQnl0ZWNvZGUoaXQsIHN0YXR1c01hcCk7CkBAIC0yMTAsNyArMjEzLDcgQEAgdm9pZCBDb2Rl
QmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEJsb2NrPgotc3RhdGljIHZvaWQgZHVtcEhlYWRlcihC
bG9jayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFByaW50
U3RyZWFtJiBvdXQpCitzdGF0aWMgdm9pZCBkdW1wSGVhZGVyKEJsb2NrKiBibG9jaywgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0KQogewog
ICAgIHNpemVfdCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKICAgICBzaXplX3Qgd2lkZTE2SW5zdHJ1
Y3Rpb25Db3VudCA9IDA7CkBAIC0yNTIsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgZHVtcEZvb3Rl
cihEdW1wZXImIGR1bXBlcikKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIENvZGVC
bG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsb2NrKiBibG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
SUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKK3ZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBp
bnN0cnVjdGlvbnMsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNN
YXApCiB7CiAgICAgZHVtcEhlYWRlcihibG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogCkBAIC0y
NjYsNyArMjY5LDcgQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
bG9jayhCbG9jayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3QKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgQmxvY2s+Ci12b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBo
KEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0
ZWNvZGVHcmFwaCYgZ3JhcGgsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBp
Y1N0YXR1c01hcCkKK3ZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wR3Jh
cGgoQmxvY2sqIGJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMs
IEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01h
cCYgaWNTdGF0dXNNYXApCiB7CiAgICAgZHVtcEhlYWRlcihibG9jaywgaW5zdHJ1Y3Rpb25zLCBv
dXQpOwogCkBAIC0yODUsNyArMjg4LDcgQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBHcmFwaChCbG9jayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3QKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IGdyYXBo
KSB7CisgICAgZm9yIChhdXRvJiBibG9jayA6IGdyYXBoKSB7CiAgICAgICAgIGlmIChibG9jay5p
c0VudHJ5QmxvY2soKSB8fCBibG9jay5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTMxNyw2ICszMjAsOCBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEdyYXBoKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdAogICAgIG91
dC5wcmludGYoIlxuIik7CiB9CiAKK3RlbXBsYXRlIGNsYXNzIEJ5dGVjb2RlRHVtcGVyQmFzZTxK
U0luc3RydWN0aW9uU3RyZWFtPjsKK3RlbXBsYXRlIGNsYXNzIEJ5dGVjb2RlRHVtcGVyQmFzZTxX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW0+OwogdGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1wZXI8Q29k
ZUJsb2NrPjsKIHRlbXBsYXRlIGNsYXNzIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPFVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yPjsKIHRlbXBsYXRlIGNsYXNzIENvZGVCbG9ja0J5dGVjb2RlRHVt
cGVyPENvZGVCbG9jaz47CkBAIC0zMzEsNyArMzM2LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjo6
ZHVtcEJsb2NrKEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiBibG9jaywgY29uc3QgTW9kdWxl
SW4KICAgICBzaXplX3Qgd2lkZTE2SW5zdHJ1Y3Rpb25Db3VudCA9IDA7CiAgICAgc2l6ZV90IHdp
ZGUzMkluc3RydWN0aW9uQ291bnQgPSAwOwogCi0gICAgZm9yIChhdXRvIGl0ID0gYmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5lbmQoKTsg
aXQgKz0gaXQtPnNpemU8V2FzbU9wY29kZVRyYWl0cz4oKSkgeworICAgIGZvciAoYXV0byBpdCA9
IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1Y3Rpb25z
KCkuZW5kKCk7IGl0ICs9IGl0LT5zaXplKCkpIHsKICAgICAgICAgaWYgKGl0LT5pc1dpZGUxNigp
KQogICAgICAgICAgICAgKyt3aWRlMTZJbnN0cnVjdGlvbkNvdW50OwogICAgICAgICBlbHNlIGlm
IChpdC0+aXNXaWRlMzIoKSkKQEAgLTM1OSw3ICszNjQsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVy
OjpkdW1wQmxvY2soRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBjb25zdCBNb2R1
bGVJbgogICAgICAgICBibG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkpOwogCiAgICAgQnl0ZWNvZGVE
dW1wZXIgZHVtcGVyKGJsb2NrLCBvdXQpOwotICAgIGZvciAoYXV0byBpdCA9IGJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1Y3Rpb25zKCkuZW5kKCk7IGl0
ICs9IGl0LT5zaXplPFdhc21PcGNvZGVUcmFpdHM+KCkpIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBi
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgaXQgIT0gYmxvY2stPmluc3RydWN0aW9ucygp
LmVuZCgpOyBpdCArPSBpdC0+c2l6ZSgpKSB7CiAgICAgICAgIGR1bXBXYXNtKCZkdW1wZXIsIGl0
Lm9mZnNldCgpLCBpdC5wdHIoKSk7CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9CkBA
IC00MTYsNiArNDIxLDE5IEBAIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6OmZvcm1hdENvbnN0YW50
KFR5cGUgdHlwZSwgdWludDY0X3QgY29uc3RhbnQpIGNvbnN0CiAgICAgfQogfQogCitDU3RyaW5n
IEJ5dGVjb2RlRHVtcGVyOjpyZWdpc3Rlck5hbWUoVmlydHVhbFJlZ2lzdGVyIHIpIGNvbnN0Cit7
CisgICAgaWYgKHIuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4gY29uc3RhbnROYW1lKHIp
OworCisgICAgcmV0dXJuIHRvQ1N0cmluZyhyKTsKK30KKworaW50IEJ5dGVjb2RlRHVtcGVyOjpv
dXRPZkxpbmVKdW1wT2Zmc2V0KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IG9mZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+b3V0T2ZMaW5lSnVtcE9mZnNl
dChvZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5oCmluZGV4IDIxNmU2ZTY3ZWEwZDJkYzdkOTNhYTQ1MTI4ZTlhMDYyZDNkNjNiOWIu
LjVkZTE1ZThjY2EyMjRkMjYwMjlmMGJhNGRhN2ZlYzVhMGJmOWMxMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCkBAIC0yNiw5ICsyNiwx
MSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yQmFzZS5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5m
by5oIgogI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJJbnN0cnVjdGlvblN0cmVhbS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAjaW5jbHVkZSAiV2FzbU9wcy5oIgpAQCAtMzcsMTUgKzM5LDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUdyYXBoOwogCi1zdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci0K
K3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZT4KIGNsYXNzIEJ5dGVjb2Rl
RHVtcGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Qnl0ZWNvZGVEdW1wZXJCYXNlKCkK
ICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBwcmludExvY2F0aW9uQW5kT3AoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApOworICAgIHZvaWQgcHJpbnRM
b2NhdGlvbkFuZE9wKHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IGxvY2F0
aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZv
aWQgZHVtcE9wZXJhbmQoY29uc3QgY2hhciogb3BlcmFuZE5hbWUsIFQgb3BlcmFuZCwgYm9vbCBp
c0ZpcnN0ID0gZmFsc2UpCkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgQ1N0cmluZyByZWdpc3Rlck5hbWUoVmlydHVhbFJlZ2lzdGVyKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNl
dCh0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCkgY29uc3QgPSAwOwogCiAg
ICAgQnl0ZWNvZGVEdW1wZXJCYXNlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIDogbV9vdXQo
b3V0KQpAQCAtNzUsMTMgKzc2LDEzIEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICBQcmludFN0
cmVhbSYgbV9vdXQ7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2N1cnJlbnRMb2Nh
dGlvbiB7IDAgfTsKKyAgICB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBt
X2N1cnJlbnRMb2NhdGlvbiB7IDAgfTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotY2xh
c3MgQnl0ZWNvZGVEdW1wZXIgOiBwdWJsaWMgQnl0ZWNvZGVEdW1wZXJCYXNlIHsKK2NsYXNzIEJ5
dGVjb2RlRHVtcGVyIDogcHVibGljIEJ5dGVjb2RlRHVtcGVyQmFzZTxKU0luc3RydWN0aW9uU3Ry
ZWFtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJ5dGVjb2RlKEJsb2NrKiwgUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElD
U3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRlY29k
ZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAgICAgQnl0ZWNv
ZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0KQogICAgICAgICA6IEJ5dGVj
b2RlRHVtcGVyQmFzZShvdXQpCkBAIC05NCwxMCArOTUsMTAgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIEJsb2NrKiBibG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2s7IH0KIAotICAgIHZv
aWQgZHVtcEJ5dGVjb2RlKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJ
Q1N0YXR1c01hcCYpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICBDU3RyaW5nIHJlZ2lz
dGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBvdXRPZkxp
bmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdCBvdmVy
cmlkZTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgQ1N0cmluZyBj
b25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyKSBjb25zdDsKQEAgLTEwOCw4ICsxMDksOCBAQCBw
cml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+CiBjbGFzcyBDb2RlQmxvY2tCeXRlY29kZUR1
bXBlciBmaW5hbCA6IHB1YmxpYyBCeXRlY29kZUR1bXBlcjxCbG9jaz4gewogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGR1bXBCbG9jayhCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7Ci0g
ICAgc3RhdGljIHZvaWQgZHVtcEdyYXBoKEJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0m
LCBCeXRlY29kZUdyYXBoJiwgUHJpbnRTdHJlYW0mIG91dCA9IFdURjo6ZGF0YUZpbGUoKSwgY29u
c3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1
bXBHcmFwaChCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBo
JiwgUHJpbnRTdHJlYW0mIG91dCA9IFdURjo6ZGF0YUZpbGUoKSwgY29uc3QgSUNTdGF0dXNNYXAm
ID0gSUNTdGF0dXNNYXAoKSk7CiAKICAgICB2b2lkIGR1bXBJZGVudGlmaWVycygpOwogICAgIHZv
aWQgZHVtcENvbnN0YW50cygpOwpAQCAtMTMyLDE2ICsxMzMsMjkgQEAgbmFtZXNwYWNlIFdhc20g
ewogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I7CiBzdHJ1Y3QgTW9kdWxlSW5mb3Jt
YXRpb247CiAKLWNsYXNzIEJ5dGVjb2RlRHVtcGVyIGZpbmFsIDogcHVibGljIEpTQzo6Qnl0ZWNv
ZGVEdW1wZXI8RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I+IHsKK2NsYXNzIEJ5dGVjb2RlRHVt
cGVyIGZpbmFsIDogcHVibGljIEpTQzo6Qnl0ZWNvZGVEdW1wZXJCYXNlPFdhc21JbnN0cnVjdGlv
blN0cmVhbT4gewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGR1bXBCbG9jayhGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvciosIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgUHJpbnRTdHJlYW0m
IG91dCk7CiAKLXByaXZhdGU6Ci0gICAgdXNpbmcgSlNDOjpCeXRlY29kZUR1bXBlcjxGdW5jdGlv
bkNvZGVCbG9ja0dlbmVyYXRvcj46OkJ5dGVjb2RlRHVtcGVyOworICAgIEJ5dGVjb2RlRHVtcGVy
KEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCkKKyAg
ICAgICAgOiBCeXRlY29kZUR1bXBlckJhc2Uob3V0KQorICAgICAgICAsIG1fYmxvY2soYmxvY2sp
CisgICAgeworICAgIH0KIAorICAgIH5CeXRlY29kZUR1bXBlcigpIG92ZXJyaWRlIHsgfQorCisg
ICAgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9jazsgfQorCisgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoVmlydHVhbFJlZ2lzdGVyKSBjb25z
dCBvdmVycmlkZTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgogICAgIHZvaWQgZHVtcENv
bnN0YW50cygpOwotICAgIENTdHJpbmcgY29uc3RhbnROYW1lKFZpcnR1YWxSZWdpc3RlciBpbmRl
eCkgY29uc3QgZmluYWw7CisgICAgQ1N0cmluZyBjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVy
IGluZGV4KSBjb25zdDsKICAgICBDU3RyaW5nIGZvcm1hdENvbnN0YW50KFR5cGUsIHVpbnQ2NF90
KSBjb25zdDsKKworICAgIEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiBtX2Jsb2NrOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggZjYw
MzZiMWI4MmRhMmVmZDhjZGM3M2M4MGY5MTU2MDU1OGNmOWM2Yy4uMDEyNTQ5Njk0MzM0MDE4ZGUz
NTU1MWM3MmJkYzI5MDVmZmVkOWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC00
Miw3ICs0Miw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IFlpZWxkRGF0YSB7Ci0gICAg
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBwb2ludCB7IDAgfTsKKyAgICB0eXBlbmFtZSBKU0lu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgcG9pbnQgeyAwIH07CiAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50IHsgMCB9OwogICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7CiB9OwpAQCAtNTIs
MTQgKzUyLDE0IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxZaWVsZERhdGE+IFlpZWxk
czsKIAogICAgIHN0cnVjdCBHZW5lcmF0b3JGcmFtZURhdGEgewotICAgICAgICBJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IG1fcG9pbnQ7CisgICAgICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBtX3BvaW50OwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9kc3Q7CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
bV9zeW1ib2xUYWJsZTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1faW5pdGlhbFZhbHVlOwog
ICAgIH07CiAKLSAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRv
ciYgYnl0ZWNvZGVHZW5lcmF0b3IsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxv
Y2ssIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBn
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUlu
ZGV4KQorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiBi
eXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywg
SlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCkKICAgICAgICAgOiBtX2J5dGVjb2RlR2VuZXJhdG9yKGJ5dGVjb2RlR2VuZXJhdG9yKQogICAg
ICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAgICAgLCBtX2luc3RydWN0aW9ucyhp
bnN0cnVjdGlvbnMpCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV95aWVsZHM7CiAgICAgfQogCi0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBlbnRlclBvaW50
KCkgY29uc3QKKyAgICB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYgZW50ZXJQb2lu
dCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuYXQobV9lbnRl
clBvaW50KTsKICAgICB9CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9nZW5lcmF0b3JGcmFtZURhdGE7CiAgICAgfQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0CisgICAgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVh
bSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luc3RydWN0
aW9uczsKICAgICB9CkBAIC0xNjcsMTAgKzE2NywxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAg
IEJ5dGVjb2RlR2VuZXJhdG9yJiBtX2J5dGVjb2RlR2VuZXJhdG9yOwotICAgIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgbV9lbnRlclBvaW50OworICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBtX2VudGVyUG9pbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxHZW5lcmF0b3JG
cmFtZURhdGE+IG1fZ2VuZXJhdG9yRnJhbWVEYXRhOwogICAgIFVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yKiBtX2NvZGVCbG9jazsKLSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgbV9pbnN0
cnVjdGlvbnM7CisgICAgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgbV9pbnN0cnVjdGlvbnM7
CiAgICAgQnl0ZWNvZGVHcmFwaCBtX2dyYXBoOwogICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFN0
b3JhZ2U+PiBtX3N0b3JhZ2VzOwogICAgIFlpZWxkcyBtX3lpZWxkczsKQEAgLTE4NSw3ICsxODUs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgcnVuKFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVj
dGlvbnMpCisgICAgdm9pZCBydW4oVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9j
aywgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zKQogICAgIHsKICAgICAg
ICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hp
Y2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCiAgICAgICAgIC8vIFRoaXMg
cHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVlc3Rpb24sICJ3aGlj
aCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCkBAIC0yODYsNyArMjg2
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICByZXdyaXRl
ci5leGVjdXRlKCk7CiB9CiAKLXZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29k
ZUdlbmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJv
bFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4KQordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNv
ZGVCbG9jaywgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xU
YWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCkKIHsKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rlc0Jl
Zm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKSkgewogICAgICAgICBkYXRhTG9nTG4oIkJ5dGVjb2Rl
cyBiZWZvcmUgZ2VuZXJhdG9yaWZpY2F0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCmluZGV4
IDgzMDFkNDA1N2EzM2QyMWJhMzhjMzhjOWM5MjBmNTQ5MzRkYmJiODUuLmM5ZjFhOWU1MTY1YjQx
MDRmZjg5MDcyNDg2MTM2YmE0Zjk5MTIwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0y
OSwxMSArMjksMTYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUdlbmVyYXRv
cjsKLWNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwogY2xhc3MgU3ltYm9sVGFibGU7CiBj
bGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKIGNsYXNzIFN5bWJvbFRhYmxlOwogCi12
b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3ImLCBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvciosIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiwgU3ltYm9sVGFi
bGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOworc3RydWN0IEpTT3Bjb2RlVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBCYXNlSW5zdHJ1Y3Rpb247Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgSW5zdHJ1Y3Rp
b25TdHJlYW1Xcml0ZXI7Cit1c2luZyBKU0luc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPEpT
T3Bjb2RlVHJhaXRzPjsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgPSBJbnN0cnVj
dGlvblN0cmVhbVdyaXRlcjxKU0luc3RydWN0aW9uPjsKKwordm9pZCBwZXJmb3JtR2VuZXJhdG9y
aWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iq
LCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHcmFwaC5oCmluZGV4IGM4ZDRhNTE2MThjNzhjODRhMzNiMWFhM2JmYzI5YWFmNDk4MmE5ZTAu
LmQyODNjYjY1ZWYwMDdhYjgxN2VkNmFjMjY2OGYwNzBlNDM3M2UwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMzQsMzEgKzM0LDMx
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBCeXRlY29kZUJhc2ljQmxvY2s7Ci0KIGNs
YXNzIEJ5dGVjb2RlR3JhcGggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOwogcHVibGljOgotICAgIHVzaW5nIEJh
c2ljQmxvY2tzVmVjdG9yID0gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrVmVjdG9yOwor
ICAgIHVzaW5nIEJhc2ljQmxvY2tUeXBlID0gSlNCeXRlY29kZUJhc2ljQmxvY2s7CisgICAgdXNp
bmcgQmFzaWNCbG9ja3NWZWN0b3IgPSB0eXBlbmFtZSBCYXNpY0Jsb2NrVHlwZTo6QmFzaWNCbG9j
a1ZlY3RvcjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVR5cGUgPSB0eXBlbmFtZSBCYXNp
Y0Jsb2NrVHlwZTo6SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOwogCiAgICAgdHlwZWRlZiBXVEY6Oklu
ZGV4ZWRDb250YWluZXJJdGVyYXRvcjxCeXRlY29kZUdyYXBoPiBpdGVyYXRvcjsKIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgotICAgIGlubGluZSBCeXRlY29kZUdyYXBo
KENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYpOworICAgIGlubGluZSBC
eXRlY29kZUdyYXBoKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUm
KTsKIAogICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9p
dGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCiAgICAgewogICAgICAgICByZXR1
cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2lj
QmxvY2tzLnJlbmQoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KGNvbnN0IEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2ssIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KGNvbnN0IEJhc2ljQmxvY2tUeXBlJiBibG9jaywgdHlwZW5hbWUg
SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgewogICAg
ICAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay5sZWFkZXJPZmZzZXQoKTsKICAgICAg
ICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNl
dCA8IGxlYWRlck9mZnNldCArIGJsb2NrLnRvdGFsTGVuZ3RoKCk7CiAgICAgfQogCi0gICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCisgICAgQmFzaWNCbG9ja1R5cGUqIGZp
bmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQodHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1U
eXBlOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgewogICAgICAgICAvKgogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsK
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICovCiAKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrID0gYXBwcm94aW1h
dGVCaW5hcnlTZWFyY2g8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCB1bnNpZ25lZD4obV9iYXNpY0Jsb2Nr
cywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsg
fSk7CisgICAgICAgIEJhc2ljQmxvY2tUeXBlKiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5h
cnlTZWFyY2g8QmFzaWNCbG9ja1R5cGUsIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2lj
QmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChCYXNpY0Jsb2NrVHlwZSogYmFzaWNC
bG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0KCk7IH0pOwogICAgICAgICAv
LyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KICAgICAgICAgaWYgKGJs
b2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgqYmFzaWNCbG9jaywgYnl0ZWNvZGVPZmZzZXQpKQog
ICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2s7CkBAIC04NiwyMyArODYsMjMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gJmJhc2ljQmxvY2tbMV07CiAgICAgfQogCi0gICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBsZWFkZXJPZmZzZXQpCisgICAgQmFzaWNCbG9ja1R5cGUqIGZpbmRCYXNpY0Js
b2NrV2l0aExlYWRlck9mZnNldCh0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNl
dCBsZWFkZXJPZmZzZXQpCiAgICAgewotICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPEJ5
dGVjb2RlQmFzaWNCbG9jaywgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtdIChCeXRlY29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2sp
IHsgcmV0dXJuIGJhc2ljQmxvY2stPmxlYWRlck9mZnNldCgpOyB9KTsKKyAgICAgICAgcmV0dXJu
IHRyeUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrVHlwZSwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3Ms
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtdIChCYXNpY0Jsb2NrVHlwZSog
YmFzaWNCbG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0KCk7IH0pOwogICAg
IH0KIAogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2ljQmxvY2tzLnNp
emUoKTsgfQotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Qnl0ZWNvZGVHcmFwaCo+KHRoaXMpLT5tX2Jhc2ljQmxvY2tz
W2luZGV4XTsgfQotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgb3BlcmF0b3JbXSh1bnNpZ25lZCBp
bmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisgICAgQmFzaWNCbG9ja1R5cGUmIGF0
KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEJ5dGVjb2RlR3JhcGgq
Pih0aGlzKS0+bV9iYXNpY0Jsb2Nrc1tpbmRleF07IH0KKyAgICBCYXNpY0Jsb2NrVHlwZSYgb3Bl
cmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CiAKICAg
ICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCAwKTsgfQogICAgIGl0
ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBzaXplKCkpOyB9Ci0gICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrJiBmaXJzdCgpIHsgcmV0dXJuIGF0KDApOyB9Ci0gICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrJiBsYXN0KCkgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KKyAgICBCYXNpY0Js
b2NrVHlwZSYgZmlyc3QoKSB7IHJldHVybiBhdCgwKTsgfQorICAgIEJhc2ljQmxvY2tUeXBlJiBs
YXN0KCkgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KIAogCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENvZGVCbG9ja1R5cGU+Ci0gICAgdm9pZCBkdW1wKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9j
aywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8T3BlcmFuZHM8U3BlY3VsYXRlZFR5cGU+Pj4gc3BlY3VsYXRpb25BdEhlYWQsIFByaW50
U3RyZWFtJiBwcmludGVyID0gV1RGOjpkYXRhRmlsZSgpKQorICAgIHZvaWQgZHVtcChDb2RlQmxv
Y2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlwZSYgaW5zdHJ1Y3Rp
b25zLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxPcGVyYW5kczxTcGVjdWxhdGVkVHlwZT4+PiBzcGVj
dWxhdGlvbkF0SGVhZCwgUHJpbnRTdHJlYW0mIHByaW50ZXIgPSBXVEY6OmRhdGFGaWxlKCkpCiAg
ICAgewogICAgICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2tUeXBlPjo6ZHVt
cEdyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCAqdGhpcywgc3BlY3VsYXRpb25BdEhlYWQs
IHByaW50ZXIpOwogICAgIH0KQEAgLTExMyw4ICsxMTMsOCBAQCBwcml2YXRlOgogCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci1CeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBo
KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucykKLSAgICA6IG1fYmFzaWNCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKSkKK0J5dGVjb2RlR3JhcGg6OkJ5dGVjb2RlR3JhcGgo
Q29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGlu
c3RydWN0aW9ucykKKyAgICA6IG1fYmFzaWNCbG9ja3MoQmFzaWNCbG9ja1R5cGU6OmNvbXB1dGUo
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpKQogewogICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNp
emUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IGU4NmNlMTg3NzEwNzU4ZjY4M2Ex
MjdjODlkMTYyYjY1ZmI0NDVjZWUuLjIwN2U0NjI3MzY3OGI5MTIzZmJiODA2N2NmODIyNTFhMGI2
MDJmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgc3RkOjp1
bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVGdWxsTGl2ZW4KICAgICBzaXplX3Qgc2l6ZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpOwogICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxGdWxsQnl0ZWNvZGVM
aXZlbmVzcz4oc2l6ZSk7CiAKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBt
X2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgIGZvciAoYXV0byYgYmxv
Y2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAo
YmxvY2suaXNFbnRyeUJsb2NrKCkgfHwgYmxvY2suaXNFeGl0QmxvY2soKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBvdXQgPSBibG9jay5vdXQoKTsKIAogICAg
ICAgICBhdXRvIHVzZSA9IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKQEAgLTk2LDkgKzk2LDkg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKENvZGVCbG9jayog
Y29kZUJsb2NrKQogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZCbG9ja3MgPSBtX2dyYXBoLnNpemUo
KTsKICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gcHJlZGVjZXNzb3JzKG51bWJlck9mQmxvY2tz
KTsKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBtX2dyYXBoKQorICAgIGZv
ciAoYXV0byYgYmxvY2sgOiBtX2dyYXBoKQogICAgICAgICBwcmVkZWNlc3NvcnNbYmxvY2suaW5k
ZXgoKV0ucmVzaXplKG51bWJlck9mQmxvY2tzKTsKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9j
ayYgYmxvY2sgOiBtX2dyYXBoKSB7CisgICAgZm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpIHsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWNjZXNzb3JJbmRleCA6IGJsb2NrLnN1Y2Nlc3NvcnMo
KSkgewogICAgICAgICAgICAgdW5zaWduZWQgYmxvY2tJbmRleCA9IGJsb2NrLmluZGV4KCk7CiAg
ICAgICAgICAgICBwcmVkZWNlc3NvcnNbc3VjY2Vzc29ySW5kZXhdW2Jsb2NrSW5kZXhdID0gdHJ1
ZTsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVt
cFJlc3VsdHMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIH0KICAgICB9OwogCi0gICAg
Zm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrIDogbV9ncmFwaCkgeworICAgIGZvciAoYXV0
byYgYmxvY2sgOiBtX2dyYXBoKSB7CiAgICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2lj
IGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgJmJsb2NrLCBi
bG9jay5sZWFkZXJPZmZzZXQoKSwgYmxvY2sudG90YWxMZW5ndGgoKSk7CiAKICAgICAgICAgZGF0
YUxvZ0YoIlByZWRlY2Vzc29yczoiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBlNTA5NDc1YTk5
YjFlZGU5NGFhOTIyOGE5NTU3ODYzYTdmYWE1MjJkLi44MTY5MmFlMzQ3OGYxNzMzZGFjZjQ0YWIz
MGRhZGFjN2E1ZDk5NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC01MSwyMyArNTEsMjMgQEAg
ZW51bSBjbGFzcyBMaXZlbmVzc0NhbGN1bGF0aW9uUG9pbnQgOiB1aW50OF90IHsKIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbiB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBz
dGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3Im
KTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlw
ZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJ
bmRleCwgY29uc3QgVXNlRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9j
a1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRl
Y29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kbGVyKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBVc2VG
dW5jdG9yJik7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNl
cHRpb25IYW5kbGVyKENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwg
Qnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotICAg
IHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZihDb2RlQmxvY2tUeXBlKiwgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29u
c3QgRGVmRnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleERl
ZihDb2RlQmxvY2tUeXBlKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3Jh
cGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9yJik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZG
dW5jdG9yPgotICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tU
eXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJ
bmRleCwgY29uc3QgVXNlRnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKKyAgICBzdGF0aWMg
dm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVu
Y3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVC
bG9ja1R5cGU+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2tU
eXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJ
bmRleCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNv
ZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIG91dCk7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci0gICAg
c3RhdGljIGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2tU
eXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlQmFzaWNC
bG9jayYsIEJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCk7CisgICAgc3RhdGlj
IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiwg
Y29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEpTQnl0ZWNvZGVCYXNpY0Jsb2Nr
JiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4KLSAgICBzdGF0
aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9ja1R5cGUqLCBjb25z
dCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrJik7Cisg
ICAgc3RhdGljIGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2tUeXBl
KiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEpTQnl0ZWNvZGVCYXNpY0Js
b2NrJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJ
bnN0cnVjdGlvbnM+CiAgICAgc3RhdGljIEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRJ
bnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVH
cmFwaCYsIEJ5dGVjb2RlSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5k
ZXggNjQ4YzRiNWU5NjMwODUxZDg5ODE3MWQxZDA3NzU2NjI0ZWE2NTU1Yy4uNTY3NjRjZTYxZWYw
ZDQ4NGM4YjNhNTVjNDZhZmE0ZmZiMWMyODAyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCkBAIC01OSw3ICs1OSw3IEBAIGlubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhEZWYoQ29kZUJsb2NrVHlw
ZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRl
Y29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9y
JiBkZWYpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVy
Qnl0ZWNvZGVJbmRleERlZihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAgIGF1dG8qIGluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleCgKQEAgLTcxLDcgKzcxLDcgQEAgaW5saW5lIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhEZWYoQ29kZUJs
b2NrVHlwZSoKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUg
VXNlRnVuY3Rvcj4KLWlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3Rl
cE92ZXJCeXRlY29kZUluZGV4VXNlKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5z
dHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYgdXNlKQoraW5saW5lIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJs
b2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVz
ZUZ1bmN0b3ImIHVzZSkKIHsKICAgICBhdXRvKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5h
dChieXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgo
CkBAIC04MywxMiArODMsMTIgQEAgaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSoKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4KLWlubGluZSB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNl
SW5FeGNlcHRpb25IYW5kbGVyKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVu
ZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxl
cihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBV
c2VGdW5jdG9yJiB1c2UpCiB7Ci0gICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxl
ciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAorICAgIC8vIElmIHdlIGhh
dmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9m
IHRoZQogICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRo
ZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBCeXRlY29kZUluZGV4LgogICAgIGlmIChhdXRv
KiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KSkgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBo
LmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAg
ICBhdXRvKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZz
ZXQoaGFuZGxlci0+dGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CiAgICAg
ICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CiAgICAgfQpAQCAtOTcs
NyArOTcsNyBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBP
dmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZAogLy8gU2ltcGxpZmllZCBpbnRlcmZh
Y2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0
aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2Vz
LgogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvciwg
dHlwZW5hbWUgRGVmRnVuY3Rvcj4KLWlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdh
dGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgs
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRp
b246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0
IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgs
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGVzIHRo
ZSBCeXRlY29kZUluZGV4IGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3Qg
dXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2lj
YWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYg
dGhlIHNhbWUKQEAgLTEyMCw3ICsxMjAsNyBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiBjbwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVH
cmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYg
b3V0KQoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlcklu
c3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgYXV0byBudW1iZXJPZkNo
ZWNrcG9pbnRzID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLT5udW1iZXJPZkNoZWNr
cG9pbnRzKCk7CiAgICAgZm9yIChDaGVja3BvaW50IGNoZWNrcG9pbnQgPSBudW1iZXJPZkNoZWNr
cG9pbnRzOyBjaGVja3BvaW50LS07KSB7CkBAIC0xMzgsNyArMTM4LDcgQEAgaW5saW5lIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9j
a1R5cGUqIGNvZGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb25zPgotaW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9u
Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdy
YXBoLCBCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBCeXRlY29kZUluZGV4IHRhcmdldEluZGV4
LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlw
ZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVH
cmFwaCYgZ3JhcGgsIEpTQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaywgQnl0ZWNvZGVJbmRleCB0
YXJnZXRJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewogICAgIEFTU0VSVCghYmxvY2su
aXNFeGl0QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay5pc0VudHJ5QmxvY2soKSk7CkBAIC0x
NTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGUKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgotaW5saW5lIGJvb2wg
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2Nr
KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlv
bnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrKQoraW5s
aW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJsb2NrKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBp
bnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBKU0J5dGVjb2RlQmFzaWNCbG9jayYg
YmxvY2spCiB7CiAgICAgaWYgKGJsb2NrLmlzRXhpdEJsb2NrKCkgfHwgYmxvY2suaXNFbnRyeUJs
b2NrKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+CiBpbmxpbmUg
RmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmdldExpdmVuZXNzSW5m
b0F0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
bnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFieXRlY29kZUluZGV4LmNo
ZWNrcG9pbnQoKSwgImdldExpdmVuZXNzSW5mb0F0SW5zdHJ1Y3Rpb24gY2FuJ3QgYmUgdXNlZCB0
byBhc2sgcXVlc3Rpb25zIGFib3V0IGNoZWNrcG9pbnRzIik7Ci0gICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSk7CisgICAgYXV0byogYmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9j
a0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpOwogICAgIEFTU0VSVChi
bG9jayk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCgh
YmxvY2stPmlzRXhpdEJsb2NrKCkpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4KIGlubGluZSB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6cnVuTGl2ZW5lc3NGaXhwb2ludChDb2RlQmxvY2tU
eXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29k
ZUdyYXBoJiBncmFwaCkKIHsKICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IGNvZGVC
bG9jay0+bnVtQ2FsbGVlTG9jYWxzKCk7Ci0gICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJs
b2NrIDogZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogZ3JhcGgpIHsKICAgICAgICAg
YmxvY2suaW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay5vdXQo
KS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay5pbigpLmNsZWFyQWxs
KCk7CkBAIC0xOTIsMTcgKzE5MiwxNyBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OnJ1bkxpdmVuZXNzRml4cG9pbnQoQ29kZUJsb2NrVHlwZSogY29kZQogICAgIH0K
IAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2smIGxhc3RCbG9jayA9
IGdyYXBoLmxhc3QoKTsKKyAgICBhdXRvJiBsYXN0QmxvY2sgPSBncmFwaC5sYXN0KCk7CiAgICAg
bGFzdEJsb2NrLmluKCkuY2xlYXJBbGwoKTsKICAgICBsYXN0QmxvY2sub3V0KCkuY2xlYXJBbGwo
KTsKICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9j
ay5vdXQoKS5udW1CaXRzKCkpOwogICAgIGRvIHsKICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwot
ICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBibG9jayA6IGdyYXBoLmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxs
KCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggOiBibG9jay5zdWNjZXNz
b3JzKCkpIHsKLSAgICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2smIHN1Y2Nlc3NvciA9
IGdyYXBoW2Jsb2NrSW5kZXhdOworICAgICAgICAgICAgICAgIGF1dG8mIHN1Y2Nlc3NvciA9IGdy
YXBoW2Jsb2NrSW5kZXhdOwogICAgICAgICAgICAgICAgIG5ld091dCB8PSBzdWNjZXNzb3IuaW4o
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJsb2NrLm91dCgpID0gbmV3T3V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3Bw
CmluZGV4IDgxMDI2YWIzYzc4NGYxYWMzZTE0NDQwMDFmMzcyYjgyZDRjYWJmN2UuLjRhZDA2MmNi
Yjc2OTI4ODgyNmI3ZmFiZWVjOTEyYjJhNDc0MWNkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0c0luRnJhZ21lbnQodW5z
aWduZWQgZmluYWxPZmZzZXQsIEluc2VydGkKICAgICB9CiB9CiAKLXZvaWQgQnl0ZWNvZGVSZXdy
aXRlcjo6aW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludCBpbnNlcnRpb25Qb2ludCwgSW5jbHVkZUJy
YW5jaCBpbmNsdWRlQnJhbmNoLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYmIHdyaXRlcikKK3Zv
aWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludCBpbnNlcnRpb25Q
b2ludCwgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoLCBKU0luc3RydWN0aW9uU3RyZWFtV3Jp
dGVyJiYgd3JpdGVyKQogewogICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5wb3NpdGlvbiA9PSBQ
b3NpdGlvbjo6QmVmb3JlIHx8IGluc2VydGlvblBvaW50LnBvc2l0aW9uID09IFBvc2l0aW9uOjpB
ZnRlcik7CiAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24gewpAQCAtMTE0LDExICsx
MTQsMTEgQEAgdm9pZCBCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0cygpCiAgICAg
YXV0byBvdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IG1fY29kZUJsb2NrLT5yZXBsYWNlT3V0T2ZMaW5l
SnVtcFRhcmdldHMoKTsKIAogICAgIGludCBvZmZzZXQgPSAwOwotICAgIGZvciAoSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBpID0gMDsgaSA8IG1fd3JpdGVyLnNpemUoKTspIHsKKyAgICBmb3Ig
KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBpID0gMDsgaSA8IG1fd3JpdGVy
LnNpemUoKTspIHsKICAgICAgICAgaW50IGJlZm9yZSA9IDA7CiAgICAgICAgIGludCBhZnRlciA9
IDA7CiAgICAgICAgIGludCByZW1vdmUgPSAwOwotICAgICAgICB3aGlsZSAoY3VycmVudEluc2Vy
dGlvbiAhPSBtX2luc2VydGlvbnMuZW5kKCkgJiYgc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldD4oY3VycmVudEluc2VydGlvbi0+aW5kZXguYnl0ZWNvZGVPZmZzZXQpID09IGkp
IHsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRJbnNlcnRpb24gIT0gbV9pbnNlcnRpb25zLmVuZCgp
ICYmIHN0YXRpY19jYXN0PHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4oY3Vy
cmVudEluc2VydGlvbi0+aW5kZXguYnl0ZWNvZGVPZmZzZXQpID09IGkpIHsKICAgICAgICAgICAg
IGF1dG8gc2l6ZSA9IGN1cnJlbnRJbnNlcnRpb24tPmxlbmd0aCgpOwogICAgICAgICAgICAgaWYg
KGN1cnJlbnRJbnNlcnRpb24tPnR5cGUgPT0gSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUpCiAgICAg
ICAgICAgICAgICAgcmVtb3ZlICs9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaAppbmRleCAwZGNlYmU3OTM5MGI0ZmYwYjVkOGJi
MDJiNTUyZjhmZTI0NmEyZTVhLi41YmRmNzdkMDczNGFlODI4MmRiZTYyNjY0ZDVlMmFlOGE4ZGMw
ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVS
ZXdyaXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJl
d3JpdGVyLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgICAgICBpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0OwogICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKIAotICAgICAgICBJbnNlcnRp
b25Qb2ludChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCwgUG9zaXRpb24gcG9zKQor
ICAgICAgICBJbnNlcnRpb25Qb2ludCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgb2Zmc2V0LCBQb3NpdGlvbiBwb3MpCiAgICAgICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KG9m
ZnNldCkKICAgICAgICAgICAgICwgcG9zaXRpb24ocG9zKQogICAgICAgICB7CkBAIC0xMzIsMTQg
KzEzMiwxNCBAQCBwcml2YXRlOgogICAgICAgICBUeXBlIHR5cGU7CiAgICAgICAgIEluY2x1ZGVC
cmFuY2ggaW5jbHVkZUJyYW5jaDsKICAgICAgICAgc2l6ZV90IHJlbW92ZUxlbmd0aDsKLSAgICAg
ICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgaW5zdHJ1Y3Rpb25zOworICAgICAgICBKU0luc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyIGluc3RydWN0aW9uczsKICAgICB9OwogCiBwdWJsaWM6CiAgICAg
Y2xhc3MgRnJhZ21lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYWdtZW50KTsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEZyYWdtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdl
bmVyYXRvciwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlciwgSW5jbHVkZUJyYW5jaCYg
aW5jbHVkZUJyYW5jaCkKKyAgICAgICAgRnJhZ21lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVj
b2RlR2VuZXJhdG9yLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIsIEluY2x1ZGVC
cmFuY2gmIGluY2x1ZGVCcmFuY2gpCiAgICAgICAgICAgICA6IG1fYnl0ZWNvZGVHZW5lcmF0b3Io
Ynl0ZWNvZGVHZW5lcmF0b3IpCiAgICAgICAgICAgICAsIG1fd3JpdGVyKHdyaXRlcikKICAgICAg
ICAgICAgICwgbV9pbmNsdWRlQnJhbmNoKGluY2x1ZGVCcmFuY2gpCkBAIC0xNzEsMTEgKzE3MSwx
MSBAQCBwdWJsaWM6CiAKICAgICBwcml2YXRlOgogICAgICAgICBCeXRlY29kZUdlbmVyYXRvciYg
bV9ieXRlY29kZUdlbmVyYXRvcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1f
d3JpdGVyOworICAgICAgICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX3dyaXRlcjsKICAg
ICAgICAgSW5jbHVkZUJyYW5jaCYgbV9pbmNsdWRlQnJhbmNoOwogICAgIH07CiAKLSAgICBCeXRl
Y29kZVJld3JpdGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgQnl0ZWNv
ZGVHcmFwaCYgZ3JhcGgsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIpCisgICAgQnl0ZWNvZGVSZXdyaXRlcihCeXRl
Y29kZUdlbmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFt
V3JpdGVyJiB3cml0ZXIpCiAgICAgICAgIDogbV9ieXRlY29kZUdlbmVyYXRvcihieXRlY29kZUdl
bmVyYXRvcikKICAgICAgICAgLCBtX2dyYXBoKGdyYXBoKQogICAgICAgICAsIG1fY29kZUJsb2Nr
KGNvZGVCbG9jaykKQEAgLTE4NCwxMCArMTg0LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAgICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlv
bikKKyAgICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uKQogICAgIHsK
ICAgICAgICAgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoID0gSW5jbHVkZUJyYW5jaDo6Tm87
Ci0gICAgICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyIHdyaXRlcjsKKyAgICAgICAgSlNJbnN0
cnVjdGlvblN0cmVhbVdyaXRlciB3cml0ZXI7CiAgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1f
Ynl0ZWNvZGVHZW5lcmF0b3IsIHdyaXRlciwgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0
aW9uKGZyYWdtZW50KTsKICAgICAgICAgZnJhZ21lbnQuYWxpZ24oKTsKQEAgLTE5NSwxMCArMTk1
LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAg
ICB2b2lkIGluc2VydEZyYWdtZW50QWZ0ZXIoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYg
aW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uLCBzaXplX3QgYWxpZ25Db25ncnVlbnQgPSAw
KQorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcihjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbiwgc2l6ZV90IGFs
aWduQ29uZ3J1ZW50ID0gMCkKICAgICB7CiAgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJy
YW5jaCA9IEluY2x1ZGVCcmFuY2g6Ok5vOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
ciB3cml0ZXI7CisgICAgICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgd3JpdGVyOwogICAg
ICAgICBGcmFnbWVudCBmcmFnbWVudChtX2J5dGVjb2RlR2VuZXJhdG9yLCB3cml0ZXIsIGluY2x1
ZGVCcmFuY2gpOwogICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7CiAgICAgICAgIGZyYWdtZW50
LmFsaWduKGFsaWduQ29uZ3J1ZW50KTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRnVuY3Rpb24+Ci0gICAgdm9pZCByZXBsYWNlQnl0ZWNv
ZGVXaXRoRnJhZ21lbnQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24s
IEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHZvaWQgcmVwbGFjZUJ5dGVjb2RlV2l0aEZyYWdtZW50
KGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1
bmN0aW9uIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBw
cmVzZXJ2ZXMgdGhlIGFsaWdubWVudCBvZiB0aGUgc3Vic2VxdWVudCBieXRlY29kZSAob24gdGFy
Z2V0cyB3aGVyZSB0aGlzIG1hdHRlcnMpCiAgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5z
ZXJ0aW9uIHsgSW5zZXJ0aW9uUG9pbnQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCksIFBvc2l0aW9uOjpP
cmlnaW5hbEJ5dGVjb2RlUG9pbnQpLCBJbnNlcnRpb246OlR5cGU6OlJlbW92ZSwgSW5jbHVkZUJy
YW5jaDo6Tm8sIGluc3RydWN0aW9uLT5zaXplKCksIHsgfSB9KTsKQEAgLTIxNywxMiArMjE3LDEy
IEBAIHB1YmxpYzoKIAogICAgIEJ5dGVjb2RlR3JhcGgmIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFw
aDsgfQogCi0gICAgaW50MzJfdCBhZGp1c3RBYnNvbHV0ZU9mZnNldChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGFic29sdXRlT2Zmc2V0KQorICAgIGludDMyX3QgYWRqdXN0QWJzb2x1dGVPZmZz
ZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGFic29sdXRlT2Zmc2V0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkanVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQoMCwg
UG9zaXRpb246OkVudHJ5UG9pbnQpLCBJbnNlcnRpb25Qb2ludChhYnNvbHV0ZU9mZnNldCwgUG9z
aXRpb246OkxhYmVsUG9pbnQpKTsKICAgICB9CiAKLSAgICBpbnQzMl90IGFkanVzdEp1bXBUYXJn
ZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0LCBpbnQz
Ml90IG9yaWdpbmFsSnVtcFRhcmdldCkKKyAgICBpbnQzMl90IGFkanVzdEp1bXBUYXJnZXQodHlw
ZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9yaWdpbmFsQnl0ZWNvZGVPZmZzZXQs
IGludDMyX3Qgb3JpZ2luYWxKdW1wVGFyZ2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkanVz
dEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxCeXRlY29kZU9mZnNldCwgUG9zaXRp
b246OkxhYmVsUG9pbnQpLCBJbnNlcnRpb25Qb2ludChvcmlnaW5hbEp1bXBUYXJnZXQsIFBvc2l0
aW9uOjpMYWJlbFBvaW50KSk7CiAgICAgfQpAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkanVzdEp1bXBUYXJnZXRzKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBpbnNlcnRJ
bXBsKEluc2VydGlvblBvaW50LCBJbmNsdWRlQnJhbmNoLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
ciYmIGZyYWdtZW50KTsKKyAgICB2b2lkIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1
ZGVCcmFuY2gsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImJiBmcmFnbWVudCk7CiAKICAgICBm
cmllbmQgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I7CiAgICAgdm9pZCBhcHBseU1v
ZGlmaWNhdGlvbigpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAgQnl0ZWNvZGVHcmFwaCYgbV9ncmFw
aDsKICAgICBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogbV9jb2RlQmxvY2s7Ci0gICAgSW5z
dHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1fd3JpdGVyOworICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXImIG1fd3JpdGVyOwogICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCmluZGV4IGZiNTZkNGNiYjVjOWU4NzJhOTc0ZjUyNTRlNjFhYjBmMGU5N2ZkZmIuLmQ5
YzcyYjE4ZDlhN2U3ZmMzOGMzMWFmMTM5Y2ZkYTUyYzhkMzRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtNDIsNyArNDIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgVVNFUyBVU0VTX09SX0RFRlMKICNkZWZpbmUg
REVGUyBVU0VTX09SX0RFRlMKIAotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmly
dHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2
b2lkKFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQogewogICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0
ZXIsIGNvbnN0IEluc3RydQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFs
UmVnaXN0ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1w
bCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQ2hl
Y2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0
ZXIpPiYgZnVuY3RvcikKIHsKIAogICAgIGF1dG8gZGVmQXQgPSBbJl0gKENoZWNrcG9pbnQgdGFy
Z2V0LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA3YjUyYTM5MGVjYzUzOGZjYjZiNjFi
NzU0YzA3YmQxMzgzZTc0YmZmLi45ODhlNmMzMDY4OThmMThhNzUzNmVjMmFhMjI3NDlhNmE4OTVi
MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyLCBjb25zdCBJbnN0cnVj
dGlvbiosIENoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rl
cik+Jik7Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQsIGNv
bnN0IEluc3RydWN0aW9uKiwgQ2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmly
dHVhbFJlZ2lzdGVyKT4mKTsKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChW
aXJ0dWFsUmVnaXN0ZXIsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBDaGVja3BvaW50LCBjb25zdCBT
Y29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYpOwordm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkLCBjb25zdCBKU0luc3RydWN0aW9uKiwgQ2hlY2tw
b2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mKTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
K3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlv
bi0+b3Bjb2RlSUQoKTsKICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgKGNvZGVCbG9j
ay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IGNvZGVCbG9jay0+dXNlc0Nh
bGxFdmFsKCkpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW8KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENo
ZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7CiAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbChjb2RlQmxvY2st
Pm51bVZhcnMoKSwgaW5zdHJ1Y3Rpb24sIGNoZWNrcG9pbnQsIHNjb3BlZExhbWJkYTx2b2lkKFZp
cnR1YWxSZWdpc3Rlcik+KGZ1bmN0b3IpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMGU1NzlmOTI5MDNiOGM4ZWE3NzU1NjEzNmQ2ZTUx
NmExZTRjYTZmMi4uYjM3OWM5N2M5ZGU5N2Q3MGZmNGYwOTE3ZDcyMTA2ODZmYmQ0Yjg0OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIzNiw3
ICsyMzYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQp
CiAgICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEdyYXBoKHRoaXMs
IGluc3RydWN0aW9ucygpLCBncmFwaCwgb3V0LCBzdGF0dXNNYXApOwogfQogCi12b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQordm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIEJ5dGVj
b2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGl0LCBzdGF0dXNN
YXApOwogfQpAQCAtNDc0LDEwICs0NzQsMTEgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgYnJlYWs7IFwKICAgICB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5z
dHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKKyAgICBjb25zdCBhdXRvJiBpbnN0cnVj
dGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOwogICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1
Y3Rpb24gOiBpbnN0cnVjdGlvblN0cmVhbSkgewogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwotICAgICAgICBtX2J5dGVjb2RlQ29zdCArPSBvcGNv
ZGVMZW5ndGhzW29wY29kZUlEXTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChPcGNvZGVJRFdpZHRo
QnlTaXplPEpTT3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemUg
PT0gMSk7CisgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURd
ICsgMTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgICAgICBMSU5LKE9wR2V0QnlW
YWwsIHByb2ZpbGUpCiAgICAgICAgIExJTksoT3BHZXRQcml2YXRlTmFtZSwgcHJvZmlsZSkKQEAg
LTIwODAsNyArMjA4MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRl
Y29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgaW50CiAKIGJvb2wgQ29kZUJs
b2NrOjpoYXNPcERlYnVnRm9yTGluZUFuZENvbHVtbih1bnNpZ25lZCBsaW5lLCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBjb2x1bW4pCiB7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CisgICAgY29uc3QgYXV0byYgaW5zdHJ1
Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDog
aW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgaWYgKGl0LT5pczxPcERlYnVnPigpKSB7CiAg
ICAgICAgICAgICBpbnQgdW51c2VkOwpAQCAtMzA3Miw3ICszMDczLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6Om5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCkKICAgICAgICAgcmV0dXJuIHN5bWJvbFRh
YmxlLT5jb250YWlucyhsb2NrZXIsIHVpZCk7CiAgICAgfTsKIAotICAgIGNvbnN0IEluc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOworICAgIGNvbnN0
IGF1dG8mIGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9uU3RyZWFtKSB7CiAgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKQEAgLTMyNjIsOCArMzI2Myw4IEBAIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0
ZSgpCiAgICAgICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgICAgICB9CiAgICAg
fQotICAgICAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0g
PSBpbnN0cnVjdGlvbnMoKTsKKworICAgIGNvbnN0IGF1dG8mIGluc3RydWN0aW9uU3RyZWFtID0g
aW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6IGluc3Ry
dWN0aW9uU3RyZWFtKSB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IGluc3RydWN0aW9uLT5v
cGNvZGVJRCgpOwogICAgICAgICBpZiAoISFiYXNlbGluZUFsdGVybmF0aXZlKCktPmhhbmRsZXJG
b3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpKSkgewpA
QCAtMzMxMSwxMyArMzMxMiwxMyBAQCB2b2lkIENvZGVCbG9jazo6c2V0U3RlcHBpbmdNb2RlKENv
ZGVCbG9jazo6U3RlcHBpbmdNb2RlIG1vZGUpCiAgICAgICAgIGpldHRpc29uKFByb2ZpbGVyOjpK
ZXR0aXNvbkR1ZVRvRGVidWdnZXJTdGVwcGluZyk7CiB9CiAKLWludCBDb2RlQmxvY2s6Om91dE9m
TGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoraW50IENvZGVCbG9jazo6b3V0
T2ZMaW5lSnVtcE9mZnNldChjb25zdCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAgICBpbnQgb2Zm
c2V0ID0gYnl0ZWNvZGVPZmZzZXQocGMpOwogICAgIHJldHVybiBtX3VubGlua2VkQ29kZS0+b3V0
T2ZMaW5lSnVtcE9mZnNldChvZmZzZXQpOwogfQogCi1jb25zdCBJbnN0cnVjdGlvbiogQ29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykKK2NvbnN0IEpT
SW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBKU0luc3Ry
dWN0aW9uKiBwYykKIHsKICAgICBpbnQgb2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQocGMpOwogICAg
IGludCB0YXJnZXQgPSBtX3VubGlua2VkQ29kZS0+b3V0T2ZMaW5lSnVtcE9mZnNldChvZmZzZXQp
OwpAQCAtMzMzNCw3ICszMzM1LDcgQEAgVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnkKICAgICByZXR1
cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4
Lm9mZnNldCgpKS5wdHIoKSk7CiB9CiAKLUJpbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpi
aW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCitCaW5hcnlBcml0
aFByb2ZpbGUqIENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewogICAgIGNhc2Ug
b3BfYWRkOgpAQCAtMzM1Miw3ICszMzUzLDcgQEAgQmluYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxv
Y2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCitVbmFyeUFyaXRoUHJvZmls
ZSogQ29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IHBjKQogewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKICAgICBjYXNlIG9wX25lZ2F0
ZToKQEAgLTMzOTEsOSArMzM5Miw5IEBAIHZvaWQgQ29kZUJsb2NrOjppbnNlcnRCYXNpY0Jsb2Nr
Qm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKQogewogICAgIGlmICghdW5saW5rZWRD
b2RlQmxvY2soKS0+aGFzT3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGNvbnN0IEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQ+JiBieXRlY29kZU9mZnNldHMgPSB1bmxpbmtlZENvZGVCbG9jaygpLT5vcFByb2ZpbGVD
b250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cygpOworICAgIGNvbnN0IEZpeGVkVmVjdG9yPEpTSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJs
b2NrKCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBieXRlY29kZU9mZnNldHMuc2l6ZSgpOyBpIDwg
b2Zmc2V0c0xlbmd0aDsgaSsrKSB7Ci0gICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250
cm9sX2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2Nr
LCBmaW5kaW5nIAorICAgICAgICAvLyBCZWNhdXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93IGlz
IGVtaXR0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBldmVyeSBiYXNpYyBibG9jaywgZmluZGluZwog
ICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMg
dGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMgYmxvY2suCiAgICAgICAgIHNpemVfdCBz
dGFydElkeCA9IGJ5dGVjb2RlT2Zmc2V0c1tpXTsKICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9
IGluc3RydWN0aW9ucygpLmF0KHN0YXJ0SWR4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAppbmRleCA0OTFiYjhlZTA1YjE1OTczZDU5ZGQzNjNhODQwNTY0NWI2
YzJjMWRkLi5jYzdlMmNkZDBiNjM0ODcwZmQ1Y2QyNjM0YTllNTdiMDQ1ZGNiNTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMTUsMTIgKzIxNSwx
MiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBCeXRlY29kZSgpOwogICAgIHZvaWQgZHVtcEJ5
dGVjb2RlKFByaW50U3RyZWFtJik7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFw
JiA9IElDU3RhdHVzTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFw
JiA9IElDU3RhdHVzTWFwKCkpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1
c01hcCgpKTsKIAogICAgIHZvaWQgZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKFByaW50U3RyZWFtJik7
Ci0gICAgdm9pZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlv
biopOwotICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKKyAgICB2b2lkIHByaW50U3Ry
dWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHBy
aW50U3RydWN0dXJlKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgSlNJbnN0
cnVjdGlvbiosIGludCBvcGVyYW5kKTsKIAogICAgIHZvaWQgZHVtcE1hdGhJQ1N0YXRzKCk7CiAK
QEAgLTI4OCwzMiArMjg4LDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxpbmtJbmNvbWluZ1BvbHlt
b3JwaGljQ2FsbChDYWxsRnJhbWUqIGNhbGxlckZyYW1lLCBQb2x5bW9ycGhpY0NhbGxOb2RlKik7
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotICAgIGNvbnN0IEluc3RydWN0aW9uKiBvdXRPZkxp
bmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYyk7Ci0gICAgaW50IG91dE9mTGluZUp1
bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpCisgICAgY29uc3QgSlNJ
bnN0cnVjdGlvbiogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBKU0luc3RydWN0aW9uKiBwYyk7
CisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZS0+b3V0T2ZMaW5l
SnVtcE9mZnNldChvZmZzZXQpOwogICAgIH0KLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChj
b25zdCBJbnN0cnVjdGlvbiogcGMpOwotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAgIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVt
cE9mZnNldChjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ucHRyKCkp
OwogICAgIH0KIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRlY29kZU9mZnNldChjb25zdCBJbnN0
cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKKyAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAgICAgIGNv
bnN0IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYXQoMCkucHRyKCk7
Ci0gICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rp
b25zQmVnaW4pICsgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0aW9uKj4o
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIGluc3RydWN0
aW9ucygpLnNpemUoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJldHVybkFkZHJlc3MgPj0g
aW5zdHJ1Y3Rpb25zQmVnaW4gJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9uc0VuZCk7CiAg
ICAgICAgIHJldHVybiByZXR1cm5BZGRyZXNzIC0gaW5zdHJ1Y3Rpb25zQmVnaW47CiAgICAgfQog
Ci0gICAgaW5saW5lIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleChjb25zdCBJbnN0cnVjdGlv
biogcmV0dXJuQWRkcmVzcykKKyAgICBpbmxpbmUgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgewogICAgICAgICByZXR1
cm4gQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldChyZXR1cm5BZGRyZXNzKSk7CiAgICAgfQog
Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRDb2RlLT5pbnN0cnVjdGlvbnMoKTsgfQotICAgIGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlu
c3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQorICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5pbnN0
cnVjdGlvbnMoKTsgfQorICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0
ZWNvZGVJbmRleCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgp
LnB0cigpOyB9CiAKICAgICBzaXplX3QgcHJlZGljdGVkTWFjaGluZUNvZGVTaXplKCk7CiAKQEAg
LTQyOCw4ICs0MjgsOCBAQCBwdWJsaWM6CiAKICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7CiAgICAgVW5hcnlB
cml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4KTsKLSAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJp
bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICBVbmFyeUFy
aXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBKU0luc3RydWN0aW9uKik7
CiAKICAgICBib29sIGNvdWxkVGFrZVNwZWNpYWxBcml0aEZhc3RDYXNlKEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCmluZGV4IDUxZjFkMDJlMTgyNTU4YzljMjkxMmQ4NDBjNTg4MTA0OGNhODAxZDku
LjUwZDcyYTQ0MWUzMWE4Y2E2MWUwMzMwNDQ0N2Q2NzdjMzU4ZjAxYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBAIHN0
cnVjdCBKU09wY29kZVRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25l
ZCogb3Bjb2RlTGVuZ3RocyA9IDo6SlNDOjpvcGNvZGVMZW5ndGhzOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogY29uc3QqIG9wY29kZU5hbWVzID0gOjpKU0M6Om9wY29kZU5hbWVz
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjaGVja3BvaW50Q291bnRUYWJsZSA9IGJ5dGVj
b2RlQ2hlY2twb2ludENvdW50VGFibGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXpl
IG1heE9wY29kZUlEV2lkdGggPSBtYXhKU09wY29kZUlEV2lkdGg7CiB9OwogCiBzdHJ1Y3QgV2Fz
bU9wY29kZVRyYWl0cyB7CkBAIC01MiwxMiArNTMsMTIgQEAgc3RydWN0IFdhc21PcGNvZGVUcmFp
dHMgewogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMg
PSB3YXNtT3Bjb2RlTGVuZ3RoczsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGNv
bnN0KiBvcGNvZGVOYW1lcyA9IHdhc21PcGNvZGVOYW1lczsKICAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY2hlY2twb2ludENvdW50VGFibGUgPSB3YXNtQ2hlY2twb2ludENvdW50VGFibGU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG1heE9wY29kZUlEV2lkdGggPSBtYXhXYXNt
T3Bjb2RlSURXaWR0aDsKIH07CiAKIAotdGVtcGxhdGU8dHlwZW5hbWUgT3Bjb2RlPgordGVtcGxh
dGU8dHlwZW5hbWUgVHJhaXRzPgogc3RydWN0IEJhc2VJbnN0cnVjdGlvbiB7Ci0KICAgICBzdHJ1
Y3QgTWV0YWRhdGEgeyB9OwogCiBwcm90ZWN0ZWQ6CkBAIC02OCwxMjEgKzY5LDEyNCBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlPE9wY29kZVNpemUgV2lkdGg+CiAgICAgY2xhc3MgSW1wbCB7CiAg
ICAgcHVibGljOgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICAgICAgdHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQ+KG1fb3Bjb2Rl
KTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgVHlwZUJ5U2l6ZTxPcGNvZGVT
aXplOjpOYXJyb3c+Ojp1bnNpZ25lZFR5cGUgbV9vcGNvZGU7CisgICAgICAgIHR5cGVuYW1lIE9w
Y29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBXaWR0aD46Om9wY29kZVR5cGUgbV9vcGNvZGU7CiAg
ICAgfTsKIAogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2Rl
VHJhaXRzPgogICAgIHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgaWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkKLSAgICAgICAgICAgIHJldHVy
biB3aWRlMzI8VHJhaXRzPigpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCk7Ci0gICAgICAg
IGlmIChpc1dpZGUxNjxUcmFpdHM+KCkpCi0gICAgICAgICAgICByZXR1cm4gd2lkZTE2PFRyYWl0
cz4oKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpOwotICAgICAgICByZXR1cm4gbmFycm93
KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKTsKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkp
CisgICAgICAgICAgICByZXR1cm4gd2lkZTMyKCktPm9wY29kZUlEKCk7CisgICAgICAgIGlmIChp
c1dpZGUxNigpKQorICAgICAgICAgICAgcmV0dXJuIHdpZGUxNigpLT5vcGNvZGVJRCgpOworICAg
ICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgY29uc3QgY2hhciogbmFtZSgp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gVHJhaXRzOjpvcGNvZGVOYW1lc1tvcGNvZGVJ
RDxUcmFpdHM+KCldOworICAgICAgICByZXR1cm4gVHJhaXRzOjpvcGNvZGVOYW1lc1tvcGNvZGVJ
RCgpXTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGlzV2lkZTE2KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBu
YXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRyYWl0czo6d2lkZTE2Owor
ICAgICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCkgPT0gVHJhaXRzOjp3aWRlMTY7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAg
ICAgYm9vbCBpc1dpZGUzMigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbmFycm93KCkt
PnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUzMjsKKyAgICAgICAg
cmV0dXJuIG5hcnJvdygpLT5vcGNvZGVJRCgpID09IFRyYWl0czo6d2lkZTMyOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIE9wY29k
ZVNpemUgd2lkdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzV2lkZTMyPFRyYWl0cz4o
KSkKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkpCiAgICAgICAgICAgICByZXR1cm4gT3Bjb2RlU2l6
ZTo6V2lkZTMyOwotICAgICAgICByZXR1cm4gaXNXaWRlMTY8VHJhaXRzPigpID8gT3Bjb2RlU2l6
ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93OworICAgICAgICByZXR1cm4gaXNXaWRlMTYo
KSA/IE9wY29kZVNpemU6OldpZGUxNiA6IE9wY29kZVNpemU6Ok5hcnJvdzsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBib29sIGhh
c01ldGFkYXRhKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+
KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhOworICAgICAgICByZXR1
cm4gb3Bjb2RlSUQoKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAg
ICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3Bj
b2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50
czsKKyAgICAgICAgcmV0dXJuIG9wY29kZUlEKCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVz
V2l0aENoZWNrcG9pbnRzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9
IEpTT3Bjb2RlVHJhaXRzPgogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hlY2twb2ludHMoKSBjb25z
dAogICAgIHsKLSAgICAgICAgaWYgKCFoYXNDaGVja3BvaW50czxUcmFpdHM+KCkpCisgICAgICAg
IGlmICghaGFzQ2hlY2twb2ludHMoKSkKICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBy
ZXR1cm4gVHJhaXRzOjpjaGVja3BvaW50Q291bnRUYWJsZVtvcGNvZGVJRDxUcmFpdHM+KCldOwor
ICAgICAgICByZXR1cm4gVHJhaXRzOjpjaGVja3BvaW50Q291bnRUYWJsZVtvcGNvZGVJRCgpXTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4K
ICAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1dp
ZGUzMjxUcmFpdHM+KCkpCisgICAgICAgIGlmIChpc1dpZGUzMigpKQogICAgICAgICAgICAgcmV0
dXJuIDI7Ci0gICAgICAgIGlmIChpc1dpZGUxNjxUcmFpdHM+KCkpCisgICAgICAgIGlmIChpc1dp
ZGUxNigpKQogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIE9w
Y29kZVNpemUgb3Bjb2RlSURXaWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNXaWRl
MzIoKSkKKyAgICAgICAgICAgIHJldHVybiBPcGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bj
b2RlU2l6ZTo6V2lkZTMyPjo6b3Bjb2RlSURTaXplOworICAgICAgICBpZiAoaXNXaWRlMTYoKSkK
KyAgICAgICAgICAgIHJldHVybiBPcGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6
ZTo6V2lkZTE2Pjo6b3Bjb2RlSURTaXplOworICAgICAgICByZXR1cm4gT3Bjb2RlSURXaWR0aEJ5
U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJvdz46Om9wY29kZUlEU2l6ZTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBvcGNvZGVJREJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAodW5zaWduZWQpIG9wY29kZUlEV2lkdGgoKTsKKyAgICB9CisKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0CiAgICAgewotICAgICAgICBhdXRvIHNpemVTaGlmdEFtb3VudCA9IHRoaXMtPnNpemVT
aGlmdEFtb3VudDxUcmFpdHM+KCk7CisgICAgICAgIGF1dG8gc2l6ZVNoaWZ0QW1vdW50ID0gdGhp
cy0+c2l6ZVNoaWZ0QW1vdW50KCk7CiAgICAgICAgIHNpemVfdCBwcmVmaXhTaXplID0gc2l6ZVNo
aWZ0QW1vdW50ID8gMSA6IDA7CiAgICAgICAgIHNpemVfdCBvcGVyYW5kU2l6ZSA9IHN0YXRpY19j
YXN0PHNpemVfdD4oMSkgPDwgc2l6ZVNoaWZ0QW1vdW50OwotICAgICAgICBzaXplX3Qgc2l6ZU9m
Qnl0ZWNvZGUgPSAxOwotICAgICAgICByZXR1cm4gc2l6ZU9mQnl0ZWNvZGUgKyAoVHJhaXRzOjpv
cGNvZGVMZW5ndGhzW29wY29kZUlEPFRyYWl0cz4oKV0gLSAxKSAqIG9wZXJhbmRTaXplICsgcHJl
Zml4U2l6ZTsKKyAgICAgICAgc2l6ZV90IHNpemVPZkJ5dGVjb2RlID0gb3Bjb2RlSURCeXRlcygp
OworICAgICAgICByZXR1cm4gc2l6ZU9mQnl0ZWNvZGUgKyBUcmFpdHM6Om9wY29kZUxlbmd0aHNb
b3Bjb2RlSUQoKV0gKiBvcGVyYW5kU2l6ZSArIHByZWZpeFNpemU7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgdGVt
cGxhdGU8Y2xhc3MgVD4KICAgICBib29sIGlzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVDo6b3Bjb2RlSUQ7CisgICAgICAgIHJldHVybiBvcGNv
ZGVJRCgpID09IFQ6Om9wY29kZUlEOwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5
cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAg
ICAgVCBhcygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkp
OworICAgICAgICBBU1NFUlQoKGlzPFQ+KCkpKTsKICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aD4KICAgICBU
IGFzS25vd25XaWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0
cz4oKSkpOworICAgICAgICBBU1NFUlQoKGlzPFQ+KCkpKTsKICAgICAgICAgcmV0dXJuIFQocmVp
bnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2ln
bmVkVHlwZSo+KHRoaXMgKyAod2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgICBUKiBjYXN0KCkKICAgICB7Ci0g
ICAgICAgIEFTU0VSVCgoaXM8VCwgVHJhaXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4o
KSkpOwogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih0aGlzKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIGNvbnN0IFQqIGNhc3QoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgQVNTRVJUKChpczxUPigp
KSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPih0aGlzKTsKICAg
ICB9CiAKQEAgLTE5MSwyOSArMTk1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpOYXJyb3c+Kj4odGhpcyk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAg
Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+KiB3aWRlMTYoKSBjb25zdAogICAgIHsKLQot
ICAgICAgICBBU1NFUlQoaXNXaWRlMTY8VHJhaXRzPigpKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoKnRoaXMpID09IDEsICJQb2ludGVyIG1hdGgiKTsKKyAgICAgICAgQVNTRVJUKGlz
V2lkZTE2KCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9w
Y29kZVNpemU6OldpZGUxNj4qPih0aGlzICsgMSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgY29uc3QgSW1wbDxPcGNvZGVTaXpl
OjpXaWRlMzI+KiB3aWRlMzIoKSBjb25zdAogICAgIHsKLQotICAgICAgICBBU1NFUlQoaXNXaWRl
MzI8VHJhaXRzPigpKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoKnRoaXMpID09IDEs
ICJQb2ludGVyIG1hdGgiKTsKKyAgICAgICAgQVNTRVJUKGlzV2lkZTMyKCkpOwogICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUzMj4qPih0
aGlzICsgMSk7CiAgICAgfQogfTsKIAotc3RydWN0IEluc3RydWN0aW9uIDogcHVibGljIEJhc2VJ
bnN0cnVjdGlvbjxPcGNvZGVJRD4gewotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKEluc3RydWN0
aW9uKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwot
Ci1zdHJ1Y3QgV2FzbUluc3RhbmNlIDogcHVibGljIEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2Rl
SUQ+IHsKLX07Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtSW5zdGFuY2UpID09IDEsICJTbyBw
b2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7Cit1c2luZyBKU0luc3RydWN0
aW9uID0gQmFzZUluc3RydWN0aW9uPEpTT3Bjb2RlVHJhaXRzPjsKK3VzaW5nIFdhc21JbnN0cnVj
dGlvbiAgPSBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZVRyYWl0cz47CitzdGF0aWNfYXNzZXJ0
KHNpemVvZihKU0luc3RydWN0aW9uKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlzIHRoZSBzYW1l
IGFzIGJ5dGUgbWF0aCIpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCmluZGV4IDM4Y2Fm
OTVmZDllMDYxMDUzZTEzNWE1OWZlMWEzYzc1Zjg1YTg1ZDMuLjUzNTQyOTdjZGZhNmI3OWQwNjZh
YTEzNzFmZTgwNjhkYjE0NWUwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcApAQCAtMzAsMjAgKzMwLDQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSW5zdHJ1
Y3Rpb25TdHJlYW0pOwogCi1JbnN0cnVjdGlvblN0cmVhbTo6SW5zdHJ1Y3Rpb25TdHJlYW0oSW5z
dHJ1Y3Rpb25CdWZmZXImJiBpbnN0cnVjdGlvbnMpCi0gICAgOiBtX2luc3RydWN0aW9ucyhXVEZN
b3ZlKGluc3RydWN0aW9ucykpCi17IH0KLQotc2l6ZV90IEluc3RydWN0aW9uU3RyZWFtOjpzaXpl
SW5CeXRlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsKLX0K
LQotYm9vbCBJbnN0cnVjdGlvblN0cmVhbTo6Y29udGFpbnMoSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uKSBjb25zdAotewotCi0gICAgY29uc3QgdWludDhfdCogcG9pbnRlciA9IGJpdHdpc2VfY2Fz
dDxjb25zdCB1aW50OF90Kj4oaW5zdHJ1Y3Rpb24pOwotICAgIHJldHVybiBwb2ludGVyID49IG1f
aW5zdHJ1Y3Rpb25zLmRhdGEoKSAmJiBwb2ludGVyIDwgKG1faW5zdHJ1Y3Rpb25zLmRhdGEoKSAr
IG1faW5zdHJ1Y3Rpb25zLnNpemUoKSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmgKaW5kZXggM2U5NzhkMzMyZDU4ZDcw
YTUyOWQyOGYwNTI2NjQ0OGNmZjc2ZWIxMC4uY2U2N2RjZjJkMDVkMDE4YTdlMTQ5ZDllZTBmNzE5
NmEzNmFjMDNjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uU3RyZWFtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uU3RyZWFtLmgKQEAgLTM0LDE1ICszNCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
REVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSW5zdHJ1Y3Rpb25TdHJlYW0p
OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0cnVjdGlvblR5cGU+CiBjbGFzcyBJbnN0cnVjdGlv
blN0cmVhbSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBmcmllbmQgY2xh
c3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVu
ZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVk
SW5zdHJ1Y3Rpb25TdHJlYW07CiBwdWJsaWM6CiAgICAgdXNpbmcgSW5zdHJ1Y3Rpb25CdWZmZXIg
PSBWZWN0b3I8dWludDhfdCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3csIDE2LCBJbnN0cnVjdGlv
blN0cmVhbU1hbGxvYz47CiAKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5zdHJ1
Y3Rpb25zLnNpemUoKTsKKyAgICB9CiAKICAgICB1c2luZyBPZmZzZXQgPSB1bnNpZ25lZDsKIApA
QCAtNTEsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIEJhc2VSZWYgewogICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rp
b25TdHJlYW07CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgSW5zdHJ1
Y3Rpb25TdHJlYW07CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEJhc2VSZWYoY29uc3QgQmFzZVJl
ZjxJbnN0cnVjdGlvbkJ1ZmZlcj4mIG90aGVyKQpAQCAtNjUsOCArNjksOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9pbmRleCA9IG90aGVyLm1faW5kZXg7CiAgICAgICAgIH0KIAotICAgICAg
ICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1
bndyYXAoKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHB0cigpIGNvbnN0
IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5
cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsgfQorICAgICAgICBpbmxp
bmUgY29uc3QgSW5zdHJ1Y3Rpb25UeXBlKiBwdHIoKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsg
fQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCYXNlUmVmPEluc3RydWN0aW9uQnVm
ZmVyPiYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTg3LDcgKzkxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0
aW9uKiB1bndyYXAoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3Ry
dWN0aW9uKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5kZXhdKTsgfQorICAgICAgICBpbmxpbmUgY29u
c3QgSW5zdHJ1Y3Rpb25UeXBlKiB1bndyYXAoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IEluc3RydWN0aW9uVHlwZSo+KCZtX2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0K
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgQmFzZVJlZihJbnN0cnVjdGlvbkJ1ZmZlciYgaW5z
dHJ1Y3Rpb25zLCBzaXplX3QgaW5kZXgpCkBAIC0xMDMsMzMgKzEwNywzNiBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgUmVmID0gQmFzZVJlZjxjb25zdCBJbnN0cnVjdGlvbkJ1ZmZlcj47CiAKICAgICBj
bGFzcyBNdXRhYmxlUmVmIDogcHVibGljIEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+IHsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB1c2luZyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPjo6
QmFzZVJlZjsKKyAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj46Om1faW5k
ZXg7CisgICAgICAgIHVzaW5nIEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+OjptX2luc3RydWN0
aW9uczsKIAogICAgIHB1YmxpYzoKICAgICAgICAgUmVmIGZyZWV6ZSgpIGNvbnN0ICB7IHJldHVy
biBSZWYgeyBtX2luc3RydWN0aW9ucywgbV9pbmRleCB9OyB9Ci0gICAgICAgIGlubGluZSBJbnN0
cnVjdGlvbiogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHVud3JhcCgpOyB9Ci0gICAgICAgIGlubGlu
ZSBjb25zdCBJbnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgp
OyB9Ci0gICAgICAgIGlubGluZSBJbnN0cnVjdGlvbiogcHRyKCkgeyByZXR1cm4gdW53cmFwKCk7
IH0KLSAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiBwdHIoKSBjb25zdCB7IHJldHVy
biB1bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb25UeXBlKiBvcGVyYXRvci0+
KCkgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9u
VHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlu
bGluZSBJbnN0cnVjdGlvblR5cGUqIHB0cigpIHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAg
IGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHB0cigpIGNvbnN0IHsgcmV0dXJuIHVud3Jh
cCgpOyB9CiAgICAgICAgIGlubGluZSBvcGVyYXRvciBSZWYoKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1faW5kZXggfTsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiB1bndyYXAoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5k
ZXhdKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVj
dGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlubGluZSBJbnN0cnVjdGlvblR5cGUqIHVud3Jh
cCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1
Y3Rpb25zW21faW5kZXhdKTsgfQorICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb25UeXBl
KiB1bndyYXAoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0
aW9uVHlwZSo+KCZtX2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0KICAgICB9OwogCiBwcml2YXRl
OgogICAgIGNsYXNzIGl0ZXJhdG9yIDogcHVibGljIFJlZiB7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBJbnN0cnVjdGlvblN0cmVhbTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBj
bGFzcyBJbnN0cnVjdGlvblN0cmVhbTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdXNpbmcgUmVm
OjpSZWY7CisgICAgICAgIHVzaW5nIFJlZjo6bV9pbmRleDsKIAogICAgICAgICBSZWYmIG9wZXJh
dG9yKigpCiAgICAgICAgIHsKQEAgLTE0NCw3ICsxNTEsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICp0
aGlzICs9IHB0cigpLT5zaXplKCk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXMgKz0gdGhpcy0+
cHRyKCktPnNpemUoKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTE3NiwxOSArMTgzLDMyIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmRhdGEoKTsKICAgICB9CiAK
LSAgICBib29sIGNvbnRhaW5zKEluc3RydWN0aW9uKikgY29uc3Q7CisgICAgYm9vbCBjb250YWlu
cyhJbnN0cnVjdGlvblR5cGUqIGluc3RydWN0aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgY29u
c3QgdWludDhfdCogcG9pbnRlciA9IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5zdHJ1
Y3Rpb24pOworICAgICAgICByZXR1cm4gcG9pbnRlciA+PSBtX2luc3RydWN0aW9ucy5kYXRhKCkg
JiYgcG9pbnRlciA8IChtX2luc3RydWN0aW9ucy5kYXRhKCkgKyBtX2luc3RydWN0aW9ucy5zaXpl
KCkpOworICAgIH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEluc3RydWN0aW9uU3RyZWFt
KEluc3RydWN0aW9uQnVmZmVyJiYpOworICAgIGV4cGxpY2l0IEluc3RydWN0aW9uU3RyZWFtKElu
c3RydWN0aW9uQnVmZmVyJiYgaW5zdHJ1Y3Rpb25zKQorICAgICAgICA6IG1faW5zdHJ1Y3Rpb25z
KFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSkKKyAgICB7IH0KIAogICAgIEluc3RydWN0aW9uQnVmZmVy
IG1faW5zdHJ1Y3Rpb25zOwogfTsKIAotY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgOiBw
dWJsaWMgSW5zdHJ1Y3Rpb25TdHJlYW0gewordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25U
eXBlPgorY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgOiBwdWJsaWMgSW5zdHJ1Y3Rpb25T
dHJlYW08SW5zdHJ1Y3Rpb25UeXBlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0
ZXI7CiBwdWJsaWM6CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBl
Pjo6SW5zdHJ1Y3Rpb25TdHJlYW07CisgICAgdXNpbmcgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJl
YW08SW5zdHJ1Y3Rpb25UeXBlPjo6SW5zdHJ1Y3Rpb25CdWZmZXI7CisgICAgdXNpbmcgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPjo6TXV0YWJsZVJlZjsKKyAgICB1
c2luZyB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpPZmZzZXQ7
CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPjo6bV9pbnN0cnVj
dGlvbnM7CisKICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcigpCi0gICAgICAgIDogSW5zdHJ1
Y3Rpb25TdHJlYW0oeyB9KQorICAgICAgICA6IEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9u
VHlwZT4oeyB9KQogICAgIHsgfQogCiAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkJ1ZmZlcihJbnN0
cnVjdGlvbkJ1ZmZlciYmIGJ1ZmZlcikKQEAgLTI2MSwxNCArMjgxLDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9wb3NpdGlvbiA9IHJlZi5vZmZzZXQoKTsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGZpbmFsaXplKCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPj4gZmluYWxpemUoKQogICAgIHsKICAg
ICAgICAgbV9maW5hbGl6ZWQgPSB0cnVlOwogICAgICAgICBtX2luc3RydWN0aW9ucy5zaHJpbmtU
b0ZpdCgpOwotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFt
PiB7IG5ldyBJbnN0cnVjdGlvblN0cmVhbShXVEZNb3ZlKG1faW5zdHJ1Y3Rpb25zKSkgfTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlv
blR5cGU+PiB7IG5ldyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+KFdURk1vdmUo
bV9pbnN0cnVjdGlvbnMpKSB9OwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVj
dGlvblN0cmVhbT4gZmluYWxpemUoSW5zdHJ1Y3Rpb25CdWZmZXImIHVzZWRCdWZmZXIpCisgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT4+IGZpbmFs
aXplKEluc3RydWN0aW9uQnVmZmVyJiB1c2VkQnVmZmVyKQogICAgIHsKICAgICAgICAgbV9maW5h
bGl6ZWQgPSB0cnVlOwogCkBAIC0yNzgsNyArMjk4LDcgQEAgcHVibGljOgogCiAgICAgICAgIHVz
ZWRCdWZmZXIgPSBXVEZNb3ZlKG1faW5zdHJ1Y3Rpb25zKTsKIAotICAgICAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiB7IG5ldyBJbnN0cnVjdGlvblN0cmVhbShX
VEZNb3ZlKHJlc3VsdEJ1ZmZlcikpIH07CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPj4geyBuZXcgSW5zdHJ1Y3Rpb25TdHJl
YW08SW5zdHJ1Y3Rpb25UeXBlPihXVEZNb3ZlKHJlc3VsdEJ1ZmZlcikpIH07CiAgICAgfQogCiAg
ICAgTXV0YWJsZVJlZiByZWYoKQpAQCAtMjg2LDcgKzMwNiw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIE11dGFibGVSZWYgeyBtX2luc3RydWN0aW9ucywgbV9wb3NpdGlvbiB9OwogICAgIH0K
IAotICAgIHZvaWQgc3dhcChJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgb3RoZXIpCisgICAgdm9p
ZCBzd2FwKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyPEluc3RydWN0aW9uVHlwZT4mIG90aGVyKQog
ICAgIHsKICAgICAgICAgc3RkOjpzd2FwKG1fZmluYWxpemVkLCBvdGhlci5tX2ZpbmFsaXplZCk7
CiAgICAgICAgIHN0ZDo6c3dhcChtX3Bvc2l0aW9uLCBvdGhlci5tX3Bvc2l0aW9uKTsKQEAgLTI5
NSwxMCArMzE1LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjbGFzcyBpdGVyYXRvciA6
IHB1YmxpYyBNdXRhYmxlUmVmIHsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEluc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB1c2luZyBNdXRh
YmxlUmVmOjpNdXRhYmxlUmVmOworICAgICAgICB1c2luZyBNdXRhYmxlUmVmOjptX2luZGV4Owog
CiAgICAgcHVibGljOgogICAgICAgICBNdXRhYmxlUmVmJiBvcGVyYXRvciooKQpAQCAtMzE0LDcg
KzMzNSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsKKyAgICAg
ICAgICAgIHJldHVybiAqdGhpcyArPSB0aGlzLT5wdHIoKS0+c2l6ZSgpOwogICAgICAgICB9CiAg
ICAgfTsKIApAQCAtMzM0LDUgKzM1NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpbmFsaXpl
ZCB7IGZhbHNlIH07CiB9OwogCit1c2luZyBKU0luc3RydWN0aW9uU3RyZWFtID0gSW5zdHJ1Y3Rp
b25TdHJlYW08SlNJbnN0cnVjdGlvbj47Cit1c2luZyBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVy
ID0gSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI8SlNJbnN0cnVjdGlvbj47Cit1c2luZyBXYXNtSW5z
dHJ1Y3Rpb25TdHJlYW0gPSBJbnN0cnVjdGlvblN0cmVhbTxXYXNtSW5zdHJ1Y3Rpb24+OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApp
bmRleCA2YzA3M2NmNjc2YWJkNjgwYmYzYzNmNzRjMWUxZjEwNDQ4ODlkNzdhLi40MzQ4Y2U3YTgz
NzEwNjFlNmY1ZGNmZGIzZDViY2VjMTEzNmY3NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJCeXRlY29kZXMu
aCIKICNpbmNsdWRlICJMTEludE9wY29kZS5oIgorI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKIAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTg4LDEwICs4OSwx
NCBAQCBleHRlcm4gY29uc3QgdW5zaWduZWQgd2FzbU9wY29kZUxlbmd0aHNbXTsKICAgICBGT1Jf
RUFDSF9XQVNNX0lEKE9QQ09ERV9JRF9MRU5HVEhTKTsKICN1bmRlZiBPUENPREVfSURfTEVOR1RI
UwogCi1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEpTT3Bjb2RlTGVuZ3RoID0gLyogT3Bj
b2RlICovIDEgKyAvKiBXaWRlMzIgT3Bjb2RlICovIDEgKyAvKiBPcGVyYW5kcyAqLyAoTUFYX0xF
TkdUSF9PRl9CWVRFQ09ERV9JRFMgLSAxKSAqIDQ7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heFdhc21PcGNvZGVMZW5ndGggPSAvKiBPcGNvZGUgKi8gMSArIC8qIFdpZGUzMiBPcGNvZGUg
Ki8gMSArIC8qIE9wZXJhbmRzICovIChNQVhfTEVOR1RIX09GX1dBU01fSURTIC0gMSkgKiA0Owot
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhPcGNvZGVMZW5ndGggPSBzdGQ6Om1heChtYXhK
U09wY29kZUxlbmd0aCwgbWF4V2FzbU9wY29kZUxlbmd0aCk7Ci1zdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGJpdFdpZHRoRm9yTWF4T3Bjb2RlTGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4
cHIobWF4T3Bjb2RlTGVuZ3RoKSArIDE7CitzdGF0aWNfYXNzZXJ0KE5VTUJFUl9PRl9CWVRFQ09E
RV9JRFMgPCAyNTUpOworc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG1heEpTT3Bjb2RlSURX
aWR0aCA9IE9wY29kZVNpemU6Ok5hcnJvdzsKK3N0YXRpY19hc3NlcnQoTlVNQkVSX09GX1dBU01f
SURTIDwgMjU1KTsKK3N0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBtYXhXYXNtT3Bjb2RlSURX
aWR0aCA9IE9wY29kZVNpemU6OldpZGUxNjsgLy8gRklYTUU6IGNoYW5nZSB0aGlzIGJhY2sgb25j
ZSBFV1MgcGFzc2VzLgorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhKU0J5dGVjb2RlU3Ry
dWN0TGVuZ3RoID0gLyogT3Bjb2RlICovIG1heEpTT3Bjb2RlSURXaWR0aCArIC8qIFdpZGUzMiBP
cGNvZGUgKi8gMSArIC8qIE9wZXJhbmRzICovIE1BWF9MRU5HVEhfT0ZfQllURUNPREVfSURTICog
NDsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4V2FzbUJ5dGVjb2RlU3RydWN0TGVuZ3Ro
ID0gLyogT3Bjb2RlICovIG1heFdhc21PcGNvZGVJRFdpZHRoICsgLyogV2lkZTMyIE9wY29kZSAq
LyAxICsgLyogT3BlcmFuZHMgKi8gTUFYX0xFTkdUSF9PRl9XQVNNX0lEUyAqIDQ7CitzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1heEJ5dGVjb2RlU3RydWN0TGVuZ3RoID0gc3RkOjptYXgobWF4
SlNCeXRlY29kZVN0cnVjdExlbmd0aCwgbWF4V2FzbUJ5dGVjb2RlU3RydWN0TGVuZ3RoKTsKK3N0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhCeXRlY29kZVN0cnVjdExlbmd0
aCA9IFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKG1heEJ5dGVjb2RlU3RydWN0TGVuZ3RoKSArIDE7
CiAKICNkZWZpbmUgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShtYWNybykgXAog
ICAgIG1hY3JvKE9wQ2FsbFZhcmFyZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlSW5saW5lcy5oCmluZGV4IDRhMmFmNmExMDZhNDc5NDZjODhjMDlkZThjNWMx
ZDAxOTFlZjYxZTcuLjhiN2M2M2Y1ZGE3MmExMmU5N2ViZDZjZDdiNWY5NzYzZGEwZGI0ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZUlubGluZXMuaApAQCAt
NTQsNyArNTQsNyBAQCBpbmxpbmUgYm9vbCBpc09wY29kZVNoYXBlKE9wY29kZUlEIG9wY29kZUlE
KQogfQogCiB0ZW1wbGF0ZTxPcGNvZGVTaGFwZSBzaGFwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJs
ZV9pZl90PHNoYXBlICE9IEFueU9wY29kZVNoYXBlPj4KLWlubGluZSBib29sIGlzT3Bjb2RlU2hh
cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQoraW5saW5lIGJvb2wgaXNPcGNvZGVT
aGFwZShjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICByZXR1cm4gaXNP
cGNvZGVTaGFwZTxzaGFwZT4oaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVTaXplLmgKaW5kZXggMjRiMTYyYjkzZjc5ZTg0
YTBkMTg2NDIzMWFjZGJkNzNlNTlhYTA2My4uYTY1M2E5NmI4NzgyZmJlZWI0YzFmZGM0YzdlMjhh
NmJlZThkMzQzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZVNpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6
ZS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CisKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIE9wY29kZVNpemUgewpAQCAtNzIsNCAr
NzQsMjUgQEAgc3RydWN0IFBhZGRpbmdCeVNpemU8T3Bjb2RlU2l6ZTo6V2lkZTMyPiB7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbHVlID0gMTsKIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cywgT3Bjb2RlU2l6ZT4KK3N0cnVjdCBPcGNvZGVJRFdpZHRoQnlTaXplOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CitzdHJ1Y3QgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFp
dHMsIE9wY29kZVNpemU6Ok5hcnJvdz4geworICAgIHVzaW5nIG9wY29kZVR5cGUgPSB1aW50OF90
OworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBvcGNvZGVJRFNpemUgPSBPcGNvZGVT
aXplOjpOYXJyb3c7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CitzdHJ1Y3QgT3Bj
b2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6OldpZGUxNj4geworICAgIHVzaW5n
IG9wY29kZVR5cGUgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPFRyYWl0czo6bWF4T3Bjb2Rl
SURXaWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3csIHVpbnQ4X3QsIHVpbnQxNl90Pjo6dHlwZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgb3Bjb2RlSURTaXplID0gc3RhdGljX2Nh
c3Q8T3Bjb2RlU2l6ZT4oc2l6ZW9mKG9wY29kZVR5cGUpKTsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cz4KK3N0cnVjdCBPcGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6
ZTo6V2lkZTMyPiB7CisgICAgdXNpbmcgb3Bjb2RlVHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0
aW9uYWw8VHJhaXRzOjptYXhPcGNvZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdywgdWlu
dDhfdCwgdWludDE2X3Q+Ojp0eXBlOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBv
cGNvZGVJRFNpemUgPSBzdGF0aWNfY2FzdDxPcGNvZGVTaXplPihzaXplb2Yob3Bjb2RlVHlwZSkp
OworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGQyZTg1MDZjNGM0MjZi
YmI3YWI1NDU4NDdjOTIzNDAzMzQ0ZDliMTYuLmQ4YTc2MTBmNzNlMzdjZjczODQ3MzZiMGFmNzkz
MDYxMTIzZGI2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaz4KLXN0YXRp
YyB2b2lkIGdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCB2ZWN0b3JTaXplPiYgb3V0KQorc3RhdGljIHZvaWQgZ2V0SnVtcFRh
cmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0lu
c3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIGV4dHJhY3RT
dG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIFsm
XShpbnQzMl90IHJlbGF0aXZlT2Zmc2V0KSB7CiAgICAgICAgIG91dC5hcHBlbmQoaW5zdHJ1Y3Rp
b24ub2Zmc2V0KCkgKyByZWxhdGl2ZU9mZnNldCk7CkBAIC01NCw3ICs1NCw3IEBAIGVudW0gY2xh
c3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgewogfTsKIAogdGVtcGxhdGU8Q29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ssIHNpemVfdCB2ZWN0
b3JTaXplPgotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCit2b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3Ry
dWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5pc0Vt
cHR5KCkpOwogCkBAIC04OCwzMiArODgsMzIgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0KICAg
ICBvdXQuc2hyaW5rQ2FwYWNpdHkodG9JbmRleCk7CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0LCAzMj4mIG91dCkKIHsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8
Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCksIG91dCk7CiB9CiAKLXZvaWQgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQs
IDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQogewogICAgIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQp
OwogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxv
Y2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpCiB7CiAgICAgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2Rl
OjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7CiB9
CiAKLXZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMs
IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3V0KQordm9pZCByZWNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywg
Y29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3V0KQogewogICAgIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VD
b21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgb3V0KTsKIH0KIAotdm9pZCBmaW5kSnVt
cFRhcmdldHNGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCAxPiYgb3V0KQordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVm
JiBpbnN0cnVjdGlvbiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCwgMT4mIG91dCkKIHsKICAgICBnZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG91dCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1
Y3Rpb24oVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCAxPiYgb3V0KQordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0luc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KQogewogICAgIGdldEp1bXBUYXJnZXRzRm9ySW5z
dHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3V0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCBmMTc1
ZTJjY2E3ZGExMjhlYTQ1YjJiMTM3YTNiOWI4MDY2NTE2MmIwLi5kOGVhMGZkYzRlOTRmMzcxOTdm
MDY3OWYyNWYwYjBhYzlmYTc2ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIAogLy8gUmV0dXJuIGEgc29ydGVk
IGxpc3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVt
cC4KLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwotdm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Ci12b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAz
Mj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVj
dG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFZl
Y3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KTsKIAot
dm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0PiYgb3V0KTsKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3Rvcjx0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvdXQpOwogCi12b2lkIGZpbmRK
dW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7Ci12
b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYsIFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rp
b24oQ29kZUJsb2NrKiwgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwg
VmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7Cit2
b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yKiwgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgVmVjdG9yPHR5
cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKaW5kZXggMGJkNDAzOTg0NTJkOWNlZjY1MGM4
NDllYTdlMmUzZGM3MzY2NGRjNS4uZjdlZmFiYmQ5NDM4ZDA4ZmIwNjQzMzM4OTM0NGY0YWFjOTJh
MjdhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCkBAIC05MCw3ICs5MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgotaW5saW5lIGludCBqdW1wVGFyZ2V0
Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIHRhcmdldCkKK2lubGluZSBpbnQganVtcFRhcmdl
dEZvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIHRhcmdldCkKIHsKICAgICBp
ZiAodGFyZ2V0KQogICAgICAgICByZXR1cm4gdGFyZ2V0OwpAQCAtOTgsNyArOTgsNyBAQCBpbmxp
bmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbTo6UgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFwPgotaW5s
aW5lIGludCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oSGFzaE1hcCYgb3V0T2ZMaW5lSnVtcFRh
cmdldHMsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCB1bnNpZ25l
ZCB0YXJnZXQpCitpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihIYXNoTWFwJiBv
dXRPZkxpbmVKdW1wVGFyZ2V0cywgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6
UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgdGFyZ2V0KQogewogICAgIGlmICh0YXJnZXQpCiAg
ICAgICAgIHJldHVybiB0YXJnZXQ7CkBAIC0xMDcsMTQgKzEwNywxNCBAQCBpbmxpbmUgaW50IGp1
bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihIYXNoTWFwJiBvdXRPZkxpbmVKdW1wVGFyZ2V0cywgY29u
c3QgSW5zdHJ1YwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgQmxvY2s+Ci1p
bmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCitpbmxpbmUgaW50IGp1bXBU
YXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJ
bnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIHJldHVybiBqdW1wVGFyZ2V0Rm9ySW5zdHJ1
Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdGlvbj4KLWlubGluZSB2
b2lkIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgY29uc3QgRnVu
Y3Rpb24mIGZ1bmN0aW9uKQoraW5saW5lIHZvaWQgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9y
SW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rp
b25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlvbikKIHsK
ICNkZWZpbmUgQ0FTRV9PUChfX29wKSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogXApAQCAt
MTM1LDcgKzEzNSw3IEBAIFNXSVRDSF9KTVAoQ0FTRV9PUCwgU1dJVENIX0NBU0UsIFNXSVRDSF9E
RUZBVUxUX09GRlNFVCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1
bmN0aW9uLCB0eXBlbmFtZSBDb2RlQmxvY2tPckhhc2hNYXA+Ci1pbmxpbmUgdm9pZCB1cGRhdGVT
dG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2NrLCB1bnNpZ25l
ZCBmaW5hbE9mZnNldCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24s
IGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlvbiwgQ29kZUJsb2NrT3JIYXNoTWFwJiBjb2RlQmxvY2tP
ckhhc2hNYXApCitpbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKEJsb2NrJiYgY29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgdHlwZW5hbWUgSlNJ
bnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24m
IGZ1bmN0aW9uLCBDb2RlQmxvY2tPckhhc2hNYXAmIGNvZGVCbG9ja09ySGFzaE1hcCkKIHsKICNk
ZWZpbmUgQ0FTRV9PUChfX29wKSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogeyBcCkBAIC0x
NzEsNyArMTcxLDcgQEAgU1dJVENIX0pNUChDQVNFX09QLCBTV0lUQ0hfQ0FTRSwgU1dJVENIX0RF
RkFVTFRfT0ZGU0VUKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVu
Y3Rpb24+Ci1pbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9u
KEJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCitpbmxpbmUgdm9p
ZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRh
YmxlUmVmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICB1cGRhdGVTdG9y
ZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgZmluYWxPZmZzZXQsIGluc3Ry
dWN0aW9uLCBmdW5jdGlvbiwgY29kZUJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGFjNTcxMjdiY2Y4
OTA3MmJlMDM4NDE2ZGExMzliNDFmMTY0YWU2MTQuLmE5YWY3Y2Y0MzFmZDRjM2Y1MDVjZTgwYzBm
ZjVhMjQzMjQyMTU0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIGlubGluZSB2b2lk
IFVubGlua2VkQ29kZUJsb2NrOjpnZXRMaW5lQW5kQ29sdW1uKGNvbnN0IEV4cHJlc3Npb25SYW5n
ZUluZm8mIGluZm8sCiB9CiAKICNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgdm9pZCBkdW1wTGluZUNv
bHVtbkVudHJ5KHNpemVfdCBpbmRleCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0
aW9uU3RyZWFtLCB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5z
aWduZWQgY29sdW1uKQorc3RhdGljIHZvaWQgZHVtcExpbmVDb2x1bW5FbnRyeShzaXplX3QgaW5k
ZXgsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKQogewog
ICAgIGNvbnN0IGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvblN0cmVhbS5hdChpbnN0cnVj
dGlvbk9mZnNldCk7CiAgICAgY29uc3QgY2hhciogZXZlbnQgPSAiIjsKQEAgLTI5NCw3ICsyOTQs
NyBAQCBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKICAgICB9CiB9CiAK
LWNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25z
KCkgY29uc3QKK2NvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjpp
bnN0cnVjdGlvbnMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2luc3RydWN0aW9ucy5nZXQoKSk7
CiAgICAgcmV0dXJuICptX2luc3RydWN0aW9uczsKQEAgLTMzMiw3ICszMzIsNyBAQCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMmIFVubGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xv
dyhDb2RlQmxvY2sqIGNvZAogICAgIHJldHVybiAqbV9saXZlbmVzczsKIH0KIAotaW50IFVubGlu
a2VkQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgYnl0ZWNvZGVPZmZzZXQpCitpbnQgVW5saW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBP
ZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0
KQogewogICAgIEFTU0VSVChtX291dE9mTGluZUp1bXBUYXJnZXRzLmNvbnRhaW5zKGJ5dGVjb2Rl
T2Zmc2V0KSk7CiAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgKaW5kZXggMWM1OTA0MmUwZDBjMzgxMWIzYzliZTIxNThjZGM1NGMwMWRiYjgx
Yy4uOTQxYmYzYTliZmQyMmM2OWNkNmViZmU4NmY4ZDI5ZGRlNTFmN2VmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTIx
MSwxMiArMjExLDEyIEBAIHB1YmxpYzoKICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7
IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEpTUGFyc2VyU2NyaXB0TW9kZT4obV9zY3JpcHRNb2RlKTsgfQogCi0gICAgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OwotICAgIGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGluc3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQotICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKKyAgICBjb25zdCBKU0lu
c3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdDsKKyAgICBjb25zdCBKU0luc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IGluc3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQorICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIHsKICAgICAgICAg
Y29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5hdCgwKS5wdHIo
KTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVj
dGlvbnNCZWdpbikgKyBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICBjb25zdCBhdXRv
KiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5zdHJ1Y3Rpb24gPj0g
aW5zdHJ1Y3Rpb25zQmVnaW4gJiYgaW5zdHJ1Y3Rpb24gPCBpbnN0cnVjdGlvbnNFbmQpOwogICAg
ICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24gLSBpbnN0cnVjdGlvbnNCZWdpbjsKICAgICB9CkBAIC0y
NzgsNyArMjc4LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc3RhcnRD
b2x1bW4oKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29u
c3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KIAotICAgIGNvbnN0IEZpeGVkVmVjdG9yPEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
cygpIGNvbnN0CisgICAgY29uc3QgRml4ZWRWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0PiYgb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEpOwogICAgICAgICByZXR1cm4gbV9y
YXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKQEAgLTQzOCw5
ICs0MzgsOSBAQCBwcml2YXRlOgogICAgIFBhY2tlZFJlZlB0cjxTdHJpbmdJbXBsPiBtX3NvdXJj
ZVVSTERpcmVjdGl2ZTsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3VyY2VNYXBw
aW5nVVJMRGlyZWN0aXZlOwogCi0gICAgRml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgUmVmPFVubGlua2VkTWV0YWRh
dGFUYWJsZT4gbV9tZXRhZGF0YTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJl
YW0+IG1faW5zdHJ1Y3Rpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0luc3RydWN0aW9uU3Ry
ZWFtPiBtX2luc3RydWN0aW9uczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzPiBtX2xpdmVuZXNzOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00NzQsNyAr
NDc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgdW5zaWduZWQgbV9lbmREaXZvdDsKICAgICAg
ICAgfTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJh
bmdlPiBtX3R5cGVQcm9maWxlckluZm9NYXA7Ci0gICAgICAgIEZpeGVkVmVjdG9yPEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7
CisgICAgICAgIEZpeGVkVmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKICAgICAgICAgRml4ZWRWZWN0b3I8Qml0
VmVjdG9yPiBtX2JpdFZlY3RvcnM7CiAgICAgICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXJTZXQ+
IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKIApAQCAtNDgyLDEyICs0ODIsMTIgQEAgcHVibGlj
OgogICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB9
OwogCi0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCk7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNl
dChjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zm
c2V0KCkpOwogICAgIH0KLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVj
dGlvbiogcGMpCisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlv
biogcGMpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IHRoaXMtPmJ5
dGVjb2RlT2Zmc2V0KHBjKTsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHB1YmxpYzoKICAgICBCYXNlbGluZUV4
ZWN1dGlvbkNvdW50ZXImIGxsaW50RXhlY3V0ZUNvdW50ZXIoKSB7IHJldHVybiBtX2xsaW50RXhl
Y3V0ZUNvdW50ZXI7IH0KIAogcHJpdmF0ZToKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0
cyA9IEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAgICB1c2luZyBP
dXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCBpbnQ+OwogCiAgICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVK
dW1wVGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRleCA2ZDdiZWExZjM5NDBjMzc2M2I5ODQ4YTFlNjgy
ZjI0MTkyMGE0Yzg5Li45ZGFkNzhiNmY3ZjY0ZTRkOTk2ZmFjYjhlMGJmNTVjMGNlM2E2MjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFVubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyh1bnNp
Z25lZCBpbnN0cnVjdAogICAgIG1fdHlwZVByb2ZpbGVySW5mb01hcC5zZXQoaW5zdHJ1Y3Rpb25P
ZmZzZXQsIHJhbmdlKTsKIH0KIAotdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6Zmlu
YWxpemUoc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCit2
b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8
SlNJbnN0cnVjdGlvblN0cmVhbT4gaW5zdHJ1Y3Rpb25zKQogewogICAgIEFTU0VSVChpbnN0cnVj
dGlvbnMpOwogICAgIHsKQEAgLTE3MCw3ICsxNzAsNyBAQCBVbmxpbmtlZEhhbmRsZXJJbmZvKiBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4
LAogICAgIHJldHVybiBVbmxpbmtlZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXg8VW5saW5r
ZWRIYW5kbGVySW5mbz4obV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxl
cik7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0
aW9uKEJ5dGVjb2RlUmV3cml0ZXImIHJld3JpdGVyLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYg
aW5zdHJ1Y3Rpb25zKQordm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YXBwbHlNb2Rp
ZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYgcmV3cml0ZXIsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXImIGluc3RydWN0aW9ucykKIHsKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5n
ZXMsIHdlIGFkanVzdCB0aGUganVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9m
ZnNldCwgdGhlIG9mZnNldCB0byB0aGUganVtcCB0YXJnZXQsIGFuZAogICAgIC8vIHRoZSBpbnNl
cnRpb24gaW5mb3JtYXRpb24uCkBAIC0yMDUsMTMgKzIwNSwxMyBAQCB2b2lkIFVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiByZXdy
aXRlciwgSQogICAgIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlzLCBpbnN0cnVjdGlv
bnMsIG1fanVtcFRhcmdldHMpOwogfQogCi12b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
OjphZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNv
ZGVPZmZzZXQsIGludCB0YXJnZXQpCit2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjph
ZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBieXRlY29kZU9mZnNldCwgaW50IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0YXJn
ZXQpOwogICAgIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuc2V0KGJ5dGVjb2RlT2Zmc2V0LCB0YXJn
ZXQpOwogfQogCi1pbnQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBP
ZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK2ludCBVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0lu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1f
b3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMoYnl0ZWNvZGVPZmZzZXQpKTsKICAgICByZXR1
cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaAppbmRleCA2MGEzNTQxZGRkMjIyMWU5ZmU3OGIxYmE5YmY1Njg1NzNjZWU5NzQ0
Li5iM2Q1MGI4Zjk2ZjZjZWNlOWU5YjBlZWI2YWYzYTViNzgzZTIyZjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgVW5saW5rZWRNZXRhZGF0
YVRhYmxlJiBtZXRhZGF0YSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5tZXRhZGF0YSgpOyB9CiAg
ICAgdm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50
IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVu
c2lnbmVkIGNvbHVtbik7CiAgICAgdm9pZCBhZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyh1
bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgc3RhcnREaXZvdCwgdW5zaWduZWQg
ZW5kRGl2b3QpOwotICAgIHZvaWQgYWRkT3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNl
dChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKKyAgICB2b2lkIGFkZE9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IG9mZnNldCkKICAgICB7CiAgICAgICAgIG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRl
Y29kZU9mZnNldHMuYXBwZW5kKG9mZnNldCk7CiAgICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAg
cHVibGljOgogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXJzW2luZGV4XTsgfQogICAgIHZvaWQgYWRkSWRlbnRpZmll
cihjb25zdCBJZGVudGlmaWVyJiBpKSB7IHJldHVybiBtX2lkZW50aWZpZXJzLmFwcGVuZChpKTsg
fQogCi0gICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIGludD47Ci0gICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludCB0YXJnZXQpOwotICAgIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOwotICAgIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAg
IHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDx0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CisgICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0
KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7CisgICAg
aW50IG91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0KTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCB0eXBlbmFtZSBKU0luc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG91
dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgIH0KQEAgLTE5NCw5
ICsxOTQsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExpbmVBbmRDb2x1bW4oY29uc3QgRXhw
cmVzc2lvblJhbmdlSW5mbyYsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25z
dDsKIAotICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYsIEluc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyJik7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29k
ZVJld3JpdGVyJiwgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYpOwogCi0gICAgdm9pZCBmaW5h
bGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+KTsKKyAgICB2b2lkIGZpbmFs
aXplKHN0ZDo6dW5pcXVlX3B0cjxKU0luc3RydWN0aW9uU3RyZWFtPik7CiAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAg
ICAgVk0mIG1fdm07CiAgICAgU3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPiBtX2NvZGVCbG9jazsK
ICAgICAvLyBJbiBub24tUmFyZURhdGEuCi0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9p
ZGVudGlmaWVyczsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50
UmVnaXN0ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3Rh
bnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlczsKICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRp
b24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwg
VW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+
IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKKyAgICBWZWN0b3I8
dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsK
ICAgICBWZWN0b3I8SWRlbnRpZmllclNldD4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogICAg
IHVuc2lnbmVkIG1fbnVtQmluYXJ5QXJpdGhQcm9maWxlcyB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCA5ZGRmZDM0YmY3OWQ4ZjRiMTlmZGRlNTZiMmE0MTFiM2JjYjE2MDgwLi41ZGI5YWJhOTg5MGNh
MDcwOTBhMjk5ZjZjYzQ5Njk4YWRkY2JhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMzQsNiArMzM0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVzaW5nIE9wY29kZUlEID0gOjpKU0M6Ok9w
Y29kZUlEOwogICAgICAgICB1c2luZyBPcE5vcCA9IDo6SlNDOjpPcE5vcDsKICAgICAgICAgdXNp
bmcgQ29kZUJsb2NrID0gc3RkOjp1bmlxdWVfcHRyPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
PjsKKyAgICAgICAgdXNpbmcgSW5zdHJ1Y3Rpb25UeXBlID0gSlNJbnN0cnVjdGlvbjsKICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBvcGNvZGVGb3JEaXNhYmxpbmdPcHRpbWl6YXRp
b25zID0gb3BfZW5kOwogICAgIH07CiAKQEAgLTEwOTAsNyArMTA5MSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSnVtcE9wPgotICAgICAgICB2b2lkIHNldFRhcmdldEZvckp1bXBJbnN0
cnVjdGlvbihJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYsIGludCB0YXJnZXQpOworICAg
ICAgICB2b2lkIHNldFRhcmdldEZvckp1bXBJbnN0cnVjdGlvbih0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiwgaW50IHRhcmdldCk7CiAKICAgICAgICAgdXNpbmcgQmln
SW50TWFwRW50cnkgPSBzdGQ6OnR1cGxlPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdCwgYm9v
bD47CiAKQEAgLTExODgsNyArMTE4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1Zh
bHVlIGFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4LCBi
b29sIHNpZ24pOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRUZW1wbGF0ZU9iamVjdENvbnN0YW50
KFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+JiYsIGludCk7CiAKLSAgICAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVy
OyB9CisgICAgICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKIApAQCAtMTIwNCw3ICsxMjA1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVzdG9yZVREWlN0YWNrKGNvbnN0IFBy
ZXNlcnZlZFREWlN0YWNrJik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAg
ICAgICAgdm9pZCB3aXRoV3JpdGVyKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIsIGNv
bnN0IEZ1bmMmIGZuKQorICAgICAgICB2b2lkIHdpdGhXcml0ZXIoSlNJbnN0cnVjdGlvblN0cmVh
bVdyaXRlciYgd3JpdGVyLCBjb25zdCBGdW5jJiBmbikKICAgICAgICAgewogICAgICAgICAgICAg
YXV0byBwcmV2TGFzdE9wY29kZUlEID0gbV9sYXN0T3Bjb2RlSUQ7CiAgICAgICAgICAgICBhdXRv
IHByZXZMYXN0SW5zdHJ1Y3Rpb24gPSBtX2xhc3RJbnN0cnVjdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFz
ZS5oCmluZGV4IDBmOTE5OTM3YjVlNDZlNzhlNjExNzYyNDBkYmVhMTM3OGY3ZWU1OGMuLjE4ZDg2
MjNmZGJjOTRjODdmZTdhMWVkOTk5ZTZiN2JkODlkZWVjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2Uu
aApAQCAtNDYsNiArNDYsOSBAQCBjbGFzcyBCeXRlY29kZUdlbmVyYXRvckJhc2UgewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgogICAgIGZyaWVuZCBjbGFzcyBHZW5l
cmljTGFiZWw7CiAKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlclR5cGUgPSBJbnN0
cnVjdGlvblN0cmVhbVdyaXRlcjx0eXBlbmFtZSBUcmFpdHM6Okluc3RydWN0aW9uVHlwZT47Cisg
ICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlID0gSW5zdHJ1Y3Rpb25TdHJlYW08dHlwZW5h
bWUgVHJhaXRzOjpJbnN0cnVjdGlvblR5cGU+OworCiBwdWJsaWM6CiAgICAgQnl0ZWNvZGVHZW5l
cmF0b3JCYXNlKHR5cGVuYW1lIFRyYWl0czo6Q29kZUJsb2NrLCB1aW50MzJfdCB2aXJ0dWFsUmVn
aXN0ZXJDb3VudEZvckNhbGxlZVNhdmVzKTsKIApAQCAtNzcsMTIgKzgwLDEyIEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICB2b2lkIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CiAKLSAgICBJbnN0
cnVjdGlvblN0cmVhbVdyaXRlciBtX3dyaXRlcjsKKyAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
clR5cGUgbV93cml0ZXI7CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpDb2RlQmxvY2sgbV9jb2RlQmxv
Y2s7CiAKICAgICBib29sIG1fb3V0T2ZNZW1vcnlEdXJpbmdDb25zdHJ1Y3Rpb24geyBmYWxzZSB9
OwogICAgIHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgbV9sYXN0T3Bjb2RlSUQgPSBUcmFpdHM6
Om9wY29kZUZvckRpc2FibGluZ09wdGltaXphdGlvbnM7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06
Ok11dGFibGVSZWYgbV9sYXN0SW5zdHJ1Y3Rpb24geyBtX3dyaXRlci5yZWYoKSB9OworICAgIHR5
cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6TXV0YWJsZVJlZiBtX2xhc3RJbnN0cnVjdGlv
biB7IG1fd3JpdGVyLnJlZigpIH07CiAKICAgICBTZWdtZW50ZWRWZWN0b3I8R2VuZXJpY0xhYmVs
PFRyYWl0cz4sIDMyPiBtX2xhYmVsczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwg
MzI+IG1fY2FsbGVlTG9jYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaAppbmRl
eCBiZDc4OTBkNWZhYjllMTVlN2JlNWUzYjA3ZmQ4MThkNDIyNTBiNmE3Li4xMDE2YmU1NzBkODQz
MGE0ZjdiMjM0OTdmMDkzYTA5ZTVmOTVmZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlu
bGluZXMuaApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFp
dHM+OjplbWl0TGFiZWwoR2VuZXJpY0xhYmVsPFRyYWl0cz4mIGxhYmVsKQogdGVtcGxhdGU8dHlw
ZW5hbWUgVHJhaXRzPgogdm9pZCBCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6cmVjb3Jk
T3Bjb2RlKHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgQVNTRVJU
KG1fbGFzdE9wY29kZUlEID09IFRyYWl0czo6b3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9u
cyB8fCAobV9sYXN0T3Bjb2RlSUQgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24tPm9wY29kZUlEPHR5cGVu
YW1lIFRyYWl0czo6T3Bjb2RlVHJhaXRzPigpICYmIG1fd3JpdGVyLnBvc2l0aW9uKCkgPT0gbV9s
YXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBtX2xhc3RJbnN0cnVjdGlvbi0+c2l6ZTx0eXBlbmFt
ZSBUcmFpdHM6Ok9wY29kZVRyYWl0cz4oKSkpOworICAgIEFTU0VSVChtX2xhc3RPcGNvZGVJRCA9
PSBUcmFpdHM6Om9wY29kZUZvckRpc2FibGluZ09wdGltaXphdGlvbnMgfHwgKG1fbGFzdE9wY29k
ZUlEID09IG1fbGFzdEluc3RydWN0aW9uLT5vcGNvZGVJRCgpICYmIG1fd3JpdGVyLnBvc2l0aW9u
KCkgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBtX2xhc3RJbnN0cnVjdGlvbi0+c2l6
ZSgpKSk7CiAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24gPSBtX3dyaXRlci5yZWYoKTsKICAgICBtX2xh
c3RPcGNvZGVJRCA9IG9wY29kZUlEOwogfQpAQCAtMTAyLDYgKzEwMiw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFRyYWl0cz4KIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFRyYWl0cz46OmFsaWdu
V2lkZU9wY29kZTE2KCkKIHsKICNpZiBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCisgICAgc3Rh
dGljX2Fzc2VydChUcmFpdHM6Om1heE9wY29kZUlEV2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93
KTsKICAgICBzaXplX3Qgb3Bjb2RlU2l6ZSA9IDE7CiAgICAgc2l6ZV90IHByZWZpeEFuZE9wY29k
ZVNpemUgPSBvcGNvZGVTaXplICsgUGFkZGluZ0J5U2l6ZTxPcGNvZGVTaXplOjpXaWRlMTY+Ojp2
YWx1ZTsKICAgICB3aGlsZSAoKG1fd3JpdGVyLnBvc2l0aW9uKCkgKyBwcmVmaXhBbmRPcGNvZGVT
aXplKSAlIE9wY29kZVNpemU6OldpZGUxNikKQEAgLTExMyw3ICsxMTQsOSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHM+CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjphbGln
bldpZGVPcGNvZGUzMigpCiB7CiAjaWYgQ1BVKE5FRURTX0FMSUdORURfQUNDRVNTKQorICAgIHN0
YXRpY19hc3NlcnQoVHJhaXRzOjptYXhPcGNvZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJv
dyk7CiAgICAgc2l6ZV90IG9wY29kZVNpemUgPSAxOworICAgIHN0YXRpY19hc3NlcnQoVHJhaXRz
OjptYXhPcGNvZGVJREJ5dGVzID09IDEpOwogICAgIHNpemVfdCBwcmVmaXhBbmRPcGNvZGVTaXpl
ID0gb3Bjb2RlU2l6ZSArIFBhZGRpbmdCeVNpemU8T3Bjb2RlU2l6ZTo6V2lkZTMyPjo6dmFsdWU7
CiAgICAgd2hpbGUgKChtX3dyaXRlci5wb3NpdGlvbigpICsgcHJlZml4QW5kT3Bjb2RlU2l6ZSkg
JSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAgICAgIFRyYWl0czo6T3BOb3A6OnRlbXBsYXRlIGVt
aXQ8T3Bjb2RlU2l6ZTo6TmFycm93Pih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKaW5kZXgg
ODc1N2QzYTBkNTRmYzg5ZmIwZDk3YWM4Yjk5ZTg2YTM0MWViNmQ3NC4uMzc1NTA0ZTFmMTEyMjc1
MmQ4YzJjMTdlN2I4N2QzNWU0OTRiMTE4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKQEAgLTMz
LDkgKzMzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBSZWZlcmVuY2UgY291bnQgaW5kaWNhdGVz
IG51bWJlciBvZiBsaXZlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRoaXMgb2JqZWN0LgogY2xhc3Mg
U3RhdGljUHJvcGVydHlBbmFseXNpcyA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpY1Byb3BlcnR5
QW5hbHlzaXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0YXRpY1Byb3BlcnR5QW5hbHlz
aXM+IGNyZWF0ZShJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGluc3RydWN0aW9uUmVm
KQorICAgIHN0YXRpYyBSZWY8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gY3JlYXRlKHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmJiBpbnN0cnVjdGlvblJlZikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMoV1RG
TW92ZShpbnN0cnVjdGlvblJlZikpKTsgCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXMoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpKTsKICAgICB9CiAK
ICAgICB2b2lkIGFkZFByb3BlcnR5SW5kZXgodW5zaWduZWQgcHJvcGVydHlJbmRleCkgeyBtX3By
b3BlcnR5SW5kZXhlcy5hZGQocHJvcGVydHlJbmRleCk7IH0KQEAgLTQ1LDEyICs0NSwxMiBAQCBw
dWJsaWM6CiAgICAgaW50IHByb3BlcnR5SW5kZXhDb3VudCgpIHsgcmV0dXJuIG1fcHJvcGVydHlJ
bmRleGVzLnNpemUoKTsgfQogCiBwcml2YXRlOgotICAgIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMo
SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmJiBpbnN0cnVjdGlvblJlZikKKyAgICBTdGF0
aWNQcm9wZXJ0eUFuYWx5c2lzKHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVS
ZWYmJiBpbnN0cnVjdGlvblJlZikKICAgICAgICAgOiBtX2luc3RydWN0aW9uUmVmKFdURk1vdmUo
aW5zdHJ1Y3Rpb25SZWYpKQogICAgIHsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6
TXV0YWJsZVJlZiBtX2luc3RydWN0aW9uUmVmOworICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok11dGFibGVSZWYgbV9pbnN0cnVjdGlvblJlZjsKICAgICB0eXBlZGVmIEhhc2hTZXQ8
dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBQcm9wZXJ0eUluZGV4U2V0OwogICAgIFByb3BlcnR5SW5k
ZXhTZXQgbV9wcm9wZXJ0eUluZGV4ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAppbmRleCA1
ZjllNzM4NjJhNGFjZDMwN2IxMDFiZDFjZDZmMjNmYzUxNzUyZDNiLi5hZTQ5YjAyNzczYzY3MjBl
M2NmMzMxNTFjMTY5YTFlYmYyZTA4MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaApAQCAtMzUs
OCArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGlzIHVuZGVyc3Rvb2QgdG8gYmUgbG9zc3ks
IGFuZCBpdCdzIE9LIGlmIGl0IHR1cm5zIG91dCB0byBiZSB3cm9uZyBzb21ldGltZXMuCiBjbGFz
cyBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGNyZWF0ZVRoaXMo
UmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlv
blJlZik7Ci0gICAgdm9pZCBuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0
cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7CisgICAgdm9pZCBjcmVhdGVUaGlzKFJl
Z2lzdGVySUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBp
bnN0cnVjdGlvblJlZik7CisgICAgdm9pZCBuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCB0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKTsKICAg
ICB2b2lkIHB1dEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KTsg
Ly8gcHJvcGVydHlJbmRleCBpcyBhbiBpbmRleCBpbnRvIGEgdW5pcXVlZCBzZXQgb2Ygc3RyaW5n
cy4KICAgICB2b2lkIG1vdihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKQEAg
LTUwLDE0ICs1MCwxNCBAQCBwcml2YXRlOgogICAgIEFuYWx5c2lzTWFwIG1fYW5hbHlzZXM7CiB9
OwogCi1pbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKFJlZ2lz
dGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYp
CitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKFJlZ2lzdGVy
SUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVj
dGlvblJlZikKIHsKICAgICBBbmFseXNpc01hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fYW5h
bHlzZXMuYWRkKAogICAgICAgICBkc3QtPmluZGV4KCksIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6
OmNyZWF0ZShXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7IC8vIENhbid0IGhhdmUgdHdvICd0aGlzJyBp
biB0aGUgc2FtZSBjb25zdHJ1Y3Rvci4KIH0KIAotaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlB
bmFseXplcjo6bmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11
dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5
emVyOjpuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKQogewogICAgIGF1dG8gYW5hbHlzaXMgPSBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpOwog
ICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hbmFseXNlcy5hZGQoZHN0
LT5pbmRleCgpLCBhbmFseXNpcy5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlYWNiYzBjZTI3MmY2N2JlODJjNzkz
NzJhYTdmNzI4ODhiNmYyMTVmLi4wNTc4ZTRmY2M3ODdhYzM5Mjk5NDMwOTAyMWRkY2EwNTk3YzZh
YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcApAQCAtMTgyLDkgKzE4Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUqIGNhbGxUYXJn
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBD
YWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgRUNNQU1v
ZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4K
LSAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5
cGUgb3AsIENhbGxNb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCk7CisgICAgVGVybWlu
YWxpdHkgaGFuZGxlQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENh
bGxNb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2FsbE9wPgotICAgIFRlcm1pbmFsaXR5IGhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlKTsKKyAgICBUZXJtaW5hbGl0eSBoYW5k
bGVWYXJhcmdzQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxN
b2RlKTsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2Fs
bFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsKICAgICB2b2lkIGVtaXRBcmd1
bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKTsKICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7CkBAIC0yNDYsNyArMjQ2LDcg
QEAgcHJpdmF0ZToKICAgICBOb2RlKiBzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlm
aWVyLCBjb25zdCBQdXRCeVZhcmlhbnQmLCBOb2RlKiB2YWx1ZSk7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICB2b2lkIHBhcnNlR2V0QnlJZChjb25zdCBJbnN0cnVjdGlvbiopOwor
ICAgIHZvaWQgcGFyc2VHZXRCeUlkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICAgICB2b2lkIHNp
bXBsaWZ5R2V0QnlTdGF0dXMoTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMmKTsKICAgICB2b2lkIGhh
bmRsZUdldEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3Vs
YXRlZFR5cGUsIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCBCeXRlY29kZUluZGV4IG9zckV4
aXRJbmRleCk7CkBAIC0xMjU0LDEwICsxMjU0LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUq
IG1fdmFsdWUgeyBudWxscHRyIH07CiAgICAgICAgIFNldE1vZGUgbV9zZXRNb2RlOwogICAgIH07
Ci0gICAgCisKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7
CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CisgICAgY29u
c3QgSlNJbnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgYm9vbCBtX2hhc0Rl
YnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07
CiB9OwpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6YWRkSnVtcFRv
KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4K
LUJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChj
b25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSwgQnl0
ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpCitCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBl
IG9wLCBDYWxsTW9kZSBjYWxsTW9kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7CiAgICAgTm9kZSogY2FsbFRhcmdl
dCA9IGdldChjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkp
OwpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci1C
eXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3ND
YWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2Rl
KQorQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJh
cmdzQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNh
bGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8Q2FsbE9wPigpOwogICAgIGlu
dCBmaXJzdEZyZWVSZWcgPSBieXRlY29kZS5tX2ZpcnN0RnJlZS5vZmZzZXQoKTsKQEAgLTE1MzUs
MTQgKzE1MzUsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENh
bGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50IGMKICAgICAgICAgQnl0ZWNvZGVJ
bmRleCBvbGRJbmRleCA9IG1fY3VycmVudEluZGV4OwogICAgICAgICBhdXRvIG9sZFN0YWNrVG9w
ID0gbV9pbmxpbmVTdGFja1RvcDsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcCA9IHN0YWNrRW50
cnk7Ci0gICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChvcGNvZGVMZW5ndGhz
W29wX2VudGVyXSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoT3Bjb2RlSURXaWR0aEJ5U2l6ZTxK
U09wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTMyPjo6b3Bjb2RlSURTaXplID09IDEpOwor
ICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgob3Bjb2RlTGVuZ3Roc1tvcF9l
bnRlcl0gKyAxKTsKICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBwcm9jZXNzU2V0
TG9jYWxRdWV1ZSgpOwogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZEluZGV4OwogICAgICAg
ICBtX2lubGluZVN0YWNrVG9wID0gb2xkU3RhY2tUb3A7CiAgICAgICAgIG1fZXhpdE9LID0gZmFs
c2U7CiAKLSAgICAgICAgQmFzaWNCbG9jayoqIGVudHJ5QmxvY2tQdHIgPSB0cnlCaW5hcnlTZWFy
Y2g8QmFzaWNCbG9jayosIEJ5dGVjb2RlSW5kZXg+KHN0YWNrRW50cnktPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cywgc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLnNpemUoKSwgQnl0ZWNv
ZGVJbmRleChvcGNvZGVMZW5ndGhzW29wX2VudGVyXSksIGdldEJ5dGVjb2RlQmVnaW5Gb3JCbG9j
ayk7CisgICAgICAgIEJhc2ljQmxvY2sqKiBlbnRyeUJsb2NrUHRyID0gdHJ5QmluYXJ5U2VhcmNo
PEJhc2ljQmxvY2sqLCBCeXRlY29kZUluZGV4PihzdGFja0VudHJ5LT5tX2Jsb2NrTGlua2luZ1Rh
cmdldHMsIHN0YWNrRW50cnktPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5zaXplKCksIEJ5dGVjb2Rl
SW5kZXgob3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl0gKyAxKSwgZ2V0Qnl0ZWNvZGVCZWdpbkZvckJs
b2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW50cnlCbG9ja1B0cik7CiAgICAgICAgIGFk
ZEp1bXBUbygqZW50cnlCbG9ja1B0cik7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTY1NCw3
ICsxNjU1LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFy
aWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKIHRlbXBsYXRlPHR5cGVuYW1lIENo
ZWNrc0Z1bmN0b3I+CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3Vy
cmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CisgICAgY29uc3QgSlNJbnN0
cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJlbnRJbnN0cnVjdGlvbjsK
ICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNh
bGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwogCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCktPmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CkBAIC01MzQ1LDcgKzUzNDYsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpjbGVhckNhY2hlcygpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VHZXRCeUlkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUdldEJ5SWQoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24gPSBnZXRQcmVkaWN0aW9uKCk7CkBAIC01NDcxLDEyICs1NDcyLDEyIEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYWRk
SnVtcFRvKG1fY3VycmVudEluZGV4Lm9mZnNldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICAvLyBTd2l0Y2ggb24gdGhlIGN1cnJlbnQgYnl0
ZWNvZGUgb3Bjb2RlLgotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1fY3VycmVudEluZGV4KS5wdHIoKTsKKyAgICAgICAgY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1f
Y3VycmVudEluZGV4KS5wdHIoKTsKICAgICAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBjdXJy
ZW50SW5zdHJ1Y3Rpb247IC8vIFNvbWUgbWV0aG9kcyB3YW50IHRvIHVzZSB0aGlzLCBhbmQgd2Un
ZCByYXRoZXIgbm90IHRocmVhZCBpdCB0aHJvdWdoIGNhbGxzLgogICAgICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKLSAgICAgICAgCisKICAg
ICAgICAgVkVSQk9TRV9MT0coIiAgICBwYXJzaW5nICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICI6
ICIsIG9wY29kZUlELCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpKSB7CkBAIC04ODAwLDggKzg4MDEsOCBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgIGRhdGFMb2dMbigpOwogICAgICAgICBj
b2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNvZGUoKTsKICAgICB9Ci0gICAg
Ci0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiBqdW1wVGFyZ2V0czsK
KworICAgIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiBq
dW1wVGFyZ2V0czsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVt
cFRhcmdldHMpOwogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0ZWNvZGVBdERGR1Rp
bWUoKSkpIHsKICAgICAgICAgZGF0YUxvZygiSnVtcCB0YXJnZXRzOiAiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA1ZTMyZDJkMjRmMWIz
ZWQ4NzBjMzMwZjJlZjIzZDg1ZTRlY2U0ODM3Li41ODJhYWY1ZmQxOTY0YTQ0N2UxMTQ0MjE0YmY4
MjBkMTFkYWQyMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgaW5saW5lIHZvaWQgZGVidWdGYWlsKENvZGVC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgQ2FwYWJpbGl0eUxldmVsIHIKICAg
ICAgICAgZGF0YUxvZygiREZHIHJlamVjdGluZyBvcGNvZGUgaW4gIiwgKmNvZGVCbG9jaywgIiBi
ZWNhdXNlIG9mIG9wY29kZSAiLCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sICJcbiIpOwogfQogCi1D
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIFVOVVNFRF9QQVJBTShjb2RlQmxvY2spOyAv
LyBUaGlzIGZ1bmN0aW9uIGRvZXMgc29tZSBieXRlY29kZSBwYXJzaW5nLiBPcmRpbmFyaWx5IGJ5
dGVjb2RlIHBhcnNpbmcgcmVxdWlyZXMgdGhlIG93bmluZyBDb2RlQmxvY2suIEl0J3Mgc29ydCBv
ZiBzdHJhbmdlIHRoYXQgd2UgZG9uJ3QgdXNlIGl0IGhlcmUgcmlnaHQgbm93LgogICAgIFVOVVNF
RF9QQVJBTShwYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aAppbmRleCA0ZGE4OWFiNzQyM2EwZDgwOTllZDBjNTI5MDQ1YWJiMjVjMWI0ZGFlLi44ZTViMTAz
MGQ1OTQ4NDRkNmExOGExZWRmZDg1Mjk4M2EwOTNmYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgYm9vbCBtaWdodElu
bGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKik7CiBib29sIG1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKik7CiBib29sIGNhblVzZU9TUkV4aXRGdXp6
aW5nKENvZGVCbG9jayopOwogCi1pbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKTsKK2lubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlELCBDb2RlQmxvY2sqLCBjb25z
dCBKU0luc3RydWN0aW9uKiBwYyk7CiAKIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
Q29kZUJsb2NrKik7CiAjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKQEAgLTU4LDcgKzU4LDcgQEAg
aW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNsb3N1cmVDYWxsKENvZGVCbG9jayop
IHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgYm9vbCBjYW5Vc2VP
U1JFeGl0RnV6emluZyhDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQogCi1pbmxpbmUgQ2Fw
YWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qKSB7IHJldHVybiBDYW5ub3RDb21waWxlOyB9CitpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3QgSlNJbnN0
cnVjdGlvbiopIHsgcmV0dXJuIENhbm5vdENvbXBpbGU7IH0KIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayopIHsgcmV0dXJuIENhbm5vdENvbXBpbGU7IH0K
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKaW5kZXggODlhZTczZjIzZGE1N2M3M2VlMTA1NjE0YmM2NzQ3ZWQwMTkyNTVk
My4uYjI0M2M2NzQ3OTUwY2VmZDZiNTJkOGRlNTNhNWFhZWExNDhiYjBmYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JF
eGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhp
dC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pOwogICAgICAgICAg
ICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gY29kZUJsb2NrLT5nZXRBcnJheVBy
b2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5h
dChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CisgICAgICAgICAgICAgICAgY29u
c3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgc2tpcFByb2ZpbGU7CiAgICAgICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uLT5p
czxPcEdldEJ5SWQ+KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBp
bnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKGNvZGVCbG9jayk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKaW5kZXggMTgyMjIzOTZjZjQ1ZTdhZTdjM2IxMDNjNGVmYTk2ZmFhNzQxOGY3OS4uNTg0ZmZk
ODg1NmIxOGM3NzY4YmNhMmQzNzk1ZTkwZTgzMzFlMjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTQ4
LDcgKzE0OCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4g
Y2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvCiAKICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldDsKIAotICAgIGNvbnN0IEluc3RydWN0
aW9uJiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmluc3Ry
dWN0aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBjb25zdCBhdXRvJiBj
YWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmluc3RydWN0aW9u
cygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBpZiAoY2FsbGVySXNMTEludCkg
ewogI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgTExJbnQ6OnJldHVybkxvY2F0
aW9uVGh1bmsobmFtZSMjX3JldHVybl9sb2NhdGlvbiwgY2FsbEluc3RydWN0aW9uLndpZHRoKCkp
LmNvZGUoKQogCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQo
Vk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAg
Ym9vbCBleGl0VG9MTEludCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBjb2Rl
QmxvY2tGb3JFeGl0LT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuazsKICAg
ICBpZiAoZXhpdFRvTExJbnQpIHsKICAgICAgICAgYXV0byBieXRlY29kZUluZGV4ID0gZXhpdC5t
X2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYg
Y3VycmVudEluc3RydWN0aW9uID0gKmNvZGVCbG9ja0ZvckV4aXQtPmluc3RydWN0aW9ucygpLmF0
KGJ5dGVjb2RlSW5kZXgpLnB0cigpOworICAgICAgICBjb25zdCBhdXRvJiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSAqY29kZUJsb2NrRm9yRXhpdC0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRl
eCkucHRyKCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBk
ZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQogICAg
ICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5l
VGh1bmsoKS5jb2RlKCk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9U
YXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQp
CiAKICAgICAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpIHsKICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY3VycmVudEluc3RydWN0aW9u
KSwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJl
Z1QyLCAmdm0udGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93KTsKKyAgICAgICAgICAgIGppdC5z
dG9yZVB0cihHUFJJbmZvOjpyZWdUMiwgJnN0ZDo6Z2V0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPih2
bS50YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cpKTsKICAgICAgICAgfQogCiAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tGb3JFeGl0LT5tZXRh
ZGF0YVRhYmxlKCkpLCBMTEludDo6UmVnaXN0ZXJzOjptZXRhZGF0YVRhYmxlR1BSKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZmMz
YTZjNGZkYWUzZGQ4OTY3OGM2YmI5YTY1NjkwYjQ4ZjdmYWQ3YS4uMzYwZTE4MTgzZWNiYTFlMGNj
MDVkNzZjNzJjZGYxMjE5ZWNjYjE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIxMDAsNyArMjEwMCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludChOb2RlKiBub2RlKQogICAgICAgICBpZiAoZW1pdEVh
cmx5UmV0dXJuKSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0g
bV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieXRl
Y29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8qIGluc3Ry
dWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5k
ZXgub2Zmc2V0KCkpLnB0cigpOwogCiAgICAgICAgICAgICB1aW50cHRyX3QqIHB0ciA9IHZtKCku
Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9uKTsKICAgICAgICAgICAgIG1f
aml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDllNTk5YmZmZWM4YjkwMGZkNzIzOGVkYzYz
OWNlYjU2NDk0M2E5YzguLjhjNDRkNjRiODk1ZTgyNmZjYTRjMzczYTRjNDY2Y2IzMjE2YWM5Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTE2Mjc0LDcgKzE2Mjc0LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogCiAgICAgICAg
IENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbV9vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCk7CisgICAgICAgIGNvbnN0IGF1dG8q
IGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsK
ICAgICAgICAgdWludHB0cl90KiBwdHIgPSB2bS0+Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVy
KGluc3RydWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCmluZGV4IGZlNzlmNzhkMzc1MGQ2MzRkZTIzMjNjYWRkYjA2ZDQxN2U4
ODNiZTcuLmE4MjRmN2E1MTljZTQ1ZjRhNzQyNTU1OGUzNDRkMmYyN2Q0ZGQzY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAgLTI1
NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4
aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICAgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNv
ZGVPcmlnaW4pOwogICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0g
Y29kZUJsb2NrLT5nZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpKSB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7
CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2tpcFByb2ZpbGU7CiAgICAgICAgICAgICAg
ICAgaWYgKGluc3RydWN0aW9uLT5pczxPcEdldEJ5SWQ+KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRh
KGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNw
cAppbmRleCAyYWI2YTgwOTA4NmJjYjI1ZDA5MTZlZTE1NzZkMGVlYzgxMGJiMzBmLi5iOTVlNzQz
YTI2NWQ2NzNjNDFjMTczOTVlM2YzN2FmYWUzYzAyZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTU3NSw3ICs1NzUsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUiwgSlNDZWxsKiwg
KEpTR2xvYmFsT2JqZQogICAgICAgICAvLyBGb3Igbm93LCB3ZSB1c2UgYXJyYXkgYWxsb2NhdGlv
biBwcm9maWxlIGluIHRoZSBhY3R1YWwgQ29kZUJsb2NrLiBJdCBpcyBPSyBzaW5jZSBjdXJyZW50
IE5ld0FycmF5QnVmZmVyCiAgICAgICAgIC8vIGFuZCBQaGFudG9tTmV3QXJyYXlCdWZmZXIgYXJl
IGFsd2F5cyBib3VuZCB0byBhIHNwZWNpZmljIG9wX25ld19hcnJheV9idWZmZXIuCiAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNl
bGluZUNvZGVCbG9jayhtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLCBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpOwotICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChtYXRl
cmlhbGl6YXRpb24tPm9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CisgICAgICAgIGNv
bnN0IGF1dG8qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YXQobWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5ieXRlY29kZUluZGV4KCkpLnB0cigpOwogICAg
ICAgICBpZiAoIWN1cnJlbnRJbnN0cnVjdGlvbi0+aXM8T3BOZXdBcnJheUJ1ZmZlcj4oKSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBjYXNlIGNhbiBoYXBwZW4gaWYgT2JqZWN0LmtleXMsIGFuIE9w
Q2FsbCBpcyBmaXJzdCBjb252ZXJ0ZWQgaW50byBhIE5ld0FycmF5QnVmZmVyIHdoaWNoIGlzIHRo
ZW4gY29udmVydGVkIGludG8gYSBQaGFudG9tTmV3QXJyYXlCdWZmZXIuCiAgICAgICAgICAgICAv
LyBUaGVyZSBpcyBubyBuZWVkIHRvIHVwZGF0ZSB0aGUgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxl
IGluIHRoYXQgY2FzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvQXJndW1lbnQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0FyZ3VtZW50
LnJiCmluZGV4IGQ0ZDhjNjY4ZjQzMWI5ZmM2M2EwNmM0NmRmNGZhNTJlMTMzNzU0YzMuLjFmNWFm
ZWQ2Y2FkMzZmMWQ4YmVmZjZmODZlZDA1YTQ3ZmZhMTBiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJndW1lbnQucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9Bcmd1bWVudC5yYgpAQCAtNzEsOSArNzEsOSBAQCBjbGFzcyBBcmd1
bWVudAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBzZXQje2NhcGl0
YWxpemVkX25hbWV9KCN7QHR5cGUudG9fc30gdmFsdWUsIEZ1bmN0b3IgZnVuYykKICAgICB7Ci0g
ICAgICAgIGlmIChpc1dpZGUzMjwje3RyYWl0c30+KCkpCisgICAgICAgIGlmIChpc1dpZGUzMigp
KQogICAgICAgICAgICAgc2V0I3tjYXBpdGFsaXplZF9uYW1lfTxPcGNvZGVTaXplOjpXaWRlMzI+
KHZhbHVlLCBmdW5jKTsKLSAgICAgICAgZWxzZSBpZiAoaXNXaWRlMTY8I3t0cmFpdHN9PigpKQor
ICAgICAgICBlbHNlIGlmIChpc1dpZGUxNigpKQogICAgICAgICAgICAgc2V0I3tjYXBpdGFsaXpl
ZF9uYW1lfTxPcGNvZGVTaXplOjpXaWRlMTY+KHZhbHVlLCBmdW5jKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc2V0I3tjYXBpdGFsaXplZF9uYW1lfTxPcGNvZGVTaXplOjpOYXJyb3c+KHZh
bHVlLCBmdW5jKTsKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgQXJndW1lbnQKICAgICB7CiAgICAg
ICAgIGlmICghI3tGaXRzOjpjaGVjayAic2l6ZSIsICJ2YWx1ZSIsIEB0eXBlfSkKICAgICAgICAg
ICAgIHZhbHVlID0gZnVuYygpOwotICAgICAgICBhdXRvKiBzdHJlYW0gPSBiaXR3aXNlX2Nhc3Q8
dHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlKj4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4odGhpcykgKyAje0BpbmRleH0gKiBzaXplICsgUGFkZGluZ0J5U2l6ZTxzaXpl
Pjo6dmFsdWUgKyAvKiBPcGNvZGUgc2l6ZSAqLyAxKTsKKyAgICAgICAgYXV0byogc3RyZWFtID0g
Yml0d2lzZV9jYXN0PHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgI3tAaW5kZXh9ICogc2l6ZSArIFBhZGRp
bmdCeVNpemU8c2l6ZT46OnZhbHVlICsgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3RyYWl0c30sIHNp
emU+OjpvcGNvZGVJRFNpemUpOwogICAgICAgICAqc3RyZWFtID0gI3tGaXRzOjpjb252ZXJ0ICJz
aXplIiwgInZhbHVlIiwgQHR5cGV9OwogICAgIH0KIEVPRgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgppbmRleCA2ZjBhOGYxYTgwM2UxNTE2NGU5OTQ0MzQ3YmEzMzQ0OTY1OTg2
MDhkLi5lOTBmOTk0NjYxYTdmM2VkZWFiMDc3YmQwNDVkYTRjYWQ0OWZiZWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQ5LDEwICsxNDksMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEJhc2ljQmxvY2tMb2NhdGlvbjsKIAotdm9pZCBkdW1wQnl0ZWNv
ZGUoQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQs
IGNvbnN0IEluc3RydWN0aW9uKik7Cit2b2lkIGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlckJh
c2U8SlNJbnN0cnVjdGlvblN0cmVhbT4qIGR1bXBlciwgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0LCBjb25zdCBKU0luc3RydWN0aW9uKik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi12
b2lkIGR1bXBXYXNtKEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCBjb25zdCBJbnN0cnVjdGlvbiopOwordm9pZCBkdW1wV2FzbShCeXRlY29kZUR1
bXBlckJhc2U8V2FzbUluc3RydWN0aW9uU3RyZWFtPiogZHVtcGVyLCBXYXNtSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgY29uc3QgV2FzbUluc3RydWN0aW9uKik7CiAjZW5kaWYgLy8gRU5BQkxF
KFdFQkFTU0VNQkxZKQogCiBFT0YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvT3Bjb2RlLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNv
ZGUucmIKaW5kZXggMDYxYjc2YTgxM2Q0NzExMmNjOTBiOTkzNjhlYmNiY2VmZThlMmU1ZC4uZWU2
Nzg3YjE4ZTRkOGQzYWJmZjg5MTAyYmM1Y2NhNzcwMGMwMGRhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIKQEAgLTEwOCw2ICsxMDgsMTAgQEAgY2xhc3MgT3Bj
b2RlCiAgICAgICBAc2VjdGlvbi5pc193YXNtPyA/ICJXYXNtT3Bjb2RlVHJhaXRzIiA6ICJKU09w
Y29kZVRyYWl0cyIKICAgICBlbmQKIAorICAgIGRlZiB0eXBlX3ByZWZpeAorICAgICAgQHNlY3Rp
b24uaXNfd2FzbT8gPyAiV2FzbSIgOiAiSlMiCisgICAgZW5kCisKICAgICBkZWYgbWFwX2ZpZWxk
c193aXRoX3NpemUocHJlZml4LCBzaXplLCAmYmxvY2spCiAgICAgICAgIGFyZ3MgPSBbQXJndW1l
bnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCldCiAgICAgICAgIGFyZ3MgKz0gQGFy
Z3MuZHVwIGlmIEBhcmdzCkBAIC0xMjgsNyArMTMyLDcgQEAgY2xhc3MgT3Bjb2RlCiAKICAgICBk
ZWYgc3RydWN0CiAgICAgICAgIDw8LUVPRgotc3RydWN0ICN7Y2FwaXRhbGl6ZWRfbmFtZX0gOiBw
dWJsaWMgSW5zdHJ1Y3Rpb24geworc3RydWN0ICN7Y2FwaXRhbGl6ZWRfbmFtZX0gOiBwdWJsaWMg
I3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvbiB7CiAgICAgI3tvcGNvZGVJRH0KICAgICAje2xlbmd0
aFZhbHVlfQogICAgICN7dGVtcHN9CkBAIC0xNjIsNyArMTY2LDcgQEAgRU9GCiAgICAgZGVmIGNo
ZWNrcG9pbnRTaXplQXNzZXJ0CiAgICAgICAgIHJldHVybiBpZiBAY2hlY2twb2ludHMubmlsPwog
Ci0gICAgICAgICJzdGF0aWNfYXNzZXJ0KCN7Y2FwaXRhbGl6ZWRfbmFtZX06Omxlbmd0aCA+ICN7
Y2FwaXRhbGl6ZWRfbmFtZX06Om51bWJlck9mQ2hlY2twb2ludHMsIFwiRnVsbEJ5dGVjb2RlTGl2
ZXNzIHJlbGllcyBvbiB0aGUgbGVuZ3RoIG9mICN7Y2FwaXRhbGl6ZWRfbmFtZX0gYmVpbmcgZ3Jl
YXRlciB0aGFuIHRoZSBudW1iZXIgb2YgY2hlY2twb2ludHNcIik7IgorICAgICAgICAic3RhdGlj
X2Fzc2VydCgje2NhcGl0YWxpemVkX25hbWV9OjpsZW5ndGggKyAxID4gI3tjYXBpdGFsaXplZF9u
YW1lfTo6bnVtYmVyT2ZDaGVja3BvaW50cywgXCJGdWxsQnl0ZWNvZGVMaXZlc3MgcmVsaWVzIG9u
IHRoZSBsZW5ndGggb2YgI3tjYXBpdGFsaXplZF9uYW1lfSBiZWluZyBncmVhdGVyIHRoYW4gdGhl
IG51bWJlciBvZiBjaGVja3BvaW50c1wiKTsiCiAgICAgZW5kCiAKICAgICBkZWYgdGVtcHMKQEAg
LTIzMiw2ICsyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAgICAgICAgIHJldHVybiAje21hcF9maWVsZHNfd2l0aF9zaXplKCIiLCAiX19zaXplIiwg
JjpmaXRzX2NoZWNrKS5qb2luICJcbiAgICAgICAgICAgICYmICJ9CisgICAgICAgICAgICAmJiAo
X19zaXplID09IE9wY29kZVNpemU6Ok5hcnJvdyA/ICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIs
IG9wY29kZUlEVHlwZSwgMCkuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6ICN7QXJndW1lbnQu
bmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCkuZml0c19jaGVjayhTaXplOjpXaWRlMTYp
fSkKICAgICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2ID8gI3tvcF93
aWRlMTYuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6IHRydWUpCiAgICAgICAgICAgICAmJiAo
X19zaXplID09IE9wY29kZVNpemU6OldpZGUzMiA/ICN7b3Bfd2lkZTMyLmZpdHNfY2hlY2soU2l6
ZTo6TmFycm93KX0gOiB0cnVlKTsKICAgICB9CkBAIC0yNTEsNyArMjU2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAje29wX3dpZGUxNi5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KICAg
ICAgICAgICAgIGVsc2UgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAgICAg
ICAgICAgICAgI3tvcF93aWRlMzIuZml0c193cml0ZSBTaXplOjpOYXJyb3d9Ci0gICAgICAgICAg
ICAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNvZGVJRFR5cGUsIDApLmZpdHNfd3JpdGUg
U2l6ZTo6TmFycm93fQorICAgICAgICAgICAgI3tBcmd1bWVudC5uZXcoIm9wY29kZUlEIiwgb3Bj
b2RlSURUeXBlLCAwKS5maXRzX3dyaXRlICJPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlwZV9wcmVm
aXh9T3Bjb2RlVHJhaXRzLCBfX3NpemU+OjpvcGNvZGVJRFNpemUifQogI3ttYXBfb3BlcmFuZHNf
d2l0aF9zaXplKCIgICAgICAgICAgICAiLCAiX19zaXplIiwgJjpmaXRzX3dyaXRlKS5qb2luICJc
biJ9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjY0LDcgKzI2OSw3
IEBAIEVPRgogCiAgICAgZGVmIGR1bXBlcgogICAgICAgICA8PC1FT0YKLSAgICB2b2lkIGR1bXAo
Qnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgX19s
b2NhdGlvbiwgaW50IF9fc2l6ZVNoaWZ0QW1vdW50KQorICAgIHZvaWQgZHVtcChCeXRlY29kZUR1
bXBlckJhc2U8I3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvblN0cmVhbT4qIGR1bXBlciwgI3t0eXBl
X3ByZWZpeH1JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGludCBfX3NpemVT
aGlmdEFtb3VudCkKICAgICB7CiAgICAgICAgIGR1bXBlci0+cHJpbnRMb2NhdGlvbkFuZE9wKF9f
bG9jYXRpb24sICYiKioje0BuYW1lfSJbMiAtIF9fc2l6ZVNoaWZ0QW1vdW50XSk7CiAje3ByaW50
X2FyZ3MgeyB8YXJnfApAQCAtMjg0LDMwICsyODksMzAgQEAgRU9GCiAgICAgI3tjYXBpdGFsaXpl
ZF9uYW1lfShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgICAgICN7aW5pdC5jYWxsKCJPcGNv
ZGVTaXplOjpOYXJyb3ciKX0KICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBi
aXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlEKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIHN0YXRpY19jYXN0PCN7b3Bjb2RlSURUeXBlfT4o
Yml0d2lzZV9jYXN0PGNvbnN0IHR5cGVuYW1lIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3By
ZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJvdz46Om9wY29kZVR5cGUqPihzdHJl
YW0pWy0xXSkgPT0gb3Bjb2RlSUQpOwogICAgIH0KIAogICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0o
Y29uc3QgdWludDE2X3QqIHN0cmVhbSkKICAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6
OldpZGUxNiIpfQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIGJpdHdpc2Vf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQpOworICAgICAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RhdGljX2Nhc3Q8I3tvcGNvZGVJRFR5cGV9PihiaXR3aXNl
X2Nhc3Q8Y29uc3QgdHlwZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9w
Y29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTE2Pjo6b3Bjb2RlVHlwZSo+KHN0cmVhbSlbLTFd
KSA9PSBvcGNvZGVJRCk7CiAgICAgfQogCiAKICAgICAje2NhcGl0YWxpemVkX25hbWV9KGNvbnN0
IHVpbnQzMl90KiBzdHJlYW0pCiAgICAgICAgICN7aW5pdC5jYWxsKCJPcGNvZGVTaXplOjpXaWRl
MzIiKX0KICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBiaXR3aXNlX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlEKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChzdHJlYW0sIHN0YXRpY19jYXN0PCN7b3Bjb2RlSURUeXBlfT4oYml0d2lzZV9jYXN0
PGNvbnN0IHR5cGVuYW1lIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3ByZWZpeH1PcGNvZGVU
cmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29kZVR5cGUqPihzdHJlYW0pWy0xXSkgPT0g
b3Bjb2RlSUQpOwogICAgIH0KIAogICAgIHN0YXRpYyAje2NhcGl0YWxpemVkX25hbWV9IGRlY29k
ZShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgewogICAgICAgICAvLyBBIHBvaW50ZXIgaXMg
cG9pbnRpbmcgdG8gdGhlIGZpcnN0IG9wZXJhbmQgKG9wY29kZSBhbmQgcHJlZml4IGFyZSBub3Qg
aW5jbHVkZWQpLgogICAgICAgICBpZiAoKnN0cmVhbSA9PSAje3dpZGUzMn0pCi0gICAgICAgICAg
ICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzdHJlYW0gKyAyKSB9Owor
ICAgICAgICAgICAgcmV0dXJuIHsgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oc3RyZWFt
ICsgLyogcHJlZml4ICovIDEgKyBPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bj
b2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemUpIH07CiAgICAgICAg
IGlmICgqc3RyZWFtID09ICN7d2lkZTE2fSkKLSAgICAgICAgICAgIHJldHVybiB7IGJpdHdpc2Vf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHN0cmVhbSArIDIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0
cmVhbSArIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50
MTZfdCo+KHN0cmVhbSArIC8qIHByZWZpeCAqLyAxICsgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5
cGVfcHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTE2Pjo6b3Bjb2RlSURTaXpl
KSB9OworICAgICAgICByZXR1cm4geyBzdHJlYW0gKyBPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlw
ZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpOYXJyb3c+OjpvcGNvZGVJRFNpemUg
fTsKICAgICB9CiBFT0YKICAgICBlbmQKQEAgLTM2MiwxOCArMzY3LDE5IEBAIEVPRgogICAgIGVu
ZAogCiAgICAgZGVmIGxlbmd0aAotICAgICAgICAxICsgKEBhcmdzLm5pbD8gPyAwIDogQGFyZ3Mu
bGVuZ3RoKSArIChAbWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEpCisgICAgICAgIChAYXJncy5uaWw/
ID8gMCA6IEBhcmdzLmxlbmd0aCkgKyAoQG1ldGFkYXRhLmVtcHR5PyA/IDAgOiAxKQogICAgIGVu
ZAogCiAgICAgZGVmIHNlbGYuZHVtcF9ieXRlY29kZShuYW1lLCBvcGNvZGVfdHJhaXRzLCBvcGNv
ZGVzKQorICAgICAgICB0eXBlX3ByZWZpeCA9IChvcGNvZGVfdHJhaXRzID09IDpKU09wY29kZVRy
YWl0cyA/ICJKUyIgOiAob3Bjb2RlX3RyYWl0cyA9PSA6V2FzbU9wY29kZVRyYWl0cyA/ICJXYXNt
IiA6ICJFcnJvciN7b3Bjb2RlX3RyYWl0c30iKSkKICAgICAgICAgPDwtRU9GLmNob21wCi12b2lk
IGR1bXAje25hbWV9KEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IF9fbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiBfX2luc3RydWN0aW9uKQor
dm9pZCBkdW1wI3tuYW1lfShCeXRlY29kZUR1bXBlckJhc2U8I3t0eXBlX3ByZWZpeH1JbnN0cnVj
dGlvblN0cmVhbT4qIGR1bXBlciwgI3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IF9fbG9jYXRpb24sIGNvbnN0ICN7dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rpb24qIF9faW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgc3dpdGNoIChfX2luc3RydWN0aW9uLT5vcGNvZGVJRDwje29wY29kZV90
cmFpdHN9PigpKSB7CisgICAgc3dpdGNoIChfX2luc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CiAj
e29wY29kZXMubWFwIHsgfG9wfAogICAgICAgICA8PC1FT0YuY2hvbXAKICAgICBjYXNlICN7b3Au
bmFtZX06Ci0gICAgICAgIF9faW5zdHJ1Y3Rpb24tPmFzPCN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0s
ICN7b3Bjb2RlX3RyYWl0c30+KCkuZHVtcChkdW1wZXIsIF9fbG9jYXRpb24sIF9faW5zdHJ1Y3Rp
b24tPnNpemVTaGlmdEFtb3VudDwje29wY29kZV90cmFpdHN9PigpKTsKKyAgICAgICAgX19pbnN0
cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9uYW1lfT4oKS5kdW1wKGR1bXBlciwgX19sb2Nh
dGlvbiwgX19pbnN0cnVjdGlvbi0+c2l6ZVNoaWZ0QW1vdW50KCkpOwogICAgICAgICBicmVhazsK
IEVPRgogICAgIH0uam9pbiAiXG4ifQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9BYnN0cmFjdFBDLmgKaW5kZXggNzk1ZGE1MjRhNjNmNzQ5MTIwODRiMmNlMWE5OTVhOTA1
YjEwNGYwYy4uYzMxOWM3ODZhOGJlNjQ0MjM3MjBmODBkNGI5NjY0ODEzMDk0MjMzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCkBAIC0zMSw3
ICszMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsK
LXN0cnVjdCBJbnN0cnVjdGlvbjsKIAogY2xhc3MgQWJzdHJhY3RQQyB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCmluZGV4IDll
ZGY1OWI5Njg2YTVhZDZjZWE4MzgzZjc0MzMzMzYwYTE5YzZkNDEuLmE2MTgzYjBkNzI0ZjlmY2Rm
ZTU0MmQ0MmU5ZjFhZDY2YzcxYzE4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBTVVBQUkVTU19B
U0FOIENhbGxTaXRlSW5kZXggQ2FsbEZyYW1lOjp1bnNhZmVDYWxsU2l0ZUluZGV4KCkgY29uc3QK
ICAgICByZXR1cm4gQ2FsbFNpdGVJbmRleDo6ZnJvbUJpdHModW5zYWZlQ2FsbFNpdGVBc1Jhd0Jp
dHMoKSk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBj
b25zdAorY29uc3QgSlNJbnN0cnVjdGlvbiogQ2FsbEZyYW1lOjpjdXJyZW50VlBDKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoY2FsbFNpdGVCaXRzQXJlQnl0ZWNvZGVPZmZzZXQoKSk7CiAgICAgcmV0
dXJuIGNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5hdChjYWxsU2l0ZUJpdHNBc0J5dGVjb2Rl
T2Zmc2V0KCkpLnB0cigpOwogfQogCi12b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhjb25z
dCBJbnN0cnVjdGlvbiogdnBjKQordm9pZCBDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMoY29uc3Qg
SlNJbnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUoY29kZUJs
b2NrKCktPmJ5dGVjb2RlSW5kZXgodnBjKSk7CiAgICAgdGhpc1tzdGF0aWNfY2FzdDxpbnQ+KENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKV0udGFnKCkgPSBjYWxsU2l0
ZS5iaXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgKaW5kZXggODgyOTlmNDRkNmUwZTE5Mzg3YTZhOWNmNzc0ZjUwNzEyYWIwMDJiNC4uNDE5ZWZi
MzZhNDA5NWRiZTFjOGEyMDQ2MTI1ZThjNWM3ODJmMzMwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApAQCAtNDAsOCArNDAsNiBAQCBuYW1lc3Bh
Y2UgSlNDICB7CiAgICAgY2xhc3MgU291cmNlT3JpZ2luOwogICAgIGNsYXNzIFZpcnR1YWxSZWdp
c3RlcjsKIAotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKLQogICAgIGNsYXNzIENhbGxTaXRlSW5k
ZXggewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FsbFNpdGVJbmRleCgpID0gZGVmYXVsdDsKQEAg
LTE5OSw5ICsxOTcsOSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIENvZGVPcmlnaW4gY29kZU9yaWdpbigpIGNvbnN0OwogCiAgICAgICAgIGlubGluZSBSZWdp
c3RlciogdG9wT2ZGcmFtZSgpOwotICAgIAotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudFZQQygpIGNvbnN0OyAvLyBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIExMSW50IGFu
ZCBiYXNlbGluZS4KLSAgICAgICAgdm9pZCBzZXRDdXJyZW50VlBDKGNvbnN0IEluc3RydWN0aW9u
Kik7CisKKyAgICAgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0OyAv
LyBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIExMSW50IGFuZCBiYXNlbGluZS4KKyAgICAg
ICAgdm9pZCBzZXRDdXJyZW50VlBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKIAogICAgICAgICB2
b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogZnJhbWUpIHsgY2FsbGVyRnJhbWVBbmRQQygp
LmNhbGxlckZyYW1lID0gZnJhbWU7IH0KICAgICAgICAgaW5saW5lIHZvaWQgc2V0U2NvcGUoaW50
IHNjb3BlUmVnaXN0ZXJPZmZzZXQsIEpTU2NvcGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM2MjAyZGNiNWU5M2JmNWEw
NWNiYTY2NDk0OThjN2MzMzk2MzgzY2UuLmVkNjg5NTJmNmQ2ZWFlY2I1MDkxMjA5MDdjZjVkYTA5
NTMxYjE3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcApAQCAtNTE3LDkgKzUxNyw5IEBAIENhdGNoSW5mbzo6Q2F0Y2hJbmZvKGNv
bnN0IEhhbmRsZXJJbmZvKiBoYW5kbGVyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAg
Ly8gYW5kIGNhbiBjYXVzZSBhbiBvdmVyZmxvdy4gT1NSIGV4aXQgcHJvcGVybHkgZXhpdHMgdG8g
aGFuZGxlci0+dGFyZ2V0CiAgICAgICAgIC8vIGluIHRoZSBwcm9wZXIgZnJhbWUuCiAgICAgICAg
IGlmICghSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkKLSAg
ICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5hdChoYW5kbGVyLT50YXJnZXQpLnB0cigpOworICAgICAgICAgICAgbV9jYXRjaFBDRm9y
SW50ZXJwcmV0ZXIgPSB7IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+dGFy
Z2V0KS5wdHIoKSB9OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRl
cnByZXRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9
IHsgc3RhdGljX2Nhc3Q8SlNJbnN0cnVjdGlvbio+KG51bGxwdHIpIH07CiAgICAgfQogfQogCkBA
IC01MzEsOSArNTMxLDkgQEAgQ2F0Y2hJbmZvOjpDYXRjaEluZm8oY29uc3QgV2FzbTo6SGFuZGxl
ckluZm8qIGhhbmRsZXIsIGNvbnN0IFdhc206OkNhbGxlZSogY2FsbGUKICAgICAgICAgbV90eXBl
ID0gSGFuZGxlclR5cGU6OkNhdGNoOwogICAgICAgICBtX25hdGl2ZUNvZGUgPSBoYW5kbGVyLT5t
X25hdGl2ZUNvZGU7CiAgICAgICAgIGlmIChjYWxsZWUtPmNvbXBpbGF0aW9uTW9kZSgpID09IFdh
c206OkNvbXBpbGF0aW9uTW9kZTo6TExJbnRNb2RlKQotICAgICAgICAgICAgbV9jYXRjaFBDRm9y
SW50ZXJwcmV0ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBXYXNtOjpMTEludENhbGxlZSo+KGNhbGxl
ZSktPmluc3RydWN0aW9ucygpLmF0KGhhbmRsZXItPm1fdGFyZ2V0KS5wdHIoKTsKKyAgICAgICAg
ICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0geyBzdGF0aWNfY2FzdDxjb25zdCBXYXNtOjpM
TEludENhbGxlZSo+KGNhbGxlZSktPmluc3RydWN0aW9ucygpLmF0KGhhbmRsZXItPm1fdGFyZ2V0
KS5wdHIoKSB9OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnBy
ZXRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IHsg
c3RhdGljX2Nhc3Q8V2FzbUluc3RydWN0aW9uKj4obnVsbHB0cikgfTsKICAgICB9CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
aW5kZXggZTY0NjQ2NTY3OWYyMWQxM2QzNDRjZDY4ODIzOTE3MDc2ZmNjYWExMS4uNjJiYTAwMTky
ZTYyM2YyOGViNmI4YTkyODNhOTYyOTlmODkxMjllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxp
Z25tZW50LmgiCisjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
CiAjaWYgRU5BQkxFKENfTE9PUCkKQEAgLTY4LDcgKzY5LDYgQEAgc3RydWN0IEhhbmRsZXJJbmZv
OwogICAgIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgOiB1aW50OF90OwogICAgIHN0cnVjdCBDYWxs
RnJhbWVDbG9zdXJlOwogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKLSAgICBzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCiAgICAgZW51bSBEZWJ1Z0hvb2tU
eXBlIHsKQEAgLTEwMiw3ICsxMDIsOCBAQCBzdHJ1Y3QgSGFuZGxlckluZm87CiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWc+IG1fbmF0aXZlQ29kZTsKICNlbmRpZgotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9j
YXRjaFBDRm9ySW50ZXJwcmV0ZXI7CisKKyAgICAgICAgc3RkOjp2YXJpYW50PGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qPiBtX2NhdGNoUENGb3JJbnRlcnByZXRl
cjsKICAgICB9OwogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IDUxNWI3OTZiOGFiMzg5N2ZmYWQ5ODIyYjA0MjVlZWNiYjA1NGUwNTQuLmU5
YzBlY2MzMGVhY2M2OGM1NTlmOGFjNDYzZTEwNjIyMzFkZGViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgbV9k
aXNhc3NlbWJsZXItPnNldEZvckJ5dGVjb2RlTWFpblBhdGgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpLCBsYWJlbCgpKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiA9IGluc3RydWN0aW9ucy5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOworICAgICAgICBj
b25zdCBhdXRvKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQobV9ieXRlY29k
ZUluZGV4KS5wdHIoKTsKICAgICAgICAgQVNTRVJUKGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgp
KTsKIAogICAgICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVs
KCksIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSk7CkBAIC01NTEsOCArNTUxLDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKIAogICAgICAgICBCeXRlY29kZUluZGV4
IGZpcnN0VG8gPSBtX2J5dGVjb2RlSW5kZXg7CiAKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7Ci0gICAgICAgIAorICAgICAgICBjb25zdCBhdXRv
KiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOworCiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIHNs
b3cgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1
Z09mZnNldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYzI2NWNjYzA0Nzk4N2Jm
OWM3NzQ3ODgyNDFiZTA3MjFhMGE2NWQxZS4uYjhmZGE1ZDFiNDMxNWU5ZjdkNzA0YzQ2YWFhNWE1
YjFiYjAzNDRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC02Niw3ICs2NiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKICAgICBjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbzsKIAotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKKyAgICBzdHJ1Y3QgSlNPcGNvZGVUcmFp
dHM7CisgICAgdXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRy
YWl0cz47CisKICAgICBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogICAgIHN0cnVjdCBTaW1wbGVKdW1w
VGFibGU7CiAgICAgc3RydWN0IFN0cmluZ0p1bXBUYWJsZTsKQEAgLTI4OSw5ICsyOTIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdChKdW1wLCBpbnQp
OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGNvbXBpbGVP
cENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7Cisg
ICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiwgdW5zaWduZWQg
Y2FsbExpbmtJbmZvSW5kZXgpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgdm9pZCBjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwor
ICAgICAgICB2b2lkIGNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBKU0luc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0lu
ZGV4KTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgc3RkOjplbmFi
bGVfaWZfdDwKQEAgLTMwOSwxMyArMzEyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIGNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcCYsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5z
aWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
ICAgICAgICAgYm9vbCBjb21waWxlQ2FsbEV2YWwoY29uc3QgT3AmKTsKLSAgICAgICAgdm9pZCBj
b21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBjb21waWxlQ2FsbEV2YWxTbG93Q2Fz
ZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0UHV0Q2Fs
bFJlc3VsdChjb25zdCBPcCYpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXFK
dW1wKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPiB2
b2lkIGNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHZvaWQgY29tcGls
ZU9wRXFDb21tb24oVmlydHVhbFJlZ2lzdGVyIHNyYzEsIFZpcnR1YWxSZWdpc3RlciBzcmMyKTsK
ICAgICAgICAgdm9pZCBjb21waWxlT3BFcVNsb3dDb21tb24oVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwpAQCAtMzc1LDI1NyArMzc4LDI1NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoSlNWYWx1ZVJlZ3MsIFZpcnR1
YWxSZWdpc3Rlcik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZv
aWQgZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25k
aXRpb24pOworICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFu
ZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIHVuc2ln
bmVkIHRhcmdldCwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkKGNvbnN0IEluc3RydWN0
aW9uKiwgUmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5z
aWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAg
ICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkSW1wbChWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0
dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCBSZWxhdGlvbmFsQ29uZGl0aW9u
KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdF9jb21w
YXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRpdGlv
bik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAgICAgdm9pZCBlbWl0X2NvbXBh
cmVVbnNpZ25lZEFuZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3Rl
ciBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbG93T3BlcmF0aW9uPgotICAgICAgICB2b2lk
IGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEluc3RydWN0aW9uKiwgRG91YmxlQ29uZGl0
aW9uLCBTbG93T3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qLCBEb3VibGVDb25kaXRpb24sIFNsb3dPcGVyYXRpb24sIGJvb2wgaW52ZXJ0
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFNsb3dPcGVyYXRpb24+CiAgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcFNs
b3dJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIHVuc2lnbmVk
IHRhcmdldCwgc2l6ZV90IGluc3RydWN0aW9uU2l6ZSwgRG91YmxlQ29uZGl0aW9uLCBTbG93T3Bl
cmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICAKKwogICAgICAgICB2b2lkIGFzc2VydFN0YWNrUG9pbnRlck9mZnNldCgpOwogCi0g
ICAgICAgIHZvaWQgZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2JpdGFuZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfYml0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JpdHhv
cihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYml0bm90KGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY2F0Y2goY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfYXJndW1lbnRfY291bnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lcShjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVsbChjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3coY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JlbG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2Yo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2lu
c3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5j
ZW9mKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19lbXB0eShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdHlwZW9mX2lzX3VuZGVm
aW5lZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZp
bmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lz
X2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lzX251
bWJlcihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYWRkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JpdGFuZChjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iaXRvcihjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iaXR4b3IoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfYml0bm90KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfdGFpbF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1Zyhjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBKU0lu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9iZWxvdyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9iZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3RyeV9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2Yo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX25hbWUo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVf
YnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9s
YXp5X3JlZyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfaXNfZW1wdHkoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKik7CiAjaWYg
VVNFKEJJR0lOVDMyKQotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CiAjZWxzZQotICAgICAgICBOT19SRVRVUk4gdm9pZCBlbWl0X29wX2lzX2JpZ19p
bnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgTk9fUkVUVVJOIHZvaWQgZW1pdF9vcF9p
c19iaWdfaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICNlbmRpZgotICAgICAgICB2b2lkIGVt
aXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2pmYWxzZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam1wKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxX251bGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam51bmRlZmluZWRfb3Jf
bnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9wdHIoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2psZXNzKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfamdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3Bfam5sZXNzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9qbmxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfam5ncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9q
bmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamVx
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2piZWxvdyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfamJlbG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9ub3AoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N1cGVyX3Nh
bXBsZXJfYmVnaW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N1
cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9sc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX21vZChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcG93KGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9tb3YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25lcV9u
dWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXko
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV93aXRo
X3NpemUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5j
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2FzeW5jX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X25ld19hc3luY19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfZGVjKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9pbmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVf
dHlwZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHJvZmlsZV9j
b250cm9sX2Zsb3coY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9wYXJlbnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNf
b2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Nl
bGxfd2l0aF90eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2plcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pm
YWxzZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbXAoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9udWxsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2p1bmRlZmluZWRfb3JfbnVs
bChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbnVuZGVmaW5l
ZF9vcl9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pl
cV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9w
dHIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3MoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3NlcShjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcihjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcmVxKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pubGVzcyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmxlc3NlcShjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfamVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfamJlbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2piZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2p0
cnVlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xvb3BfaGlu
dChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190cmFw
cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9ub3AoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9iZWdp
bihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1w
bGVyX2VuZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sc2hp
ZnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbW9kKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Bvdyhjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9tb3YoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfbXVsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25lZ2F0ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbmVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2FycmF5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25l
d19hcnJheV93aXRoX3NpemUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jX2V4cChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2dl
bmVyYXRvcl9mdW5jX2V4cChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX25ld19yZWdleHAoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfbm90KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25zdHJp
Y3RlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWMoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5jKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyhj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcGFyZW50X3Nj
b3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV9p
ZChjb25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wID0g
T3BQdXRCeVZhbD4KLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3Nl
dHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X2dldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9yZXQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3JzaGlm
dChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X2Z1bmN0aW9u
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N0cmljdGVx
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zdWIoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVudHMoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3RvX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfdG9fb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3VuZXhwZWN0ZWRfbG9hZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfdW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX3Vyc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19wcm9wZXJ0eV9rZXkoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVy
X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9z
ZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcmV0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3JzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9zdWIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3Bfc3dpdGNoX2ltbShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF90aHJvdyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF90b19udW1iZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfdG9fbnVtZXJpYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF90b19zdHJpbmcoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfdG9fb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3RvX3ByaW1pdGl2ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF91bmV4cGVjdGVkX2xvYWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfdW5zaWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfdXJzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbChjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19wcm9wZXJ0eV9rZXko
Y29uc3QgSlNJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29k
ZVR5cGU+CiAgICAgICAgIHZvaWQgZ2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29k
ZVR5cGUmLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1lcmF0
b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVR5cGUsIHR5
cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgogICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRv
cl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IE9wY29kZVR5cGUmLCBTbG93UGF0aEZ1bmN0aW9uVHlw
ZSk7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3Bl
cnR5KGNvbnN0IEluc3RydWN0aW9uKik7Ci0KLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWls
X2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfdmFy
YXJncyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VxKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2dldF9jYWxsZWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdHJ5X2dldF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlf
aWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zZXRf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2Vv
Zihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9q
bGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2pncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNzKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRl
cihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tf
dHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
bmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotCi0gICAgICAgIHZvaWQgZW1pdF9v
cF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9y
X2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9l
bnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSlNJbnN0cnVjdGlvbiopOworCisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbChj
b25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbChjb25zdCBKU0luc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NhbGxfdmFyYXJncyhjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1
Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9lcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2dldF9jYWxsZWUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF9k
aXJlY3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Nl
dF9wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2lu
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2psZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZ3Jl
YXRlcihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9qbmxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3NlcShjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamVxKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pzdHJpY3RlcShjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9sb29wX2hpbnQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Bvdyhjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX211bChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lZ2F0
ZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X25ld19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25zdCBKU0luc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworCisgICAgICAgIHZv
aWQgZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAg
dm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBT
bG93UGF0aEZ1bmN0aW9uKTsKIAotICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29w
ZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX25l
eHQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBk
c3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5k
LCBBY2Nlc3NUeXBlKTsKICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlw
ZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdE5l
d0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVu
Y0NvbW1vbihjb25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihjb25zdCBJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihjb25zdCBKU0luc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MsIEdQUlJlZyk7CiAgICAgICAgIHZvaWQgZW1pdFZhclJlYWRPbmx5Q2hl
Y2soUmVzb2x2ZVR5cGUsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAgICAgICAgdm9pZCBlbWl0Tm90
aWZ5V3JpdGVXYXRjaHBvaW50KEdQUlJlZyBwb2ludGVyVG9TZXQpOwpAQCAtNjQzLDE0ICs2NDYs
MTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnRDaGFy
KFZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE5vblBy
b2ZpbGVkRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRo
SUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJvZmlsZWRGdW5jdGlvbiwgTm9u
UHJvZmlsZWRGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9u
LCBOb25Qcm9maWxlZEZ1bmN0aW9uKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0
eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE5v
blByb2ZpbGVkRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5
TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBJbnN0cnVjdGlvbiosIFByb2ZpbGVkRnVuY3Rpb24s
IE5vblByb2ZpbGVkRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIFByb2ZpbGVkRnVu
Y3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24pOwogCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5jdGlv
biwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9uPgot
ICAgICAgICB2b2lkIGVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+Kiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5j
dGlvbiwgUmVwYXRjaEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0TWF0aElDU2xvdyhKSVRC
aW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZFJl
cGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uKTsKICAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFBy
b2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFt
ZSBSZXBhdGNoRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBhdGNoRnVu
Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7CisgICAgICAgIHZvaWQg
ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRj
aEZ1bmN0aW9uKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7
CkBAIC04MzIsMTIgKzgzNSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgU25pcHBldEdlbmVyYXRvcj4KLSAg
ICAgICAgdm9pZCBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3kgc2hvdWxkRW1pdFByb2ZpbGluZyA9IFBy
b2ZpbGluZ1BvbGljeTo6Tm9Qcm9maWxpbmcpOworICAgICAgICB2b2lkIGVtaXRCaXRCaW5hcnlP
cEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmls
aW5nUG9saWN5IHNob3VsZEVtaXRQcm9maWxpbmcgPSBQcm9maWxpbmdQb2xpY3k6Ok5vUHJvZmls
aW5nKTsKIAotICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQpOworICAgICAgICB2b2lkIGVtaXRS
aWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBPcGNvZGVJRCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZv
aWQgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5cGUpOworICAgICAgICB2b2lk
IGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5cGUpOwogCiAgICAgICAgIHZv
aWQgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CiAKQEAgLTg0OCw4ICs4NTEsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgLy8gTG9hZHMgdGhlIGNoYXJhY3RlciB2YWx1ZSBvZiBhIHNpbmdsZSBj
aGFyYWN0ZXIgc3RyaW5nIGludG8gZHN0LgogICAgICAgICB2b2lkIGVtaXRMb2FkQ2hhcmFjdGVy
U3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwgSnVtcExpc3QmIGZhaWx1cmVz
KTsKIAotICAgICAgICBpbnQganVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiosIGludCB0YXJn
ZXQpOwotICAgICAgICAKKyAgICAgICAgaW50IGp1bXBUYXJnZXQoY29uc3QgSlNJbnN0cnVjdGlv
biosIGludCB0YXJnZXQpOworCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgZW1p
dEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKTsKICNlbHNlCkBAIC05NDUsOCArOTQ4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciBtX3BjVG9Db2Rl
T3JpZ2luTWFwQnVpbGRlcjsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2lu
TWFwPiBtX3BjVG9Db2RlT3JpZ2luTWFwOwogCi0gICAgICAgIEhhc2hNYXA8Y29uc3QgSW5zdHJ1
Y3Rpb24qLCB2b2lkKj4gbV9pbnN0cnVjdGlvblRvTWF0aElDOwotICAgICAgICBIYXNoTWFwPGNv
bnN0IEluc3RydWN0aW9uKiwgVW5pcXVlUmVmPE1hdGhJQ0dlbmVyYXRpb25TdGF0ZT4+IG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQ0dlbmVyYXRpb25TdGF0ZTsKKyAgICAgICAgSGFzaE1hcDxjb25zdCBK
U0luc3RydWN0aW9uKiwgdm9pZCo+IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQzsKKyAgICAgICAgSGFz
aE1hcDxjb25zdCBKU0luc3RydWN0aW9uKiwgVW5pcXVlUmVmPE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZT4+IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQ0dlbmVyYXRpb25TdGF0ZTsKIAogICAgICAgICBib29s
IG1fY2FuQmVPcHRpbWl6ZWQ7CiAgICAgICAgIGJvb2wgbV9zaG91bGRFbWl0UHJvZmlsaW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggZjQyNjA3
NGY0NWJhZjRmYzYwYzg1Mjg1ZDBkZmNiMGMxYTc1NWVjOS4uMDUzNzdiODIwNTgxZWFiZmFlODI5
ZWY0ZjVjYjA4MjAxOTE1YTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCkBAIC00NCwxMDcgKzQ0LDEwNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
dm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2psZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmxlc3M+KGN1cnJl
bnRJbnN0cnVjdGlvbiwgTGVzc1RoYW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbGVzc2Vx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qbGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9uLCBMZXNz
VGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZ3JlYXRlcihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXIo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29t
cGFyZUFuZEp1bXA8T3BKZ3JlYXRlcj4oY3VycmVudEluc3RydWN0aW9uLCBHcmVhdGVyVGhhbik7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyZXEoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1
bXA8T3BKZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuT3JFcXVhbCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pubGVzcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSm5s
ZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuT3JFcXVhbCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3NlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpubGVzc2VxPihj
dXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
am5ncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9qbmdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbmdyZWF0ZXI+KGN1cnJlbnRJbnN0
cnVjdGlvbiwgTGVzc1RoYW5PckVxdWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVh
dGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSm5ncmVhdGVyZXE+KGN1cnJlbnRJbnN0
cnVjdGlvbiwgTGVzc1RoYW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3MoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVzcyhjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKbGVzcz4oY3Vy
cmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbkFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBh
cmVMZXNzLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVzc2Vx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3NlcShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKbGVz
c2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQs
IG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEsIGZhbHNlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfamdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFy
ZUFuZEp1bXBTbG93PE9wSmdyZWF0ZXI+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlR3JlYXRl
clRoYW5BbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlciwgZmFsc2UsIGl0ZXIpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSmdyZWF0ZXJlcT4oY3VycmVudElu
c3RydWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxBbmRPcmRlcmVkLCBvcGVyYXRpb25D
b21wYXJlR3JlYXRlckVxLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmxl
c3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93
PE9wSm5sZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9y
VW5vcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlTGVzcywgdHJ1ZSwgaXRlcik7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9qbmxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2pubGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0
X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpubGVzc2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJs
ZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEsIHRydWUsIGl0
ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpuZ3JlYXRlcj4oY3VycmVu
dEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZCwgb3BlcmF0aW9u
Q29tcGFyZUdyZWF0ZXIsIHRydWUsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
am5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9q
bmdyZWF0ZXJlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5k
SnVtcFNsb3c8T3BKbmdyZWF0ZXJlcT4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhh
bk9yVW5vcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxLCB0cnVlLCBpdGVyKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfYmVsb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JlbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZDxPcEJlbG93Pihj
dXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYmVsb3dl
cShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfYmVsb3dlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgZW1pdF9jb21wYXJlVW5zaWduZWQ8T3BCZWxvd2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJl
bG93T3JFcXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2piZWxvdyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVV
bnNpZ25lZEFuZEp1bXA8T3BKYmVsb3c+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQmVsb3cpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9qYmVsb3dlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93ZXEoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVt
cDxPcEpiZWxvd2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93T3JFcXVhbCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF91bnNpZ25lZChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BVbnNpZ25lZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0
ZWNvZGUubV9kc3Q7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdW5zaWdu
ZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQordm9pZCBK
SVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2Rl
Lm1fbGhzOwpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
SW1wbChWaXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCB1bnNpCiAKIAog
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRK
dW1wKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kaXRpb24pCit2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1
YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wSW1wbChWaXJ0dWFsUmVnaXN0ZXIgb3Ax
LCBWaXJ0dWFsUmVnaXN0ZXIgbwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklU
OjplbWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQordm9pZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2ln
bmVkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmRpdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTI3NCw3ICsy
NzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRJbXBsKFZpcnR1YWxSZWdpc3Rl
ciBkc3QsIFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cCwgdHlwZW5hbWUgU2xvd09wZXJhdGlvbj4KLXZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdyhjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIERvdWJsZUNvbmRpdGlvbiBjb25k
aXRpb24sIFNsb3dPcGVyYXRpb24gb3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdyhjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRG91YmxlQ29uZGl0aW9uIGNv
bmRpdGlvbiwgU2xvd09wZXJhdGlvbiBvcGVyYXRpb24sIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0
cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1f
bGhzOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xv
d0ltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lzdGVyIG9wMiwKICAgICBlbWl0
SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJldHVy
blZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pbmMoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5jPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBzcmNEc3QgPSBieXRlY29kZS5tX3NyY0RzdDsKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pbmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9kZWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2RlYyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWM+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyY0RzdCA9IGJ5dGVjb2RlLm1fc3JjRHN0OwpAQCAt
NDE4LDcgKzQxOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiAjaWYgQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRf
b3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9tb2QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTW9kPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTQ1MSw3ICs0NTEs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9t
b2QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDYxLDEzICs0NjEs
MTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGkKIAogI2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAot
dm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0
X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9tb2Qo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQog
ewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQpAQCAtNDc2LDcgKzQ3Niw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEVORDogT1BfTU9EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi12b2lk
IEpJVDo6ZW1pdF9vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQ
b3c+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAt
NTIyLDcgKzUyMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCBy
ZXN1bHRSZWdzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAg
LTUzMCw3ICs1MzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG93KGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaQogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gJm1fdW5saW5rZWRDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxl
KGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubV9wcm9maWxlSW5kZXgpOwogICAg
IEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1fbWF0aElDcy5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUp
OwpAQCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRNYXRoSUNGYXN0PE9wTmVnYXRl
PihuZWdhdGVJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9u
ZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
QEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgU25pcHBldEdlbmVyYXRvcj4KLXZvaWQgSklUOjplbWl0
Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxpbmdQb2xpY3kgcHJvZmlsaW5nUG9saWN5KQordm9pZCBKSVQ6OmVtaXRCaXRCaW5h
cnlPcEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJv
ZmlsaW5nUG9saWN5IHByb2ZpbGluZ1BvbGljeSkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0g
Ynl0ZWNvZGUubV9kc3Q7CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBKSVQ6OmVtaXRCaXRCaW5h
cnlPcEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2Zp
bGkKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wTGlzdCgpKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfYml0bm90KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9iaXRub3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wQml0bm90PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBieXRlY29kZS5tX2Rz
dDsKQEAgLTYwOCwyNyArNjA4LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2JpdG5vdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdGFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0
YW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0
Qml0QmluYXJ5T3BGYXN0UGF0aDxPcEJpdGFuZCwgSklUQml0QW5kR2VuZXJhdG9yPihjdXJyZW50
SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeTo6U2hvdWxkRW1pdFByb2ZpbGluZyk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2JpdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGg8T3BCaXRvciwg
SklUQml0T3JHZW5lcmF0b3I+KGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5OjpT
aG91bGRFbWl0UHJvZmlsaW5nKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYml0eG9yKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9iaXR4
b3IoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRC
aXRCaW5hcnlPcEZhc3RQYXRoPE9wQml0eG9yLCBKSVRCaXRYb3JHZW5lcmF0b3I+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5OjpTaG91bGRFbWl0UHJvZmlsaW5nKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoPE9wTHNoaWZ0
LCBKSVRMZWZ0U2hpZnRHZW5lcmF0b3I+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQg
SklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFz
dFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCBv
cGNvZGVJRCkKIHsKICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfcnNoaWZ0IHx8IG9wY29kZUlE
ID09IG9wX3Vyc2hpZnQpOwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKQEAgLTY0NCw3ICs2NDQs
NyBAQCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
LXZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OlNoaWZ0VHlwZSBzbmlwcGV0
U2hpZnRUeXBlKQordm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlm
dFR5cGUgc25pcHBldFNoaWZ0VHlwZSkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC02ODIsMTcgKzY4MiwxNyBAQCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRG
YXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdodAog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXBMaXN0KCkpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9yc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3JzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24s
IG9wX3JzaGlmdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Vyc2hpZnQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Vyc2hpZnQoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRSaWdodFNo
aWZ0RmFzdFBhdGgoY3VycmVudEluc3RydWN0aW9uLCBvcF91cnNoaWZ0KTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJm1fdW5saW5r
ZWRDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
QWRkPigpLm1fcHJvZmlsZUluZGV4KTsKICAgICBKSVRBZGRJQyogYWRkSUMgPSBtX21hdGhJQ3Mu
YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0TWF0aElDRmFzdDxPcEFkZD4oYWRkSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9u
VmFsdWVBZGRQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVBZGQpOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
YWRkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVk
RnVuY3Rpb24sIHR5cGVuYW1lIE5vblByb2ZpbGVkRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1pdE1h
dGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rp
b24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikKK3ZvaWQgSklUOjpl
bWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxl
ZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNzU1LDcgKzc1NSw3IEBA
IHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SUMsIGNvbnN0IEluc3RydWN0aW9uKiBjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlw
ZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Q
cm9maWxlZEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlv
biBub25Qcm9maWxlZEZ1bmN0aW9uKQordm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFy
eU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxl
ZEZ1bmN0aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9
IGJ5dGVjb2RlLm1fZHN0OwpAQCAtODIyLDcgKzgyMiw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElD
RmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlv
bioKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVu
YW1lIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0
eXBlbmFtZSBSZXBhdGNoRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlv
biwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVw
YXRjaEZ1bmN0aW9uKQordm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmls
ZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVwYXRjaEZ1bmN0
aW9uKQogewogICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElDR2VuZXJhdGlvblN0YXRl
ID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZpbmQoY3VycmVudEluc3Ry
dWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRo
U3RhcnQgPSBsYWJlbCgpOwpAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElD
U2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9u
KiBjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBl
bmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwg
dHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHByb2ZpbGVkUmVwYXRjaEZ1bmN0
aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbiBy
ZXBhdGNoRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElD
PEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJv
ZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVwYXRjaEZ1
bmN0aW9uKQogewogICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElDR2VuZXJhdGlvblN0
YXRlID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZpbmQoY3VycmVudElu
c3RydWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQ
YXRoU3RhcnQgPSBsYWJlbCgpOwpAQCAtOTI1LDcgKzkyNSw3IEBAIHZvaWQgSklUOjplbWl0TWF0
aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVj
dGlvbioKICAgICB9KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGl2PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTk4Myw3ICs5ODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZt
X3VubGlua2VkQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGUoY3VycmVudEluc3RydWN0aW9u
LT5hczxPcE11bD4oKS5tX3Byb2ZpbGVJbmRleCk7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9t
YXRoSUNzLmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CkBAIC05OTEsNyArOTkxLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9w
ZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX211bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIApAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAg
ICAgZW1pdE1hdGhJQ1Nsb3c8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwg
b3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N1Yihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
c3ViKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZtX3VubGlua2VkQ29kZUJsb2NrLT5iaW5h
cnlBcml0aFByb2ZpbGUoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN1Yj4oKS5tX3Byb2ZpbGVJ
bmRleCk7CiAgICAgSklUU3ViSUMqIHN1YklDID0gbV9tYXRoSUNzLmFkZEpJVFN1YklDKGFyaXRo
UHJvZmlsZSk7CkBAIC0xMDA3LDcgKzEwMDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TWF0aElDRmFzdDxP
cFN1Yj4oc3ViSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxl
ZCwgb3BlcmF0aW9uVmFsdWVTdWIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBjNjhlNDdlZTljODhiMTZlODE2MTRmZGM4ZGNh
MGM2MGM0MmMyODk3Li44OTk4MDg3MmQyYjcyNzc0YzY5NTZiMzkxMTkyZTg3MTgxYjM3ZTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX3JldChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcmV0KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChyZXR1cm5WYWx1ZUpTUiwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKIApAQCAtMTg4LDcgKzE4
OCw3IEBAIGJvb2wgSklUOjpjb21waWxlQ2FsbEV2YWwoY29uc3QgT3BDYWxsRXZhbCYgYnl0ZWNv
ZGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93
Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29u
c3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMjMwLDcg
KzIzMCw3IEBAIGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwoY29uc3QgT3BUYWlsQ2FsbCYgYnl0
ZWNvZGUsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5zCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCkKK3ZvaWQgSklUOjpjb21waWxlT3BDYWxs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9J
bmRleCkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRv
IGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZv
aWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5z
aWduZWQgY2FsbExpbmtJbmZvSW5kCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVkKQordm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgdW5zaWduZWQpCiB7CiAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcD4oKTsKQEAgLTMyNSw4NyArMzI1LDg3IEBAIHZvaWQgSklUOjpj
b21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jYWxsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BD
YWxsPE9wQ2FsbD4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF90YWlsX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbChjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbDxPcFRhaWxD
YWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF9ldmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wQ2FsbEV2YWw+KGN1
cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wQ2FsbFZhcmFyZ3M+KGN1
cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wVGFp
bENhbGxWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbDxP
cENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8
T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBj
b21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1f
Y2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2Nh
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2NhbGwo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcFRh
aWxDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX2V2YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX2V2YWwoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRl
cik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENhbGxWYXJhcmdzPihj
dXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbFZhcmFyZ3M+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2Fy
Z3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dD
YXNlPE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIs
IG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jb25z
dHJ1Y3RfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxl
T3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0
ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9j
b25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jb25z
dHJ1Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2Fz
ZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0lu
ZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29u
c3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKICAgICBhdXRvKiB0cnlGYXN0RnVuY3Rp
b24gPSAoWyZdICgpIHsKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBmYXN0Q2FzZS5s
aW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBKU0lu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JP
cGVuPigpOwogCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAg
ICBkb25lLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOwogICAgIGF1dG8qIHRy
eUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAg
IGZhc3RDYXNlLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T3BJdGVyYXRvck5leHQ+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwCmluZGV4IGI4NmU5YTQxMDNjODUwNmMzZmRiYmFjNTRkN2U5NGU2NjYwYWFkOTku
LjA0NzM5MmUxMmJhMWI1NjZlNzI2OGJhNTY2ZjVjOWJlNzI4OGZlOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcApAQCAtNTcsMTggKzU3LDIwIEBAIHZv
aWQgZ2VuZXJpY1Vud2luZChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIENhdGNo
SW5mbyBoYW5kbGVyID0gdm0uaW50ZXJwcmV0ZXItPnVud2luZCh2bSwgY2FsbEZyYW1lLCBleGNl
cHRpb24pOyAvLyBUaGlzIG1heSB1cGRhdGUgY2FsbEZyYW1lLgogCiAgICAgdm9pZCogY2F0Y2hS
b3V0aW5lOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBu
dWxscHRyOworICAgIEpTT3JXYXNtSW5zdHJ1Y3Rpb24gY2F0Y2hQQ0ZvckludGVycHJldGVyID0g
eyBzdGF0aWNfY2FzdDxKU0luc3RydWN0aW9uKj4obnVsbHB0cikgfTsKICAgICBpZiAoaGFuZGxl
ci5tX3ZhbGlkKSB7CiAgICAgICAgIGNhdGNoUENGb3JJbnRlcnByZXRlciA9IGhhbmRsZXIubV9j
YXRjaFBDRm9ySW50ZXJwcmV0ZXI7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgY2F0Y2hSb3V0
aW5lID0gaGFuZGxlci5tX25hdGl2ZUNvZGUuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICNlbHNlCi0g
ICAgICAgIGlmIChjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPmlzV2lkZTMyKCkpCi0gICAgICAgICAg
ICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cihjYXRjaFBDRm9ySW50ZXJw
cmV0ZXItPm9wY29kZUlEKCkpOwotICAgICAgICBlbHNlIGlmIChjYXRjaFBDRm9ySW50ZXJwcmV0
ZXItPmlzV2lkZTE2KCkpCi0gICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0V2lk
ZTE2Q29kZVB0cihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPm9wY29kZUlEKCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0Q29kZVB0cihjYXRjaFBD
Rm9ySW50ZXJwcmV0ZXItPm9wY29kZUlEKCkpOworICAgICAgICBzdGQ6OnZpc2l0KFsmXShhdXRv
KiBwYykgeworICAgICAgICAgICAgaWYgKHBjLT5pc1dpZGUzMigpKQorICAgICAgICAgICAgICAg
IGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKHBjLT5pc1dpZGUxNigpKQorICAgICAgICAgICAgICAgIGNh
dGNoUm91dGluZSA9IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0
Q29kZVB0cihwYy0+b3Bjb2RlSUQoKSk7CisgICAgICAgIH0sIGNhdGNoUENGb3JJbnRlcnByZXRl
cik7CiAjZW5kaWYKICAgICB9IGVsc2UKICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6Omhh
bmRsZVVuY2F1Z2h0RXhjZXB0aW9uKHZtKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMDJlMmY4YWVhM2M5Mzc5N2I0
ZTVkMTJmM2JkYTJhYjViMzQwZjZjZC4uYmZmYjJmNGMzMDMwZWVlZTE0Zjg5MGVmODFjYTBlM2U4
MTk4N2NkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTIyMCw3
ICsyMjAsNyBAQCBpbmxpbmUgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIEpJVDo6ZmFzdFBhdGhSZXN1
bWVQb2ludCgpIGNvbnN0CiAgICAgaWYgKGl0ZXIgIT0gbV9mYXN0UGF0aFJlc3VtZUxhYmVscy5l
bmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIC8vIE5leHQgaW5zdHJ1Y3Rp
b24gaW4gc2VxdWVuY2UKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
ID0gbV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZUluZGV4
KS5wdHIoKTsKKyAgICBjb25zdCBhdXRvKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3VubGlua2Vk
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOwogICAg
IHJldHVybiBtX2xhYmVsc1ttX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1
Y3Rpb24tPnNpemUoKV07CiB9CiAKQEAgLTQzMiw3ICs0MzIsNyBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoSlNWYWx1ZVJlZ3MganNSZWcsIFZp
cnR1YWxSZQogICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoanNSZWcpOwogfQog
Ci1BTFdBWVNfSU5MSU5FIGludCBKSVQ6Omp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBpbnQgdGFyZ2V0KQorQUxXQVlTX0lOTElORSBpbnQgSklUOjpqdW1wVGFyZ2V0
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBpbnQgdGFyZ2V0KQogewogICAgIGlm
ICh0YXJnZXQpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAppbmRleCA1NmRmYjg3MzY1MjNhNzVjM2NhNTEyYzhmYzE4YzMxMzI0
NjAxZDY4Li41Yjg1YzdhYzUxN2E3MDJkY2ZkN2E2MmVkZjA5MjExYTNkNWQzMzNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX21vdihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW92KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE1vdj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0g
Ynl0ZWNvZGUubV9kc3Q7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX21vdihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHN0b3JlVmFsdWUoanNS
ZWdUMTAsIGFkZHJlc3NGb3IoZHN0KSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW5k
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVuZD4oKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKQEAgLTc2
LDcgKzc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgcmV0KCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2ptcChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
am1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEptcD4oKTsKICAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJn
ZXRMYWJlbCk7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2ptcChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiAKLXZvaWQgSklUOjplbWl0X29w
X25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX25ld19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
TmV3T2JqZWN0PigpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNs
b3dDYXNlKHNsb3dDYXNlcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiB9CiAKIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5j
ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVycmlkZXNIYXNJbnN0YW5jZT4o
KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNDYsNyAr
MTQ2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiAKLXZvaWQgSklUOjplbWl0X29w
X2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SW5zdGFuY2VvZj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0xOTIsMTAgKzE5MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5j
ZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2Vv
Zihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LSAgICAKKwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5z
dGFuY2VvZj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1f
ZHN0OwogICAgIApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0
YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSXNFbXB0eT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfZW1wdHko
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90eXBlb2Zf
aXNfdW5kZWZpbmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF90eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFR5cGVvZklzVW5kZWZpbmVkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzVW5kZWZpbmVkT3JOdWxsPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTI4NCw3ICsyODQsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogfQogCiAKLXZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xl
YW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2lzX2Jvb2xlYW4oY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCb29sZWFu
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTMwMyw3
ICszMDMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpz
UmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNOdW1iZXI+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogfQogCiAjaWYgVVNFKEJJR0lOVDMyKQotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
aXNfYmlnX2ludChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0zNDYsMTQgKzM0
NiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVn
VDEwKTsKIH0KICNlbHNlIC8vIGlmICFVU0UoQklHSU5UMzIpCi1OT19SRVRVUk4gdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopCitOT19SRVRVUk4gdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICAvLyBJ
ZiB3ZSBvbmx5IGhhdmUgSGVhcEJpZ0ludHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxXaXRoVHlwZSBp
bnN0ZWFkIG9mIGlzQmlnSW50LgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxf
d2l0aF90eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBl
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTM3MSw3
ICszNzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfb2Jq
ZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzT2JqZWN0PigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTM4OCw3ICszODgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1ByaW1pdGl2ZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3RvX3Byb3BlcnR5X2tleShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvUHJvcGVydHlLZXk+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3RvX3Byb3BlcnR5X2tleShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25h
bWUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0RnVuY3Rpb25OYW1lPigpOwog
CkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZSwgZ2xvYmFsT2JqZWN0R1BSLCBmdW5jdGlvbkdQUiwg
bmFtZUpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25vdChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcE5vdD4oKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fb3BlcmFuZCwganNSZWdUMTApOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSklU
OjplbWl0X29wX25vdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfamZhbHNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSmZhbHNlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3Vy
cmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTQ4OSw3ICs0ODks
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0Zh
bHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEplcU51bGw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVjb2Rl
Lm1fdmFsdWU7CkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBtYXNxdWVyYWRlc0ds
b2JhbE9iamVjdElzRm9yZWlnbi5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9q
bmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2puZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVx
TnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAg
LTUzOCw3ICs1MzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlz
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfanVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qdW5kZWZpbmVk
X29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnVuZGVmaW5lZE9yTnVs
bD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAt
NTU0LDcgKzU1NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoSWZO
dWxsKGpzUmVnVDEwKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRlZmlu
ZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BKbnVuZGVmaW5lZE9yTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUg
PSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2pudW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBhZGRKdW1wKGJyYW5jaElmTm90TnVsbChqc1JlZ1QxMCksIHRhcmdldCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2plcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2plcV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSmVxUHRyPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBieXRlY29k
ZS5tX3ZhbHVlOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9wdHIo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUu
bV92YWx1ZTsKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEVxPigpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9saHMs
IHJlZ1QwKTsKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwogICAgIHVuc2ln
bmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rh
cmdldExhYmVsKTsKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogI2VuZGlmCiAKLXZvaWQgSklU
OjplbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BK
dHJ1ZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC02NzgsNyArNjc4LDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IoVk0mIHZtKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxPigpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9saHMsIHJlZ1QwKTsKQEAgLTY5MCw3ICs2OTAs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1Jl
Z1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFy
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC03MDIs
NyArNzAyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Ro
cm93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRocm93PigpOwogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwpAQCAtNzUwLDcg
Kzc1MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF90
aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICNpZiBVU0UoSlNWQUxVRTY0KQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVx
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC04MjUsMTggKzgyNSwxOCBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0cmlj
dEVxPE9wU3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BTdHJpY3RFcTxPcE5zdHJpY3RlcT4oY3VycmVudElu
c3RydWN0aW9uKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6Y29tcGls
ZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcD4oKTsKICAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtOTA1LDE3ICs5MDUsMTcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfanN0cmlj
dGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21w
aWxlT3BTdHJpY3RFcUp1bXA8T3BKc3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0cmljdEVxSnVtcDxP
cEpuc3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKQEAgLTkyNiw3ICs5MjYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0
cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAog
ICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQ
UiksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtOTM5
LDcgKzkzOSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICNlbmRpZgogCi12b2lkIEpJ
VDo6ZW1pdF9vcF90b19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3RvX251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BUb051bWJlcj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtOTU0LDcgKzk1NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWJl
cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdFZSZWcsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BUb051bWVyaWM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdFZSZWcgPSBieXRlY29kZS5t
X2RzdDsKQEAgLTk3NSw3ICs5NzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0VlJlZywganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90
b19zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX3RvX3N0cmluZyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1N0
cmluZz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpA
QCAtOTkwLDcgKzk5MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3N0cmluZyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdFZSZWcsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF90b19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9PYmplY3Q+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEwMDYs
NyArMTAwNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX29iamVjdChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dFZSZWcsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhdGNoPigpOwogCkBAIC0xMDUyLDEyICsx
MDUyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVjdGlvbiopCit2b2lk
IEpJVDo6ZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSlNJbnN0cnVjdGlvbiop
CiB7CiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlLi4uCiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UGFyZW50U2NvcGU+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGN1cnJlbnRTY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CkBAIC0xMDY3LDcgKzEw
NjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1t
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9zd2l0Y2hfaW1tKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN3aXRjaEltbT4o
KTsKICAgICBzaXplX3QgdGFibGVJbmRleCA9IGJ5dGVjb2RlLm1fdGFibGVJbmRleDsKQEAgLTEw
OTQsNyArMTA5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBK
U1N3aXRjaFB0clRhZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0
Y2hfY2hhcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgZmFzdCBwYXRoLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1MjEKQEAgLTExMTksNyArMTExOSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN3aXRjaFN0cmluZz4oKTsKICAgICBzaXpl
X3QgdGFibGVJbmRleCA9IGJ5dGVjb2RlLm1fdGFibGVJbmRleDsKQEAgLTExNDIsNyArMTE0Miw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBKU1N3aXRjaFB0
clRhZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VxX251bGwoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXFOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTExNzQsNyArMTE3NCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9uZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
TmVxTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBA
IC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3Ry
dWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQog
ewogICAgIC8vIEV2ZW4gdGhvdWdoIENUSSBkb2Vzbid0IHVzZSB0aGVtLCB3ZSBpbml0aWFsaXpl
IG91ciBjb25zdGFudAogICAgIC8vIHJlZ2lzdGVycyB0byB6YXAgc3RhbGUgcG9pbnRlcnMsIHRv
IGF2b2lkIHVubmVjZXNzYXJpbHkgcHJvbG9uZ2luZwpAQCAtMTMzNSw3ICsxMzM1LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJH
ZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldFNjb3BlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29w
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX3RvX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBzcmNEc3QgPSBieXRlY29kZS5tX3NyY0RzdDsKQEAgLTEzNTks
NyArMTM1OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwg
QWRkcmVzcyhqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHJlZ1QyKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVf
dGhpcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVUaGlzPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29kZS5tX2NhbGxlZTsKQEAgLTEzOTQsNyAr
MTM5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2No
ZWNrX3Rkeihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTQwOSw3ICsxNDA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y2hlY2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIC8vIFNs
b3cgY2FzZXMKIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE0MjAsNyArMTQyMCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Rz
dCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xNDMyLDcgKzE0
MzIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kc3QsIHJldHVyblZhbHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pl
cShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IApAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBlbWl0
SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJn
ZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGVidWc+KCk7CiAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIHJlZ1QwKTsKQEAgLTE0NjYsNyArMTQ2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYnVn
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbm9EZWJ1Z2dlclJl
cXVlc3RzLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQo
Y29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkgJiYgbV91bmxp
bmtlZENvZGVCbG9jay0+bG9vcEhpbnRzQXJlRWxpZ2libGVGb3JGdXp6aW5nRWFybHlSZXR1cm4o
KSkpIHsKICAgICAgICAgdWludHB0cl90KiBwdHIgPSB2bSgpLmdldExvb3BIaW50RXhlY3V0aW9u
Q291bnRlcihpbnN0cnVjdGlvbik7CkBAIC0xNDk0LDcgKzE0OTQsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIH0KIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gRW1pdCB0aGUgc2xvdyBwYXRoIGZvciB0aGUg
SklUIG9wdGltaXphdGlvbiBjaGVjazoKQEAgLTE1MjEsMjYgKzE1MjEsMjYgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2wKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFw
cyhjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFwcyhjb25z
dCBKU0luc3RydWN0aW9uKikKIHsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoTm9uWmVy
bywgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPnRyYXBzKCkudHJhcEJpdHNBZGRyZXNzKCkpLCBUcnVz
dGVkSW1tMzIoVk1UcmFwczo6QXN5bmNFdmVudHMpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X25vcChjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9ub3AoY29uc3QgSlNJ
bnN0cnVjdGlvbiopCiB7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVn
aW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9i
ZWdpbihjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSks
IEFic29sdXRlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50
KSkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBJbnN0
cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBKU0lu
c3RydWN0aW9uKikKIHsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVz
cyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50KSkpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2No
ZWNrX3RyYXBzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE1ODEs
NyArMTU4MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpv
cF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2CiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX2NoZWNrX3Ry
YXBzX2hhbmRsZXIiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3Jl
Z2V4cChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdSZWdleHA+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTU5NCw3ICsxNTk0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0
TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNjE2
LDI4ICsxNjE2LDI4IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX25ld19mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5ld0Z1bmM+KGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5ld0dlbmVyYXRvckZ1bmM+KGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuYyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5ld0FzeW5jR2VuZXJhdG9yRnVuYz4o
Y3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX25ld19hc3luY19mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5ld0FzeW5jRnVuYz4oY3VycmVudEluc3Ry
dWN0aW9uKTsKIH0KLSAgICAKKwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0xNjU5LDI3ICsxNjU5LDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24o
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX25ld19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb248T3BO
ZXdGdW5jRXhwPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21t
b248T3BOZXdHZW5lcmF0b3JGdW5jRXhwPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNF
eHByQ29tbW9uPE9wTmV3QXN5bmNGdW5jRXhwPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAg
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb248T3BOZXdBc3luY0dlbmVyYXRv
ckZ1bmNFeHA+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9Ci0gICAgCi12b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKKwordm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cE5ld0FycmF5PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
QEAgLTE2OTEsNyArMTY5MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJheShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXJyYXlXaXRoUHJvZmlsZSwgZHN0LCBhcmd1bWVudEdQUjAsIGFyZ3VtZW50R1BSMSwg
YXJndW1lbnRHUFIyLCBzaXplKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dp
dGhfc2l6ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BOZXdBcnJheVdpdGhTaXplPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKQEAgLTE3MDgsNyArMTcwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19h
cnJheV93aXRoX3NpemUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlLCBkc3Qs
IGdsb2JhbE9iamVjdEdQUiwgcHJvZmlsZUdQUiwgc2l6ZUpTUik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBtX2lzU2hhcmVhYmxlID0gZmFsc2U7CiAKQEAgLTE3
NzQsNyArMTc3NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGp1bXBUb0VuZC5saW5rKHRoaXMpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5zaGFkb3dDaGlja2VuKCkpOwogICAg
IHVwZGF0ZVRvcENhbGxGcmFtZSgpOwpAQCAtMTc4OCw3ICsxNzg4LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3QKICAgICBsb2dTaGFkb3dDaGlja2VuUHJvbG9ndWVQYWNrZXQoc2hhZG93UGFj
a2V0UmVnLCBzY3JhdGNoMVJlZywgcmVnVDMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9sb2df
c2hhZG93X2NoaWNrZW5fdGFpbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHZtKCku
c2hhZG93Q2hpY2tlbigpKTsKICAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKQEAgLTE4MDcsNyAr
MTgwNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9nU2hhZG93Q2hpY2tlblRh
aWxQYWNrZXQoc2hhZG93UGFja2V0UmVnLCBqc1JlZ1QzMiwgcmVnVDQsIHJlZ1QxLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxl
X2NvbnRyb2xfZmxvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIG1faXNTaGFyZWFibGUgPSBmYWxzZTsKIApAQCAt
MTgyMSw3ICsxODIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYXJndW1lbnRfY291bnQoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQXJndW1lbnRDb3VudD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xODMyLDcgKzE4MzIsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHQpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRSZXN0TGVuZ3RoPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldEFyZ3VtZW50PigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9hcmd1bWVudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJvdG90eXBlT2Y+KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA0NDI5NDg1MzZlNzMx
ZWJlMDZhOGFlNzBmODM2NDNlYjIzNjJmNDAyLi44MTk5NzgwYzk1NjcwOGVkYWI2YjU5OTM2NDg1
ODJiNWQ1YmQxYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BFcVNsb3dDb21t
b24oVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKICAgICBkb25lLmxpbmso
dGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BFcT4oKTsKIApAQCAtODYsNyArODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxPigp
OwogCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qZXEo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwogICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRKdW1wKGJyYW5jaDMyKEVxdWFs
LCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIGpzUmVnVDMyLnBheWxvYWRHUFIoKSksIHRhcmdldCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSm5lcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoMzIoTm90RXF1YWwsIGpzUmVnVDEwLnBheWxv
YWRHUFIoKSwganNSZWdUMzIucGF5bG9hZEdQUigpKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXE+KCk7CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9k
c3QsIHJldHVyblZhbHVlSlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BOZXE+KCk7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIHJldHVyblZhbHVlSlNS
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXE+KCk7CiAgICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9q
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
CiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJldHVyblZhbHVl
R1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpu
ZXE+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BTdHJpY3RFcUNvbW1vbihWaXJ0dWFsUmVnaXN0ZXIgc3JjMSwgIFZpcnR1YWxS
ZWdpc3RlciBzcmMyKQogICAgIGZpcnN0SXNPYmplY3QubGluayh0aGlzKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3N0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFN0cmljdGVxPigpOwogICAgIGNvbXBpbGVPcFN0cmljdEVxQ29tbW9uKGJ5dGVjb2Rl
Lm1fbGhzLCBieXRlY29kZS5tX3Jocyk7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE5zdHJpY3RlcT4oKTsKICAgICBjb21waWxlT3BTdHJpY3RFcUNvbW1v
bihieXRlY29kZS5tX2xocywgYnl0ZWNvZGUubV9yaHMpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVn
VDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnN0cmljdGVxPigpOwogICAgIGludCB0YXJnZXQg
PSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7
CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2gzMihFcXVh
bCwganNSZWdUMTAucGF5bG9hZEdQUigpLCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJnZXQp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuc3RyaWN0ZXE+KCk7CiAgICAgaW50IHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
QEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2gzMihOb3RF
cXVhbCwganNSZWdUMTAucGF5bG9hZEdQUigpLCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJn
ZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0yMjgsNyArMjI4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hU
ZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IGMwY2I3MmZiNjBkOTM1MzUzOWU5NDE3YWNiZjg0ZTUxMDhkMzg1MDIu
LmVmYzlhMGU4YmIwMmUyMjU4MTE4NDYyM2QxMDYwYTg5MzVjZGYyYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjgyNSw3ICsyODI1LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3du
S2V5VHlwZSwgY2hhciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4ocmVzdWx0KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29s
dmVTY29wZUZvckJhc2VsaW5lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEluc3RydWN0aW9uKiBwYykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODc3LDcgKzI4NzcsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzb2x2ZWRTY29w
ZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9t
U2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgSlNJbnN0cnVjdGlvbiogcGMpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBA
IC0yOTE5LDcgKzI5MTksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0
RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KgogICAgIH0pKSk7CiB9
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IGQ1ZTlmNWM3MDVhNTg5MzkwNzExYmFmNzM3MGIwMDRiMjYxZmRiODQu
LjJhNTlmNjRlODg1YWQ1YTI1ZTE4NjcyZjk2YzNkZDViYjg2NWJkMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC02OCw3ICs2OCwxMCBAQCBjbGFzcyBX
YXRjaHBvaW50U2V0OwogCiBzdHJ1Y3QgRUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1l
Owotc3RydWN0IEluc3RydWN0aW9uOworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJ
bnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24g
PSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwogCiB0eXBlZGVmIGNoYXIqIFVudXNl
ZFB0cjsKIApAQCAtMjk0LDkgKzI5Nyw5IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKCiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5
cGUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0
YWJsZUluZGV4LCBpbnQzMl90IG1pbikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoVk0qLCBFbmNvZGVkSlNW
YWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4LCBpbnQzMl90IG1pbikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRoVW5rbm93bktleVR5cGUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUlu
ZGV4KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVTY29wZUZv
ckJhc2VsaW5lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1
Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
R2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5z
dHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJ5dGVjb2RlUEMpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2
ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBKU0luc3RydWN0aW9uKiBieXRlY29kZVBDKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
SlNJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5p
dGlhbENhcGFjaXR5LCBjaGFyKiwgKFZNKiwgSlNPYmplY3QqKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3Jh
Z2UsIGNoYXIqLCAoVk0qLCBKU09iamVjdCosIHNpemVfdCBuZXdTaXplKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDhlYjIxMzhh
MTFjOWNiOTY5OWZjM2ZhMjlkYWEyMmU1NTJiMTljODEuLmM4YjhiMGJmM2RlMWYzY2ZiN2JkZDli
MDFjMjdhNDc2Nzk5OTM3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVH
ZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nh
c2VFbgogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KQEAgLTE2NSw3ICsxNjUsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxT
bG93T3BlcmF0aW9uVAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BHZXRQcml2YXRlTmFtZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBBU1NFUlQoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKIApAQCAtMjYw
LDcgKzI2MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyCiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtMjk1LDcgKzI5NSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRG
aWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIFVOVVNFRF9QQVJBTShjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFYKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVf
YnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0zNDgs
NyArMzQ4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwpAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC00MTcsMTQgKzQxNywxNCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsK
IH0KIAotdGVtcGxhdGUgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsPihj
b25zdCBJbnN0cnVjdGlvbiopOwordGVtcGxhdGUgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3Zh
bDxPcFB1dEJ5VmFsPihjb25zdCBKU0luc3RydWN0aW9uKik7CiAKLXZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlW
YWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwog
ICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5k
ZXgpOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UCiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtNTIyLDcgKzUy
Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3Vs
ZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
QEAgLTU4NCw3ICs1ODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcgogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24i
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9i
eV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJCeUlkPigpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGJ5dGVjb2RlLm1fYmFzZSwgcmVnVDAp
OwpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblB1dEdldHRlckJ5SWQsIHJlZ1QyLCByZWdUMCwgbV91bmxpbmtlZENvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCksIG9wdGlvbnMsIHJlZ1Qx
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9i
eV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRTZXR0ZXJCeUlkPigpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGJ5dGVjb2RlLm1fYmFzZSwgcmVnVDAp
OwpAQCAtNjA0LDcgKzYwNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblB1dFNldHRlckJ5SWQsIHJlZ1QyLCByZWdUMCwgbV91bmxpbmtlZENvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCksIG9wdGlvbnMsIHJlZ1Qx
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdl
dHRlclNldHRlckJ5SWQ+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYnl0
ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBAIC02MTUsNyArNjE1LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwgcmVn
VDMsIHJlZ1QwLCBtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpLmltcGwoKSwgYXR0cmlidXRlLCByZWdUMSwgcmVnVDIpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV92YWwoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlWYWw+KCk7CiAKQEAgLTYzNCw3ICs2MzQs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0
dGVyQnlWYWwsIGdsb2JhbE9iamVjdEdSUCwgYmFzZUdQUiwgcHJvcGVydHlKU1IsIGF0dHJpYnV0
ZXMsIHNldHRlckdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfc2V0dGVyX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRT
ZXR0ZXJCeVZhbD4oKTsKIApAQCAtNjUzLDcgKzY1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRTZXR0ZXJCeVZhbCwgZ2xvYmFsT2JqZWN0R1JQ
LCBiYXNlR1BSLCBwcm9wZXJ0eUpTUiwgYXR0cmlidXRlcywgc2V0dGVyR1BSKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFy
cmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2Rl
bF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC03NjIsNyArNzYyLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVs
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGgKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BEZWxCeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC04MDQsNyArODA0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFz
ZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3Zh
bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC04NzQsNyArODc0LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3Zh
bF9jYWxsU2xvd09wZXJhdGlvblQKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVD
YWxsIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlf
aWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTA4LDcgKzkw
OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZS
ZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9p
ZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC05MzQsNyArOTM0LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3Qo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJ
ZERpcmVjdD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1f
ZHN0OwpAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CkBAIC05OTMsNyArOTkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9k
aXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRl
Y29kZS5tX2RzdDsKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0xMTAw
LDcgKzExMDAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaAogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTEzOCw3ICsx
MTM4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAg
LTEyMDEsNyArMTIwMSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPCiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
biIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZVZSZWcsIFNob3VsZEZpbHRlckJhc2UpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKQEAgLTEzMTAsNyArMTMxMCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoCiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEzNDIsNyArMTM0Miw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CkBAIC0xMzcwLDcgKzEzNzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC0xNDA2LDcgKzE0MDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2lu
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0xNDg2LDMxICsxNDg2
LDMxIEBAIHZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZSB0eXBlKQogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKICAgICBlbWl0SGFz
UHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3Bl
cnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0
ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgZW1pdEhhc1By
aXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKICAgICBlbWl0SGFzUHJpdmF0
ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFz
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5k
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgZW1pdEhhc1ByaXZhdGVT
bG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wUmVzb2x2ZVNjb3BlPigpOwogICAgIFJlc29sdmVUeXBlIHByb2ZpbGVkUmVzb2x2ZVR5
cGUgPSBieXRlY29kZS5tZXRhZGF0YShtX3Byb2ZpbGVkQ29kZUJsb2NrKS5tX3Jlc29sdmVUeXBl
OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYgdm0KICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9yZXNvbHZlX3Njb3BlIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9mcm9t
X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRGcm9tU2NvcGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtMTk3NCw3ICsxOTc0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IoVk0mIHYKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9nZXRfZnJvbV9zY29wZSIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9f
c2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX3B1dF90b19zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRU
b1Njb3BlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7
CkBAIC0yMTEzLDcgKzIxMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTIxNzMsNyArMjE3Myw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF90b19zY29wZUdl
bmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3RvX3Njb3BlIik7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEZyb21Bcmd1bWVudHM+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjE4Niw3ICsyMTg2LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpz
UmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Rv
X2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb0FyZ3VtZW50
cz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzID0gYnl0ZWNvZGUubV9hcmd1bWVu
dHM7CkBAIC0yMjAxLDcgKzIyMDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1l
bnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRl
QmFycmllcihhcmd1bWVudHMsIHZhbHVlLCBTaG91bGRGaWx0ZXJWYWx1ZSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEludGVybmFsRmllbGQ+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVn
VDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfaW50
ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0SW50ZXJuYWxG
aWVsZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAg
LTIyMzEsNyArMjIzMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcm9w
ZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByb3Bl
cnR5RW51bWVyYXRvcj4oKTsKIApAQCAtMjI2NSw3ICsyMjY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBkb25lQ2FzZXMubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRW51bWVyYXRvck5leHQ+KCk7CiAKQEAgLTIzMjgsNyArMjMyOCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5VmFsPigpOwogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTI0MTYsNyArMjQxNiw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1
cm5WYWx1ZUpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJh
dG9yX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5VmFs
PigpLCBpdGVyKTsKIH0KQEAgLTI0NTgsNDggKzI0NTgsNDggQEAgdm9pZCBKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1Bh
dGhGdW4KICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1l
cmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0
eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93
X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9lbnVtZXJh
dG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JI
YXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7
CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9w
cm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29w
X2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9l
bnVtZXJhdG9yKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwp
OwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9l
bnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKikKIHsK
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKikK
K3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBKU0lu
c3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGQw
YjM3Mzg5MjFhNGYwMDE1MTJlN2RlZTNhODQ0M2M1MTkzYmQyNmMuLjY3MDc3NTdiYzVjNGEyNmNl
MzllYzJhODVjNGFhZTY4NzM5NTc1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAKICAgICBz
dGF0aWNfYXNzZXJ0KGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUgPCBVSU5U
OF9NQVgpOwogICAgIHN0YXRpY19hc3NlcnQod2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lIDwgVUlOVDhfTUFYKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4T3Bj
b2RlTGVuZ3RoICsgMTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heEJ5
dGVjb2RlU3RydWN0TGVuZ3RoICsgMTsgKytpKSB7CiAgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXSA9IGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmU7CiAgICAgICAgIGdfanNjQ29uZmlnLmxsaW50Lndhc21FeGNlcHRpb25JbnN0cnVj
dGlvbnNbaV0gPSB3YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCmluZGV4IDM3YzFhZmU2ZGU3NmM4
OTM1YWM3NDZkNjBmYjQ5N2QzMWU2ZTdjYTkuLmMwMzMzZDM0MmIwOWIwMzA0MDEwZjQ0NjI4NDNm
YzA4OTQ4MjllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAg
LTU1LDggKzU1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgdm9pZCBpbml0aWFs
aXplKCk7CiAKLSAgICBmcmllbmQgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygp
OwotICAgIGZyaWVuZCBJbnN0cnVjdGlvbiogd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwor
ICAgIGZyaWVuZCBKU0luc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICBm
cmllbmQgV2FzbUluc3RydWN0aW9uKiB3YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiAgICAg
ZnJpZW5kIE9wY29kZSogb3Bjb2RlTWFwKCk7CiAgICAgZnJpZW5kIE9wY29kZSogb3Bjb2RlTWFw
V2lkZTE2KCk7CiAgICAgZnJpZW5kIE9wY29kZSogb3Bjb2RlTWFwV2lkZTMyKCk7CkBAIC03NCwx
NCArNzQsMTQgQEAgcHJpdmF0ZToKIAogdm9pZCBpbml0aWFsaXplKCk7CiAKLWlubGluZSBJbnN0
cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKK2lubGluZSBKU0luc3RydWN0aW9uKiBl
eGNlcHRpb25JbnN0cnVjdGlvbnMoKQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PElu
c3RydWN0aW9uKj4oZ19qc2NDb25maWcubGxpbnQuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0luc3RydWN0aW9uKj4oZ19qc2NDb25maWcubGxp
bnQuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKTsKIH0KLSAgICAKLWlubGluZSBJbnN0cnVjdGlvbiog
d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisKK2lubGluZSBXYXNtSW5zdHJ1Y3Rpb24qIHdh
c21FeGNlcHRpb25JbnN0cnVjdGlvbnMoKQogewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5z
dHJ1Y3Rpb24qPihnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKTsK
KyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdhc21JbnN0cnVjdGlvbio+KGdfanNjQ29uZmlnLmxs
aW50Lndhc21FeGNlcHRpb25JbnN0cnVjdGlvbnMpOwogfQogCiBpbmxpbmUgT3Bjb2RlKiBvcGNv
ZGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcAppbmRleCBlODgzMTUzMjhjY2I4Zjg1YjNmNWRmNzE1NThhMGNiY2NiMzU4NTZjLi5kMjFj
MWEyMTAyODQ4ZjBmMzk3NWI5MmQzMzAxYTNjYmU3ZmZiMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcApAQCAtMzgsNyArMzgsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIHJldHVy
blRvVGhyb3coVk0mIHZtKQorSlNJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhWTSYgdm0pCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNpZiBMTElOVF9UUkFDSU5HCkBAIC01MCw3ICs1MCw3
IEBAIEluc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KFZNJiB2bSkKICAgICByZXR1cm4gTExJbnQ6
OmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwogfQogCi1JbnN0cnVjdGlvbiogd2FzbVJldHVyblRv
VGhyb3coVk0mIHZtKQorV2FzbUluc3RydWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhWTSYgdm0p
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNpZiBMTElOVF9UUkFDSU5HCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKaW5kZXggZTVmOTAyMWZhZGI4
ZWZjYjI1ODdjMGNhNjAxNzZlYmYxZGNiYWM0YS4uZmRhMzUzMmRjYzBhODg1YzQxOGU2Njc2YTIy
OTJkYzQzM2I1MzdlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuaApAQCAtMzMsMTYgKzMzLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBWTTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIHRlbXBsYXRlPFB0clRh
Zz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5nIEpTSW5z
dHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OworCiBuYW1lc3BhY2Ug
TExJbnQgewogCiAvLyBHaXZlcyB5b3UgYSBQQyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJw
cmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQKIC8vIGJldHdlZW4gMSBhbmQgOSBz
bG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZQog
Ly8gaW50ZXJwcmV0ZXIncyBleGNlcHRpb24gaGFuZGxlci4KLUluc3RydWN0aW9uKiByZXR1cm5U
b1Rocm93KFZNJik7Ci1JbnN0cnVjdGlvbiogd2FzbVJldHVyblRvVGhyb3coVk0mKTsKK0pTSW5z
dHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mKTsKK1dhc21JbnN0cnVjdGlvbiogd2FzbVJldHVy
blRvVGhyb3coVk0mKTsKIAogLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBj
YWxsIHRodW5rLgogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
IGNhbGxUb1Rocm93KFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAppbmRleCA3YTBlN2RmZTY1NmJmNDM0MDRjZThjZTZmYTUzZTk4ZGUxMWZk
OWU4Li4wYzViZjllMWQ2MjFlNmJiYjdjMWE5NjA2OTAwOGMzZjUzOGMxNGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEyNiw3ICsx
MjYsNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgeyByZXR1cgogICAgICgodGFyZ2V0T2Zmc2V0KSA/ICh0
YXJnZXRPZmZzZXQpIDogY29kZUJsb2NrLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KHBjKSkKIAogI2Rl
ZmluZSBKVU1QX1RPKHRhcmdldCkgZG8geyBcCi0gICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBj
KSArICh0YXJnZXQpKTsgXAorICAgICAgICBwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJ
bnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArICh0YXJn
ZXQpKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0JSQU5DSChjb25k
aXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICBcCkBAIC0yMjAsNyArMjIwLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gVHlwZXM+IHZvaWQgc2xvd1BhdGhMb2dGKGNvbnN0IGNoYXIqLCBjb25z
dCBUeXBlcyYuLi4pIHsgfQogCiAjZW5kaWYgLy8gTExJTlRfVFJBQ0lORwogCi1leHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQor
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKQogewogICAgIGlmICghT3B0aW9uczo6dHJhY2VMTEludEV4ZWN1dGlvbigpKQog
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQor
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCkKIHsKICAgICBpZiAoIU9wdGlvbnM6OnRyYWNlTExJbnRFeGVj
dXRpb24oKSkKICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICBM
TElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0dXBHZXRC
eUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1l
dGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlw
ZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUodm0pOwogCkBAIC04MDQsNyArODA0LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRC
eUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
b2QKICAgICB2bS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKIH0KIAotc3RhdGljIEpTVmFsdWUg
cGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQor
c3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBKU0luc3RydWN0aW9uKiBw
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRh
ZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjAwNiw3ICsy
MDA2LDcgQEAgZW51bSBjbGFzcyBTZXRBcmd1bWVudHNXaXRoIHsKIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9wLCBTZXRBcmd1bWVudHNXaXRoIHNldD4KLWlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgdmFyYXJnc1NldHVwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiog
cGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZh
cmFyZ3NTZXR1cChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7
CiAKQEAgLTIwNTYsNyArMjA1Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
b25zdHJ1Y3RfdmFyYXJncykKICAgICByZXR1cm4gdmFyYXJnc1NldHVwPE9wQ29uc3RydWN0VmFy
YXJncywgU2V0QXJndW1lbnRzV2l0aDo6T2JqZWN0PihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29u
c3RydWN0KTsKIH0KIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCitpbmxpbmUgU2xvd1BhdGhSZXR1
cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3Ry
dWN0aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBv
aW50KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTIzNzYsMTMgKzIzNzYsMTMgQEAgc3RhdGljIHZv
aWQgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU0dsb2JhbE8KICAgICAgICAgdmFsdWVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2Jq
ZWN0LmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlKTsKIH0KIAotaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRjaFRvTmV4dEluc3RydWN0aW9uRHVyaW5nRXhp
dChUaHJvd1Njb3BlJiBzY29wZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYgcGMpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0SW5z
dHJ1Y3Rpb25EdXJpbmdFeGl0KFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmIHBjKQogewogICAgIGlmIChzY29wZS5leGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChyZXR1cm5Ub1Rocm93KHNjb3BlLnZt
KCkpLCBudWxscHRyKTsKIAogICAgIGlmIChPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkg
fHwgY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewot
ICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOworICAg
ICAgICBjb25zdCBKU0luc3RydWN0aW9uKiBuZXh0UEMgPSBwYy5uZXh0KCkucHRyKCk7CiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50Ojpu
b3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
aW5kZXggN2VjODAxNWVlOGM1YWVjNGM1MjlkNmRjNTI4MmEzNDNjNzRhNGJlYi4uN2JkMTA3Yjk1
NWU1ZThjNTU5NTI1MGU1MWJjZmY3Yzc2Yjg0YzljNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTI2LDI0ICsyNiwyNCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIENhbGxGcmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBQcm90b0NhbGxG
cmFtZTsKIAogbmFtZXNwYWNlIExMSW50IHsKIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiosIGlu
dCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKSBSRUZFUkVOQ0VEX0ZST01fQVNNOwotZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1lKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgUkVG
RVJFTkNFRF9GUk9NX0FTTTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Ry
YWNlX29wZXJhbmQoQ2FsbEZyYW1lKiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKSBSRUZFUkVOQ0VEX0ZST01fQVNNOworZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1lKiwgY29uc3QgSlNJbnN0cnVj
dGlvbiosIGludCBmcm9tV2hlcmUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBSRUZFUkVOQ0VE
X0ZST01fQVNNOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfbGlua19jYWxs
KENhbGxGcmFtZSosIEpTQ2VsbCosIENhbGxMaW5rSW5mbyopIFJFRkVSRU5DRURfRlJPTV9BU007
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF92aXJ0dWFsX2NhbGwoQ2FsbEZy
YW1lKiwgSlNDZWxsKiwgQ2FsbExpbmtJbmZvKikgUkVGRVJFTkNFRF9GUk9NX0FTTTsKIGV4dGVy
biAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3coQ2FsbEZyYW1lKiwgSlNDZWxsKikg
UkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CiAKICNkZWZpbmUgTExJTlRfU0xPV19Q
QVRIX0RFQ0wobmFtZSkgXAotICAgIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
XyMjbmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorICAg
IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiAKICNkZWZpbmUgTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKG5hbWUpIFwKICAgICBMTElOVF9TTE9XX1BBVEhfREVDTChuYW1lKSBS
RUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDRmYTRmYjNkNzkxYjMz
NDc4MGQ4ZDg4MDZhYjAyZDhlYmNmNzA1OGEuLmQwM2M2NmVlNDE5YTcxM2ViMzVmZWNhY2E3NDRh
ZWRlODQxYmE4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTMyMCw4ICszMjAsMTAgQEAgZW5kCiAKICMgT3Bjb2Rl
IG9mZnNldHMKIGNvbnN0IE9wY29kZUlETmFycm93U2l6ZSA9IDEgIyBPcGNvZGVJRAotY29uc3Qg
T3Bjb2RlSURXaWRlMTZTaXplID0gMiAjIFdpZGUxNiBQcmVmaXggKyBPcGNvZGVJRAotY29uc3Qg
T3Bjb2RlSURXaWRlMzJTaXplID0gMiAjIFdpZGUzMiBQcmVmaXggKyBPcGNvZGVJRAorY29uc3Qg
T3Bjb2RlSURXaWRlMTZTaXplSlMgPSAyICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlECitjb25z
dCBPcGNvZGVJRFdpZGUzMlNpemVKUyA9IDIgIyBXaWRlMzIgUHJlZml4ICsgT3Bjb2RlSUQKK2Nv
bnN0IE9wY29kZUlEV2lkZTE2U2l6ZVdhc20gPSAzICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlE
KDEgYnl0ZSkgIyBGSVhNRTogY2hhbmdlIHRoaXMgYmFjayBvbmNlIEVXUyBwYXNzZXMuCitjb25z
dCBPcGNvZGVJRFdpZGUzMlNpemVXYXNtID0gMyAjIFdpZGUzMiBQcmVmaXggKyBPcGNvZGVJRCgx
IGJ5dGUpICMgRklYTUU6IGNoYW5nZSB0aGlzIGJhY2sgb25jZSBFV1MgcGFzc2VzLgogCiBpZiBY
ODZfNjRfV0lOIG9yIENfTE9PUF9XSU4KICAgICBjb25zdCBHaWdhY2FnZUNvbmZpZyA9IF9nX2dp
Z2FjYWdlQ29uZmlnCkBAIC0zNTgsMzUgKzM2MCw1MSBAQCBtYWNybyBkaXNwYXRjaEluZGlyZWN0
KG9mZnNldFJlZykKICAgICBkaXNwYXRjaChvZmZzZXRSZWcpCiBlbmQKIAotbWFjcm8gZ2VuZXJp
Y0Rpc3BhdGNoT3AoZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCittYWNybyBnZW5lcmljRGlz
cGF0Y2hPcEpTKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1lKQogICAgIG1hY3JvIGRpc3BhdGNo
TmFycm93KCkKLSAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3Ro
IC0gMSkgKiAxICsgT3Bjb2RlSUROYXJyb3dTaXplKQorICAgICAgICBkaXNwYXRjaCgoY29uc3Rl
eHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogMSArIE9wY29kZUlETmFycm93U2l6ZSkKICAgICBl
bmQKIAogICAgIG1hY3JvIGRpc3BhdGNoV2lkZTE2KCkKLSAgICAgICAgZGlzcGF0Y2goKGNvbnN0
ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoIC0gMSkgKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplKQor
ICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogMiArIE9w
Y29kZUlEV2lkZTE2U2l6ZUpTKQogICAgIGVuZAogCiAgICAgbWFjcm8gZGlzcGF0Y2hXaWRlMzIo
KQotICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGggLSAxKSAq
IDQgKyBPcGNvZGVJRFdpZGUzMlNpemUpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9w
Y29kZU5hbWUlX2xlbmd0aCkgKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplSlMpCisgICAgZW5kCisK
KyAgICBzaXplKGRpc3BhdGNoTmFycm93LCBkaXNwYXRjaFdpZGUxNiwgZGlzcGF0Y2hXaWRlMzIs
IG1hY3JvIChkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQpCitlbmQKKworbWFjcm8gZ2VuZXJpY0Rp
c3BhdGNoT3BXYXNtKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1lKQorICAgIG1hY3JvIGRpc3Bh
dGNoTmFycm93KCkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVu
Z3RoKSAqIDEgKyBPcGNvZGVJRE5hcnJvd1NpemUpCisgICAgZW5kCisKKyAgICBtYWNybyBkaXNw
YXRjaFdpZGUxNigpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xl
bmd0aCkgKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplV2FzbSkKKyAgICBlbmQKKworICAgIG1hY3Jv
IGRpc3BhdGNoV2lkZTMyKCkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFt
ZSVfbGVuZ3RoKSAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVXYXNtKQogICAgIGVuZAogCiAgICAg
c2l6ZShkaXNwYXRjaE5hcnJvdywgZGlzcGF0Y2hXaWRlMTYsIGRpc3BhdGNoV2lkZTMyLCBtYWNy
byAoZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogZW5kCiAKIG1hY3JvIGRpc3BhdGNoT3Aoc2l6
ZSwgb3Bjb2RlTmFtZSkKLSAgICBnZW5lcmljRGlzcGF0Y2hPcChkaXNwYXRjaCwgc2l6ZSwgb3Bj
b2RlTmFtZSkKKyAgICBnZW5lcmljRGlzcGF0Y2hPcEpTKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVO
YW1lKQogZW5kCiAKIAogbWFjcm8gZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwg
ZHN0KQotICAgIHNpemUoZ2V0dU9wZXJhbmROYXJyb3csIGdldHVPcGVyYW5kV2lkZTE2LCBnZXR1
T3BlcmFuZFdpZGUzMiwgbWFjcm8gKGdldHUpCisgICAgc2l6ZShnZXR1T3BlcmFuZE5hcnJvdywg
Z2V0dU9wZXJhbmRXaWRlMTZKUywgZ2V0dU9wZXJhbmRXaWRlMzJKUywgbWFjcm8gKGdldHUpCiAg
ICAgICAgIGdldHUob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBlbmQpCiBlbmQK
IAogbWFjcm8gZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgc2l6
ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZTE2LCBnZXRPcGVyYW5kV2lkZTMyLCBt
YWNybyAoZ2V0KQorICAgIHNpemUoZ2V0T3BlcmFuZE5hcnJvdywgZ2V0T3BlcmFuZFdpZGUxNkpT
LCBnZXRPcGVyYW5kV2lkZTMySlMsIG1hY3JvIChnZXQpCiAgICAgICAgIGdldChvcGNvZGVTdHJ1
Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgIGVuZCkKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDk4NzZlZjZlZjc0
MmFjZWVkYWUyNjlhMmFiNDU0YzViNjJjZDUxNmIuLmU3YTRkMTk4ODhhYjM5MTJiZGQ3NzdhYmFk
MDBhODBmNDg5OWQ4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
QUxXQVlTX0lOTElORSBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0
PE9wY29kZT4obV92YWx1ZSk7IH0KIAogICAgIG9wZXJhdG9yIENhbGxGcmFtZSooKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8Q2FsbEZyYW1lKj4obV92YWx1ZSk7IH0KLSAgICBvcGVyYXRvciBjb25z
dCBJbnN0cnVjdGlvbiooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24q
PihtX3ZhbHVlKTsgfQorICAgIG9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKCkgeyByZXR1
cm4gYml0d2lzZV9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPihtX3ZhbHVlKTsgfQogICAgIG9w
ZXJhdG9yIEpTQ2VsbCooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4obV92YWx1ZSk7
IH0KICAgICBvcGVyYXRvciBQcm90b0NhbGxGcmFtZSooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
UHJvdG9DYWxsRnJhbWUqPihtX3ZhbHVlKTsgfQogICAgIG9wZXJhdG9yIFJlZ2lzdGVyKigpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxSZWdpc3Rlcio+KG1fdmFsdWUpOyB9CkBAIC0yODcsNyArMjg3
LDcgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRyeU9wY29kZUlELCB2b2lk
KiBleGVjdXRhYmxlQWRkcmVzcywgVk0qIHZtLAogICAgICAgICAvLyBpbml0aWFsaXplZCB0aGUg
b3Bjb2RlTWFwIGFib3ZlLiBUaGlzIGlzIGJlY2F1c2UgZ2V0Q29kZVB0cigpCiAgICAgICAgIC8v
IGNhbiBkZXBlbmQgb24gdGhlIG9wY29kZU1hcC4KICAgICAgICAgdWludDhfdCogZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oTExJbnQ6OmV4Y2VwdGlv
bkluc3RydWN0aW9ucygpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heE9w
Y29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1h
eEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMTsgKytpKQogICAgICAgICAgICAgZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zW2ldID0gbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKIAog
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAyMjcxNmY4MWJi
ZDkwNzhjOTZmZWUxMWRkOGM0MTBlMmE1OWFkNGYyLi44NjkyNGJmMTZhNzY5NGZlMmRiMmNmNmZj
Nzg3MjY2MDdiOTQ0YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMzUsMTkgKzM1LDE5IEBAIG1h
Y3JvIGdldE9wZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKIGVuZAog
CiBtYWNybyBnZXR1T3BlcmFuZFdpZGUxNihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQot
ICAgIGxvYWRoIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIg
KyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAxXSwgZHN0CisgICAgbG9hZGggY29uc3RleHBy
ICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6
ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKIG1hY3JvIGdldE9wZXJhbmRXaWRlMTYob3Bjb2Rl
U3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAgICBsb2FkaHNpIGNvbnN0ZXhwciAlb3Bjb2RlU3Ry
dWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAx
XSwgZHN0CisgICAgbG9hZGhzaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVf
aW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAog
bWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAg
ICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsg
T3Bjb2RlSURXaWRlMzJTaXplW1BCLCBQQywgMV0sIGRzdAorICAgIGxvYWRpIGNvbnN0ZXhwciAl
b3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVK
U1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCiBtYWNybyBnZXRPcGVyYW5kV2lkZTMyKG9wY29kZVN0
cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0
JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVbUEIsIFBDLCAxXSwg
ZHN0CisgICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRl
eCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCiBtYWNy
byBtYWtlUmV0dXJuKGdldCwgZGlzcGF0Y2gsIGZuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBjNDUzMzUxZDQ5
MjZjZjc0ZThkNmVmODU4NTk4NzRhNDViYWQ1OWZhLi41ZGU3YmNjN2ZkMGQ0ZjA0MGYyZGY5NGJk
NDczNDVkODM1ODY5NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMzksMjAgKzM5LDM2IEBAIG1hY3JvIGdl
dE9wZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBsb2FkYnNx
IGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCArIE9wY29kZUlETmFy
cm93U2l6ZVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZFdpZGUxNihv
cGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRoIGNvbnN0ZXhwciAlb3Bjb2Rl
U3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBD
LCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUxNkpTKG9wY29kZVN0cnVjdCwgZmllbGRO
YW1lLCBkc3QpCisgICAgbG9hZGggY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUl
X2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5kCiAK
LW1hY3JvIGdldE9wZXJhbmRXaWRlMTYob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAg
ICBsb2FkaHNxIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIg
KyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdp
ZGUxNldhc20ob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaCBjb25zdGV4
cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZT
aXplV2FzbVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZFdpZGUzMihv
cGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2Rl
U3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVbUEIsIFBD
LCAxXSwgZHN0CittYWNybyBnZXRPcGVyYW5kV2lkZTE2SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKKyAgICBsb2FkaHNxIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1l
JV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAog
Ci1tYWNybyBnZXRPcGVyYW5kV2lkZTMyKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0g
ICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQg
KyBPcGNvZGVJRFdpZGUzMlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXRPcGVyYW5kV2lk
ZTE2V2FzbShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRoc3EgY29uc3Rl
eHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2
U2l6ZVdhc21bUEIsIFBDLCAxXSwgZHN0CitlbmQKKworbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzJK
UyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bj
b2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVKU1tQ
QiwgUEMsIDFdLCBkc3QKK2VuZAorCittYWNybyBnZXR1T3BlcmFuZFdpZGUzMldhc20ob3Bjb2Rl
U3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVj
dCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplV2FzbVtQQiwgUEMs
IDFdLCBkc3QKK2VuZAorCittYWNybyBnZXRPcGVyYW5kV2lkZTMySlMob3Bjb2RlU3RydWN0LCBm
aWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaXMgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVs
ZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAor
ZW5kCisKK21hY3JvIGdldE9wZXJhbmRXaWRlMzJXYXNtKG9wY29kZVN0cnVjdCwgZmllbGROYW1l
LCBkc3QpCisgICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9p
bmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVXYXNtW1BCLCBQQywgMV0sIGRzdAogZW5kCiAK
IG1hY3JvIG1ha2VSZXR1cm4oZ2V0LCBkaXNwYXRjaCwgZm4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCAzZTUzNzkwNTIyNzE5ZDY2MGRkYWYyMmQz
ZWYzZWNmZjNlNTY2NWZmLi5mYmFlMmI0ZGZhYmRlZWMxYTAyODE0NmU3MzQ3NDVkMmY5NDVhZGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTEw
MCwxMyArMTAwLDEzIEBAIG1hY3JvIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kCiAKIG1hY3Jv
IHdhc21OZXh0SW5zdHJ1Y3Rpb25XaWRlMTYoKQotICAgIGxvYWRiIE9wY29kZUlETmFycm93U2l6
ZVtQQiwgUEMsIDFdLCB0MAorICAgIGxvYWRoIE9wY29kZUlETmFycm93U2l6ZVtQQiwgUEMsIDFd
LCB0MCAjIEZJWE1FOiBjaGFuZ2UgdGhpcyBiYWNrIG9uY2UgRVdTIHBhc3Nlcy4KICAgICBsZWFw
IF9nX29wY29kZU1hcFdpZGUxNiwgdDEKICAgICBqbXAgTnVtYmVyT2ZKU09wY29kZUlEcyAqIFB0
clNpemVbdDEsIHQwLCBQdHJTaXplXSwgQnl0ZWNvZGVQdHJUYWcsIEFkZHJlc3NEaXZlcnNpZmll
ZAogZW5kCiAKIG1hY3JvIHdhc21OZXh0SW5zdHJ1Y3Rpb25XaWRlMzIoKQotICAgIGxvYWRiIE9w
Y29kZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCB0MAorICAgIGxvYWRoIE9wY29kZUlETmFycm93
U2l6ZVtQQiwgUEMsIDFdLCB0MCAjIEZJWE1FOiBjaGFuZ2UgdGhpcyBiYWNrIG9uY2UgRVdTIHBh
c3Nlcy4KICAgICBsZWFwIF9nX29wY29kZU1hcFdpZGUzMiwgdDEKICAgICBqbXAgTnVtYmVyT2ZK
U09wY29kZUlEcyAqIFB0clNpemVbdDEsIHQwLCBQdHJTaXplXSwgQnl0ZWNvZGVQdHJUYWcsIEFk
ZHJlc3NEaXZlcnNpZmllZAogZW5kCkBAIC00NjAsNyArNDYwLDcgQEAgZW5kCiAjIFdhc20gd3Jh
cHBlciBvZiBnZXQvZ2V0dSB0aGF0IG9wZXJhdGUgb24gY3R4CiBtYWNybyB3Z2V0cyhjdHgsIGZp
ZWxkLCBkc3QpCiAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkK
LSAgICAgICAgc2l6ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZTE2LCBnZXRPcGVy
YW5kV2lkZTMyLCBtYWNybyAoZ2V0KQorICAgICAgICBzaXplKGdldE9wZXJhbmROYXJyb3csIGdl
dE9wZXJhbmRXaWRlMTZXYXNtLCBnZXRPcGVyYW5kV2lkZTMyV2FzbSwgbWFjcm8gKGdldCkKICAg
ICAgICAgICAgIGdldChvcGNvZGVTdHJ1Y3QsIGZpZWxkLCBkc3QpCiAgICAgICAgIGVuZCkKICAg
ICBlbmQpCkBAIC00NjgsNyArNDY4LDcgQEAgZW5kCiAKIG1hY3JvIHdnZXR1KGN0eCwgZmllbGQs
IGRzdCkKICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzaXplKQotICAg
ICAgICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBnZXR1T3BlcmFuZFdpZGUxNiwgZ2V0dU9wZXJh
bmRXaWRlMzIsIG1hY3JvIChnZXR1KQorICAgICAgICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBn
ZXR1T3BlcmFuZFdpZGUxNldhc20sIGdldHVPcGVyYW5kV2lkZTMyV2FzbSwgbWFjcm8gKGdldHUp
CiAgICAgICAgICAgICBnZXR1KG9wY29kZVN0cnVjdCwgZmllbGQsIGRzdCkKICAgICAgICAgZW5k
KQogICAgIGVuZCkKQEAgLTQ3OCw3ICs0NzgsNyBAQCBlbmQKIAogbWFjcm8gZGlzcGF0Y2goY3R4
KQogICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNpemUpCi0gICAgICAg
IGdlbmVyaWNEaXNwYXRjaE9wKHdhc21EaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkKKyAgICAg
ICAgZ2VuZXJpY0Rpc3BhdGNoT3BXYXNtKHdhc21EaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkK
ICAgICBlbmQpCiBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCmluZGV4IGNhMjRlNzU0MGFiNGRkZTUxMWE1OTY2YTE3MWQ2OTg5MzY1M2UxNWIu
LjE2YTIzMmZjYWMzMjZkYzNjNmUxYzJkMWVjNzgxMDFiOWVhZTRkOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTk4Myw3ICs5ODMsNyBA
QCBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRTdHJpbmdKdW1wVGFibGU+IG1fdW5s
aW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAgIENhY2hlZFZlY3RvcjxFeHByZXNzaW9u
UmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAg
ICBDYWNoZWRIYXNoTWFwPHVuc2lnbmVkLCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6OlR5
cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwotICAgIENh
Y2hlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzOworICAgIENhY2hlZFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7
CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOwogICAgIENh
Y2hlZFZlY3RvcjxDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5n
SW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPj4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogICAg
IHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwpAQCAtMTQzOSwxOCAr
MTQzOSwxOCBAQCBwcml2YXRlOgogICAgIEVuY29kZWRUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNz
IENhY2hlZEluc3RydWN0aW9uU3RyZWFtIDogcHVibGljIENhY2hlZE9iamVjdDxJbnN0cnVjdGlv
blN0cmVhbT4geworY2xhc3MgQ2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW0gOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0PEpTSW5zdHJ1Y3Rpb25TdHJlYW0+IHsKIHB1YmxpYzoKLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgc3RyZWFtKQorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIHN0
cmVhbSkKICAgICB7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25zLmVuY29kZShlbmNvZGVyLCBzdHJl
YW0ubV9pbnN0cnVjdGlvbnMpOwogICAgIH0KIAotICAgIEluc3RydWN0aW9uU3RyZWFtKiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAgICBKU0luc3RydWN0aW9uU3RyZWFtKiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKICAgICB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90
LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYsIEluc3RydWN0aW9uU3RyZWFtTWFsbG9jPiBp
bnN0cnVjdGlvbnNWZWN0b3I7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25zLmRlY29kZShkZWNvZGVy
LCBpbnN0cnVjdGlvbnNWZWN0b3IpOwotICAgICAgICByZXR1cm4gbmV3IEluc3RydWN0aW9uU3Ry
ZWFtKFdURk1vdmUoaW5zdHJ1Y3Rpb25zVmVjdG9yKSk7CisgICAgICAgIHJldHVybiBuZXcgSlNJ
bnN0cnVjdGlvblN0cmVhbShXVEZNb3ZlKGluc3RydWN0aW9uc1ZlY3RvcikpOwogICAgIH0KIAog
cHJpdmF0ZToKQEAgLTE4NzksNyArMTg3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2smKTsKICAgICB2b2lkIGRlY29kZShEZWNv
ZGVyJiwgVW5saW5rZWRDb2RlQmxvY2smKSBjb25zdDsKIAotICAgIEluc3RydWN0aW9uU3RyZWFt
KiBpbnN0cnVjdGlvbnMoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbnMuZGVjb2RlKGRlY29kZXIpOyB9CisgICAgSlNJbnN0cnVjdGlvblN0cmVhbSogaW5zdHJ1
Y3Rpb25zKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmRl
Y29kZShkZWNvZGVyKTsgfQogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fdGhpc1JlZ2lzdGVyOyB9CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3Bl
UmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0KQEAgLTE5NjYsMTEg
KzE5NjYsMTEgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4g
bV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCiAgICAgQ2FjaGVkUHRyPENhY2hlZEluc3Ry
dWN0aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsKLSAgICBDYWNoZWRWZWN0b3I8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBDYWNoZWRWZWN0b3I8dHlwZW5h
bWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwogICAgIENhY2hl
ZFZlY3RvcjxDYWNoZWRKU1ZhbHVlPiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIENhY2hlZFZl
Y3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uOwogICAgIENhY2hlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvPiBtX2V4cHJl
c3Npb25JbmZvOwotICAgIENhY2hlZEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
aW50PiBtX291dE9mTGluZUp1bXBUYXJnZXRzOworICAgIENhY2hlZEhhc2hNYXA8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7
CiAKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAg
ICBDYWNoZWRWZWN0b3I8Q2FjaGVkV3JpdGVCYXJyaWVyPENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4+IG1fZnVuY3Rpb25EZWNsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDhjZjEwZDI2NDZiZTNjZGYxYTNhMjM3MWM1NTE4
NjFiYTY0MmRjMWEuLjFlZWVlMmNiOWU0NmM0NGYxOWM4ZDRmMDJiNjUxMDdiMzNkNGE0MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtMTEyLDEwICsxMTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlm
IChiQ29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgICAgICBwYyA9IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwgXAotICAgICAgICAgICAgICAg
ID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHBjKSArIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpIFwKKyAgICAgICAg
ICAgICAgICA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJbnN0cnVjdGlvbio+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpIFwK
ICAgICAgICAgICAgICAgICA6IGNvZGVCbG9jay0+b3V0T2ZMaW5lSnVtcFRhcmdldChwYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcGMg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocGMpICsgcGMtPnNpemUoKSk7IFwKKyAgICAgICAgICAgIHBjID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4ocGMpICsgcGMtPnNpemUoKSk7IFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxz
ZSkKIApAQCAtNTUyLDcgKzU1Miw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfbmVnYXRlKQogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1zdGF0aWMgdm9pZCB1cGRh
dGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQsIEpTVmFs
dWUgbGVmdCwgSlNWYWx1ZSByaWdodCkKK3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZv
ckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSlNJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFs
dWUgcmlnaHQpCiB7CiAgICAgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9j
ay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMocGMpOwogCkBAIC01ODYsNyArNTg2LDcgQEAgc3Rh
dGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayogY29kZUIKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVy
aWMoKTsKIH0KICNlbHNlCi1zdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlB
cml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBK
U1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KK3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBjb25zdCBK
U0luc3RydWN0aW9uKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSkgeyB9CiAjZW5kaWYKIAog
SlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90b19udW1iZXIpCkBAIC04NDYs
NyArODQ2LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pc19jb25z
dHJ1Y3RvcikKIH0KIAogdGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KLUFMV0FZU19JTkxJTkUg
U2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCitBTFdBWVNfSU5MSU5FIFNsb3dQYXRo
UmV0dXJuVHlwZSBpdGVyYXRvck9wZW5UcnlGYXN0SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
c0tub3duV2lkdGg8T3BJdGVyYXRvck9wZW4sIHdpZHRoPigpOwogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKQEAgLTg5Miw3ICs4OTIsNyBAQCBKU0Nf
REVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIpCiB9
CiAKIHRlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+Ci1BTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0
dXJuVHlwZSBpdGVyYXRvck5leHRUcnlGYXN0SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorQUxXQVlTX0lO
TElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUsIGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIHBjKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0
b3JOZXh0LCB3aWR0aD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCmluZGV4IDliMjQ3YjdlNTY5NjMxMmZjZmM0NmY5OGFhZjE3NTQ2ZmQ4NDk2YmEu
LmRjNmE4ZDEwOTMxNzNjYjEwNjA5MzFhMDAwNTY4OTcyYTZjMGNkMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDgsMTMgKzI0
OCwxMiBAQCBpbmxpbmUgSlNBcnJheSogYWxsb2NhdGVOZXdBcnJheUJ1ZmZlcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0ltbXV0YWJsZQogfSAvLyBuYW1lc3BhY2UgQ29tbW9uU2xv
d1BhdGhzCiAKIGNsYXNzIENhbGxGcmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIAogI2RlZmlu
ZSBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKG5hbWUpIFwKLSAgICBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG5hbWUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKikpCisgICAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihuYW1lLCBTbG93
UGF0aFJldHVyblR5cGUsIChDYWxsRnJhbWUqLCBjb25zdCBKU0luc3RydWN0aW9uKikpCiAKICNk
ZWZpbmUgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKG5hbWUpIFwKLSAgICBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04obmFtZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykpCisgICAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG5hbWUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25z
dCBKU0luc3RydWN0aW9uKiBwYykpCiAKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2NhbGxfYXJpdHlDaGVjayk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcAppbmRleCAx
NzBmMWE2MGRhYmIyNTY3MWMwZWQ2Y2QzNzVjMGI5YjEyOGQxNjY1Li4yNjk4ODZiZmMyMTI3ZDM0
ZWUxNDYwZDc3ODcxYWNhMzg1Zjg4NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKQEAgLTc1LDgg
Kzc1LDggQEAgU3BlY3VsYXRlZFR5cGUgRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlOjpnZXRQcmVk
aWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBjb24KICAgICBWZWN0b3I8U3RyaW5nPiB1cmxQ
YXJ0cyA9IHNvdXJjZVVSTC5zcGxpdCgnLycpOwogICAgIHByZWRpY3Rpb25UYXJnZXQuc291cmNl
RmlsZW5hbWUgPSB1cmxQYXJ0cy5pc0VtcHR5KCkgPyBzb3VyY2VVUkwgOiB1cmxQYXJ0cy5sYXN0
KCk7CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKTsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogYW5JbnN0cnVjdGlv
biA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBjb25zdCBhdXRv
JiBpbnN0cnVjdGlvbnMgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1
dG8qIGFuSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7
CiAgICAgcHJlZGljdGlvblRhcmdldC5vcGNvZGVJZCA9IGFuSW5zdHJ1Y3Rpb24tPm9wY29kZUlE
KCk7CiAKICAgICBpbnQgc3RhcnRMb2NhdGlvbiA9IHByZWRpY3Rpb25UYXJnZXQuZGl2b3QgLSBw
cmVkaWN0aW9uVGFyZ2V0LnN0YXJ0T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAppbmRleCA5YjY5MTNmOTQwY2MyOTBiZWUyYzI2ZDRlNWFkYzc4YjliYzFi
Y2FjLi41NWI3YTBmOGMyMmE5OWRlNWI1YWM5MmI4MWIyZWY4MTNhMWRkMjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaApAQCAtMTAxLDggKzEwMSw4IEBAIHN0
cnVjdCBDb25maWcgewogICAgIHZvaWQgKCpzaGVsbFRpbWVvdXRDaGVja0NhbGxiYWNrKShWTSYp
OwogCiAgICAgc3RydWN0IHsKLSAgICAgICAgdWludDhfdCBleGNlcHRpb25JbnN0cnVjdGlvbnNb
bWF4T3Bjb2RlTGVuZ3RoICsgMV07Ci0gICAgICAgIHVpbnQ4X3Qgd2FzbUV4Y2VwdGlvbkluc3Ry
dWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKKyAgICAgICAgdWludDhfdCBleGNlcHRpb25J
bnN0cnVjdGlvbnNbbWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggKyAxXTsKKyAgICAgICAgdWludDhf
dCB3YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21heEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMV07
CiAgICAgICAgIGNvbnN0IHZvaWQqIGdhdGVNYXBbbnVtYmVyT2ZHYXRlc107CiAgICAgfSBsbGlu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGU4
YTRlN2E2MjMzOWQzNmJlYTBmNzI1N2I0MTczNWVjODI0M2VmNTcuLjI5NDlkMDkyNWZjMDQ0NzRh
NmRkMjgwNzc1ZTRhMzU4ZjRjMGFlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKQEAgLTczLDcgKzczLDYgQEAgY2xhc3MgQ0xvb3A7CiAKIHN0cnVjdCBD
bGFzc0luZm87CiBzdHJ1Y3QgRHVtcENvbnRleHQ7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CiBzdHJ1
Y3QgTWV0aG9kVGFibGU7CiBlbnVtIGNsYXNzIFVua25vd24geyB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmgKaW5kZXggYmZjMzhjNjUw
OWQxNTgxNWNkYzU0MTcwNDVjYzcyODdmZGMxOTY3Mi4uMzI2N2VhOTQ4ZjhkOGIzOTIzNjUxNzgz
MDI1MzJlM2U4YTIyZDA0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2xvd1BhdGhGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Nsb3dQYXRoRnVuY3Rpb24uaApAQCAtMzAsOCArMzAsMTAgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBDYWxsRnJhbWU7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247Cit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5n
IEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwogCi11c2lu
ZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKEpJVF9PUEVSQVRJT05fQVRU
UklCVVRFUyopKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKik7Cit1c2luZyBTbG93UGF0
aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyop
KENhbGxGcmFtZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZjY2ZGFhYjhjNzExNTAxZTNm
ZTlkMWYzN2YyMzYxMmQzYWE0MTA2NS4uZTMyZGNiMGFkMzRiMjNiY2RhMjQ3MWEwM2VlOTJjYjUy
MzMzODIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTQ0NCw3ICsx
NDQ0LDcgQEAgdm9pZCBWTTo6c2V0Q3Jhc2hPblZNQ3JlYXRpb24oYm9vbCBzaG91bGRDcmFzaCkK
ICAgICB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBzaG91bGRDcmFzaDsKIH0KIAotdm9pZCBWTTo6
YWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKK3ZvaWQgVk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb29wSGludEV4ZWN1
dGlvbkNvdW50TG9jayB9OwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb29wSGludEV4ZWN1dGlv
bkNvdW50cy5hZGQoaW5zdHJ1Y3Rpb24sIHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVf
cHRyPHVpbnRwdHJfdD4+KDAsIG51bGxwdHIpKTsKQEAgLTE0NTYsMTQgKzE0NTYsMTQgQEAgdm9p
ZCBWTTo6YWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKICAgICArK2FkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3Q7CiB9CiAKLXVp
bnRwdHJfdCogVk06OmdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pCit1aW50cHRyX3QqIFZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50
ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2sgfTsKICAgICBhdXRvIGl0ZXIgPSBtX2xv
b3BIaW50RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rpb24pOwogICAgIHJldHVybiBpdGVy
LT52YWx1ZS5zZWNvbmQuZ2V0KCk7CiB9CiAKLXZvaWQgVk06OnJlbW92ZUxvb3BIaW50RXhlY3V0
aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2b2lkIFZNOjpyZW1v
dmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24pCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2sg
fTsKICAgICBhdXRvIGl0ZXIgPSBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNzg2Y2Q2MDNmNGMzYTI3
OWQ4YmE4NWRjMTMyYTQ3M2NhNjhjMDBmZS4uZGM2ODM2M2NkNDY5MzY4NGE5Yzg2NWZmZmVlYmJk
N2U4ODk2ZDgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC01Myw2ICs1Myw3
IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJWTVRyYXBzLmgiCiAj
aW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKKyNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0
Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMTYxLDcgKzE2MiwxNCBAQCBjbGFzcyBT
aWduYXR1cmU7CiB9CiAKIHN0cnVjdCBFbnRyeUZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09w
Y29kZVRyYWl0czsKK3N0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlv
biA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRyYWl0cz47Cit1c2luZyBXYXNtSW5zdHJ1Y3Rp
b24gPSBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZVRyYWl0cz47CisKK3VzaW5nIEpTT3JXYXNt
SW5zdHJ1Y3Rpb24gPSBzdGQ6OnZhcmlhbnQ8Y29uc3QgSlNJbnN0cnVjdGlvbiosIGNvbnN0IFdh
c21JbnN0cnVjdGlvbio+OwogCiBjbGFzcyBRdWV1ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShRdWV1ZWRUYXNrKTsKQEAgLTY2OSw3ICs2NzcsNyBAQCBwdWJsaWM6CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWVGb3JDYXRjaDsKICAgICBDYWxsZWVCaXRzIGNhbGxlZUZvcldhc21D
YXRjaDsKICAgICB2b2lkKiB0YXJnZXRNYWNoaW5lUENGb3JUaHJvdzsKLSAgICBjb25zdCBJbnN0
cnVjdGlvbiogdGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93OworICAgIEpTT3JXYXNtSW5zdHJ1
Y3Rpb24gdGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93OwogICAgIHVpbnQzMl90IG9zckV4aXRJ
bmRleDsKICAgICB2b2lkKiBvc3JFeGl0SnVtcERlc3RpbmF0aW9uOwogICAgIFJlZ0V4cCogbV9l
eGVjdXRpbmdSZWdFeHAgeyBudWxscHRyIH07CkBAIC04NTUsOSArODYzLDkgQEAgcHVibGljOgog
ICAgICAgICBTZXRGb3JTY29wZTxFeGNlcHRpb24qPiBtX3NhdmVkTGFzdEV4Y2VwdGlvbjsKICAg
ICB9OwogCi0gICAgdm9pZCBhZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICB1aW50cHRyX3QqIGdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgIHZvaWQgcmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVy
KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgdm9pZCBhZGRMb29wSGludEV4ZWN1dGlvbkNvdW50
ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgIHVpbnRwdHJfdCogZ2V0TG9vcEhpbnRFeGVj
dXRpb25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHJlbW92ZUxvb3BI
aW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9uKik7CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSkgeyBoZWFwLndyaXRl
QmFycmllcihmcm9tKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB3cml0ZUJhcnJpZXIoY29u
c3QgSlNDZWxsKiBmcm9tLCBKU1ZhbHVlIHRvKSB7IGhlYXAud3JpdGVCYXJyaWVyKGZyb20sIHRv
KTsgfQpAQCAtMTAwMCw3ICsxMDA4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXhlY3V0aW9u
Rm9yYmlkZGVuT25UZXJtaW5hdGlvbiB7IGZhbHNlIH07CiAKICAgICBMb2NrIG1fbG9vcEhpbnRF
eGVjdXRpb25Db3VudExvY2s7Ci0gICAgSGFzaE1hcDxjb25zdCBJbnN0cnVjdGlvbiosIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVpbnRwdHJfdD4+PiBtX2xvb3BIaW50RXhl
Y3V0aW9uQ291bnRzOworICAgIEhhc2hNYXA8Y29uc3QgSlNJbnN0cnVjdGlvbiosIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVpbnRwdHJfdD4+PiBtX2xvb3BIaW50RXhlY3V0
aW9uQ291bnRzOwogCiAjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCiAgICAgRG9l
c0dDQ2hlY2sgbV9kb2VzR0M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUu
Y3BwCmluZGV4IDY0MzI3ZTk5YzE1NDBlNmViZDYyMWE2NGQxYzFiOWU5NGJjN2I0NGUuLmEzMjFj
NTJmMTVlY2E1MjIxM2VjZDZlZTkyMTcyNzE5ODExYjMyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCisjaW5jbHVkZSAicnVudGltZS9WTS5o
IgogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCkBAIC0xMDAsOSArMTAxLDkgQEAgTExJbnRD
YWxsZWU6OkxMSW50Q2FsbGVlKEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IHNpemVfdCBpbmRleCwgc3QKICAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9uID0gKm1faW5z
dHJ1Y3Rpb25zLT5hdCh1bmxpbmtlZEhhbmRsZXIubV90YXJnZXQpLnB0cigpOwogICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gdGFyZ2V0OwogICAg
ICAgICAgICAgaWYgKHVubGlua2VkSGFuZGxlci5tX3R5cGUgPT0gSGFuZGxlclR5cGU6OkNhdGNo
KQotICAgICAgICAgICAgICAgIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWc+KExMSW50OjpoYW5kbGVXYXNtQ2F0Y2goaW5zdHJ1Y3Rpb24ud2lkdGg8V2Fz
bU9wY29kZVRyYWl0cz4oKSkuY29kZSgpKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBDb2Rl
TG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6aGFuZGxlV2FzbUNh
dGNoKGluc3RydWN0aW9uLndpZHRoKCkpLmNvZGUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4oTExJbnQ6OmhhbmRsZVdhc21DYXRjaEFsbChpbnN0cnVjdGlvbi53aWR0aDxXYXNtT3Bj
b2RlVHJhaXRzPigpKS5jb2RlKCkpOworICAgICAgICAgICAgICAgIHRhcmdldCA9IENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpoYW5kbGVXYXNtQ2F0Y2hB
bGwoaW5zdHJ1Y3Rpb24ud2lkdGgoKSkuY29kZSgpKTsKIAogICAgICAgICAgICAgaGFuZGxlci5p
bml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgdGFyZ2V0KTsKICAgICAgICAgfQpAQCAtMTQ0LDEz
ICsxNDUsMTMgQEAgc3RkOjp0dXBsZTx2b2lkKiwgdm9pZCo+IExMSW50Q2FsbGVlOjpyYW5nZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9OwogfQogCi1JbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IExMSW50Q2FsbGVlOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCitXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCBMTEludENhbGxlZTo6b3V0T2ZMaW5lSnVtcE9mZnNldChXYXNtSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAgICBBU1NFUlQobV9vdXRPZkxpbmVK
dW1wVGFyZ2V0cy5jb250YWlucyhieXRlY29kZU9mZnNldCkpOwogICAgIHJldHVybiBtX291dE9m
TGluZUp1bXBUYXJnZXRzLmdldChieXRlY29kZU9mZnNldCk7CiB9CiAKLWNvbnN0IEluc3RydWN0
aW9uKiBMTEludENhbGxlZTo6b3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiog
cGMpCitjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIExMSW50Q2FsbGVlOjpvdXRPZkxpbmVKdW1wVGFy
Z2V0KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgaW50IG9mZnNldCA9IGJ5dGVj
b2RlT2Zmc2V0KHBjKTsKICAgICBpbnQgdGFyZ2V0ID0gb3V0T2ZMaW5lSnVtcE9mZnNldChvZmZz
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCmluZGV4IGIxODRjNzli
MDA5ODBmNzA5Yjg0MGZiMGM4MTkyMzY4NDRmNjA3MzEuLjFkMzcxYjQzZjBhMDU2N2E0YjQ4Y2Jm
ZjkwY2VhZmQxMGMxYWVmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21DYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVl
LmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgbnVtQXJndW1lbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9udW1Bcmd1bWVudHM7IH0KICAgICBjb25zdCBGaXhlZFZlY3Rv
cjxUeXBlPiYgY29uc3RhbnRUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRUeXBlczsg
fQogICAgIGNvbnN0IEZpeGVkVmVjdG9yPHVpbnQ2NF90PiYgY29uc3RhbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25zdGFudHM7IH0KLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1
Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gKm1faW5zdHJ1Y3Rpb25zOyB9CisgICAgY29uc3QgV2Fz
bUluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0
cnVjdGlvbnM7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdWludDY0X3QgZ2V0Q29uc3RhbnQoVmly
dHVhbFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNbcmVnLnRvQ29uc3Rh
bnRJbmRleCgpXTsgfQogICAgIEFMV0FZU19JTkxJTkUgVHlwZSBnZXRDb25zdGFudFR5cGUoVmly
dHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKQEAgLTI0NSwyMCArMjQ1LDIwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fY29uc3RhbnRUeXBlc1tyZWcudG9Db25zdGFudEluZGV4KCldOwogICAg
IH0KIAotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1wVGFyZ2V0cygp
IHsgcmV0dXJuIG1fanVtcFRhcmdldHMuc2l6ZSgpOyB9Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCBsYXN0SnVtcFRhcmdldCgpIHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9
CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1w
VGFyZ2V0cygpIHsgcmV0dXJuIG1fanVtcFRhcmdldHMuc2l6ZSgpOyB9CisgICAgdHlwZW5hbWUg
V2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBUYXJnZXQoKSB7IHJldHVybiBt
X2p1bXBUYXJnZXRzLmxhc3QoKTsgfQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG91dE9mTGlu
ZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0g
ICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAgIGNvbnN0IFdhc21JbnN0cnVj
dGlvbiogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qKTsKKyAgICB0
eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0
KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICB0eXBlbmFtZSBX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IHR5
cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBvdXRPZkxpbmVKdW1wT2Zmc2V0KGluc3RydWN0aW9uLm9mZnNldCgpKTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9m
ZnNldChjb25zdCBJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKKyAgICBpbmxpbmUgdHlwZW5h
bWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgV2Fz
bUluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgIHsKICAgICAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2luc3RydWN0aW9ucy0+YXQoMCkucHRyKCk7Ci0gICAgICAg
IGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5z
dHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4p
ICsgbV9pbnN0cnVjdGlvbnMtPnNpemUoKSk7CisgICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0
aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2FzbUluc3RydWN0aW9uKj4ocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIG1faW5zdHJ1Y3Rpb25z
LT5zaXplKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3Ry
dWN0aW9uc0JlZ2luICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnNFbmQpOwogICAgICAg
ICByZXR1cm4gcmV0dXJuQWRkcmVzcyAtIGluc3RydWN0aW9uc0JlZ2luOwogICAgIH0KQEAgLTI4
Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICB1c2luZyBPdXRPZkxp
bmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsK
KyAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8dHlwZW5hbWUgV2FzbUlu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CiAKIHByaXZhdGU6CiAgICAgTExJbnRDYWxs
ZWUoRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3ImLCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxj
b25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJik7CkBAIC0zMDEsOSArMzAxLDkgQEAg
cHJpdmF0ZToKICAgICB1aW50MzJfdCBtX251bUFyZ3VtZW50cyB7IDAgfTsKICAgICBGaXhlZFZl
Y3RvcjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7CiAgICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+IG1f
Y29uc3RhbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0
cnVjdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21JbnN0cnVjdGlvblN0cmVhbT4gbV9p
bnN0cnVjdGlvbnM7CiAgICAgY29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyIHsg
bnVsbHB0ciB9OwotICAgIEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1f
anVtcFRhcmdldHM7CisgICAgRml4ZWRWZWN0b3I8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgRml4ZWRWZWN0b3I8Y29uc3QgU2lnbmF0
dXJlKj4gbV9zaWduYXR1cmVzOwogICAgIE91dE9mTGluZUp1bXBUYXJnZXRzIG1fb3V0T2ZMaW5l
SnVtcFRhcmdldHM7CiAgICAgTExJbnRUaWVyVXBDb3VudGVyIG1fdGllclVwQ291bnRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9j
a0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25D
b2RlQmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4IDQxNzQ5MTNkNjhjYjY1YzgxZTY4MTI3Nzk1ZDMw
MmEwYTg3NmJiMzcuLjljMzI2ZDYyMTYxOTE3ZDc4MTIyOWZkZDExYTkzMDUzODUzZGNjZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9j
a0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcApAQCAtMzMsMTkgKzMzLDE5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLXZvaWQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0
b3I6OnNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGlu
c3RydWN0aW9ucykKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OnNldEluc3RydWN0
aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMp
CiB7CiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAgICAgbV9p
bnN0cnVjdGlvbnNSYXdQb2ludGVyID0gbV9pbnN0cnVjdGlvbnMtPnJhd1BvaW50ZXIoKTsKIH0K
IAotdm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkT3V0T2ZMaW5lSnVtcFRhcmdl
dChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0LCBpbnQgdGFyZ2V0KQor
dm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkT3V0T2ZMaW5lSnVtcFRhcmdldCh0
eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwgaW50
IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0YXJnZXQpOwogICAgIG1fb3V0T2ZMaW5l
SnVtcFRhcmdldHMuc2V0KGJ5dGVjb2RlT2Zmc2V0LCB0YXJnZXQpOwogfQogCi1JbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpvdXRPZkxpbmVKdW1w
T2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCit0eXBlbmFt
ZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRv
cjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAgICBBU1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0
cy5jb250YWlucyhieXRlY29kZU9mZnNldCkpOwogICAgIHJldHVybiBtX291dE9mTGluZUp1bXBU
YXJnZXRzLmdldChieXRlY29kZU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDdl
NGE0MGJmNDUwODZkZjc3OGEzMzMxMDk1MjFhYmE3ZjczZmM3OWUuLjg1NThiMGU3NmNiZTk5NDgx
NDM1NzNhMGMxZDMwNTkxNzMwYmI4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC04MSw3
ICs4MSw4IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBudW1Bcmd1bWVudHMoKSBjb25zdCB7IHJl
dHVybiBtX251bUFyZ3VtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxUeXBlPiYgY29uc3RhbnRU
eXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRUeXBlczsgfQogICAgIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGNvbnN0YW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9Ci0g
ICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
ICptX2luc3RydWN0aW9uczsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNvbnN0YW50
UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0KKyAgICBjb25zdCBXYXNt
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptX2luc3Ry
dWN0aW9uczsgfQogCiAgICAgdm9pZCBzZXROdW1WYXJzKHVuc2lnbmVkIG51bVZhcnMpIHsgbV9u
dW1WYXJzID0gbnVtVmFyczsgfQogICAgIHZvaWQgc2V0TnVtQ2FsbGVlTG9jYWxzKHVuc2lnbmVk
IG51bUNhbGxlZUxvY2FscykgeyBtX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2Fsczsg
fQpAQCAtOTMsMjcgKzk0LDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29uc3RhbnRU
eXBlc1tyZWcudG9Db25zdGFudEluZGV4KCldOwogICAgIH0KIAotICAgIHZvaWQgc2V0SW5zdHJ1
Y3Rpb25zKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4pOwotICAgIHZvaWQgYWRk
SnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGp1bXBUYXJnZXQpIHsgbV9qdW1w
VGFyZ2V0cy5hcHBlbmQoanVtcFRhcmdldCk7IH0KLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IG51bWJlck9mSnVtcFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsg
fQotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBUYXJnZXQoKSB7IHJldHVy
biBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQorICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6
dW5pcXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+KTsKKyAgICB2b2lkIGFkZEp1bXBUYXJn
ZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQganVtcFRhcmdldCkgeyBt
X2p1bXBUYXJnZXRzLmFwcGVuZChqdW1wVGFyZ2V0KTsgfQorICAgIHR5cGVuYW1lIFdhc21JbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG51bWJlck9mSnVtcFRhcmdldHMoKSB7IHJldHVybiBtX2p1
bXBUYXJnZXRzLnNpemUoKTsgfQorICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IGxhc3RKdW1wVGFyZ2V0KCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0K
IAotICAgIHZvaWQgYWRkT3V0T2ZMaW5lSnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0LCBpbnQgdGFyZ2V0KTsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGlu
ZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0gICAgSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
OjpSZWYmIGluc3RydWN0aW9uKQorICAgIHZvaWQgYWRkT3V0T2ZMaW5lSnVtcFRhcmdldCh0eXBl
bmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7CisgICAgdHlw
ZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldCh0
eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7CisgICAgdHlwZW5hbWUgV2Fz
bUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCB0eXBl
bmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewogICAg
ICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAg
ICAgfQogCi0gICAgaW5saW5lIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZz
ZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCisgICAgaW5saW5lIHR5cGVuYW1l
IFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IFdhc21J
bnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAgICAgIGNvbnN0IGF1dG8qIGlu
c3RydWN0aW9uc0JlZ2luID0gbV9pbnN0cnVjdGlvbnMtPmF0KDApLnB0cigpOwotICAgICAgICBj
b25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3Ry
dWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSAr
IG1faW5zdHJ1Y3Rpb25zLT5zaXplKCkpOworICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlv
bnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFdhc21JbnN0cnVjdGlvbio+KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikgKyBtX2luc3RydWN0aW9ucy0+
c2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVj
dGlvbnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zRW5kKTsKICAgICAgICAg
cmV0dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsKICAgICB9CiAKLSAgICBI
YXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NS
RW50cnlEYXRhPiYgdGllclVwQ291bnRlcigpIHsgcmV0dXJuIG1fdGllclVwQ291bnRlcjsgfQor
ICAgIEhhc2hNYXA8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50
VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiYgdGllclVwQ291bnRlcigpIHsgcmV0dXJuIG1f
dGllclVwQ291bnRlcjsgfQogCiAgICAgdW5zaWduZWQgYWRkU2lnbmF0dXJlKGNvbnN0IFNpZ25h
dHVyZSYpOwogCkBAIC0xMjUsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhjZXB0
aW9uSGFuZGxlcihjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyKSB7IG1fZXhjZXB0
aW9uSGFuZGxlcnMuYXBwZW5kKGhhbmRsZXIpOyB9CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgT3V0
T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGlu
dD47CisgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPHR5cGVuYW1lIFdh
c21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCiAgICAgdWludDMyX3QgbV9mdW5j
dGlvbkluZGV4OwogCkBAIC0xMzYsMTIgKzEzNywxMiBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90
IG1fbnVtQXJndW1lbnRzIHsgMCB9OwogICAgIFZlY3RvcjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7
CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX2NvbnN0YW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAgIGNvbnN0IHZvaWQqIG1f
aW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51bGxwdHIgfTsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgV2Fz
bUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgVmVjdG9yPGNv
bnN0IFNpZ25hdHVyZSo+IG1fc2lnbmF0dXJlczsKICAgICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBt
X291dE9mTGluZUp1bXBUYXJnZXRzOwotICAgIEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgTExJbnRUaWVyVXBDb3VudGVyOjpPU1JFbnRyeURhdGE+IG1fdGllclVwQ291bnRlcjsK
KyAgICBIYXNoTWFwPHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBMTElu
dFRpZXJVcENvdW50ZXI6Ok9TUkVudHJ5RGF0YT4gbV90aWVyVXBDb3VudGVyOwogICAgIFZlY3Rv
cjxKdW1wVGFibGU+IG1fanVtcFRhYmxlczsKICAgICBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5m
bz4gbV9leGNlcHRpb25IYW5kbGVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRzLmgKaW5kZXggNmE4OGJiNGQwYjhhN2FmZjgxZDk4MDcw
ZGE2MjdhNTM5Njg2ZWQwMS4uNzA4MjNjODE2OTM0NzU1NTI5YzA4YTY2Yzk3ODY4ZjIyMWIyYzAw
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdlbmVyYXRvclRy
YWl0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HZW5lcmF0b3JUcmFp
dHMuaApAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgR2VuZXJhdG9yVHJhaXRzIHsKICAgICB1c2lu
ZyBPcGNvZGVJRCA9IFdhc21PcGNvZGVJRDsKICAgICB1c2luZyBPcE5vcCA9IFdhc21Ob3A7CiAg
ICAgdXNpbmcgQ29kZUJsb2NrID0gc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrR2Vu
ZXJhdG9yPjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblR5cGUgPSBXYXNtSW5zdHJ1Y3Rpb247CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBvcGNvZGVGb3JEaXNhYmxpbmdPcHRpbWl6YXRp
b25zID0gd2FzbV91bnJlYWNoYWJsZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IGI0MGU3MjFmOTc1MzRlMTI0YTU4
ZDIyNGQ2ZGE1YTIzZGNhNzE1NGUuLmUzOThjNmU0MDRlM2JlOTc0MjE3Zjk5NzE4YzY5MWMwMmY5
ZjhiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2Vu
ZXJhdG9yLmNwcApAQCAtNDc0LDcgKzQ3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6
ZVByZXZpb3VzQmxvY2tGb3JDYXRjaChDb250cm9sVHlwZSYsIFN0YWNrJik7CiAKICAgICBzdHJ1
Y3QgU3dpdGNoRW50cnkgewotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNl
dDsKKyAgICAgICAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0OwogICAgICAg
ICBpbnQqIGp1bXBUYXJnZXQ7CiAgICAgfTsKIApAQCAtNTEwLDcgKzUxMCw3IEBAIEV4cGVjdGVk
PHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcj4sIFN0cmluZz4gcGFy
c2VBbmRDb21waWxlQnl0CiB9CiAKIAotdXNpbmcgQnVmZmVyID0gSW5zdHJ1Y3Rpb25TdHJlYW06
Okluc3RydWN0aW9uQnVmZmVyOwordXNpbmcgQnVmZmVyID0gdHlwZW5hbWUgV2FzbUluc3RydWN0
aW9uU3RyZWFtOjpJbnN0cnVjdGlvbkJ1ZmZlcjsKIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCdWZm
ZXI+KiB0aHJlYWRTcGVjaWZpY0J1ZmZlclB0cjsKIAogc3RhdGljIFRocmVhZFNwZWNpZmljPEJ1
ZmZlcj4mIHRocmVhZFNwZWNpZmljQnVmZmVyKCkKQEAgLTEyMjgsNyArMTIyOCw3IEBAIGF1dG8g
TExJbnRHZW5lcmF0b3I6OmFkZFN3aXRjaChFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIGNvbnN0
IFZlY3RvcjxDb250cm9sVHlwCiAgICAgV2FzbVN3aXRjaDo6ZW1pdCh0aGlzLCBjb25kaXRpb24s
IHRhYmxlSW5kZXgpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgb2Zmc2V0ID0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7CisgICAg
V2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0ID0gbV9sYXN0SW5zdHJ1Y3Rpb24u
b2Zmc2V0KCk7CiAKICAgICBhdXRvIGFkZFRhcmdldCA9IFsmXShDb250cm9sVHlwZSYgdGFyZ2V0
KSB7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGFyZ2V0TGFiZWwgPSB0YXJnZXQudGFyZ2V0TGFi
ZWxGb3JCcmFuY2goKTsKQEAgLTE4NTAsMTMgKzE4NTAsMTMgQEAgdm9pZCBHZW5lcmljTGFiZWw8
V2FzbTo6R2VuZXJhdG9yVHJhaXRzPjo6c2V0TG9jYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3JCYXNl
PFdhc20KIAogI2RlZmluZSBDQVNFKF9fb3ApIFwKICAgICBjYXNlIF9fb3A6Om9wY29kZUlEOiAg
XAotICAgICAgICBpbnN0cnVjdGlvbi0+Y2FzdDxfX29wLCBXYXNtT3Bjb2RlVHJhaXRzPigpLT5z
ZXRUYXJnZXRMYWJlbChCb3VuZExhYmVsKHRhcmdldCksIFsmXSgpIHsgXAorICAgICAgICBpbnN0
cnVjdGlvbi0+Y2FzdDxfX29wPigpLT5zZXRUYXJnZXRMYWJlbChCb3VuZExhYmVsKHRhcmdldCks
IFsmXSgpIHsgXAogICAgICAgICAgICAgZ2VuZXJhdG9yLm1fY29kZUJsb2NrLT5hZGRPdXRPZkxp
bmVKdW1wVGFyZ2V0KGluc3RydWN0aW9uLm9mZnNldCgpLCB0YXJnZXQpOyBcCiAgICAgICAgICAg
ICByZXR1cm4gQm91bmRMYWJlbCgpOyBcCiAgICAgICAgIH0pOyBcCiAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEPFdhc21PcGNvZGVUcmFpdHM+
KCkpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAg
ICBDQVNFKFdhc21KbXApCiAgICAgICAgIENBU0UoV2FzbUp0cnVlKQogICAgICAgICBDQVNFKFdh
c21KZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRUaWVyVXBDb3VudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTElu
dFRpZXJVcENvdW50ZXIuY3BwCmluZGV4IDA3NWM5YWFiY2Y4YzFiOTZmOWNlMzgwOWNjYjM2Mzcz
YzAyNWIwZGIuLjZhYzlkNWQ3ZWJiMmJiZDhjZTdjY2RkMWRiNDVjMzlmODY1OTdkZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50
ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
YXNtIHsKIAotdm9pZCBMTEludFRpZXJVcENvdW50ZXI6OmFkZE9TUkVudHJ5RGF0YUZvckxvb3Ao
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQsIE9TUkVudHJ5RGF0YSYmIGRhdGEpCit2
b2lkIExMSW50VGllclVwQ291bnRlcjo6YWRkT1NSRW50cnlEYXRhRm9yTG9vcCh0eXBlbmFtZSBX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQsIE9TUkVudHJ5RGF0YSYmIGRhdGEp
CiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX29zckVudHJ5RGF0YS5hZGQob2Zmc2V0LCBXVEZN
b3ZlKGRhdGEpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi1hdXRvIExMSW50VGllclVwQ291bnRlcjo6b3NyRW50cnlEYXRhRm9yTG9v
cChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkgY29uc3QgLT4gY29uc3QgT1NSRW50
cnlEYXRhJgorYXV0byBMTEludFRpZXJVcENvdW50ZXI6Om9zckVudHJ5RGF0YUZvckxvb3AodHlw
ZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdCAtPiBjb25z
dCBPU1JFbnRyeURhdGEmCiB7CiAgICAgYXV0byBlbnRyeSA9IG1fb3NyRW50cnlEYXRhLmZpbmQo
b2Zmc2V0KTsKICAgICBSRUxFQVNFX0FTU0VSVChlbnRyeSAhPSBtX29zckVudHJ5RGF0YS5lbmQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVy
VXBDb3VudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBD
b3VudGVyLmgKaW5kZXggMTQwYTgyYzhlNGEzMTg3OTNjY2ZiODMyMWMwMjUwMTk2YzgzNGVmYi4u
MDI4YWI3ODE0YzgxMDI0Y2I0NjJhNTQyNjIxZGY4ZjM3ODUyZjQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50VGllclVwQ291bnRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IHZhbHVl
czsKICAgICB9OwogCi0gICAgTExJbnRUaWVyVXBDb3VudGVyKEhhc2hNYXA8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhPiYmIG9zckVudHJ5RGF0YSkKKyAgICBMTEludFRp
ZXJVcENvdW50ZXIoSGFzaE1hcDx0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCwgT1NSRW50cnlEYXRhPiYmIG9zckVudHJ5RGF0YSkKICAgICAgICAgOiBtX29zckVudHJ5RGF0
YShXVEZNb3ZlKG9zckVudHJ5RGF0YSkpCiAgICAgewogICAgICAgICBvcHRpbWl6ZUFmdGVyV2Fy
bVVwKCk7CkBAIC03NiwxNCArNzYsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgc2V0TmV3VGhy
ZXNob2xkKE9wdGlvbnM6OnRocmVzaG9sZEZvck9NR09wdGltaXplU29vbigpKTsKICAgICB9CiAK
LSAgICB2b2lkIGFkZE9TUkVudHJ5RGF0YUZvckxvb3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCwgT1NSRW50cnlEYXRhJiYpOworICAgIHZvaWQgYWRkT1NSRW50cnlEYXRhRm9yTG9vcCh0eXBl
bmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhJiYpOwogCi0g
ICAgY29uc3QgT1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGFGb3JMb29wKEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQpIGNvbnN0OworICAgIGNvbnN0IE9TUkVudHJ5RGF0YSYgb3NyRW50cnlEYXRh
Rm9yTG9vcCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Q7CiAK
ICAgICBMb2NrIG1fbG9jazsKICAgICBDb21waWxhdGlvblN0YXR1cyBtX2NvbXBpbGF0aW9uU3Rh
dHVzIHsgQ29tcGlsYXRpb25TdGF0dXM6Ok5vdENvbXBpbGVkIH07CiAgICAgQ29tcGlsYXRpb25T
dGF0dXMgbV9sb29wQ29tcGlsYXRpb25TdGF0dXMgeyBDb21waWxhdGlvblN0YXR1czo6Tm90Q29t
cGlsZWQgfTsKLSAgICBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5
RGF0YT4gbV9vc3JFbnRyeURhdGE7CisgICAgSGFzaE1hcDx0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhPiBtX29zckVudHJ5RGF0YTsKIH07CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwCmluZGV4IGNmMjdmZWEzMjkwZDMwODBjMDJmNDJiYTU5NmVjMjhiMmY4
OTU0ZGIuLjJhODY3ZDZjNzNmZGVmM2U5MTg3MDZhM2YwNzJjMGQ1ODI5OTNjZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC0yODksMTMgKzI4
OSwxMyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogICAgIGlmICghT3B0aW9uczo6dHJh
Y2VMTEludEV4ZWN1dGlvbigpKQogICAgICAgICBXQVNNX0VORF9JTVBMKCk7CiAKLSAgICBXYXNt
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBwYy0+b3Bjb2RlSUQ8V2FzbU9wY29kZVRyYWl0cz4oKTsKKyAg
ICBXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQgPSBwYy0+b3Bjb2RlSUQoKTsKICAgICBkYXRhTG9nRigi
PCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAlcywgcGMgPSAlcFxuIiwKICAgICAgICAg
JlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICBDQUxMRUUoKSwKICAgICAgICAgY2FsbEZyYW1l
LAogICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oQ0FMTEVFKCktPmJ5dGVjb2RlT2Zmc2V0
KHBjKSksCi0gICAgICAgIHBjLT5uYW1lPFdhc21PcGNvZGVUcmFpdHM+KCksCisgICAgICAgIHBj
LT5uYW1lKCksCiAgICAgICAgIHBjKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gd2FzbV9lbnRlcikg
ewogICAgICAgICBkYXRhTG9nRigiRnJhbWUgd2lsbCBldmVudHVhbGx5IHJldHVybiB0byAlcFxu
IiwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCkpOwpAQCAtMzE4LDEzICszMTgsMTMgQEAg
V0FTTV9TTE9XX1BBVEhfREVDTChvdXRfb2ZfbGluZV9qdW1wX3RhcmdldCkKIAogV0FTTV9TTE9X
X1BBVEhfREVDTChyZWZfZnVuYykKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21SZWZGdW5jLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBw
Yy0+YXM8V2FzbVJlZkZ1bmM+KCk7CiAgICAgV0FTTV9SRVRVUk4oV2FzbTo6b3BlcmF0aW9uV2Fz
bVJlZkZ1bmMoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCkpOwogfQogCiBX
QVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dldCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0g
cGMtPmFzPFdhc21UYWJsZUdldCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUdldD4oKTsKICAgICBpbnQzMl90IGluZGV4ID0gUkVB
RChpbnN0cnVjdGlvbi5tX2luZGV4KS51bmJveGVkSW50MzIoKTsKICAgICBFbmNvZGVkSlNWYWx1
ZSByZXN1bHQgPSBXYXNtOjpvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50KGluc3RhbmNlLCBp
bnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluZGV4KTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTMz
NCw3ICszMzQsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dldCkKIAogV0FTTV9TTE9X
X1BBVEhfREVDTCh0YWJsZV9zZXQpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtVGFibGVTZXQsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtVGFibGVTZXQ+KCk7CiAgICAgdWludDMyX3QgaW5kZXggPSBSRUFEKGluc3Ry
dWN0aW9uLm1faW5kZXgpLnVuYm94ZWRVSW50MzIoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1ZSkuZW5jb2RlZEpTVmFsdWUoKTsKICAgICBpZiAo
IVdhc206Om9wZXJhdGlvblNldFdhc21UYWJsZUVsZW1lbnQoaW5zdGFuY2UsIGluc3RydWN0aW9u
Lm1fdGFibGVJbmRleCwgaW5kZXgsIHZhbHVlKSkKQEAgLTM0NCw3ICszNDQsNyBAQCBXQVNNX1NM
T1dfUEFUSF9ERUNMKHRhYmxlX3NldCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9pbml0
KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlSW5pdCwgV2FzbU9w
Y29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUlu
aXQ+KCk7CiAgICAgdWludDMyX3QgZHN0T2Zmc2V0ID0gUkVBRChpbnN0cnVjdGlvbi5tX2RzdE9m
ZnNldCkudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90IHNyY09mZnNldCA9IFJFQUQoaW5z
dHJ1Y3Rpb24ubV9zcmNPZmZzZXQpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBsZW5n
dGggPSBSRUFEKGluc3RydWN0aW9uLm1fbGVuZ3RoKS51bmJveGVkVUludDMyKCk7CkBAIC0zNTcs
MjAgKzM1NywyMCBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKGVsZW1fZHJvcCkKIHsKICAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2Fz
bUVsZW1Ecm9wLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBw
Yy0+YXM8V2FzbUVsZW1Ecm9wPigpOwogICAgIFdhc206Om9wZXJhdGlvbldhc21FbGVtRHJvcChp
bnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9lbGVtZW50SW5kZXgpOwogICAgIFdBU01fRU5EKCk7CiB9
CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfc2l6ZSkKIHsKLSAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21UYWJsZVNpemUsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0
byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVTaXplPigpOwogICAgIFdBU01fUkVUVVJO
KFdhc206Om9wZXJhdGlvbkdldFdhc21UYWJsZVNpemUoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1f
dGFibGVJbmRleCkpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2ZpbGwpCiB7Ci0g
ICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVGaWxsLCBXYXNtT3Bjb2RlVHJh
aXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlRmlsbD4oKTsK
ICAgICB1aW50MzJfdCBvZmZzZXQgPSBSRUFEKGluc3RydWN0aW9uLm1fb2Zmc2V0KS51bmJveGVk
VUludDMyKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUgZmlsbCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9m
aWxsKS5lbmNvZGVkSlNWYWx1ZSgpOwogICAgIHVpbnQzMl90IHNpemUgPSBSRUFEKGluc3RydWN0
aW9uLm1fc2l6ZSkudW5ib3hlZFVJbnQzMigpOwpAQCAtMzgxLDcgKzM4MSw3IEBAIFdBU01fU0xP
V19QQVRIX0RFQ0wodGFibGVfZmlsbCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9jb3B5
KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlQ29weSwgV2FzbU9w
Y29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUNv
cHk+KCk7CiAgICAgaW50MzJfdCBkc3RPZmZzZXQgPSBSRUFEKGluc3RydWN0aW9uLm1fZHN0T2Zm
c2V0KS51bmJveGVkSW50MzIoKTsKICAgICBpbnQzMl90IHNyY09mZnNldCA9IFJFQUQoaW5zdHJ1
Y3Rpb24ubV9zcmNPZmZzZXQpLnVuYm94ZWRJbnQzMigpOwogICAgIGludDMyX3QgbGVuZ3RoID0g
UkVBRChpbnN0cnVjdGlvbi5tX2xlbmd0aCkudW5ib3hlZEludDMyKCk7CkBAIC0zOTIsNyArMzky
LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9jb3B5KQogCiBXQVNNX1NMT1dfUEFUSF9E
RUNMKHRhYmxlX2dyb3cpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFi
bGVHcm93LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbVRhYmxlR3Jvdz4oKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBmaWxsID0gUkVBRChpbnN0
cnVjdGlvbi5tX2ZpbGwpLmVuY29kZWRKU1ZhbHVlKCk7CiAgICAgdWludDMyX3Qgc2l6ZSA9IFJF
QUQoaW5zdHJ1Y3Rpb24ubV9zaXplKS51bmJveGVkVUludDMyKCk7CiAgICAgV0FTTV9SRVRVUk4o
V2FzbTo6b3BlcmF0aW9uV2FzbVRhYmxlR3JvdyhpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV90YWJs
ZUluZGV4LCBmaWxsLCBzaXplKSk7CkBAIC00MDAsMTQgKzQwMCwxNCBAQCBXQVNNX1NMT1dfUEFU
SF9ERUNMKHRhYmxlX2dyb3cpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0woZ3Jvd19tZW1vcnkpCiB7
Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtR3Jvd01lbW9yeSwgV2FzbU9wY29k
ZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21Hcm93TWVtb3J5
PigpOwogICAgIGludDMyX3QgZGVsdGEgPSBSRUFEKGluc3RydWN0aW9uLm1fZGVsdGEpLnVuYm94
ZWRJbnQzMigpOwogICAgIFdBU01fUkVUVVJOKFdhc206Om9wZXJhdGlvbkdyb3dNZW1vcnkoY2Fs
bEZyYW1lLCBpbnN0YW5jZSwgZGVsdGEpKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1v
cnlfZmlsbCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlGaWxs
LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2Fz
bU1lbW9yeUZpbGw+KCk7CiAgICAgdWludDMyX3QgZHN0QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rp
b24ubV9kc3RBZGRyZXNzKS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3QgdGFyZ2V0VmFs
dWUgPSBSRUFEKGluc3RydWN0aW9uLm1fdGFyZ2V0VmFsdWUpLnVuYm94ZWRVSW50MzIoKTsKICAg
ICB1aW50MzJfdCBjb3VudCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9jb3VudCkudW5ib3hlZFVJbnQz
MigpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2ZpbGwp
CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2NvcHkpCiB7Ci0gICAgYXV0byBpbnN0cnVj
dGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5Q29weSwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBh
dXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlDb3B5PigpOwogICAgIHVpbnQzMl90
IGRzdEFkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fZHN0QWRkcmVzcykudW5ib3hlZFVJbnQz
MigpOwogICAgIHVpbnQzMl90IHNyY0FkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fc3JjQWRk
cmVzcykudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90IGNvdW50ID0gUkVBRChpbnN0cnVj
dGlvbi5tX2NvdW50KS51bmJveGVkVUludDMyKCk7CkBAIC00MjksNyArNDI5LDcgQEAgV0FTTV9T
TE9XX1BBVEhfREVDTChtZW1vcnlfY29weSkKIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlf
aW5pdCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlJbml0LCBX
YXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1l
bW9yeUluaXQ+KCk7CiAgICAgdWludDMyX3QgZHN0QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24u
bV9kc3RBZGRyZXNzKS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3Qgc3JjQWRkcmVzcyA9
IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zcmNBZGRyZXNzKS51bmJveGVkVUludDMyKCk7CiAgICAgdWlu
dDMyX3QgbGVuZ3RoID0gUkVBRChpbnN0cnVjdGlvbi5tX2xlbmd0aCkudW5ib3hlZFVJbnQzMigp
OwpAQCAtNDQyLDcgKzQ0Miw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0woZGF0YV9kcm9wKQogewog
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBj
LT5hczxXYXNtRGF0YURyb3AsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVj
dGlvbiA9IHBjLT5hczxXYXNtRGF0YURyb3A+KCk7CiAgICAgV2FzbTo6b3BlcmF0aW9uV2FzbURh
dGFEcm9wKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2RhdGFTZWdtZW50SW5kZXgpOwogICAgIFdB
U01fRU5EKCk7CiB9CkBAIC00NzQsNyArNDc0LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxs
KQogewogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtQ2FsbCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21DYWxsPigpOwogICAgIHJldHVybiBkb1dhc21DYWxsKGluc3Rh
bmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOwogfQogCkBAIC00ODIsNyArNDgyLDcg
QEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX25vX3RscykKIHsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxOb1Rs
cywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21DYWxsTm9UbHM+KCk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGwoaW5zdGFuY2UsIGluc3RydWN0
aW9uLm1fZnVuY3Rpb25JbmRleCk7CiB9CiAKQEAgLTUxMSwxNCArNTExLDE0IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgZG9XYXNtQ2FsbEluZGlyZWN0KENhbGxGcmFtZSogY2FsbEZyYW1l
LCBXYXNtOjpJbnN0YW5jCiAKIFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9pbmRpcmVjdCkKIHsK
LSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsSW5kaXJlY3QsIFdhc21PcGNv
ZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbEluZGly
ZWN0PigpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1f
ZnVuY3Rpb25JbmRleCkudW5ib3hlZEludDMyKCk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRp
cmVjdChjYWxsRnJhbWUsIGluc3RhbmNlLCBmdW5jdGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3Rh
YmxlSW5kZXgsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOwogfQogCiBXQVNNX1NMT1df
UEFUSF9ERUNMKGNhbGxfaW5kaXJlY3Rfbm9fdGxzKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbUNhbGxJbmRpcmVjdE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxJbmRpcmVjdE5vVGxzPigpOwogICAg
IHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRl
eCkudW5ib3hlZEludDMyKCk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVjdChjYWxsRnJh
bWUsIGluc3RhbmNlLCBmdW5jdGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGlu
c3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOwogfQpAQCAtNTQ4LDM1ICs1NDgsMzUgQEAgaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkb1dhc21DYWxsUmVmKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBXYXNtOjpJbnN0YW5jZSogY2EKIAogV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZikKIHsK
LSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsUmVmLCBXYXNtT3Bjb2RlVHJh
aXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWY+KCk7CiAg
ICAgSlNWYWx1ZSByZWZlcmVuY2UgPSBKU1ZhbHVlOjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5t
X2Z1bmN0aW9uUmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gZG9XYXNt
Q2FsbFJlZihjYWxsRnJhbWUsIGluc3RhbmNlLCByZWZlcmVuY2UsIGluc3RydWN0aW9uLm1fc2ln
bmF0dXJlSW5kZXgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfcmVmX25vX3RscykK
IHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsUmVmTm9UbHMsIFdhc21P
cGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJl
Zk5vVGxzPigpOwogICAgIEpTVmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQo
aW5zdHJ1Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
cmV0dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlLCBpbnN0
cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRf
Z2xvYmFsX3JlZikKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9i
YWxSZWYsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtU2V0R2xvYmFsUmVmPigpOwogICAgIGluc3RhbmNlLT5zZXRHbG9iYWwoaW5zdHJ1Y3Rp
b24ubV9nbG9iYWxJbmRleCwgUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVlKS5qc1ZhbHVlKCkpOwog
ICAgIFdBU01fRU5EX0lNUEwoKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFs
X3JlZl9wb3J0YWJsZV9iaW5kaW5nKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbVNldEdsb2JhbFJlZlBvcnRhYmxlQmluZGluZywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAg
ICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWZQb3J0YWJsZUJpbmRp
bmc+KCk7CiAgICAgaW5zdGFuY2UtPnNldEdsb2JhbChpbnN0cnVjdGlvbi5tX2dsb2JhbEluZGV4
LCBSRUFEKGluc3RydWN0aW9uLm1fdmFsdWUpLmpzVmFsdWUoKSk7CiAgICAgV0FTTV9FTkRfSU1Q
TCgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9hdG9taWNfd2FpdDMyKQogewot
ICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUF0b21pY1dhaXQzMiwgV2Fz
bU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1v
cnlBdG9taWNXYWl0MzI+KCk7CiAgICAgdW5zaWduZWQgYmFzZSA9IFJFQUQoaW5zdHJ1Y3Rpb24u
bV9wb2ludGVyKS51bmJveGVkSW50MzIoKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBpbnN0cnVj
dGlvbi5tX29mZnNldDsKICAgICB1aW50MzJfdCB2YWx1ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV92
YWx1ZSkudW5ib3hlZEludDMyKCk7CkBAIC01ODksNyArNTg5LDcgQEAgV0FTTV9TTE9XX1BBVEhf
REVDTChtZW1vcnlfYXRvbWljX3dhaXQzMikKIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlf
YXRvbWljX3dhaXQ2NCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1v
cnlBdG9taWNXYWl0NjQsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtTWVtb3J5QXRvbWljV2FpdDY0PigpOwogICAgIHVuc2lnbmVkIGJhc2Ug
PSBSRUFEKGluc3RydWN0aW9uLm1fcG9pbnRlcikudW5ib3hlZEludDMyKCk7CiAgICAgdW5zaWdu
ZWQgb2Zmc2V0ID0gaW5zdHJ1Y3Rpb24ubV9vZmZzZXQ7CiAgICAgdWludDY0X3QgdmFsdWUgPSBS
RUFEKGluc3RydWN0aW9uLm1fdmFsdWUpLnVuYm94ZWRJbnQ2NCgpOwpAQCAtNjAyLDcgKzYwMiw3
IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2F0b21pY193YWl0NjQpCiAKIFdBU01fU0xP
V19QQVRIX0RFQ0wobWVtb3J5X2F0b21pY19ub3RpZnkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtTWVtb3J5QXRvbWljTm90aWZ5LCBXYXNtT3Bjb2RlVHJhaXRzPigpOwor
ICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUF0b21pY05vdGlmeT4oKTsK
ICAgICB1bnNpZ25lZCBiYXNlID0gUkVBRChpbnN0cnVjdGlvbi5tX3BvaW50ZXIpLnVuYm94ZWRJ
bnQzMigpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IGluc3RydWN0aW9uLm1fb2Zmc2V0OwogICAg
IGludDMyX3QgY291bnQgPSBSRUFEKGluc3RydWN0aW9uLm1fY291bnQpLnVuYm94ZWRJbnQzMigp
OwpAQCAtNjIxLDcgKzYyMSw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wodGhyb3cpCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGhy
b3csIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtVGhyb3c+KCk7CiAgICAgY29uc3QgV2FzbTo6VGFnJiB0YWcgPSBpbnN0YW5jZS0+dGFnKGlu
c3RydWN0aW9uLm1fZXhjZXB0aW9uSW5kZXgpOwogCiAgICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+
IHZhbHVlcyh0YWcucGFyYW1ldGVyQ291bnQoKSk7CkBAIC02NTUsNyArNjU1LDcgQEAgV0FTTV9T
TE9XX1BBVEhfREVDTChyZXRocm93KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJldGhyb3csIFdhc21PcGNvZGVUcmFpdHM+KCk7
CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0aHJvdz4oKTsKICAgICBKU1Zh
bHVlIGV4Y2VwdGlvbiA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9leGNlcHRpb24pLmpzVmFsdWUoKTsK
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7
CiAKQEAgLTY5OSwxNCArNjk5LDE0IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wocmV0cmlldmVfYW5k
X2NsZWFyX2V4Y2VwdGlvbikKICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGluc3RydWN0
aW9uLm1fZXhjZXB0aW9uKSA9IHRocm93blZhbHVlOwogICAgIH07CiAKLSAgICBpZiAocGMtPmlz
PFdhc21DYXRjaCwgV2FzbU9wY29kZVRyYWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2gocGMt
PmFzPFdhc21DYXRjaCwgV2FzbU9wY29kZVRyYWl0cz4oKSk7Ci0gICAgZWxzZSBpZiAocGMtPmlz
PFdhc21DYXRjaEFsbCwgV2FzbU9wY29kZVRyYWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2hB
bGwocGMtPmFzPFdhc21DYXRjaEFsbCwgV2FzbU9wY29kZVRyYWl0cz4oKSk7Ci0gICAgZWxzZSBp
ZiAocGMtPmlzPFdhc21DYXRjaE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpKQotICAgICAgICBo
YW5kbGVDYXRjaChwYy0+YXM8V2FzbUNhdGNoTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCkpOwot
ICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hBbGxOb1RscywgV2FzbU9wY29kZVRyYWl0cz4o
KSkKLSAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbE5vVGxzLCBXYXNt
T3Bjb2RlVHJhaXRzPigpKTsKKyAgICBpZiAocGMtPmlzPFdhc21DYXRjaD4oKSkKKyAgICAgICAg
aGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21DYXRjaD4oKSk7CisgICAgZWxzZSBpZiAocGMtPmlzPFdh
c21DYXRjaEFsbD4oKSkKKyAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFs
bD4oKSk7CisgICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaE5vVGxzPigpKQorICAgICAgICBo
YW5kbGVDYXRjaChwYy0+YXM8V2FzbUNhdGNoTm9UbHM+KCkpOworICAgIGVsc2UgaWYgKHBjLT5p
czxXYXNtQ2F0Y2hBbGxOb1Rscz4oKSkKKyAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdh
c21DYXRjaEFsbE5vVGxzPigpKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAKQEAgLTcxNywxOSArNzE3LDE5IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wo
cmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbikKICAgICBXQVNNX1JFVFVSTl9UV08ocGMsIHBh
eWxvYWQpOwogfQogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2Fz
bV90aHJvd19leGNlcHRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlIGV4Y2Vw
dGlvblR5cGUpCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90
aHJvd19leGNlcHRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IFdhc21JbnN0cnVjdGlv
biogcGMsIFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSBleGNl
cHRpb25UeXBlKQogewogICAgIFVOVVNFRF9QQVJBTShwYyk7CiAgICAgV0FTTV9SRVRVUk5fVFdP
KG9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKGNhbGxGcmFtZSwgZXhjZXB0aW9uVHlwZSwgaW5z
dGFuY2UpLCBudWxscHRyKTsKIH0KIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xv
d19wYXRoX3dhc21fcG9wY291bnQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50MzJfdCB4KQor
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnQoY29u
c3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWludDMyX3QgeCkKIHsKICAgICB2b2lkKiByZXN1bHQg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihfX2J1aWx0aW5fcG9w
Y291bnQoeCkpKTsKICAgICBXQVNNX1JFVFVSTl9UV08ocGMsIHJlc3VsdCk7CiB9CiAKLWV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCB4KQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnRsbChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCB1
aW50NjRfdCB4KQogewogICAgIHZvaWQqIHJlc3VsdCA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KF9fYnVpbHRpbl9wb3Bjb3VudGxsKHgpKSk7CiAgICAgV0FTTV9S
RVRVUk5fVFdPKHBjLCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNs
b3dQYXRocy5oCmluZGV4IGI2NGNlN2NkZTQxYWFhMDY4OTdlOGZmZmVkODJhOGQwNjQzMmRmZDAu
LjQ2MDllMzZiMDM5MjRkMTBlYTAyNzQ1NjEwZjBmMmZlNGU4MzFmMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKQEAgLTM0LDkgKzM0LDEyIEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOwogc3Ry
dWN0IFByb3RvQ2FsbEZyYW1lOwogCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0
cnVjdGlvbjsKK3N0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzOwordXNpbmcgV2FzbUluc3RydWN0aW9u
ID0gQmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVUcmFpdHM+OworCiBuYW1lc3BhY2UgV2FzbSB7
CiBjbGFzcyBJbnN0YW5jZTsKIH0KQEAgLTQ0LDcgKzQ3LDcgQEAgY2xhc3MgSW5zdGFuY2U7CiBu
YW1lc3BhY2UgTExJbnQgewogCiAjZGVmaW5lIFdBU01fU0xPV19QQVRIX0RFQ0wobmFtZSkgXAot
ICAgIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtXyMjbmFtZShD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5j
ZSogaW5zdGFuY2UpCisgICAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRo
X3dhc21fIyNuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24q
IHBjLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UpCiAKICNkZWZpbmUgV0FTTV9TTE9XX1BBVEhf
SElEREVOX0RFQ0wobmFtZSkgXAogICAgIFdBU01fU0xPV19QQVRIX0RFQ0wobmFtZSkgUkVGRVJF
TkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUwKQEAgLTg3LDkgKzkwLDkgQEAgV0FTTV9TTE9XX1BB
VEhfSElEREVOX0RFQ0wodGhyb3cpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0aHJv
dyk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChyZXRyaWV2ZV9hbmRfY2xlYXJfZXhjZXB0
aW9uKTsKIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fdGhy
b3dfZXhjZXB0aW9uKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiwgV2FzbTo6SW5zdGFu
Y2UqIGluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdU
Rl9JTlRFUk5BTDsKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNt
X3BvcGNvdW50KGNvbnN0IEluc3RydWN0aW9uKiBwYywgdWludDMyX3QpIFJFRkVSRU5DRURfRlJP
TV9BU00gV1RGX0lOVEVSTkFMOwotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19w
YXRoX3dhc21fcG9wY291bnRsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIHVpbnQ2NF90KSBSRUZF
UkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIHNsb3dfcGF0aF93YXNtX3Rocm93X2V4Y2VwdGlvbihDYWxsRnJhbWUqLCBjb25zdCBXYXNt
SW5zdHJ1Y3Rpb24qLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIFdhc206OkV4Y2VwdGlvblR5
cGUpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOworZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnQoY29uc3QgV2FzbUluc3RydWN0aW9u
KiBwYywgdWludDMyX3QpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOworZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnRsbChjb25zdCBX
YXNtSW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5U
RVJOQUw7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAogCg==
</data>
<flag name="commit-queue"
          id="480959"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453549</attachid>
            <date>2022-03-01 16:45:25 -0800</date>
            <delta_ts>2022-03-01 16:58:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237347-20220301164524.patch</filename>
            <type>text/plain</type>
            <size>375077</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDBlZmU2YjYzNDkzM2Q3NzkxM2Y3MzU5MmNmNWY5MjJiY2NhYWJkLi5iODMxMDI2YTQ0ZjgyMjRk
ZDM2NWRlODg5ZWQ1ZGFmOTdkN2Q2NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NjQgQEAKKzIwMjItMDMtMDEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE9wY29kZVRyYWl0cyB0byBzdXBwb3J0IHRo
ZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgMi1ieXRlIFdBU00gb3Bjb2RlIGlkcyBpbiBieXRlY29k
ZSBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzczNDcKKworICAgICAgICBUaGUgbnVtYmVyIG9mIFdBU00gb3Bjb2RlcyB3aWxsIGluY3Jl
YXNlIGJleW9uZCAyNTUgd2hlbiBXQVNNIFNJTUQgaXMgaW1wbGVtZW50ZWQsIGFuZCBzbyB0aGlz
IHBhdGNoCisgICAgICAgIGNoYW5nZXMgT3Bjb2RlVHJhaXRzIHRvIGFsbG93IGZvciB0aGUgcG9z
c2liaWxpdHkgb2YgaGF2aW5nIHR3by1ieXRlIFdBU00gb3Bjb2RlcyB3aXRob3V0IHJlZ3Jlc3Np
bmcKKyAgICAgICAgSlMuIFdlIGhhdmUgdG8gdGhyZWFkIHRoZXNlIE9wY29kZVRyYWl0cyBldmVy
eXdoZXJlIHRoYXQgdGhleSBhcmUgdXNlZCBzbyB0aGF0IGNvZGUgY2FuIHJlYWQgdGhlCisgICAg
ICAgIGNvcnJlY3QgdmFsdWUgd2hlbiBkZWNvZGluZyBhbiBpbnN0cnVjdGlvbiBzdHJlYW0uIFRo
aXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIHRoZSBzaXplIG9mIFdBU00gb3Bjb2RlcworICAgICAg
ICB5ZXQsIGFsdGhvdWdoIEkgaGF2ZSB0ZXN0ZWQgdGhhdCB0aGUgdGVzdCBzdWl0ZSBzdGlsbCBw
YXNzZXMgaWYgd2UgZG8gaW5jcmVhc2UgdGhlIG9wY29kZSBzaXplLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OkJ5dGVjb2RlQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjphZGRMZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2lj
QmxvY2s8T3Bjb2RlVHJhaXRzPjo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjppc0p1bXBU
YXJnZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6
Y29tcHV0ZUltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVU
cmFpdHM+Ojpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRl
Y29kZUJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmFkZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25B
bmRPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVh
bVR5cGU+OjpkdW1wVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
Om91dE9mTGluZUp1bXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAg
IChKU0M6Oldhc206OkJ5dGVjb2RlRHVtcGVyOjpyZWdpc3Rlck5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCBjb25zdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppbnN0cnVjdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4p
OgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3Jb
XSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmR1bXApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBoKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRl
TG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEluc3Ry
dWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5M
aXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjpyZXBsYWNlQnl0ZWNvZGVXaXRoRnJhZ21lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjphZGp1c3RBYnNvbHV0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdEp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFu
ZENvbHVtbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdV
cGRhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5h
cnlBcml0aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0
aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlv
bkF0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAo
SlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om9wY29kZUlEIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
Ojppc1dpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aXNXaWRl
MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNNZXRhZGF0YSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om51bWJlck9mQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OnNpemVTaGlmdEFtb3VudCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURXaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURCeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0
cnVjdGlvbjo6aXMgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmNhc3QpOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OmNhc3QgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rp
b246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHA6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5CeXRlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaDoKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6Om9wZXJhdG9yLT4gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6QmFzZVJlZjo6cHRyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6OnVud3JhcCBjb25zdCk6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6cHRyKToK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6OnB0ciBjb25zdCk6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjp1bndyYXApOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6dW53cmFwIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Oml0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVy
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OnN3YXApOgorICAgICAgICAoSlND
OjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNPcGNvZGVTaGFwZSk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlU2l6ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6Cisg
ICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6anVtcFRh
cmdldEZvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6ZXh0cmFjdFN0b3JlZEp1bXBUYXJn
ZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjp1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0
c0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OmR1bXBMaW5lQ29sdW1uRW50cnkpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
bnN0cnVjdGlvbkF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6
b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6d2l0aFdyaXRlcik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjpyZWNvcmRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRlT3Bjb2RlMTYp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRl
T3Bjb2RlMzIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
Lmg6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMpOgorICAgICAgICAo
SlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVW
YXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJl
Y3Vyc2l2ZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0
eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJl
dHVyblBDKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
b21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToK
KyAgICAgICAgKiBnZW5lcmF0b3IvQXJndW1lbnQucmI6CisgICAgICAgICogZ2VuZXJhdG9yL0RT
TC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvT3Bjb2RlLnJiOgorICAgICAgICAqIGludGVycHJl
dGVyL0Fic3RyYWN0UEMuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmN1cnJlbnRWUEMgY29uc3QpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2F0Y2hJbmZvOjpDYXRjaEluZm8pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGht
ZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbGVzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pn
cmVhdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pncmVhdGVyZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5sZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2pubGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZ3JlYXRlcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3Bfamxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2psZXNz
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9qbmxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pubGVz
c2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2JlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JlbG93ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamJlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2piZWxvd2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Bvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcG93KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0
aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRub3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdHhvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Vyc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9z
dWIpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jYWxsX2V2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2FsbF92
YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1bWVQb2ludCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpJVDo6anVtcFRhcmdldCk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW92KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbXApOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfZW1wdHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191
bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X2NlbGxfd2l0aF90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3NldF9mdW5jdGlvbl9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2plcV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5l
cV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9z
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5zdHJpY3Rl
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmlj
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zd2l0Y2hfY2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5n
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRl
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVidWcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19yZWdleHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Fz
eW5jX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhf
c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1l
bnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2plcSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9zdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pz
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcSk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
dHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGly
ZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRl
X2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpMTEludDo6d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgor
ICAgICAgICAoSlNDOjpMTEludDo6d2FzbVJldHVyblRvVGhyb3cpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50
R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTEludDo6ZGlzcGF0
Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkNMb29w
UmVnaXN0ZXI6Om9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKToKKyAgICAgICAgKEpTQzo6
Q0xvb3A6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpDTG9vcFJlZ2lzdGVyOjpvcGVyYXRvciBj
b25zdCBJbnN0cnVjdGlvbiopOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZEluc3RydWN0aW9uU3RyZWFt
OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFz
dEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpGaWxl
QmFzZWRGdXp6ZXJBZ2VudEJhc2U6OmdldFByZWRpY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDQ29uZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICog
cnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjphZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAo
SlNDOjpWTTo6Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKEpTQzo6Vk06
OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAqIHdhc20vV2FzbUNhbGxlZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50Q2FsbGVlOjpMTEludENhbGxlZSk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50Q2FsbGVl
OjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRDYWxsZWU6
Om91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxlZS5oOgorICAg
ICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OnNldEluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRP
ZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tH
ZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29k
ZUJsb2NrR2VuZXJhdG9yOjpjb25zdGFudFJlZ2lzdGVycyBjb25zdCk6CisgICAgICAgIChKU0M6
Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkSnVtcFRh
cmdldCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpu
dW1iZXJPZkp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxv
Y2tHZW5lcmF0b3I6Omxhc3RKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rp
b25Db2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAoSlND
OjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6Ynl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6dGllclVwQ291bnRl
cik6CisgICAgICAgICogd2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRzLmg6CisgICAgICAgICogd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6YWRkU3dpdGNoKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0xhYmVsPFdhc206OkdlbmVy
YXRvclRyYWl0cz46OnNldExvY2F0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludFRpZXJV
cENvdW50ZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFRpZXJVcENvdW50ZXI6OmFk
ZE9TUkVudHJ5RGF0YUZvckxvb3ApOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFRpZXJVcENv
dW50ZXI6Om9zckVudHJ5RGF0YUZvckxvb3AgY29uc3QgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbUxMSW50VGllclVwQ291bnRlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFRpZXJV
cENvdW50ZXI6OkxMSW50VGllclVwQ291bnRlcik6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OldBU01fU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNsb3dfcGF0aF93YXNtX3BvcGNvdW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwpOgorICAgICAgICAqIHdhc20vV2FzbVNs
b3dQYXRocy5oOgorCiAyMDIyLTAzLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FwcGxlV2luXSBTdGFydCB1c2luZyBWaXN1YWwgU3R1
ZGlvIDIwMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKaW5kZXggNzVhNDdiY2U1YzEwNGVkNzlkNjczOWU5OGRlYTQ4YWRi
NGVkMTYyMS4uYjgyMmJiNGVmOGYxNmYzYWQ3YTliZjRiN2U5NmNjMTg3Zjc3MTI3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKQEAgLTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIERFRklORV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsKIAotQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGJsb2NrSW5kZXgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGNvZGVUcmFpdHM+CitCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrKGNvbnN0IHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6UmVmJiBpbnN0
cnVjdGlvbiwgdW5zaWduZWQgYmxvY2tJbmRleCkKICAgICA6IG1fbGVhZGVyT2Zmc2V0KGluc3Ry
dWN0aW9uLm9mZnNldCgpKQogICAgICwgbV90b3RhbExlbmd0aCgwKQogICAgICwgbV9pbmRleChi
bG9ja0luZGV4KQpAQCAtNDIsMjYgKzQzLDMwIEBAIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uCiAg
ICAgYWRkTGVuZ3RoKGluc3RydWN0aW9uLT5zaXplKCkpOwogfQogCi1CeXRlY29kZUJhc2ljQmxv
Y2s6OkJ5dGVjb2RlQmFzaWNCbG9jayhCeXRlY29kZUJhc2ljQmxvY2s6OlNwZWNpYWxCbG9ja1R5
cGUgYmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0luZGV4KQotICAgIDogbV9sZWFkZXJPZmZzZXQo
YmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayA/IDAgOiBVSU5UX01B
WCkKLSAgICAsIG1fdG90YWxMZW5ndGgoYmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazo6
RW50cnlCbG9jayA/IDAgOiBVSU5UX01BWCkKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0
cz4KK0J5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpCeXRlY29kZUJhc2ljQmxvY2so
dHlwZW5hbWUgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OlNwZWNpYWxCbG9ja1R5
cGUgYmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0luZGV4KQorICAgIDogbV9sZWFkZXJPZmZzZXQo
YmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpFbnRyeUJsb2Nr
ID8gMCA6IFVJTlRfTUFYKQorICAgICwgbV90b3RhbExlbmd0aChibG9ja1R5cGUgPT0gQnl0ZWNv
ZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2sgPyAwIDogVUlOVF9NQVgpCiAg
ICAgLCBtX2luZGV4KGJsb2NrSW5kZXgpCiB7CiB9CiAKLXZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjphZGRMZW5ndGgodW5zaWduZWQgYnl0ZWNvZGVMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGNvZGVUcmFpdHM+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjphZGRM
ZW5ndGgodW5zaWduZWQgYnl0ZWNvZGVMZW5ndGgpCiB7CiAgICAgbV9kZWx0YS5hcHBlbmQoYnl0
ZWNvZGVMZW5ndGgpOwogICAgIG1fdG90YWxMZW5ndGggKz0gYnl0ZWNvZGVMZW5ndGg7CiB9CiAK
LXZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpzaHJpbmtUb0ZpdCgpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGNvZGVUcmFpdHM+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+Ojpz
aHJpbmtUb0ZpdCgpCiB7CiAgICAgbV9kZWx0YS5zaHJpbmtUb0ZpdCgpOwogICAgIG1fc3VjY2Vz
c29ycy5zaHJpbmtUb0ZpdCgpOwogfQogCi1zdGF0aWMgYm9vbCBpc0p1bXBUYXJnZXQoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4m
IGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3RlbXBsYXRlPHR5cGVuYW1l
IE9wY29kZVRyYWl0cz4KK3N0YXRpYyBib29sIGlzSnVtcFRhcmdldCh0eXBlbmFtZSBPcGNvZGVU
cmFpdHM6Ok9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dHlwZW5hbWUgQnl0ZWNvZGVC
YXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46Okluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0LCAz
Mj4mIGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfY2F0Y2gpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjksMTQgKzc0LDE1
IEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVj
dG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJj
aChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQp
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUcmFpdHM+CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBCbG9jaz4KLWF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Js
b2NrVmVjdG9yCithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+Ojpjb21wdXRl
SW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGluc3Ry
dWN0aW9ucykgLT4gQmFzaWNCbG9ja1ZlY3RvcgogewogICAgIEJhc2ljQmxvY2tWZWN0b3IgYmFz
aWNCbG9ja3M7Ci0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiBqdW1w
VGFyZ2V0czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZz
ZXQsIDMyPiBqdW1wVGFyZ2V0czsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zLCBqdW1wVGFyZ2V0cyk7CiAKLSAgICBhdXRvIGxpbmtCbG9ja3Mg
PSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayYgZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrJiB0bykg
eworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz4mIGZyb20sIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiB0bykgewogICAg
ICAgICBmcm9tLmFkZFN1Y2Nlc3Nvcih0byk7CiAgICAgfTsKIApAQCAtODUsMjUgKzkxLDI1IEBA
IGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFj
aXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwogICAgICAgICB7CiAgICAgICAgICAgICAvLyBF
bnRyeSBibG9jay4KLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChC
eXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CisgICAg
ICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoQnl0ZWNvZGVCYXNpY0Jsb2Nr
PE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAg
ICAgICAvLyBGaXJzdCBibG9jay4KLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFu
ZEFwcGVuZChCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUo
KSk7CisgICAgICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoQnl0ZWNvZGVC
YXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7
CiAgICAgICAgICAgICBsaW5rQmxvY2tzKGJhc2ljQmxvY2tzWzBdLCBiYXNpY0Jsb2Nrc1sxXSk7
CiAgICAgICAgIH0KIAotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSAmYmFz
aWNCbG9ja3MubGFzdCgpOwotICAgICAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikgLT4gQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiB7CisgICAgICAgIGF1dG8qIGN1cnJlbnQgPSAmYmFzaWNCbG9ja3MubGFzdCgpOworICAgICAg
ICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChjb25zdCB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVh
bVR5cGU6OlJlZiYgaW5zdHJ1Y3Rpb24pIC0+IEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFp
dHM+KiB7CiAgICAgICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoaW5zdHJ1
Y3Rpb24sIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gJmJhc2ljQmxv
Y2tzLmxhc3QoKTsKICAgICAgICAgfTsKICAgICAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xl
YWRlciA9IGZhbHNlOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5z
dHJ1Y3Rpb25zKSB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rp
b24ub2Zmc2V0KCk7Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9u
LT5vcGNvZGVJRCgpOworICAgICAgICAgICAgYXV0byBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5v
cGNvZGVJRCgpOwogCiAgICAgICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwogICAg
ICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1wIHRhcmdldCwgdGhl
biBpdCdzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KLSAgICAgICAgICAgIGlm
IChuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciB8fCBpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBU
YXJnZXRzLCBieXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAgICAgIGlmIChuZXh0SW5zdHJ1Y3Rp
b25Jc0xlYWRlciB8fCBpc0p1bXBUYXJnZXQ8T3Bjb2RlVHJhaXRzPihvcGNvZGVJRCwganVtcFRh
cmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBhcHBl
bmRCbG9jayhpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwpAQCAt
MTIwLDcgKzEyNiw3IEBAIGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgICAgIGN1cnJl
bnQtPmFkZExlbmd0aChpbnN0cnVjdGlvbi0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICAv
LyBFeGl0IGJsb2NrLgotICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CisgICAgICAg
IGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2Rl
VHJhaXRzPjo6RXhpdEJsb2NrLCBiYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgICAgICBiYXNpY0Js
b2Nrcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBBU1NFUlQoYmFzaWNCbG9ja3MubGFzdCgpLmlz
RXhpdEJsb2NrKCkpOwogICAgIH0KQEAgLTEyOCwxNSArMTM0LDE1IEBAIGF1dG8gQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYKIAogICAgIC8vIExpbmsgYmFzaWMgYmxvY2tzIHRvZ2V0aGVyLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2smIGJsb2NrID0gYmFzaWNCbG9ja3NbaV07CisgICAgICAgIGF1dG8m
IGJsb2NrID0gYmFzaWNCbG9ja3NbaV07CiAKICAgICAgICAgaWYgKGJsb2NrLmlzRW50cnlCbG9j
aygpIHx8IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBib29sIGZhbGxzVGhyb3VnaCA9IHRydWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgdmlz
aXRlZExlbmd0aCA9IDA7IHZpc2l0ZWRMZW5ndGggPCBibG9jay50b3RhbExlbmd0aCgpOykgewot
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBpbnN0cnVjdGlvbiA9IGluc3RydWN0
aW9ucy5hdChibG9jay5sZWFkZXJPZmZzZXQoKSArIHZpc2l0ZWRMZW5ndGgpOwotICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKKyAgICAgICAg
ICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYmxvY2subGVhZGVyT2Zmc2V0
KCkgKyB2aXNpdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gb3Bjb2RlSUQgPSBpbnN0cnVj
dGlvbi0+b3Bjb2RlSUQoKTsKIAogICAgICAgICAgICAgdmlzaXRlZExlbmd0aCArPSBpbnN0cnVj
dGlvbi0+c2l6ZSgpOwogCkBAIC0xNzEsNyArMTc3LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
JgogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBicmFuY2gsIGxpbmsgdG8gdGhlIGJsb2Nr
KHMpIHRoYXQgd2UganVtcCB0by4KICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBpbnN0cnVj
dGlvbi0+c2l6ZSgpID09IGJsb2NrLmxlYWRlck9mZnNldCgpICsgYmxvY2sudG90YWxMZW5ndGgo
KSk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+
IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOworICAgICAgICAgICAgICAgIFZlY3Rvcjx0eXBlbmFt
ZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVk
VG87CiAgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAgICAgICAgICAg
ICAgICAgc2l6ZV90IG51bWJlck9mSnVtcFRhcmdldHMgPSBieXRlY29kZU9mZnNldHNKdW1wZWRU
by5zaXplKCk7CkBAIC0yMDAsNyArMjA2LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNv
bXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAg
ICAgICAvLyBJZiB3ZSBmYWxsIHRocm91Z2ggdGhlbiBsaW5rIHRvIHRoZSBuZXh0IGJsb2NrIGlu
IHByb2dyYW0gb3JkZXIuCiAgICAgICAgIGlmIChmYWxsc1Rocm91Z2gpIHsKICAgICAgICAgICAg
IEFTU0VSVChpICsgMSA8IGJhc2ljQmxvY2tzLnNpemUoKSk7Ci0gICAgICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2smIG5leHRCbG9jayA9IGJhc2ljQmxvY2tzW2kgKyAxXTsKKyAgICAgICAgICAg
IGF1dG8mIG5leHRCbG9jayA9IGJhc2ljQmxvY2tzW2kgKyAxXTsKICAgICAgICAgICAgIGxpbmtC
bG9ja3MoYmxvY2ssIG5leHRCbG9jayk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTQsMTIgKzIy
MCwxNCBAQCBhdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgcmV0dXJuIGJhc2ljQmxvY2tzOwog
fQogCi1hdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZShDb2RlQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucykgLT4gQmFzaWNCbG9ja1Zl
Y3RvcgordGVtcGxhdGU8PgorYXV0byBCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVUcmFpdHM+
Ojpjb21wdXRlKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFt
JiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tWZWN0b3IKIHsKICAgICByZXR1cm4gY29tcHV0
ZUltcGwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpOwogfQogCi1hdXRvIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCit0
ZW1wbGF0ZTw+CithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29kZVRyYWl0cz46OmNvbXB1
dGUoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVj
dGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCiB7CiAgICAgcmV0
dXJuIGNvbXB1dGVJbXBsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBk
MGE4ODJkNTQ2MzIyOTExYzM3ZWVhYmRjMGFmZDMwZjVhZWY3MzRhLi5kNzY0M2QxOWY4MmNkNGM2
MmRiMzZmOGM2YzE1MjRlZGFiYjA2OTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNywyMSArMzcsMjQgQEAgY2xh
c3MgQnl0ZWNvZGVHcmFwaDsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rp
b247Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEluc3RydWN0aW9uOwogCiBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihCeXRlY29kZUJhc2ljQmxvY2spOwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGNvZGVUcmFpdHM+CiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJ5dGVjb2RlQmFzaWNCbG9jayk7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsKICAgICBmcmllbmQgY2xhc3Mg
Qnl0ZWNvZGVHcmFwaDsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNpY0Jsb2NrVmVjdG9yID0gVmVj
dG9yPEJ5dGVjb2RlQmFzaWNCbG9jaywgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3csIDE2LCBCeXRl
Y29kZUJhc2ljQmxvY2tNYWxsb2M+OwotICAgIHN0YXRpY19hc3NlcnQobWF4T3Bjb2RlTGVuZ3Ro
IDw9IFVJTlQ4X01BWCk7CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25UeXBlID0gQmFzZUluc3RydWN0
aW9uPE9wY29kZVRyYWl0cz47CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlID0gSW5z
dHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPjsKKyAgICBzdGF0aWNfYXNzZXJ0KG1heEJ5
dGVjb2RlU3RydWN0TGVuZ3RoIDw9IFVJTlQ4X01BWCk7CiAgICAgZW51bSBTcGVjaWFsQmxvY2tU
eXBlIHsgRW50cnlCbG9jaywgRXhpdEJsb2NrIH07Ci0gICAgaW5saW5lIEJ5dGVjb2RlQmFzaWNC
bG9jayhjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgdW5zaWduZWQgYmxvY2tJbmRleCk7
CisgICAgaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jayhjb25zdCB0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU6OlJlZiYsIHVuc2lnbmVkIGJsb2NrSW5kZXgpOwogICAgIGlubGluZSBCeXRl
Y29kZUJhc2ljQmxvY2soU3BlY2lhbEJsb2NrVHlwZSwgdW5zaWduZWQgYmxvY2tJbmRleCk7Ci0g
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayYmKSA9IGRlZmF1bHQ7Cisg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiYp
ID0gZGVmYXVsdDsKIAogCiAgICAgYm9vbCBpc0VudHJ5QmxvY2soKSB7IHJldHVybiAhbV9sZWFk
ZXJPZmZzZXQgJiYgIW1fdG90YWxMZW5ndGg7IH0KQEAgLTcyLDEyICs3NSwxMiBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgLy8gT25seSBjYWxsZWQgZnJvbSBCeXRlY29kZUdyYXBoLgotICAg
IHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGUoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucyk7Ci0gICAgc3RhdGljIEJhc2ljQmxvY2tWZWN0b3Ig
Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciosIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvbnMpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPiBzdGF0aWMg
QmFzaWNCbG9ja1ZlY3RvciBjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKTsKKyAgICBzdGF0aWMgQmFzaWNCbG9ja1ZlY3Rv
ciBjb21wdXRlKENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlwZSYgaW5zdHJ1
Y3Rpb25zKTsKKyAgICBzdGF0aWMgQmFzaWNCbG9ja1ZlY3RvciBjb21wdXRlKFVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlJiBpbnN0cnVjdGlv
bnMpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPiBzdGF0aWMgQmFzaWNCbG9ja1ZlY3Rv
ciBjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5
cGUmIGluc3RydWN0aW9ucyk7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCi0gICAgdm9pZCBh
ZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaykKKyAgICB2b2lkIGFkZFN1Y2Nl
c3NvcihCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPiYgYmxvY2spCiAgICAgewogICAg
ICAgICBpZiAoIW1fc3VjY2Vzc29ycy5jb250YWlucyhibG9jay5pbmRleCgpKSkKICAgICAgICAg
ICAgIG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2suaW5kZXgoKSk7CkBAIC04NSw3ICs4OCw3IEBA
IHByaXZhdGU6CiAKICAgICBpbmxpbmUgdm9pZCBhZGRMZW5ndGgodW5zaWduZWQpOwogCi0gICAg
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2xlYWRlck9mZnNldDsKKyAgICB0eXBlbmFtZSBJ
bnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBtX2xlYWRlck9mZnNldDsKICAgICB1bnNpZ25l
ZCBtX3RvdGFsTGVuZ3RoOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAKQEAgLTk2LDQgKzk5LDcg
QEAgcHJpdmF0ZToKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAordXNpbmcgSlNCeXRl
Y29kZUJhc2ljQmxvY2sgPSBCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVUcmFpdHM+OwordXNp
bmcgV2FzbUJ5dGVjb2RlQmFzaWNCbG9jayA9IEJ5dGVjb2RlQmFzaWNCbG9jazxXYXNtT3Bjb2Rl
VHJhaXRzPjsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCA1YmY2N2I2MWI2MmJjMTJlMDRj
MmZhN2NhOTM0M2MwYzdhZGU2NzAwLi4wNjFkN2JkMTQyZGI0OWVmMDNjOWYzMDU2ODRlZjcxNjk0
NDI1ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHAKQEAgLTQxLDMxICs0MSwzNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9p
ZCBCeXRlY29kZUR1bXBlckJhc2U6OnByaW50TG9jYXRpb25BbmRPcChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKK3RlbXBsYXRlPHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZT4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9u
U3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25BbmRPcCh0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVh
bVR5cGU6Ok9mZnNldCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApCiB7CiAgICAgbV9jdXJyZW50
TG9jYXRpb24gPSBsb2NhdGlvbjsKICAgICBtX291dC5wcmludGYoIlslNHVdICUtMThzICIsIGxv
Y2F0aW9uLCBvcCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoVmly
dHVhbFJlZ2lzdGVyIHJlZykKK3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlw
ZT4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OmR1bXBW
YWx1ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewogICAgIG1fb3V0LnByaW50ZigiJXMiLCByZWdp
c3Rlck5hbWUocmVnKS5kYXRhKCkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+Ci12b2lkIEJ5dGVjb2RlRHVt
cGVyQmFzZTo6ZHVtcFZhbHVlKEdlbmVyaWNCb3VuZExhYmVsPFRyYWl0cz4gbGFiZWwpCit2b2lk
IEJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVhbVR5cGU+OjpkdW1wVmFsdWUoR2Vu
ZXJpY0JvdW5kTGFiZWw8VHJhaXRzPiBsYWJlbCkKIHsKICAgICBpbnQgdGFyZ2V0ID0gbGFiZWwu
dGFyZ2V0KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHRhcmdldCA9IG91dE9mTGluZUp1
bXBPZmZzZXQobV9jdXJyZW50TG9jYXRpb24pOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgdGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0ICsgbV9jdXJyZW50TG9jYXRpb247CisgICAgYXV0byB0
YXJnZXRPZmZzZXQgPSB0YXJnZXQgKyBtX2N1cnJlbnRMb2NhdGlvbjsKICAgICBtX291dC5wcmlu
dCh0YXJnZXQsICIoLT4iLCB0YXJnZXRPZmZzZXQsICIpIik7CiB9CiAKLXRlbXBsYXRlIHZvaWQg
Qnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8SlNHZW5lcmF0
b3JUcmFpdHM+KTsKK3RlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1Y3Rp
b25TdHJlYW0+OjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8SlNHZW5lcmF0b3JUcmFpdHM+
KTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLXRlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1w
ZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8V2FzbTo6R2VuZXJhdG9yVHJhaXRz
Pik7Cit0ZW1wbGF0ZSB2b2lkIEJ5dGVjb2RlRHVtcGVyQmFzZTxXYXNtSW5zdHJ1Y3Rpb25TdHJl
YW0+OjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8V2FzbTo6R2VuZXJhdG9yVHJhaXRzPik7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4K
QEAgLTc4LDcgKzgxLDcgQEAgQ1N0cmluZyBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnJlZ2lzdGVy
TmFtZShWaXJ0dWFsUmVnaXN0ZXIgcikgY29uc3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEJsb2Nr
PgotaW50IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6b3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkgY29uc3QKK2ludCBCeXRlY29kZUR1bXBlcjxCbG9j
az46Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IG9mZnNldCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ibG9jay0+b3V0T2ZMaW5lSnVtcE9m
ZnNldChvZmZzZXQpOwogfQpAQCAtOTEsMTQgKzk0LDE0IEBAIENTdHJpbmcgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+Ojpjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5
dGVjb2RlKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01h
cCYpCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKGNvbnN0IHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJikKIHsK
ICAgICA6OkpTQzo6ZHVtcEJ5dGVjb2RlKHRoaXMsIGl0Lm9mZnNldCgpLCBpdC5wdHIoKSk7CiAg
ICAgdGhpcy0+bV9vdXQucHJpbnQoIlxuIik7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgot
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShCbG9jayogYmxvY2ssIFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJ
Q1N0YXR1c01hcCYgc3RhdHVzTWFwKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZShCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAp
CiB7CiAgICAgQnl0ZWNvZGVEdW1wZXIgZHVtcGVyKGJsb2NrLCBvdXQpOwogICAgIGR1bXBlci5k
dW1wQnl0ZWNvZGUoaXQsIHN0YXR1c01hcCk7CkBAIC0yMTAsNyArMjEzLDcgQEAgdm9pZCBDb2Rl
QmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEJsb2NrPgotc3RhdGljIHZvaWQgZHVtcEhlYWRlcihC
bG9jayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFByaW50
U3RyZWFtJiBvdXQpCitzdGF0aWMgdm9pZCBkdW1wSGVhZGVyKEJsb2NrKiBibG9jaywgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0KQogewog
ICAgIHNpemVfdCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKICAgICBzaXplX3Qgd2lkZTE2SW5zdHJ1
Y3Rpb25Db3VudCA9IDA7CkBAIC0yNTIsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgZHVtcEZvb3Rl
cihEdW1wZXImIGR1bXBlcikKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIENvZGVC
bG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsb2NrKiBibG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
SUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKK3ZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBp
bnN0cnVjdGlvbnMsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNN
YXApCiB7CiAgICAgZHVtcEhlYWRlcihibG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogCkBAIC0y
NjYsNyArMjY5LDcgQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
bG9jayhCbG9jayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3QKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgQmxvY2s+Ci12b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBo
KEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0
ZWNvZGVHcmFwaCYgZ3JhcGgsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBp
Y1N0YXR1c01hcCkKK3ZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wR3Jh
cGgoQmxvY2sqIGJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMs
IEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01h
cCYgaWNTdGF0dXNNYXApCiB7CiAgICAgZHVtcEhlYWRlcihibG9jaywgaW5zdHJ1Y3Rpb25zLCBv
dXQpOwogCkBAIC0yODUsNyArMjg4LDcgQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBHcmFwaChCbG9jayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3QKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IGdyYXBo
KSB7CisgICAgZm9yIChhdXRvJiBibG9jayA6IGdyYXBoKSB7CiAgICAgICAgIGlmIChibG9jay5p
c0VudHJ5QmxvY2soKSB8fCBibG9jay5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTMxNyw2ICszMjAsOCBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEdyYXBoKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdAogICAgIG91
dC5wcmludGYoIlxuIik7CiB9CiAKK3RlbXBsYXRlIGNsYXNzIEJ5dGVjb2RlRHVtcGVyQmFzZTxK
U0luc3RydWN0aW9uU3RyZWFtPjsKK3RlbXBsYXRlIGNsYXNzIEJ5dGVjb2RlRHVtcGVyQmFzZTxX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW0+OwogdGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1wZXI8Q29k
ZUJsb2NrPjsKIHRlbXBsYXRlIGNsYXNzIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPFVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yPjsKIHRlbXBsYXRlIGNsYXNzIENvZGVCbG9ja0J5dGVjb2RlRHVt
cGVyPENvZGVCbG9jaz47CkBAIC0zMzEsNyArMzM2LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjo6
ZHVtcEJsb2NrKEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiBibG9jaywgY29uc3QgTW9kdWxl
SW4KICAgICBzaXplX3Qgd2lkZTE2SW5zdHJ1Y3Rpb25Db3VudCA9IDA7CiAgICAgc2l6ZV90IHdp
ZGUzMkluc3RydWN0aW9uQ291bnQgPSAwOwogCi0gICAgZm9yIChhdXRvIGl0ID0gYmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5lbmQoKTsg
aXQgKz0gaXQtPnNpemU8V2FzbU9wY29kZVRyYWl0cz4oKSkgeworICAgIGZvciAoYXV0byBpdCA9
IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1Y3Rpb25z
KCkuZW5kKCk7IGl0ICs9IGl0LT5zaXplKCkpIHsKICAgICAgICAgaWYgKGl0LT5pc1dpZGUxNigp
KQogICAgICAgICAgICAgKyt3aWRlMTZJbnN0cnVjdGlvbkNvdW50OwogICAgICAgICBlbHNlIGlm
IChpdC0+aXNXaWRlMzIoKSkKQEAgLTM1OSw3ICszNjQsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVy
OjpkdW1wQmxvY2soRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBjb25zdCBNb2R1
bGVJbgogICAgICAgICBibG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkpOwogCiAgICAgQnl0ZWNvZGVE
dW1wZXIgZHVtcGVyKGJsb2NrLCBvdXQpOwotICAgIGZvciAoYXV0byBpdCA9IGJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1Y3Rpb25zKCkuZW5kKCk7IGl0
ICs9IGl0LT5zaXplPFdhc21PcGNvZGVUcmFpdHM+KCkpIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBi
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgaXQgIT0gYmxvY2stPmluc3RydWN0aW9ucygp
LmVuZCgpOyBpdCArPSBpdC0+c2l6ZSgpKSB7CiAgICAgICAgIGR1bXBXYXNtKCZkdW1wZXIsIGl0
Lm9mZnNldCgpLCBpdC5wdHIoKSk7CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9CkBA
IC00MTYsNiArNDIxLDE5IEBAIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6OmZvcm1hdENvbnN0YW50
KFR5cGUgdHlwZSwgdWludDY0X3QgY29uc3RhbnQpIGNvbnN0CiAgICAgfQogfQogCitDU3RyaW5n
IEJ5dGVjb2RlRHVtcGVyOjpyZWdpc3Rlck5hbWUoVmlydHVhbFJlZ2lzdGVyIHIpIGNvbnN0Cit7
CisgICAgaWYgKHIuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4gY29uc3RhbnROYW1lKHIp
OworCisgICAgcmV0dXJuIHRvQ1N0cmluZyhyKTsKK30KKworaW50IEJ5dGVjb2RlRHVtcGVyOjpv
dXRPZkxpbmVKdW1wT2Zmc2V0KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IG9mZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+b3V0T2ZMaW5lSnVtcE9mZnNl
dChvZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5oCmluZGV4IDIxNmU2ZTY3ZWEwZDJkYzdkOTNhYTQ1MTI4ZTlhMDYyZDNkNjNiOWIu
LjVkZTE1ZThjY2EyMjRkMjYwMjlmMGJhNGRhN2ZlYzVhMGJmOWMxMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCkBAIC0yNiw5ICsyNiwx
MSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yQmFzZS5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5m
by5oIgogI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJJbnN0cnVjdGlvblN0cmVhbS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAjaW5jbHVkZSAiV2FzbU9wcy5oIgpAQCAtMzcsMTUgKzM5LDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUdyYXBoOwogCi1zdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci0K
K3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZT4KIGNsYXNzIEJ5dGVjb2Rl
RHVtcGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Qnl0ZWNvZGVEdW1wZXJCYXNlKCkK
ICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBwcmludExvY2F0aW9uQW5kT3AoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApOworICAgIHZvaWQgcHJpbnRM
b2NhdGlvbkFuZE9wKHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IGxvY2F0
aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZv
aWQgZHVtcE9wZXJhbmQoY29uc3QgY2hhciogb3BlcmFuZE5hbWUsIFQgb3BlcmFuZCwgYm9vbCBp
c0ZpcnN0ID0gZmFsc2UpCkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgQ1N0cmluZyByZWdpc3Rlck5hbWUoVmlydHVhbFJlZ2lzdGVyKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNl
dCh0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCkgY29uc3QgPSAwOwogCiAg
ICAgQnl0ZWNvZGVEdW1wZXJCYXNlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIDogbV9vdXQo
b3V0KQpAQCAtNzUsMTMgKzc2LDEzIEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICBQcmludFN0
cmVhbSYgbV9vdXQ7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2N1cnJlbnRMb2Nh
dGlvbiB7IDAgfTsKKyAgICB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBt
X2N1cnJlbnRMb2NhdGlvbiB7IDAgfTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotY2xh
c3MgQnl0ZWNvZGVEdW1wZXIgOiBwdWJsaWMgQnl0ZWNvZGVEdW1wZXJCYXNlIHsKK2NsYXNzIEJ5
dGVjb2RlRHVtcGVyIDogcHVibGljIEJ5dGVjb2RlRHVtcGVyQmFzZTxKU0luc3RydWN0aW9uU3Ry
ZWFtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJ5dGVjb2RlKEJsb2NrKiwgUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElD
U3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRlY29k
ZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAgICAgQnl0ZWNv
ZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0KQogICAgICAgICA6IEJ5dGVj
b2RlRHVtcGVyQmFzZShvdXQpCkBAIC05NCwxMCArOTUsMTAgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIEJsb2NrKiBibG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2s7IH0KIAotICAgIHZv
aWQgZHVtcEJ5dGVjb2RlKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJ
Q1N0YXR1c01hcCYpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICBDU3RyaW5nIHJlZ2lz
dGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBvdXRPZkxp
bmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdCBvdmVy
cmlkZTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgQ1N0cmluZyBj
b25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyKSBjb25zdDsKQEAgLTEwOCw4ICsxMDksOCBAQCBw
cml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+CiBjbGFzcyBDb2RlQmxvY2tCeXRlY29kZUR1
bXBlciBmaW5hbCA6IHB1YmxpYyBCeXRlY29kZUR1bXBlcjxCbG9jaz4gewogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGR1bXBCbG9jayhCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7Ci0g
ICAgc3RhdGljIHZvaWQgZHVtcEdyYXBoKEJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0m
LCBCeXRlY29kZUdyYXBoJiwgUHJpbnRTdHJlYW0mIG91dCA9IFdURjo6ZGF0YUZpbGUoKSwgY29u
c3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1
bXBHcmFwaChCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBo
JiwgUHJpbnRTdHJlYW0mIG91dCA9IFdURjo6ZGF0YUZpbGUoKSwgY29uc3QgSUNTdGF0dXNNYXAm
ID0gSUNTdGF0dXNNYXAoKSk7CiAKICAgICB2b2lkIGR1bXBJZGVudGlmaWVycygpOwogICAgIHZv
aWQgZHVtcENvbnN0YW50cygpOwpAQCAtMTMyLDE2ICsxMzMsMjkgQEAgbmFtZXNwYWNlIFdhc20g
ewogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I7CiBzdHJ1Y3QgTW9kdWxlSW5mb3Jt
YXRpb247CiAKLWNsYXNzIEJ5dGVjb2RlRHVtcGVyIGZpbmFsIDogcHVibGljIEpTQzo6Qnl0ZWNv
ZGVEdW1wZXI8RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I+IHsKK2NsYXNzIEJ5dGVjb2RlRHVt
cGVyIGZpbmFsIDogcHVibGljIEpTQzo6Qnl0ZWNvZGVEdW1wZXJCYXNlPFdhc21JbnN0cnVjdGlv
blN0cmVhbT4gewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGR1bXBCbG9jayhGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvciosIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgUHJpbnRTdHJlYW0m
IG91dCk7CiAKLXByaXZhdGU6Ci0gICAgdXNpbmcgSlNDOjpCeXRlY29kZUR1bXBlcjxGdW5jdGlv
bkNvZGVCbG9ja0dlbmVyYXRvcj46OkJ5dGVjb2RlRHVtcGVyOworICAgIEJ5dGVjb2RlRHVtcGVy
KEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCkKKyAg
ICAgICAgOiBCeXRlY29kZUR1bXBlckJhc2Uob3V0KQorICAgICAgICAsIG1fYmxvY2soYmxvY2sp
CisgICAgeworICAgIH0KIAorICAgIH5CeXRlY29kZUR1bXBlcigpIG92ZXJyaWRlIHsgfQorCisg
ICAgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9jazsgfQorCisgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoVmlydHVhbFJlZ2lzdGVyKSBjb25z
dCBvdmVycmlkZTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgogICAgIHZvaWQgZHVtcENv
bnN0YW50cygpOwotICAgIENTdHJpbmcgY29uc3RhbnROYW1lKFZpcnR1YWxSZWdpc3RlciBpbmRl
eCkgY29uc3QgZmluYWw7CisgICAgQ1N0cmluZyBjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVy
IGluZGV4KSBjb25zdDsKICAgICBDU3RyaW5nIGZvcm1hdENvbnN0YW50KFR5cGUsIHVpbnQ2NF90
KSBjb25zdDsKKworICAgIEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiBtX2Jsb2NrOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggZjYw
MzZiMWI4MmRhMmVmZDhjZGM3M2M4MGY5MTU2MDU1OGNmOWM2Yy4uMDEyNTQ5Njk0MzM0MDE4ZGUz
NTU1MWM3MmJkYzI5MDVmZmVkOWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC00
Miw3ICs0Miw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IFlpZWxkRGF0YSB7Ci0gICAg
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBwb2ludCB7IDAgfTsKKyAgICB0eXBlbmFtZSBKU0lu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgcG9pbnQgeyAwIH07CiAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50IHsgMCB9OwogICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7CiB9OwpAQCAtNTIs
MTQgKzUyLDE0IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxZaWVsZERhdGE+IFlpZWxk
czsKIAogICAgIHN0cnVjdCBHZW5lcmF0b3JGcmFtZURhdGEgewotICAgICAgICBJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IG1fcG9pbnQ7CisgICAgICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBtX3BvaW50OwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9kc3Q7CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
bV9zeW1ib2xUYWJsZTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1faW5pdGlhbFZhbHVlOwog
ICAgIH07CiAKLSAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRv
ciYgYnl0ZWNvZGVHZW5lcmF0b3IsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxv
Y2ssIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBn
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUlu
ZGV4KQorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiBi
eXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywg
SlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCkKICAgICAgICAgOiBtX2J5dGVjb2RlR2VuZXJhdG9yKGJ5dGVjb2RlR2VuZXJhdG9yKQogICAg
ICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAgICAgLCBtX2luc3RydWN0aW9ucyhp
bnN0cnVjdGlvbnMpCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV95aWVsZHM7CiAgICAgfQogCi0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBlbnRlclBvaW50
KCkgY29uc3QKKyAgICB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYgZW50ZXJQb2lu
dCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuYXQobV9lbnRl
clBvaW50KTsKICAgICB9CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9nZW5lcmF0b3JGcmFtZURhdGE7CiAgICAgfQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0CisgICAgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVh
bSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luc3RydWN0
aW9uczsKICAgICB9CkBAIC0xNjcsMTAgKzE2NywxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAg
IEJ5dGVjb2RlR2VuZXJhdG9yJiBtX2J5dGVjb2RlR2VuZXJhdG9yOwotICAgIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgbV9lbnRlclBvaW50OworICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBtX2VudGVyUG9pbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxHZW5lcmF0b3JG
cmFtZURhdGE+IG1fZ2VuZXJhdG9yRnJhbWVEYXRhOwogICAgIFVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yKiBtX2NvZGVCbG9jazsKLSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgbV9pbnN0
cnVjdGlvbnM7CisgICAgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgbV9pbnN0cnVjdGlvbnM7
CiAgICAgQnl0ZWNvZGVHcmFwaCBtX2dyYXBoOwogICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFN0
b3JhZ2U+PiBtX3N0b3JhZ2VzOwogICAgIFlpZWxkcyBtX3lpZWxkczsKQEAgLTE4NSw3ICsxODUs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgcnVuKFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVj
dGlvbnMpCisgICAgdm9pZCBydW4oVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9j
aywgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zKQogICAgIHsKICAgICAg
ICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hp
Y2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCiAgICAgICAgIC8vIFRoaXMg
cHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVlc3Rpb24sICJ3aGlj
aCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCkBAIC0yODYsNyArMjg2
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICByZXdyaXRl
ci5leGVjdXRlKCk7CiB9CiAKLXZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29k
ZUdlbmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJv
bFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4KQordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNv
ZGVCbG9jaywgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xU
YWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCkKIHsKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rlc0Jl
Zm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKSkgewogICAgICAgICBkYXRhTG9nTG4oIkJ5dGVjb2Rl
cyBiZWZvcmUgZ2VuZXJhdG9yaWZpY2F0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCmluZGV4
IDgzMDFkNDA1N2EzM2QyMWJhMzhjMzhjOWM5MjBmNTQ5MzRkYmJiODUuLmM5ZjFhOWU1MTY1YjQx
MDRmZjg5MDcyNDg2MTM2YmE0Zjk5MTIwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0y
OSwxMSArMjksMTYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUdlbmVyYXRv
cjsKLWNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwogY2xhc3MgU3ltYm9sVGFibGU7CiBj
bGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKIGNsYXNzIFN5bWJvbFRhYmxlOwogCi12
b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3ImLCBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvciosIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiwgU3ltYm9sVGFi
bGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOworc3RydWN0IEpTT3Bjb2RlVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBCYXNlSW5zdHJ1Y3Rpb247Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgSW5zdHJ1Y3Rp
b25TdHJlYW1Xcml0ZXI7Cit1c2luZyBKU0luc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPEpT
T3Bjb2RlVHJhaXRzPjsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgPSBJbnN0cnVj
dGlvblN0cmVhbVdyaXRlcjxKU0luc3RydWN0aW9uPjsKKwordm9pZCBwZXJmb3JtR2VuZXJhdG9y
aWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iq
LCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHcmFwaC5oCmluZGV4IGM4ZDRhNTE2MThjNzhjODRhMzNiMWFhM2JmYzI5YWFmNDk4MmE5ZTAu
LmQyODNjYjY1ZWYwMDdhYjgxN2VkNmFjMjY2OGYwNzBlNDM3M2UwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMzQsMzEgKzM0LDMx
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBCeXRlY29kZUJhc2ljQmxvY2s7Ci0KIGNs
YXNzIEJ5dGVjb2RlR3JhcGggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOwogcHVibGljOgotICAgIHVzaW5nIEJh
c2ljQmxvY2tzVmVjdG9yID0gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrVmVjdG9yOwor
ICAgIHVzaW5nIEJhc2ljQmxvY2tUeXBlID0gSlNCeXRlY29kZUJhc2ljQmxvY2s7CisgICAgdXNp
bmcgQmFzaWNCbG9ja3NWZWN0b3IgPSB0eXBlbmFtZSBCYXNpY0Jsb2NrVHlwZTo6QmFzaWNCbG9j
a1ZlY3RvcjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVR5cGUgPSB0eXBlbmFtZSBCYXNp
Y0Jsb2NrVHlwZTo6SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOwogCiAgICAgdHlwZWRlZiBXVEY6Oklu
ZGV4ZWRDb250YWluZXJJdGVyYXRvcjxCeXRlY29kZUdyYXBoPiBpdGVyYXRvcjsKIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgotICAgIGlubGluZSBCeXRlY29kZUdyYXBo
KENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYpOworICAgIGlubGluZSBC
eXRlY29kZUdyYXBoKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUm
KTsKIAogICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9p
dGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCiAgICAgewogICAgICAgICByZXR1
cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2lj
QmxvY2tzLnJlbmQoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KGNvbnN0IEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2ssIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KGNvbnN0IEJhc2ljQmxvY2tUeXBlJiBibG9jaywgdHlwZW5hbWUg
SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgewogICAg
ICAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay5sZWFkZXJPZmZzZXQoKTsKICAgICAg
ICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNl
dCA8IGxlYWRlck9mZnNldCArIGJsb2NrLnRvdGFsTGVuZ3RoKCk7CiAgICAgfQogCi0gICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCisgICAgQmFzaWNCbG9ja1R5cGUqIGZp
bmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQodHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1U
eXBlOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgewogICAgICAgICAvKgogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsK
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICovCiAKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrID0gYXBwcm94aW1h
dGVCaW5hcnlTZWFyY2g8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCB1bnNpZ25lZD4obV9iYXNpY0Jsb2Nr
cywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsg
fSk7CisgICAgICAgIEJhc2ljQmxvY2tUeXBlKiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5h
cnlTZWFyY2g8QmFzaWNCbG9ja1R5cGUsIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2lj
QmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChCYXNpY0Jsb2NrVHlwZSogYmFzaWNC
bG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0KCk7IH0pOwogICAgICAgICAv
LyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KICAgICAgICAgaWYgKGJs
b2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgqYmFzaWNCbG9jaywgYnl0ZWNvZGVPZmZzZXQpKQog
ICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2s7CkBAIC04NiwyMyArODYsMjMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gJmJhc2ljQmxvY2tbMV07CiAgICAgfQogCi0gICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBsZWFkZXJPZmZzZXQpCisgICAgQmFzaWNCbG9ja1R5cGUqIGZpbmRCYXNpY0Js
b2NrV2l0aExlYWRlck9mZnNldCh0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNl
dCBsZWFkZXJPZmZzZXQpCiAgICAgewotICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPEJ5
dGVjb2RlQmFzaWNCbG9jaywgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtdIChCeXRlY29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2sp
IHsgcmV0dXJuIGJhc2ljQmxvY2stPmxlYWRlck9mZnNldCgpOyB9KTsKKyAgICAgICAgcmV0dXJu
IHRyeUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrVHlwZSwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3Ms
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtdIChCYXNpY0Jsb2NrVHlwZSog
YmFzaWNCbG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0KCk7IH0pOwogICAg
IH0KIAogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2ljQmxvY2tzLnNp
emUoKTsgfQotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Qnl0ZWNvZGVHcmFwaCo+KHRoaXMpLT5tX2Jhc2ljQmxvY2tz
W2luZGV4XTsgfQotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgb3BlcmF0b3JbXSh1bnNpZ25lZCBp
bmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisgICAgQmFzaWNCbG9ja1R5cGUmIGF0
KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEJ5dGVjb2RlR3JhcGgq
Pih0aGlzKS0+bV9iYXNpY0Jsb2Nrc1tpbmRleF07IH0KKyAgICBCYXNpY0Jsb2NrVHlwZSYgb3Bl
cmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CiAKICAg
ICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCAwKTsgfQogICAgIGl0
ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBzaXplKCkpOyB9Ci0gICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrJiBmaXJzdCgpIHsgcmV0dXJuIGF0KDApOyB9Ci0gICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrJiBsYXN0KCkgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KKyAgICBCYXNpY0Js
b2NrVHlwZSYgZmlyc3QoKSB7IHJldHVybiBhdCgwKTsgfQorICAgIEJhc2ljQmxvY2tUeXBlJiBs
YXN0KCkgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KIAogCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENvZGVCbG9ja1R5cGU+Ci0gICAgdm9pZCBkdW1wKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9j
aywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8T3BlcmFuZHM8U3BlY3VsYXRlZFR5cGU+Pj4gc3BlY3VsYXRpb25BdEhlYWQsIFByaW50
U3RyZWFtJiBwcmludGVyID0gV1RGOjpkYXRhRmlsZSgpKQorICAgIHZvaWQgZHVtcChDb2RlQmxv
Y2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlwZSYgaW5zdHJ1Y3Rp
b25zLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxPcGVyYW5kczxTcGVjdWxhdGVkVHlwZT4+PiBzcGVj
dWxhdGlvbkF0SGVhZCwgUHJpbnRTdHJlYW0mIHByaW50ZXIgPSBXVEY6OmRhdGFGaWxlKCkpCiAg
ICAgewogICAgICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2tUeXBlPjo6ZHVt
cEdyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCAqdGhpcywgc3BlY3VsYXRpb25BdEhlYWQs
IHByaW50ZXIpOwogICAgIH0KQEAgLTExMyw4ICsxMTMsOCBAQCBwcml2YXRlOgogCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci1CeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBo
KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucykKLSAgICA6IG1fYmFzaWNCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKSkKK0J5dGVjb2RlR3JhcGg6OkJ5dGVjb2RlR3JhcGgo
Q29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGlu
c3RydWN0aW9ucykKKyAgICA6IG1fYmFzaWNCbG9ja3MoQmFzaWNCbG9ja1R5cGU6OmNvbXB1dGUo
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpKQogewogICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNp
emUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IGU4NmNlMTg3NzEwNzU4ZjY4M2Ex
MjdjODlkMTYyYjY1ZmI0NDVjZWUuLjIwN2U0NjI3MzY3OGI5MTIzZmJiODA2N2NmODIyNTFhMGI2
MDJmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgc3RkOjp1
bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVGdWxsTGl2ZW4KICAgICBzaXplX3Qgc2l6ZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpOwogICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxGdWxsQnl0ZWNvZGVM
aXZlbmVzcz4oc2l6ZSk7CiAKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBt
X2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgIGZvciAoYXV0byYgYmxv
Y2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAo
YmxvY2suaXNFbnRyeUJsb2NrKCkgfHwgYmxvY2suaXNFeGl0QmxvY2soKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBvdXQgPSBibG9jay5vdXQoKTsKIAogICAg
ICAgICBhdXRvIHVzZSA9IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKQEAgLTk2LDkgKzk2LDkg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKENvZGVCbG9jayog
Y29kZUJsb2NrKQogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZCbG9ja3MgPSBtX2dyYXBoLnNpemUo
KTsKICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gcHJlZGVjZXNzb3JzKG51bWJlck9mQmxvY2tz
KTsKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBtX2dyYXBoKQorICAgIGZv
ciAoYXV0byYgYmxvY2sgOiBtX2dyYXBoKQogICAgICAgICBwcmVkZWNlc3NvcnNbYmxvY2suaW5k
ZXgoKV0ucmVzaXplKG51bWJlck9mQmxvY2tzKTsKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9j
ayYgYmxvY2sgOiBtX2dyYXBoKSB7CisgICAgZm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpIHsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWNjZXNzb3JJbmRleCA6IGJsb2NrLnN1Y2Nlc3NvcnMo
KSkgewogICAgICAgICAgICAgdW5zaWduZWQgYmxvY2tJbmRleCA9IGJsb2NrLmluZGV4KCk7CiAg
ICAgICAgICAgICBwcmVkZWNlc3NvcnNbc3VjY2Vzc29ySW5kZXhdW2Jsb2NrSW5kZXhdID0gdHJ1
ZTsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVt
cFJlc3VsdHMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIH0KICAgICB9OwogCi0gICAg
Zm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrIDogbV9ncmFwaCkgeworICAgIGZvciAoYXV0
byYgYmxvY2sgOiBtX2dyYXBoKSB7CiAgICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2lj
IGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgJmJsb2NrLCBi
bG9jay5sZWFkZXJPZmZzZXQoKSwgYmxvY2sudG90YWxMZW5ndGgoKSk7CiAKICAgICAgICAgZGF0
YUxvZ0YoIlByZWRlY2Vzc29yczoiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBlNTA5NDc1YTk5
YjFlZGU5NGFhOTIyOGE5NTU3ODYzYTdmYWE1MjJkLi44MTY5MmFlMzQ3OGYxNzMzZGFjZjQ0YWIz
MGRhZGFjN2E1ZDk5NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC01MSwyMyArNTEsMjMgQEAg
ZW51bSBjbGFzcyBMaXZlbmVzc0NhbGN1bGF0aW9uUG9pbnQgOiB1aW50OF90IHsKIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbiB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBz
dGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3Im
KTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlw
ZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJ
bmRleCwgY29uc3QgVXNlRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9j
a1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRl
Y29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kbGVyKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBVc2VG
dW5jdG9yJik7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNl
cHRpb25IYW5kbGVyKENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwg
Qnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotICAg
IHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZihDb2RlQmxvY2tUeXBlKiwgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29u
c3QgRGVmRnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleERl
ZihDb2RlQmxvY2tUeXBlKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3Jh
cGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9yJik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZG
dW5jdG9yPgotICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tU
eXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJ
bmRleCwgY29uc3QgVXNlRnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKKyAgICBzdGF0aWMg
dm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVu
Y3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVC
bG9ja1R5cGU+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2tU
eXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJ
bmRleCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNv
ZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIG91dCk7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci0gICAg
c3RhdGljIGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2tU
eXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlQmFzaWNC
bG9jayYsIEJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCk7CisgICAgc3RhdGlj
IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiwg
Y29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEpTQnl0ZWNvZGVCYXNpY0Jsb2Nr
JiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4KLSAgICBzdGF0
aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9ja1R5cGUqLCBjb25z
dCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrJik7Cisg
ICAgc3RhdGljIGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2tUeXBl
KiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEpTQnl0ZWNvZGVCYXNpY0Js
b2NrJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJ
bnN0cnVjdGlvbnM+CiAgICAgc3RhdGljIEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRJ
bnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVH
cmFwaCYsIEJ5dGVjb2RlSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5k
ZXggNjQ4YzRiNWU5NjMwODUxZDg5ODE3MWQxZDA3NzU2NjI0ZWE2NTU1Yy4uNTY3NjRjZTYxZWYw
ZDQ4NGM4YjNhNTVjNDZhZmE0ZmZiMWMyODAyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCkBAIC01OSw3ICs1OSw3IEBAIGlubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhEZWYoQ29kZUJsb2NrVHlw
ZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRl
Y29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9y
JiBkZWYpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVy
Qnl0ZWNvZGVJbmRleERlZihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAgIGF1dG8qIGluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleCgKQEAgLTcxLDcgKzcxLDcgQEAgaW5saW5lIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhEZWYoQ29kZUJs
b2NrVHlwZSoKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUg
VXNlRnVuY3Rvcj4KLWlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3Rl
cE92ZXJCeXRlY29kZUluZGV4VXNlKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5z
dHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYgdXNlKQoraW5saW5lIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJs
b2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVz
ZUZ1bmN0b3ImIHVzZSkKIHsKICAgICBhdXRvKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5h
dChieXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgo
CkBAIC04MywxMiArODMsMTIgQEAgaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSoKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4KLWlubGluZSB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNl
SW5FeGNlcHRpb25IYW5kbGVyKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVu
ZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxl
cihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBV
c2VGdW5jdG9yJiB1c2UpCiB7Ci0gICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxl
ciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAorICAgIC8vIElmIHdlIGhh
dmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9m
IHRoZQogICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRo
ZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBCeXRlY29kZUluZGV4LgogICAgIGlmIChhdXRv
KiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KSkgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBo
LmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAg
ICBhdXRvKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZz
ZXQoaGFuZGxlci0+dGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CiAgICAg
ICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CiAgICAgfQpAQCAtOTcs
NyArOTcsNyBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBP
dmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZAogLy8gU2ltcGxpZmllZCBpbnRlcmZh
Y2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0
aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2Vz
LgogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvciwg
dHlwZW5hbWUgRGVmRnVuY3Rvcj4KLWlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdh
dGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgs
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRp
b246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0
IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgs
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGVzIHRo
ZSBCeXRlY29kZUluZGV4IGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3Qg
dXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2lj
YWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYg
dGhlIHNhbWUKQEAgLTEyMCw3ICsxMjAsNyBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiBjbwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVH
cmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYg
b3V0KQoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlcklu
c3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgYXV0byBudW1iZXJPZkNo
ZWNrcG9pbnRzID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLT5udW1iZXJPZkNoZWNr
cG9pbnRzKCk7CiAgICAgZm9yIChDaGVja3BvaW50IGNoZWNrcG9pbnQgPSBudW1iZXJPZkNoZWNr
cG9pbnRzOyBjaGVja3BvaW50LS07KSB7CkBAIC0xMzgsNyArMTM4LDcgQEAgaW5saW5lIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9j
a1R5cGUqIGNvZGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb25zPgotaW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9u
Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdy
YXBoLCBCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBCeXRlY29kZUluZGV4IHRhcmdldEluZGV4
LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlw
ZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVH
cmFwaCYgZ3JhcGgsIEpTQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaywgQnl0ZWNvZGVJbmRleCB0
YXJnZXRJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewogICAgIEFTU0VSVCghYmxvY2su
aXNFeGl0QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay5pc0VudHJ5QmxvY2soKSk7CkBAIC0x
NTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGUKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgotaW5saW5lIGJvb2wg
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2Nr
KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlv
bnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrKQoraW5s
aW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJsb2NrKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBp
bnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBKU0J5dGVjb2RlQmFzaWNCbG9jayYg
YmxvY2spCiB7CiAgICAgaWYgKGJsb2NrLmlzRXhpdEJsb2NrKCkgfHwgYmxvY2suaXNFbnRyeUJs
b2NrKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+CiBpbmxpbmUg
RmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmdldExpdmVuZXNzSW5m
b0F0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
bnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFieXRlY29kZUluZGV4LmNo
ZWNrcG9pbnQoKSwgImdldExpdmVuZXNzSW5mb0F0SW5zdHJ1Y3Rpb24gY2FuJ3QgYmUgdXNlZCB0
byBhc2sgcXVlc3Rpb25zIGFib3V0IGNoZWNrcG9pbnRzIik7Ci0gICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSk7CisgICAgYXV0byogYmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9j
a0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpOwogICAgIEFTU0VSVChi
bG9jayk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCgh
YmxvY2stPmlzRXhpdEJsb2NrKCkpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4KIGlubGluZSB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6cnVuTGl2ZW5lc3NGaXhwb2ludChDb2RlQmxvY2tU
eXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29k
ZUdyYXBoJiBncmFwaCkKIHsKICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IGNvZGVC
bG9jay0+bnVtQ2FsbGVlTG9jYWxzKCk7Ci0gICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJs
b2NrIDogZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogZ3JhcGgpIHsKICAgICAgICAg
YmxvY2suaW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay5vdXQo
KS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay5pbigpLmNsZWFyQWxs
KCk7CkBAIC0xOTIsMTcgKzE5MiwxNyBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OnJ1bkxpdmVuZXNzRml4cG9pbnQoQ29kZUJsb2NrVHlwZSogY29kZQogICAgIH0K
IAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2smIGxhc3RCbG9jayA9
IGdyYXBoLmxhc3QoKTsKKyAgICBhdXRvJiBsYXN0QmxvY2sgPSBncmFwaC5sYXN0KCk7CiAgICAg
bGFzdEJsb2NrLmluKCkuY2xlYXJBbGwoKTsKICAgICBsYXN0QmxvY2sub3V0KCkuY2xlYXJBbGwo
KTsKICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9j
ay5vdXQoKS5udW1CaXRzKCkpOwogICAgIGRvIHsKICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwot
ICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBibG9jayA6IGdyYXBoLmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxs
KCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggOiBibG9jay5zdWNjZXNz
b3JzKCkpIHsKLSAgICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2smIHN1Y2Nlc3NvciA9
IGdyYXBoW2Jsb2NrSW5kZXhdOworICAgICAgICAgICAgICAgIGF1dG8mIHN1Y2Nlc3NvciA9IGdy
YXBoW2Jsb2NrSW5kZXhdOwogICAgICAgICAgICAgICAgIG5ld091dCB8PSBzdWNjZXNzb3IuaW4o
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJsb2NrLm91dCgpID0gbmV3T3V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3Bw
CmluZGV4IDgxMDI2YWIzYzc4NGYxYWMzZTE0NDQwMDFmMzcyYjgyZDRjYWJmN2UuLjRhZDA2MmNi
Yjc2OTI4ODgyNmI3ZmFiZWVjOTEyYjJhNDc0MWNkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0c0luRnJhZ21lbnQodW5z
aWduZWQgZmluYWxPZmZzZXQsIEluc2VydGkKICAgICB9CiB9CiAKLXZvaWQgQnl0ZWNvZGVSZXdy
aXRlcjo6aW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludCBpbnNlcnRpb25Qb2ludCwgSW5jbHVkZUJy
YW5jaCBpbmNsdWRlQnJhbmNoLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYmIHdyaXRlcikKK3Zv
aWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludCBpbnNlcnRpb25Q
b2ludCwgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoLCBKU0luc3RydWN0aW9uU3RyZWFtV3Jp
dGVyJiYgd3JpdGVyKQogewogICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5wb3NpdGlvbiA9PSBQ
b3NpdGlvbjo6QmVmb3JlIHx8IGluc2VydGlvblBvaW50LnBvc2l0aW9uID09IFBvc2l0aW9uOjpB
ZnRlcik7CiAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24gewpAQCAtMTE0LDExICsx
MTQsMTEgQEAgdm9pZCBCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0cygpCiAgICAg
YXV0byBvdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IG1fY29kZUJsb2NrLT5yZXBsYWNlT3V0T2ZMaW5l
SnVtcFRhcmdldHMoKTsKIAogICAgIGludCBvZmZzZXQgPSAwOwotICAgIGZvciAoSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBpID0gMDsgaSA8IG1fd3JpdGVyLnNpemUoKTspIHsKKyAgICBmb3Ig
KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBpID0gMDsgaSA8IG1fd3JpdGVy
LnNpemUoKTspIHsKICAgICAgICAgaW50IGJlZm9yZSA9IDA7CiAgICAgICAgIGludCBhZnRlciA9
IDA7CiAgICAgICAgIGludCByZW1vdmUgPSAwOwotICAgICAgICB3aGlsZSAoY3VycmVudEluc2Vy
dGlvbiAhPSBtX2luc2VydGlvbnMuZW5kKCkgJiYgc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldD4oY3VycmVudEluc2VydGlvbi0+aW5kZXguYnl0ZWNvZGVPZmZzZXQpID09IGkp
IHsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRJbnNlcnRpb24gIT0gbV9pbnNlcnRpb25zLmVuZCgp
ICYmIHN0YXRpY19jYXN0PHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4oY3Vy
cmVudEluc2VydGlvbi0+aW5kZXguYnl0ZWNvZGVPZmZzZXQpID09IGkpIHsKICAgICAgICAgICAg
IGF1dG8gc2l6ZSA9IGN1cnJlbnRJbnNlcnRpb24tPmxlbmd0aCgpOwogICAgICAgICAgICAgaWYg
KGN1cnJlbnRJbnNlcnRpb24tPnR5cGUgPT0gSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUpCiAgICAg
ICAgICAgICAgICAgcmVtb3ZlICs9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaAppbmRleCAwZGNlYmU3OTM5MGI0ZmYwYjVkOGJi
MDJiNTUyZjhmZTI0NmEyZTVhLi41YmRmNzdkMDczNGFlODI4MmRiZTYyNjY0ZDVlMmFlOGE4ZGMw
ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVS
ZXdyaXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJl
d3JpdGVyLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgICAgICBpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0OwogICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKIAotICAgICAgICBJbnNlcnRp
b25Qb2ludChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCwgUG9zaXRpb24gcG9zKQor
ICAgICAgICBJbnNlcnRpb25Qb2ludCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgb2Zmc2V0LCBQb3NpdGlvbiBwb3MpCiAgICAgICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KG9m
ZnNldCkKICAgICAgICAgICAgICwgcG9zaXRpb24ocG9zKQogICAgICAgICB7CkBAIC0xMzIsMTQg
KzEzMiwxNCBAQCBwcml2YXRlOgogICAgICAgICBUeXBlIHR5cGU7CiAgICAgICAgIEluY2x1ZGVC
cmFuY2ggaW5jbHVkZUJyYW5jaDsKICAgICAgICAgc2l6ZV90IHJlbW92ZUxlbmd0aDsKLSAgICAg
ICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgaW5zdHJ1Y3Rpb25zOworICAgICAgICBKU0luc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyIGluc3RydWN0aW9uczsKICAgICB9OwogCiBwdWJsaWM6CiAgICAg
Y2xhc3MgRnJhZ21lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYWdtZW50KTsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEZyYWdtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdl
bmVyYXRvciwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlciwgSW5jbHVkZUJyYW5jaCYg
aW5jbHVkZUJyYW5jaCkKKyAgICAgICAgRnJhZ21lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVj
b2RlR2VuZXJhdG9yLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIsIEluY2x1ZGVC
cmFuY2gmIGluY2x1ZGVCcmFuY2gpCiAgICAgICAgICAgICA6IG1fYnl0ZWNvZGVHZW5lcmF0b3Io
Ynl0ZWNvZGVHZW5lcmF0b3IpCiAgICAgICAgICAgICAsIG1fd3JpdGVyKHdyaXRlcikKICAgICAg
ICAgICAgICwgbV9pbmNsdWRlQnJhbmNoKGluY2x1ZGVCcmFuY2gpCkBAIC0xNzEsMTEgKzE3MSwx
MSBAQCBwdWJsaWM6CiAKICAgICBwcml2YXRlOgogICAgICAgICBCeXRlY29kZUdlbmVyYXRvciYg
bV9ieXRlY29kZUdlbmVyYXRvcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1f
d3JpdGVyOworICAgICAgICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX3dyaXRlcjsKICAg
ICAgICAgSW5jbHVkZUJyYW5jaCYgbV9pbmNsdWRlQnJhbmNoOwogICAgIH07CiAKLSAgICBCeXRl
Y29kZVJld3JpdGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgQnl0ZWNv
ZGVHcmFwaCYgZ3JhcGgsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIpCisgICAgQnl0ZWNvZGVSZXdyaXRlcihCeXRl
Y29kZUdlbmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFt
V3JpdGVyJiB3cml0ZXIpCiAgICAgICAgIDogbV9ieXRlY29kZUdlbmVyYXRvcihieXRlY29kZUdl
bmVyYXRvcikKICAgICAgICAgLCBtX2dyYXBoKGdyYXBoKQogICAgICAgICAsIG1fY29kZUJsb2Nr
KGNvZGVCbG9jaykKQEAgLTE4NCwxMCArMTg0LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAgICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlv
bikKKyAgICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uKQogICAgIHsK
ICAgICAgICAgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoID0gSW5jbHVkZUJyYW5jaDo6Tm87
Ci0gICAgICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyIHdyaXRlcjsKKyAgICAgICAgSlNJbnN0
cnVjdGlvblN0cmVhbVdyaXRlciB3cml0ZXI7CiAgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1f
Ynl0ZWNvZGVHZW5lcmF0b3IsIHdyaXRlciwgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0
aW9uKGZyYWdtZW50KTsKICAgICAgICAgZnJhZ21lbnQuYWxpZ24oKTsKQEAgLTE5NSwxMCArMTk1
LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAg
ICB2b2lkIGluc2VydEZyYWdtZW50QWZ0ZXIoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYg
aW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uLCBzaXplX3QgYWxpZ25Db25ncnVlbnQgPSAw
KQorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcihjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbiwgc2l6ZV90IGFs
aWduQ29uZ3J1ZW50ID0gMCkKICAgICB7CiAgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJy
YW5jaCA9IEluY2x1ZGVCcmFuY2g6Ok5vOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
ciB3cml0ZXI7CisgICAgICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgd3JpdGVyOwogICAg
ICAgICBGcmFnbWVudCBmcmFnbWVudChtX2J5dGVjb2RlR2VuZXJhdG9yLCB3cml0ZXIsIGluY2x1
ZGVCcmFuY2gpOwogICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7CiAgICAgICAgIGZyYWdtZW50
LmFsaWduKGFsaWduQ29uZ3J1ZW50KTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRnVuY3Rpb24+Ci0gICAgdm9pZCByZXBsYWNlQnl0ZWNv
ZGVXaXRoRnJhZ21lbnQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24s
IEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHZvaWQgcmVwbGFjZUJ5dGVjb2RlV2l0aEZyYWdtZW50
KGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1
bmN0aW9uIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBw
cmVzZXJ2ZXMgdGhlIGFsaWdubWVudCBvZiB0aGUgc3Vic2VxdWVudCBieXRlY29kZSAob24gdGFy
Z2V0cyB3aGVyZSB0aGlzIG1hdHRlcnMpCiAgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5z
ZXJ0aW9uIHsgSW5zZXJ0aW9uUG9pbnQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCksIFBvc2l0aW9uOjpP
cmlnaW5hbEJ5dGVjb2RlUG9pbnQpLCBJbnNlcnRpb246OlR5cGU6OlJlbW92ZSwgSW5jbHVkZUJy
YW5jaDo6Tm8sIGluc3RydWN0aW9uLT5zaXplKCksIHsgfSB9KTsKQEAgLTIxNywxMiArMjE3LDEy
IEBAIHB1YmxpYzoKIAogICAgIEJ5dGVjb2RlR3JhcGgmIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFw
aDsgfQogCi0gICAgaW50MzJfdCBhZGp1c3RBYnNvbHV0ZU9mZnNldChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGFic29sdXRlT2Zmc2V0KQorICAgIGludDMyX3QgYWRqdXN0QWJzb2x1dGVPZmZz
ZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGFic29sdXRlT2Zmc2V0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkanVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQoMCwg
UG9zaXRpb246OkVudHJ5UG9pbnQpLCBJbnNlcnRpb25Qb2ludChhYnNvbHV0ZU9mZnNldCwgUG9z
aXRpb246OkxhYmVsUG9pbnQpKTsKICAgICB9CiAKLSAgICBpbnQzMl90IGFkanVzdEp1bXBUYXJn
ZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0LCBpbnQz
Ml90IG9yaWdpbmFsSnVtcFRhcmdldCkKKyAgICBpbnQzMl90IGFkanVzdEp1bXBUYXJnZXQodHlw
ZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9yaWdpbmFsQnl0ZWNvZGVPZmZzZXQs
IGludDMyX3Qgb3JpZ2luYWxKdW1wVGFyZ2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkanVz
dEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxCeXRlY29kZU9mZnNldCwgUG9zaXRp
b246OkxhYmVsUG9pbnQpLCBJbnNlcnRpb25Qb2ludChvcmlnaW5hbEp1bXBUYXJnZXQsIFBvc2l0
aW9uOjpMYWJlbFBvaW50KSk7CiAgICAgfQpAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkanVzdEp1bXBUYXJnZXRzKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBpbnNlcnRJ
bXBsKEluc2VydGlvblBvaW50LCBJbmNsdWRlQnJhbmNoLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
ciYmIGZyYWdtZW50KTsKKyAgICB2b2lkIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1
ZGVCcmFuY2gsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImJiBmcmFnbWVudCk7CiAKICAgICBm
cmllbmQgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I7CiAgICAgdm9pZCBhcHBseU1v
ZGlmaWNhdGlvbigpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAgQnl0ZWNvZGVHcmFwaCYgbV9ncmFw
aDsKICAgICBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogbV9jb2RlQmxvY2s7Ci0gICAgSW5z
dHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1fd3JpdGVyOworICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXImIG1fd3JpdGVyOwogICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCmluZGV4IGZiNTZkNGNiYjVjOWU4NzJhOTc0ZjUyNTRlNjFhYjBmMGU5N2ZkZmIuLmQ5
YzcyYjE4ZDlhN2U3ZmMzOGMzMWFmMTM5Y2ZkYTUyYzhkMzRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtNDIsNyArNDIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgVVNFUyBVU0VTX09SX0RFRlMKICNkZWZpbmUg
REVGUyBVU0VTX09SX0RFRlMKIAotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmly
dHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2
b2lkKFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQogewogICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0
ZXIsIGNvbnN0IEluc3RydQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFs
UmVnaXN0ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1w
bCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQ2hl
Y2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0
ZXIpPiYgZnVuY3RvcikKIHsKIAogICAgIGF1dG8gZGVmQXQgPSBbJl0gKENoZWNrcG9pbnQgdGFy
Z2V0LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA3YjUyYTM5MGVjYzUzOGZjYjZiNjFi
NzU0YzA3YmQxMzgzZTc0YmZmLi45ODhlNmMzMDY4OThmMThhNzUzNmVjMmFhMjI3NDlhNmE4OTVi
MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyLCBjb25zdCBJbnN0cnVj
dGlvbiosIENoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rl
cik+Jik7Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQsIGNv
bnN0IEluc3RydWN0aW9uKiwgQ2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmly
dHVhbFJlZ2lzdGVyKT4mKTsKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChW
aXJ0dWFsUmVnaXN0ZXIsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBDaGVja3BvaW50LCBjb25zdCBT
Y29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYpOwordm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkLCBjb25zdCBKU0luc3RydWN0aW9uKiwgQ2hlY2tw
b2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mKTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
K3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlv
bi0+b3Bjb2RlSUQoKTsKICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgKGNvZGVCbG9j
ay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IGNvZGVCbG9jay0+dXNlc0Nh
bGxFdmFsKCkpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW8KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENo
ZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7CiAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbChjb2RlQmxvY2st
Pm51bVZhcnMoKSwgaW5zdHJ1Y3Rpb24sIGNoZWNrcG9pbnQsIHNjb3BlZExhbWJkYTx2b2lkKFZp
cnR1YWxSZWdpc3Rlcik+KGZ1bmN0b3IpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMGU1NzlmOTI5MDNiOGM4ZWE3NzU1NjEzNmQ2ZTUx
NmExZTRjYTZmMi4uYjM3OWM5N2M5ZGU5N2Q3MGZmNGYwOTE3ZDcyMTA2ODZmYmQ0Yjg0OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIzNiw3
ICsyMzYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQp
CiAgICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEdyYXBoKHRoaXMs
IGluc3RydWN0aW9ucygpLCBncmFwaCwgb3V0LCBzdGF0dXNNYXApOwogfQogCi12b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQordm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIEJ5dGVj
b2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGl0LCBzdGF0dXNN
YXApOwogfQpAQCAtNDc0LDEwICs0NzQsMTEgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgYnJlYWs7IFwKICAgICB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5z
dHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKKyAgICBjb25zdCBhdXRvJiBpbnN0cnVj
dGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOwogICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1
Y3Rpb24gOiBpbnN0cnVjdGlvblN0cmVhbSkgewogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwotICAgICAgICBtX2J5dGVjb2RlQ29zdCArPSBvcGNv
ZGVMZW5ndGhzW29wY29kZUlEXTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChPcGNvZGVJRFdpZHRo
QnlTaXplPEpTT3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemUg
PT0gMSk7CisgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURd
ICsgMTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgICAgICBMSU5LKE9wR2V0QnlW
YWwsIHByb2ZpbGUpCiAgICAgICAgIExJTksoT3BHZXRQcml2YXRlTmFtZSwgcHJvZmlsZSkKQEAg
LTIwODAsNyArMjA4MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRl
Y29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgaW50CiAKIGJvb2wgQ29kZUJs
b2NrOjpoYXNPcERlYnVnRm9yTGluZUFuZENvbHVtbih1bnNpZ25lZCBsaW5lLCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBjb2x1bW4pCiB7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CisgICAgY29uc3QgYXV0byYgaW5zdHJ1
Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDog
aW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgaWYgKGl0LT5pczxPcERlYnVnPigpKSB7CiAg
ICAgICAgICAgICBpbnQgdW51c2VkOwpAQCAtMzA3Miw3ICszMDczLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6Om5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCkKICAgICAgICAgcmV0dXJuIHN5bWJvbFRh
YmxlLT5jb250YWlucyhsb2NrZXIsIHVpZCk7CiAgICAgfTsKIAotICAgIGNvbnN0IEluc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOworICAgIGNvbnN0
IGF1dG8mIGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9uU3RyZWFtKSB7CiAgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKQEAgLTMyNjIsOCArMzI2Myw4IEBAIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0
ZSgpCiAgICAgICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgICAgICB9CiAgICAg
fQotICAgICAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0g
PSBpbnN0cnVjdGlvbnMoKTsKKworICAgIGNvbnN0IGF1dG8mIGluc3RydWN0aW9uU3RyZWFtID0g
aW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6IGluc3Ry
dWN0aW9uU3RyZWFtKSB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IGluc3RydWN0aW9uLT5v
cGNvZGVJRCgpOwogICAgICAgICBpZiAoISFiYXNlbGluZUFsdGVybmF0aXZlKCktPmhhbmRsZXJG
b3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpKSkgewpA
QCAtMzMxMSwxMyArMzMxMiwxMyBAQCB2b2lkIENvZGVCbG9jazo6c2V0U3RlcHBpbmdNb2RlKENv
ZGVCbG9jazo6U3RlcHBpbmdNb2RlIG1vZGUpCiAgICAgICAgIGpldHRpc29uKFByb2ZpbGVyOjpK
ZXR0aXNvbkR1ZVRvRGVidWdnZXJTdGVwcGluZyk7CiB9CiAKLWludCBDb2RlQmxvY2s6Om91dE9m
TGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoraW50IENvZGVCbG9jazo6b3V0
T2ZMaW5lSnVtcE9mZnNldChjb25zdCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAgICBpbnQgb2Zm
c2V0ID0gYnl0ZWNvZGVPZmZzZXQocGMpOwogICAgIHJldHVybiBtX3VubGlua2VkQ29kZS0+b3V0
T2ZMaW5lSnVtcE9mZnNldChvZmZzZXQpOwogfQogCi1jb25zdCBJbnN0cnVjdGlvbiogQ29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykKK2NvbnN0IEpT
SW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBKU0luc3Ry
dWN0aW9uKiBwYykKIHsKICAgICBpbnQgb2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQocGMpOwogICAg
IGludCB0YXJnZXQgPSBtX3VubGlua2VkQ29kZS0+b3V0T2ZMaW5lSnVtcE9mZnNldChvZmZzZXQp
OwpAQCAtMzMzNCw3ICszMzM1LDcgQEAgVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnkKICAgICByZXR1
cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4
Lm9mZnNldCgpKS5wdHIoKSk7CiB9CiAKLUJpbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpi
aW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCitCaW5hcnlBcml0
aFByb2ZpbGUqIENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewogICAgIGNhc2Ug
b3BfYWRkOgpAQCAtMzM1Miw3ICszMzUzLDcgQEAgQmluYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxv
Y2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCitVbmFyeUFyaXRoUHJvZmls
ZSogQ29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IHBjKQogewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKICAgICBjYXNlIG9wX25lZ2F0
ZToKQEAgLTMzOTEsOSArMzM5Miw5IEBAIHZvaWQgQ29kZUJsb2NrOjppbnNlcnRCYXNpY0Jsb2Nr
Qm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKQogewogICAgIGlmICghdW5saW5rZWRD
b2RlQmxvY2soKS0+aGFzT3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGNvbnN0IEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQ+JiBieXRlY29kZU9mZnNldHMgPSB1bmxpbmtlZENvZGVCbG9jaygpLT5vcFByb2ZpbGVD
b250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cygpOworICAgIGNvbnN0IEZpeGVkVmVjdG9yPEpTSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJs
b2NrKCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBieXRlY29kZU9mZnNldHMuc2l6ZSgpOyBpIDwg
b2Zmc2V0c0xlbmd0aDsgaSsrKSB7Ci0gICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250
cm9sX2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2Nr
LCBmaW5kaW5nIAorICAgICAgICAvLyBCZWNhdXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93IGlz
IGVtaXR0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBldmVyeSBiYXNpYyBibG9jaywgZmluZGluZwog
ICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMg
dGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMgYmxvY2suCiAgICAgICAgIHNpemVfdCBz
dGFydElkeCA9IGJ5dGVjb2RlT2Zmc2V0c1tpXTsKICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9
IGluc3RydWN0aW9ucygpLmF0KHN0YXJ0SWR4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAppbmRleCA0OTFiYjhlZTA1YjE1OTczZDU5ZGQzNjNhODQwNTY0NWI2
YzJjMWRkLi5jYzdlMmNkZDBiNjM0ODcwZmQ1Y2QyNjM0YTllNTdiMDQ1ZGNiNTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMTUsMTIgKzIxNSwx
MiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBCeXRlY29kZSgpOwogICAgIHZvaWQgZHVtcEJ5
dGVjb2RlKFByaW50U3RyZWFtJik7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFw
JiA9IElDU3RhdHVzTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFw
JiA9IElDU3RhdHVzTWFwKCkpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1
c01hcCgpKTsKIAogICAgIHZvaWQgZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKFByaW50U3RyZWFtJik7
Ci0gICAgdm9pZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlv
biopOwotICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKKyAgICB2b2lkIHByaW50U3Ry
dWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHBy
aW50U3RydWN0dXJlKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgSlNJbnN0
cnVjdGlvbiosIGludCBvcGVyYW5kKTsKIAogICAgIHZvaWQgZHVtcE1hdGhJQ1N0YXRzKCk7CiAK
QEAgLTI4OCwzMiArMjg4LDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxpbmtJbmNvbWluZ1BvbHlt
b3JwaGljQ2FsbChDYWxsRnJhbWUqIGNhbGxlckZyYW1lLCBQb2x5bW9ycGhpY0NhbGxOb2RlKik7
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotICAgIGNvbnN0IEluc3RydWN0aW9uKiBvdXRPZkxp
bmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYyk7Ci0gICAgaW50IG91dE9mTGluZUp1
bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpCisgICAgY29uc3QgSlNJ
bnN0cnVjdGlvbiogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBKU0luc3RydWN0aW9uKiBwYyk7
CisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZS0+b3V0T2ZMaW5l
SnVtcE9mZnNldChvZmZzZXQpOwogICAgIH0KLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChj
b25zdCBJbnN0cnVjdGlvbiogcGMpOwotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAgIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVt
cE9mZnNldChjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ucHRyKCkp
OwogICAgIH0KIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRlY29kZU9mZnNldChjb25zdCBJbnN0
cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKKyAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAgICAgIGNv
bnN0IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYXQoMCkucHRyKCk7
Ci0gICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rp
b25zQmVnaW4pICsgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0aW9uKj4o
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIGluc3RydWN0
aW9ucygpLnNpemUoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJldHVybkFkZHJlc3MgPj0g
aW5zdHJ1Y3Rpb25zQmVnaW4gJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9uc0VuZCk7CiAg
ICAgICAgIHJldHVybiByZXR1cm5BZGRyZXNzIC0gaW5zdHJ1Y3Rpb25zQmVnaW47CiAgICAgfQog
Ci0gICAgaW5saW5lIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleChjb25zdCBJbnN0cnVjdGlv
biogcmV0dXJuQWRkcmVzcykKKyAgICBpbmxpbmUgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgewogICAgICAgICByZXR1
cm4gQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldChyZXR1cm5BZGRyZXNzKSk7CiAgICAgfQog
Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRDb2RlLT5pbnN0cnVjdGlvbnMoKTsgfQotICAgIGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlu
c3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQorICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5pbnN0
cnVjdGlvbnMoKTsgfQorICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0
ZWNvZGVJbmRleCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgp
LnB0cigpOyB9CiAKICAgICBzaXplX3QgcHJlZGljdGVkTWFjaGluZUNvZGVTaXplKCk7CiAKQEAg
LTQyOCw4ICs0MjgsOCBAQCBwdWJsaWM6CiAKICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7CiAgICAgVW5hcnlB
cml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4KTsKLSAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJp
bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICBVbmFyeUFy
aXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBKU0luc3RydWN0aW9uKik7
CiAKICAgICBib29sIGNvdWxkVGFrZVNwZWNpYWxBcml0aEZhc3RDYXNlKEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCmluZGV4IDUxZjFkMDJlMTgyNTU4YzljMjkxMmQ4NDBjNTg4MTA0OGNhODAxZDku
LjUwZDcyYTQ0MWUzMWE4Y2E2MWUwMzMwNDQ0N2Q2NzdjMzU4ZjAxYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBAIHN0
cnVjdCBKU09wY29kZVRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25l
ZCogb3Bjb2RlTGVuZ3RocyA9IDo6SlNDOjpvcGNvZGVMZW5ndGhzOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogY29uc3QqIG9wY29kZU5hbWVzID0gOjpKU0M6Om9wY29kZU5hbWVz
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjaGVja3BvaW50Q291bnRUYWJsZSA9IGJ5dGVj
b2RlQ2hlY2twb2ludENvdW50VGFibGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXpl
IG1heE9wY29kZUlEV2lkdGggPSBtYXhKU09wY29kZUlEV2lkdGg7CiB9OwogCiBzdHJ1Y3QgV2Fz
bU9wY29kZVRyYWl0cyB7CkBAIC01MiwxMiArNTMsMTIgQEAgc3RydWN0IFdhc21PcGNvZGVUcmFp
dHMgewogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMg
PSB3YXNtT3Bjb2RlTGVuZ3RoczsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGNv
bnN0KiBvcGNvZGVOYW1lcyA9IHdhc21PcGNvZGVOYW1lczsKICAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY2hlY2twb2ludENvdW50VGFibGUgPSB3YXNtQ2hlY2twb2ludENvdW50VGFibGU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG1heE9wY29kZUlEV2lkdGggPSBtYXhXYXNt
T3Bjb2RlSURXaWR0aDsKIH07CiAKIAotdGVtcGxhdGU8dHlwZW5hbWUgT3Bjb2RlPgordGVtcGxh
dGU8dHlwZW5hbWUgVHJhaXRzPgogc3RydWN0IEJhc2VJbnN0cnVjdGlvbiB7Ci0KICAgICBzdHJ1
Y3QgTWV0YWRhdGEgeyB9OwogCiBwcm90ZWN0ZWQ6CkBAIC02OCwxMjEgKzY5LDEyNCBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlPE9wY29kZVNpemUgV2lkdGg+CiAgICAgY2xhc3MgSW1wbCB7CiAg
ICAgcHVibGljOgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICAgICAgdHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQ+KG1fb3Bjb2Rl
KTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgVHlwZUJ5U2l6ZTxPcGNvZGVT
aXplOjpOYXJyb3c+Ojp1bnNpZ25lZFR5cGUgbV9vcGNvZGU7CisgICAgICAgIHR5cGVuYW1lIE9w
Y29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBXaWR0aD46Om9wY29kZVR5cGUgbV9vcGNvZGU7CiAg
ICAgfTsKIAogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2Rl
VHJhaXRzPgogICAgIHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgaWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkKLSAgICAgICAgICAgIHJldHVy
biB3aWRlMzI8VHJhaXRzPigpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCk7Ci0gICAgICAg
IGlmIChpc1dpZGUxNjxUcmFpdHM+KCkpCi0gICAgICAgICAgICByZXR1cm4gd2lkZTE2PFRyYWl0
cz4oKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpOwotICAgICAgICByZXR1cm4gbmFycm93
KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKTsKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkp
CisgICAgICAgICAgICByZXR1cm4gd2lkZTMyKCktPm9wY29kZUlEKCk7CisgICAgICAgIGlmIChp
c1dpZGUxNigpKQorICAgICAgICAgICAgcmV0dXJuIHdpZGUxNigpLT5vcGNvZGVJRCgpOworICAg
ICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgY29uc3QgY2hhciogbmFtZSgp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gVHJhaXRzOjpvcGNvZGVOYW1lc1tvcGNvZGVJ
RDxUcmFpdHM+KCldOworICAgICAgICByZXR1cm4gVHJhaXRzOjpvcGNvZGVOYW1lc1tvcGNvZGVJ
RCgpXTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGlzV2lkZTE2KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBu
YXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRyYWl0czo6d2lkZTE2Owor
ICAgICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCkgPT0gVHJhaXRzOjp3aWRlMTY7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAg
ICAgYm9vbCBpc1dpZGUzMigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbmFycm93KCkt
PnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUzMjsKKyAgICAgICAg
cmV0dXJuIG5hcnJvdygpLT5vcGNvZGVJRCgpID09IFRyYWl0czo6d2lkZTMyOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIE9wY29k
ZVNpemUgd2lkdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzV2lkZTMyPFRyYWl0cz4o
KSkKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkpCiAgICAgICAgICAgICByZXR1cm4gT3Bjb2RlU2l6
ZTo6V2lkZTMyOwotICAgICAgICByZXR1cm4gaXNXaWRlMTY8VHJhaXRzPigpID8gT3Bjb2RlU2l6
ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93OworICAgICAgICByZXR1cm4gaXNXaWRlMTYo
KSA/IE9wY29kZVNpemU6OldpZGUxNiA6IE9wY29kZVNpemU6Ok5hcnJvdzsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBib29sIGhh
c01ldGFkYXRhKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+
KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhOworICAgICAgICByZXR1
cm4gb3Bjb2RlSUQoKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAg
ICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3Bj
b2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50
czsKKyAgICAgICAgcmV0dXJuIG9wY29kZUlEKCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVz
V2l0aENoZWNrcG9pbnRzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9
IEpTT3Bjb2RlVHJhaXRzPgogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hlY2twb2ludHMoKSBjb25z
dAogICAgIHsKLSAgICAgICAgaWYgKCFoYXNDaGVja3BvaW50czxUcmFpdHM+KCkpCisgICAgICAg
IGlmICghaGFzQ2hlY2twb2ludHMoKSkKICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBy
ZXR1cm4gVHJhaXRzOjpjaGVja3BvaW50Q291bnRUYWJsZVtvcGNvZGVJRDxUcmFpdHM+KCldOwor
ICAgICAgICByZXR1cm4gVHJhaXRzOjpjaGVja3BvaW50Q291bnRUYWJsZVtvcGNvZGVJRCgpXTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4K
ICAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1dp
ZGUzMjxUcmFpdHM+KCkpCisgICAgICAgIGlmIChpc1dpZGUzMigpKQogICAgICAgICAgICAgcmV0
dXJuIDI7Ci0gICAgICAgIGlmIChpc1dpZGUxNjxUcmFpdHM+KCkpCisgICAgICAgIGlmIChpc1dp
ZGUxNigpKQogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIE9w
Y29kZVNpemUgb3Bjb2RlSURXaWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNXaWRl
MzIoKSkKKyAgICAgICAgICAgIHJldHVybiBPcGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bj
b2RlU2l6ZTo6V2lkZTMyPjo6b3Bjb2RlSURTaXplOworICAgICAgICBpZiAoaXNXaWRlMTYoKSkK
KyAgICAgICAgICAgIHJldHVybiBPcGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6
ZTo6V2lkZTE2Pjo6b3Bjb2RlSURTaXplOworICAgICAgICByZXR1cm4gT3Bjb2RlSURXaWR0aEJ5
U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJvdz46Om9wY29kZUlEU2l6ZTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBvcGNvZGVJREJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAodW5zaWduZWQpIG9wY29kZUlEV2lkdGgoKTsKKyAgICB9CisKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0CiAgICAgewotICAgICAgICBhdXRvIHNpemVTaGlmdEFtb3VudCA9IHRoaXMtPnNpemVT
aGlmdEFtb3VudDxUcmFpdHM+KCk7CisgICAgICAgIGF1dG8gc2l6ZVNoaWZ0QW1vdW50ID0gdGhp
cy0+c2l6ZVNoaWZ0QW1vdW50KCk7CiAgICAgICAgIHNpemVfdCBwcmVmaXhTaXplID0gc2l6ZVNo
aWZ0QW1vdW50ID8gMSA6IDA7CiAgICAgICAgIHNpemVfdCBvcGVyYW5kU2l6ZSA9IHN0YXRpY19j
YXN0PHNpemVfdD4oMSkgPDwgc2l6ZVNoaWZ0QW1vdW50OwotICAgICAgICBzaXplX3Qgc2l6ZU9m
Qnl0ZWNvZGUgPSAxOwotICAgICAgICByZXR1cm4gc2l6ZU9mQnl0ZWNvZGUgKyAoVHJhaXRzOjpv
cGNvZGVMZW5ndGhzW29wY29kZUlEPFRyYWl0cz4oKV0gLSAxKSAqIG9wZXJhbmRTaXplICsgcHJl
Zml4U2l6ZTsKKyAgICAgICAgc2l6ZV90IHNpemVPZkJ5dGVjb2RlID0gb3Bjb2RlSURCeXRlcygp
OworICAgICAgICByZXR1cm4gc2l6ZU9mQnl0ZWNvZGUgKyBUcmFpdHM6Om9wY29kZUxlbmd0aHNb
b3Bjb2RlSUQoKV0gKiBvcGVyYW5kU2l6ZSArIHByZWZpeFNpemU7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgdGVt
cGxhdGU8Y2xhc3MgVD4KICAgICBib29sIGlzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVDo6b3Bjb2RlSUQ7CisgICAgICAgIHJldHVybiBvcGNv
ZGVJRCgpID09IFQ6Om9wY29kZUlEOwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5
cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAg
ICAgVCBhcygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkp
OworICAgICAgICBBU1NFUlQoKGlzPFQ+KCkpKTsKICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aD4KICAgICBU
IGFzS25vd25XaWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0
cz4oKSkpOworICAgICAgICBBU1NFUlQoKGlzPFQ+KCkpKTsKICAgICAgICAgcmV0dXJuIFQocmVp
bnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2ln
bmVkVHlwZSo+KHRoaXMgKyAod2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgICBUKiBjYXN0KCkKICAgICB7Ci0g
ICAgICAgIEFTU0VSVCgoaXM8VCwgVHJhaXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4o
KSkpOwogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih0aGlzKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIGNvbnN0IFQqIGNhc3QoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgQVNTRVJUKChpczxUPigp
KSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPih0aGlzKTsKICAg
ICB9CiAKQEAgLTE5MSwyOSArMTk1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpOYXJyb3c+Kj4odGhpcyk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAg
Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+KiB3aWRlMTYoKSBjb25zdAogICAgIHsKLQot
ICAgICAgICBBU1NFUlQoaXNXaWRlMTY8VHJhaXRzPigpKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoKnRoaXMpID09IDEsICJQb2ludGVyIG1hdGgiKTsKKyAgICAgICAgQVNTRVJUKGlz
V2lkZTE2KCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9w
Y29kZVNpemU6OldpZGUxNj4qPih0aGlzICsgMSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgY29uc3QgSW1wbDxPcGNvZGVTaXpl
OjpXaWRlMzI+KiB3aWRlMzIoKSBjb25zdAogICAgIHsKLQotICAgICAgICBBU1NFUlQoaXNXaWRl
MzI8VHJhaXRzPigpKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoKnRoaXMpID09IDEs
ICJQb2ludGVyIG1hdGgiKTsKKyAgICAgICAgQVNTRVJUKGlzV2lkZTMyKCkpOwogICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUzMj4qPih0
aGlzICsgMSk7CiAgICAgfQogfTsKIAotc3RydWN0IEluc3RydWN0aW9uIDogcHVibGljIEJhc2VJ
bnN0cnVjdGlvbjxPcGNvZGVJRD4gewotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKEluc3RydWN0
aW9uKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwot
Ci1zdHJ1Y3QgV2FzbUluc3RhbmNlIDogcHVibGljIEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2Rl
SUQ+IHsKLX07Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtSW5zdGFuY2UpID09IDEsICJTbyBw
b2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7Cit1c2luZyBKU0luc3RydWN0
aW9uID0gQmFzZUluc3RydWN0aW9uPEpTT3Bjb2RlVHJhaXRzPjsKK3VzaW5nIFdhc21JbnN0cnVj
dGlvbiAgPSBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZVRyYWl0cz47CitzdGF0aWNfYXNzZXJ0
KHNpemVvZihKU0luc3RydWN0aW9uKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlzIHRoZSBzYW1l
IGFzIGJ5dGUgbWF0aCIpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCmluZGV4IDM4Y2Fm
OTVmZDllMDYxMDUzZTEzNWE1OWZlMWEzYzc1Zjg1YTg1ZDMuLjUzNTQyOTdjZGZhNmI3OWQwNjZh
YTEzNzFmZTgwNjhkYjE0NWUwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcApAQCAtMzAsMjAgKzMwLDQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSW5zdHJ1
Y3Rpb25TdHJlYW0pOwogCi1JbnN0cnVjdGlvblN0cmVhbTo6SW5zdHJ1Y3Rpb25TdHJlYW0oSW5z
dHJ1Y3Rpb25CdWZmZXImJiBpbnN0cnVjdGlvbnMpCi0gICAgOiBtX2luc3RydWN0aW9ucyhXVEZN
b3ZlKGluc3RydWN0aW9ucykpCi17IH0KLQotc2l6ZV90IEluc3RydWN0aW9uU3RyZWFtOjpzaXpl
SW5CeXRlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsKLX0K
LQotYm9vbCBJbnN0cnVjdGlvblN0cmVhbTo6Y29udGFpbnMoSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uKSBjb25zdAotewotCi0gICAgY29uc3QgdWludDhfdCogcG9pbnRlciA9IGJpdHdpc2VfY2Fz
dDxjb25zdCB1aW50OF90Kj4oaW5zdHJ1Y3Rpb24pOwotICAgIHJldHVybiBwb2ludGVyID49IG1f
aW5zdHJ1Y3Rpb25zLmRhdGEoKSAmJiBwb2ludGVyIDwgKG1faW5zdHJ1Y3Rpb25zLmRhdGEoKSAr
IG1faW5zdHJ1Y3Rpb25zLnNpemUoKSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmgKaW5kZXggM2U5NzhkMzMyZDU4ZDcw
YTUyOWQyOGYwNTI2NjQ0OGNmZjc2ZWIxMC4uY2U2N2RjZjJkMDVkMDE4YTdlMTQ5ZDllZTBmNzE5
NmEzNmFjMDNjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uU3RyZWFtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uU3RyZWFtLmgKQEAgLTM0LDE1ICszNCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
REVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSW5zdHJ1Y3Rpb25TdHJlYW0p
OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0cnVjdGlvblR5cGU+CiBjbGFzcyBJbnN0cnVjdGlv
blN0cmVhbSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBmcmllbmQgY2xh
c3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVu
ZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVk
SW5zdHJ1Y3Rpb25TdHJlYW07CiBwdWJsaWM6CiAgICAgdXNpbmcgSW5zdHJ1Y3Rpb25CdWZmZXIg
PSBWZWN0b3I8dWludDhfdCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3csIDE2LCBJbnN0cnVjdGlv
blN0cmVhbU1hbGxvYz47CiAKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5zdHJ1
Y3Rpb25zLnNpemUoKTsKKyAgICB9CiAKICAgICB1c2luZyBPZmZzZXQgPSB1bnNpZ25lZDsKIApA
QCAtNTEsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIEJhc2VSZWYgewogICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rp
b25TdHJlYW07CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgSW5zdHJ1
Y3Rpb25TdHJlYW07CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEJhc2VSZWYoY29uc3QgQmFzZVJl
ZjxJbnN0cnVjdGlvbkJ1ZmZlcj4mIG90aGVyKQpAQCAtNjUsOCArNjksOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9pbmRleCA9IG90aGVyLm1faW5kZXg7CiAgICAgICAgIH0KIAotICAgICAg
ICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1
bndyYXAoKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHB0cigpIGNvbnN0
IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5
cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsgfQorICAgICAgICBpbmxp
bmUgY29uc3QgSW5zdHJ1Y3Rpb25UeXBlKiBwdHIoKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsg
fQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCYXNlUmVmPEluc3RydWN0aW9uQnVm
ZmVyPiYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTg3LDcgKzkxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0
aW9uKiB1bndyYXAoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3Ry
dWN0aW9uKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5kZXhdKTsgfQorICAgICAgICBpbmxpbmUgY29u
c3QgSW5zdHJ1Y3Rpb25UeXBlKiB1bndyYXAoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IEluc3RydWN0aW9uVHlwZSo+KCZtX2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0K
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgQmFzZVJlZihJbnN0cnVjdGlvbkJ1ZmZlciYgaW5z
dHJ1Y3Rpb25zLCBzaXplX3QgaW5kZXgpCkBAIC0xMDMsMzMgKzEwNywzNiBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgUmVmID0gQmFzZVJlZjxjb25zdCBJbnN0cnVjdGlvbkJ1ZmZlcj47CiAKICAgICBj
bGFzcyBNdXRhYmxlUmVmIDogcHVibGljIEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+IHsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB1c2luZyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPjo6
QmFzZVJlZjsKKyAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj46Om1faW5k
ZXg7CisgICAgICAgIHVzaW5nIEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+OjptX2luc3RydWN0
aW9uczsKIAogICAgIHB1YmxpYzoKICAgICAgICAgUmVmIGZyZWV6ZSgpIGNvbnN0ICB7IHJldHVy
biBSZWYgeyBtX2luc3RydWN0aW9ucywgbV9pbmRleCB9OyB9Ci0gICAgICAgIGlubGluZSBJbnN0
cnVjdGlvbiogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHVud3JhcCgpOyB9Ci0gICAgICAgIGlubGlu
ZSBjb25zdCBJbnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgp
OyB9Ci0gICAgICAgIGlubGluZSBJbnN0cnVjdGlvbiogcHRyKCkgeyByZXR1cm4gdW53cmFwKCk7
IH0KLSAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiBwdHIoKSBjb25zdCB7IHJldHVy
biB1bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb25UeXBlKiBvcGVyYXRvci0+
KCkgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9u
VHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlu
bGluZSBJbnN0cnVjdGlvblR5cGUqIHB0cigpIHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAg
IGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHB0cigpIGNvbnN0IHsgcmV0dXJuIHVud3Jh
cCgpOyB9CiAgICAgICAgIGlubGluZSBvcGVyYXRvciBSZWYoKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1faW5kZXggfTsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiB1bndyYXAoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5k
ZXhdKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVj
dGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlubGluZSBJbnN0cnVjdGlvblR5cGUqIHVud3Jh
cCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1
Y3Rpb25zW21faW5kZXhdKTsgfQorICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb25UeXBl
KiB1bndyYXAoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0
aW9uVHlwZSo+KCZtX2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0KICAgICB9OwogCiBwcml2YXRl
OgogICAgIGNsYXNzIGl0ZXJhdG9yIDogcHVibGljIFJlZiB7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBJbnN0cnVjdGlvblN0cmVhbTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBj
bGFzcyBJbnN0cnVjdGlvblN0cmVhbTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdXNpbmcgUmVm
OjpSZWY7CisgICAgICAgIHVzaW5nIFJlZjo6bV9pbmRleDsKIAogICAgICAgICBSZWYmIG9wZXJh
dG9yKigpCiAgICAgICAgIHsKQEAgLTE0NCw3ICsxNTEsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICp0
aGlzICs9IHB0cigpLT5zaXplKCk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXMgKz0gdGhpcy0+
cHRyKCktPnNpemUoKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTE3NiwxOSArMTgzLDMyIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmRhdGEoKTsKICAgICB9CiAK
LSAgICBib29sIGNvbnRhaW5zKEluc3RydWN0aW9uKikgY29uc3Q7CisgICAgYm9vbCBjb250YWlu
cyhJbnN0cnVjdGlvblR5cGUqIGluc3RydWN0aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgY29u
c3QgdWludDhfdCogcG9pbnRlciA9IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5zdHJ1
Y3Rpb24pOworICAgICAgICByZXR1cm4gcG9pbnRlciA+PSBtX2luc3RydWN0aW9ucy5kYXRhKCkg
JiYgcG9pbnRlciA8IChtX2luc3RydWN0aW9ucy5kYXRhKCkgKyBtX2luc3RydWN0aW9ucy5zaXpl
KCkpOworICAgIH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEluc3RydWN0aW9uU3RyZWFt
KEluc3RydWN0aW9uQnVmZmVyJiYpOworICAgIGV4cGxpY2l0IEluc3RydWN0aW9uU3RyZWFtKElu
c3RydWN0aW9uQnVmZmVyJiYgaW5zdHJ1Y3Rpb25zKQorICAgICAgICA6IG1faW5zdHJ1Y3Rpb25z
KFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSkKKyAgICB7IH0KIAogICAgIEluc3RydWN0aW9uQnVmZmVy
IG1faW5zdHJ1Y3Rpb25zOwogfTsKIAotY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgOiBw
dWJsaWMgSW5zdHJ1Y3Rpb25TdHJlYW0gewordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25U
eXBlPgorY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgOiBwdWJsaWMgSW5zdHJ1Y3Rpb25T
dHJlYW08SW5zdHJ1Y3Rpb25UeXBlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0
ZXI7CiBwdWJsaWM6CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBl
Pjo6SW5zdHJ1Y3Rpb25TdHJlYW07CisgICAgdXNpbmcgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJl
YW08SW5zdHJ1Y3Rpb25UeXBlPjo6SW5zdHJ1Y3Rpb25CdWZmZXI7CisgICAgdXNpbmcgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPjo6TXV0YWJsZVJlZjsKKyAgICB1
c2luZyB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpPZmZzZXQ7
CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPjo6bV9pbnN0cnVj
dGlvbnM7CisKICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcigpCi0gICAgICAgIDogSW5zdHJ1
Y3Rpb25TdHJlYW0oeyB9KQorICAgICAgICA6IEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9u
VHlwZT4oeyB9KQogICAgIHsgfQogCiAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkJ1ZmZlcihJbnN0
cnVjdGlvbkJ1ZmZlciYmIGJ1ZmZlcikKQEAgLTI2MSwxNCArMjgxLDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9wb3NpdGlvbiA9IHJlZi5vZmZzZXQoKTsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGZpbmFsaXplKCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPj4gZmluYWxpemUoKQogICAgIHsKICAg
ICAgICAgbV9maW5hbGl6ZWQgPSB0cnVlOwogICAgICAgICBtX2luc3RydWN0aW9ucy5zaHJpbmtU
b0ZpdCgpOwotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFt
PiB7IG5ldyBJbnN0cnVjdGlvblN0cmVhbShXVEZNb3ZlKG1faW5zdHJ1Y3Rpb25zKSkgfTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlv
blR5cGU+PiB7IG5ldyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+KFdURk1vdmUo
bV9pbnN0cnVjdGlvbnMpKSB9OwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVj
dGlvblN0cmVhbT4gZmluYWxpemUoSW5zdHJ1Y3Rpb25CdWZmZXImIHVzZWRCdWZmZXIpCisgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT4+IGZpbmFs
aXplKEluc3RydWN0aW9uQnVmZmVyJiB1c2VkQnVmZmVyKQogICAgIHsKICAgICAgICAgbV9maW5h
bGl6ZWQgPSB0cnVlOwogCkBAIC0yNzgsNyArMjk4LDcgQEAgcHVibGljOgogCiAgICAgICAgIHVz
ZWRCdWZmZXIgPSBXVEZNb3ZlKG1faW5zdHJ1Y3Rpb25zKTsKIAotICAgICAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiB7IG5ldyBJbnN0cnVjdGlvblN0cmVhbShX
VEZNb3ZlKHJlc3VsdEJ1ZmZlcikpIH07CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPj4geyBuZXcgSW5zdHJ1Y3Rpb25TdHJl
YW08SW5zdHJ1Y3Rpb25UeXBlPihXVEZNb3ZlKHJlc3VsdEJ1ZmZlcikpIH07CiAgICAgfQogCiAg
ICAgTXV0YWJsZVJlZiByZWYoKQpAQCAtMjg2LDcgKzMwNiw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIE11dGFibGVSZWYgeyBtX2luc3RydWN0aW9ucywgbV9wb3NpdGlvbiB9OwogICAgIH0K
IAotICAgIHZvaWQgc3dhcChJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgb3RoZXIpCisgICAgdm9p
ZCBzd2FwKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyPEluc3RydWN0aW9uVHlwZT4mIG90aGVyKQog
ICAgIHsKICAgICAgICAgc3RkOjpzd2FwKG1fZmluYWxpemVkLCBvdGhlci5tX2ZpbmFsaXplZCk7
CiAgICAgICAgIHN0ZDo6c3dhcChtX3Bvc2l0aW9uLCBvdGhlci5tX3Bvc2l0aW9uKTsKQEAgLTI5
NSwxMCArMzE1LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjbGFzcyBpdGVyYXRvciA6
IHB1YmxpYyBNdXRhYmxlUmVmIHsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEluc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB1c2luZyBNdXRh
YmxlUmVmOjpNdXRhYmxlUmVmOworICAgICAgICB1c2luZyBNdXRhYmxlUmVmOjptX2luZGV4Owog
CiAgICAgcHVibGljOgogICAgICAgICBNdXRhYmxlUmVmJiBvcGVyYXRvciooKQpAQCAtMzE0LDcg
KzMzNSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsKKyAgICAg
ICAgICAgIHJldHVybiAqdGhpcyArPSB0aGlzLT5wdHIoKS0+c2l6ZSgpOwogICAgICAgICB9CiAg
ICAgfTsKIApAQCAtMzM0LDUgKzM1NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpbmFsaXpl
ZCB7IGZhbHNlIH07CiB9OwogCit1c2luZyBKU0luc3RydWN0aW9uU3RyZWFtID0gSW5zdHJ1Y3Rp
b25TdHJlYW08SlNJbnN0cnVjdGlvbj47Cit1c2luZyBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVy
ID0gSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI8SlNJbnN0cnVjdGlvbj47Cit1c2luZyBXYXNtSW5z
dHJ1Y3Rpb25TdHJlYW0gPSBJbnN0cnVjdGlvblN0cmVhbTxXYXNtSW5zdHJ1Y3Rpb24+OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApp
bmRleCA2YzA3M2NmNjc2YWJkNjgwYmYzYzNmNzRjMWUxZjEwNDQ4ODlkNzdhLi40MzQ4Y2U3YTgz
NzEwNjFlNmY1ZGNmZGIzZDViY2VjMTEzNmY3NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJCeXRlY29kZXMu
aCIKICNpbmNsdWRlICJMTEludE9wY29kZS5oIgorI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKIAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTg4LDEwICs4OSwx
NCBAQCBleHRlcm4gY29uc3QgdW5zaWduZWQgd2FzbU9wY29kZUxlbmd0aHNbXTsKICAgICBGT1Jf
RUFDSF9XQVNNX0lEKE9QQ09ERV9JRF9MRU5HVEhTKTsKICN1bmRlZiBPUENPREVfSURfTEVOR1RI
UwogCi1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEpTT3Bjb2RlTGVuZ3RoID0gLyogT3Bj
b2RlICovIDEgKyAvKiBXaWRlMzIgT3Bjb2RlICovIDEgKyAvKiBPcGVyYW5kcyAqLyAoTUFYX0xF
TkdUSF9PRl9CWVRFQ09ERV9JRFMgLSAxKSAqIDQ7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heFdhc21PcGNvZGVMZW5ndGggPSAvKiBPcGNvZGUgKi8gMSArIC8qIFdpZGUzMiBPcGNvZGUg
Ki8gMSArIC8qIE9wZXJhbmRzICovIChNQVhfTEVOR1RIX09GX1dBU01fSURTIC0gMSkgKiA0Owot
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhPcGNvZGVMZW5ndGggPSBzdGQ6Om1heChtYXhK
U09wY29kZUxlbmd0aCwgbWF4V2FzbU9wY29kZUxlbmd0aCk7Ci1zdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGJpdFdpZHRoRm9yTWF4T3Bjb2RlTGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4
cHIobWF4T3Bjb2RlTGVuZ3RoKSArIDE7CitzdGF0aWNfYXNzZXJ0KE5VTUJFUl9PRl9CWVRFQ09E
RV9JRFMgPCAyNTUpOworc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG1heEpTT3Bjb2RlSURX
aWR0aCA9IE9wY29kZVNpemU6Ok5hcnJvdzsKK3N0YXRpY19hc3NlcnQoTlVNQkVSX09GX1dBU01f
SURTIDwgMjU1KTsKK3N0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBtYXhXYXNtT3Bjb2RlSURX
aWR0aCA9IE9wY29kZVNpemU6OldpZGUxNjsgLy8gRklYTUU6IGNoYW5nZSB0aGlzIGJhY2sgb25j
ZSBFV1MgcGFzc2VzLgorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhKU0J5dGVjb2RlU3Ry
dWN0TGVuZ3RoID0gLyogT3Bjb2RlICovIG1heEpTT3Bjb2RlSURXaWR0aCArIC8qIFdpZGUzMiBP
cGNvZGUgKi8gMSArIC8qIE9wZXJhbmRzICovIE1BWF9MRU5HVEhfT0ZfQllURUNPREVfSURTICog
NDsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4V2FzbUJ5dGVjb2RlU3RydWN0TGVuZ3Ro
ID0gLyogT3Bjb2RlICovIG1heFdhc21PcGNvZGVJRFdpZHRoICsgLyogV2lkZTMyIE9wY29kZSAq
LyAxICsgLyogT3BlcmFuZHMgKi8gTUFYX0xFTkdUSF9PRl9XQVNNX0lEUyAqIDQ7CitzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1heEJ5dGVjb2RlU3RydWN0TGVuZ3RoID0gc3RkOjptYXgobWF4
SlNCeXRlY29kZVN0cnVjdExlbmd0aCwgbWF4V2FzbUJ5dGVjb2RlU3RydWN0TGVuZ3RoKTsKK3N0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhCeXRlY29kZVN0cnVjdExlbmd0
aCA9IFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKG1heEJ5dGVjb2RlU3RydWN0TGVuZ3RoKSArIDE7
CiAKICNkZWZpbmUgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShtYWNybykgXAog
ICAgIG1hY3JvKE9wQ2FsbFZhcmFyZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlSW5saW5lcy5oCmluZGV4IDRhMmFmNmExMDZhNDc5NDZjODhjMDlkZThjNWMx
ZDAxOTFlZjYxZTcuLjhiN2M2M2Y1ZGE3MmExMmU5N2ViZDZjZDdiNWY5NzYzZGEwZGI0ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZUlubGluZXMuaApAQCAt
NTQsNyArNTQsNyBAQCBpbmxpbmUgYm9vbCBpc09wY29kZVNoYXBlKE9wY29kZUlEIG9wY29kZUlE
KQogfQogCiB0ZW1wbGF0ZTxPcGNvZGVTaGFwZSBzaGFwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJs
ZV9pZl90PHNoYXBlICE9IEFueU9wY29kZVNoYXBlPj4KLWlubGluZSBib29sIGlzT3Bjb2RlU2hh
cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQoraW5saW5lIGJvb2wgaXNPcGNvZGVT
aGFwZShjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICByZXR1cm4gaXNP
cGNvZGVTaGFwZTxzaGFwZT4oaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVTaXplLmgKaW5kZXggMjRiMTYyYjkzZjc5ZTg0
YTBkMTg2NDIzMWFjZGJkNzNlNTlhYTA2My4uYTY1M2E5NmI4NzgyZmJlZWI0YzFmZGM0YzdlMjhh
NmJlZThkMzQzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZVNpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6
ZS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CisKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIE9wY29kZVNpemUgewpAQCAtNzIsNCAr
NzQsMjUgQEAgc3RydWN0IFBhZGRpbmdCeVNpemU8T3Bjb2RlU2l6ZTo6V2lkZTMyPiB7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbHVlID0gMTsKIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cywgT3Bjb2RlU2l6ZT4KK3N0cnVjdCBPcGNvZGVJRFdpZHRoQnlTaXplOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CitzdHJ1Y3QgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFp
dHMsIE9wY29kZVNpemU6Ok5hcnJvdz4geworICAgIHVzaW5nIG9wY29kZVR5cGUgPSB1aW50OF90
OworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBvcGNvZGVJRFNpemUgPSBPcGNvZGVT
aXplOjpOYXJyb3c7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CitzdHJ1Y3QgT3Bj
b2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6OldpZGUxNj4geworICAgIHVzaW5n
IG9wY29kZVR5cGUgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPFRyYWl0czo6bWF4T3Bjb2Rl
SURXaWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3csIHVpbnQ4X3QsIHVpbnQxNl90Pjo6dHlwZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgb3Bjb2RlSURTaXplID0gc3RhdGljX2Nh
c3Q8T3Bjb2RlU2l6ZT4oc2l6ZW9mKG9wY29kZVR5cGUpKTsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cz4KK3N0cnVjdCBPcGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6
ZTo6V2lkZTMyPiB7CisgICAgdXNpbmcgb3Bjb2RlVHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0
aW9uYWw8VHJhaXRzOjptYXhPcGNvZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdywgdWlu
dDhfdCwgdWludDE2X3Q+Ojp0eXBlOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBv
cGNvZGVJRFNpemUgPSBzdGF0aWNfY2FzdDxPcGNvZGVTaXplPihzaXplb2Yob3Bjb2RlVHlwZSkp
OworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGQyZTg1MDZjNGM0MjZi
YmI3YWI1NDU4NDdjOTIzNDAzMzQ0ZDliMTYuLmQ4YTc2MTBmNzNlMzdjZjczODQ3MzZiMGFmNzkz
MDYxMTIzZGI2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaz4KLXN0YXRp
YyB2b2lkIGdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCB2ZWN0b3JTaXplPiYgb3V0KQorc3RhdGljIHZvaWQgZ2V0SnVtcFRh
cmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0lu
c3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIGV4dHJhY3RT
dG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIFsm
XShpbnQzMl90IHJlbGF0aXZlT2Zmc2V0KSB7CiAgICAgICAgIG91dC5hcHBlbmQoaW5zdHJ1Y3Rp
b24ub2Zmc2V0KCkgKyByZWxhdGl2ZU9mZnNldCk7CkBAIC01NCw3ICs1NCw3IEBAIGVudW0gY2xh
c3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgewogfTsKIAogdGVtcGxhdGU8Q29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ssIHNpemVfdCB2ZWN0
b3JTaXplPgotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCit2b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3Ry
dWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5pc0Vt
cHR5KCkpOwogCkBAIC04OCwzMiArODgsMzIgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0KICAg
ICBvdXQuc2hyaW5rQ2FwYWNpdHkodG9JbmRleCk7CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0LCAzMj4mIG91dCkKIHsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8
Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCksIG91dCk7CiB9CiAKLXZvaWQgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQs
IDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQogewogICAgIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQp
OwogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxv
Y2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpCiB7CiAgICAgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2Rl
OjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7CiB9
CiAKLXZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMs
IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3V0KQordm9pZCByZWNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywg
Y29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3V0KQogewogICAgIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VD
b21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgb3V0KTsKIH0KIAotdm9pZCBmaW5kSnVt
cFRhcmdldHNGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCAxPiYgb3V0KQordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVm
JiBpbnN0cnVjdGlvbiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCwgMT4mIG91dCkKIHsKICAgICBnZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG91dCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1
Y3Rpb24oVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCAxPiYgb3V0KQordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0luc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KQogewogICAgIGdldEp1bXBUYXJnZXRzRm9ySW5z
dHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3V0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCBmMTc1
ZTJjY2E3ZGExMjhlYTQ1YjJiMTM3YTNiOWI4MDY2NTE2MmIwLi5kOGVhMGZkYzRlOTRmMzcxOTdm
MDY3OWYyNWYwYjBhYzlmYTc2ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIAogLy8gUmV0dXJuIGEgc29ydGVk
IGxpc3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVt
cC4KLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwotdm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Ci12b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAz
Mj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVj
dG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFZl
Y3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KTsKIAot
dm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0PiYgb3V0KTsKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3Rvcjx0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvdXQpOwogCi12b2lkIGZpbmRK
dW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7Ci12
b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYsIFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rp
b24oQ29kZUJsb2NrKiwgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwg
VmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7Cit2
b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yKiwgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgVmVjdG9yPHR5
cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKaW5kZXggMGJkNDAzOTg0NTJkOWNlZjY1MGM4
NDllYTdlMmUzZGM3MzY2NGRjNS4uZjdlZmFiYmQ5NDM4ZDA4ZmIwNjQzMzM4OTM0NGY0YWFjOTJh
MjdhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCkBAIC05MCw3ICs5MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgotaW5saW5lIGludCBqdW1wVGFyZ2V0
Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIHRhcmdldCkKK2lubGluZSBpbnQganVtcFRhcmdl
dEZvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIHRhcmdldCkKIHsKICAgICBp
ZiAodGFyZ2V0KQogICAgICAgICByZXR1cm4gdGFyZ2V0OwpAQCAtOTgsNyArOTgsNyBAQCBpbmxp
bmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbTo6UgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFwPgotaW5s
aW5lIGludCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oSGFzaE1hcCYgb3V0T2ZMaW5lSnVtcFRh
cmdldHMsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCB1bnNpZ25l
ZCB0YXJnZXQpCitpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihIYXNoTWFwJiBv
dXRPZkxpbmVKdW1wVGFyZ2V0cywgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6
UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgdGFyZ2V0KQogewogICAgIGlmICh0YXJnZXQpCiAg
ICAgICAgIHJldHVybiB0YXJnZXQ7CkBAIC0xMDcsMTQgKzEwNywxNCBAQCBpbmxpbmUgaW50IGp1
bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihIYXNoTWFwJiBvdXRPZkxpbmVKdW1wVGFyZ2V0cywgY29u
c3QgSW5zdHJ1YwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgQmxvY2s+Ci1p
bmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCitpbmxpbmUgaW50IGp1bXBU
YXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJ
bnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIHJldHVybiBqdW1wVGFyZ2V0Rm9ySW5zdHJ1
Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdGlvbj4KLWlubGluZSB2
b2lkIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgY29uc3QgRnVu
Y3Rpb24mIGZ1bmN0aW9uKQoraW5saW5lIHZvaWQgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9y
SW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rp
b25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlvbikKIHsK
ICNkZWZpbmUgQ0FTRV9PUChfX29wKSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogXApAQCAt
MTM1LDcgKzEzNSw3IEBAIFNXSVRDSF9KTVAoQ0FTRV9PUCwgU1dJVENIX0NBU0UsIFNXSVRDSF9E
RUZBVUxUX09GRlNFVCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1
bmN0aW9uLCB0eXBlbmFtZSBDb2RlQmxvY2tPckhhc2hNYXA+Ci1pbmxpbmUgdm9pZCB1cGRhdGVT
dG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2NrLCB1bnNpZ25l
ZCBmaW5hbE9mZnNldCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24s
IGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlvbiwgQ29kZUJsb2NrT3JIYXNoTWFwJiBjb2RlQmxvY2tP
ckhhc2hNYXApCitpbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKEJsb2NrJiYgY29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgdHlwZW5hbWUgSlNJ
bnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24m
IGZ1bmN0aW9uLCBDb2RlQmxvY2tPckhhc2hNYXAmIGNvZGVCbG9ja09ySGFzaE1hcCkKIHsKICNk
ZWZpbmUgQ0FTRV9PUChfX29wKSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogeyBcCkBAIC0x
NzEsNyArMTcxLDcgQEAgU1dJVENIX0pNUChDQVNFX09QLCBTV0lUQ0hfQ0FTRSwgU1dJVENIX0RF
RkFVTFRfT0ZGU0VUKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVu
Y3Rpb24+Ci1pbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9u
KEJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCitpbmxpbmUgdm9p
ZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRh
YmxlUmVmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICB1cGRhdGVTdG9y
ZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgZmluYWxPZmZzZXQsIGluc3Ry
dWN0aW9uLCBmdW5jdGlvbiwgY29kZUJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGFjNTcxMjdiY2Y4
OTA3MmJlMDM4NDE2ZGExMzliNDFmMTY0YWU2MTQuLmE5YWY3Y2Y0MzFmZDRjM2Y1MDVjZTgwYzBm
ZjVhMjQzMjQyMTU0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIGlubGluZSB2b2lk
IFVubGlua2VkQ29kZUJsb2NrOjpnZXRMaW5lQW5kQ29sdW1uKGNvbnN0IEV4cHJlc3Npb25SYW5n
ZUluZm8mIGluZm8sCiB9CiAKICNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgdm9pZCBkdW1wTGluZUNv
bHVtbkVudHJ5KHNpemVfdCBpbmRleCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0
aW9uU3RyZWFtLCB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5z
aWduZWQgY29sdW1uKQorc3RhdGljIHZvaWQgZHVtcExpbmVDb2x1bW5FbnRyeShzaXplX3QgaW5k
ZXgsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKQogewog
ICAgIGNvbnN0IGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvblN0cmVhbS5hdChpbnN0cnVj
dGlvbk9mZnNldCk7CiAgICAgY29uc3QgY2hhciogZXZlbnQgPSAiIjsKQEAgLTI5NCw3ICsyOTQs
NyBAQCBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKICAgICB9CiB9CiAK
LWNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25z
KCkgY29uc3QKK2NvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjpp
bnN0cnVjdGlvbnMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2luc3RydWN0aW9ucy5nZXQoKSk7
CiAgICAgcmV0dXJuICptX2luc3RydWN0aW9uczsKQEAgLTMzMiw3ICszMzIsNyBAQCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMmIFVubGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xv
dyhDb2RlQmxvY2sqIGNvZAogICAgIHJldHVybiAqbV9saXZlbmVzczsKIH0KIAotaW50IFVubGlu
a2VkQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgYnl0ZWNvZGVPZmZzZXQpCitpbnQgVW5saW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBP
ZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0
KQogewogICAgIEFTU0VSVChtX291dE9mTGluZUp1bXBUYXJnZXRzLmNvbnRhaW5zKGJ5dGVjb2Rl
T2Zmc2V0KSk7CiAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgKaW5kZXggMWM1OTA0MmUwZDBjMzgxMWIzYzliZTIxNThjZGM1NGMwMWRiYjgx
Yy4uOTQxYmYzYTliZmQyMmM2OWNkNmViZmU4NmY4ZDI5ZGRlNTFmN2VmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTIx
MSwxMiArMjExLDEyIEBAIHB1YmxpYzoKICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7
IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEpTUGFyc2VyU2NyaXB0TW9kZT4obV9zY3JpcHRNb2RlKTsgfQogCi0gICAgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OwotICAgIGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGluc3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQotICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKKyAgICBjb25zdCBKU0lu
c3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdDsKKyAgICBjb25zdCBKU0luc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IGluc3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQorICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIHsKICAgICAgICAg
Y29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5hdCgwKS5wdHIo
KTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVj
dGlvbnNCZWdpbikgKyBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICBjb25zdCBhdXRv
KiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5zdHJ1Y3Rpb24gPj0g
aW5zdHJ1Y3Rpb25zQmVnaW4gJiYgaW5zdHJ1Y3Rpb24gPCBpbnN0cnVjdGlvbnNFbmQpOwogICAg
ICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24gLSBpbnN0cnVjdGlvbnNCZWdpbjsKICAgICB9CkBAIC0y
NzgsNyArMjc4LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc3RhcnRD
b2x1bW4oKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29u
c3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KIAotICAgIGNvbnN0IEZpeGVkVmVjdG9yPEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
cygpIGNvbnN0CisgICAgY29uc3QgRml4ZWRWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0PiYgb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEpOwogICAgICAgICByZXR1cm4gbV9y
YXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKQEAgLTQzOCw5
ICs0MzgsOSBAQCBwcml2YXRlOgogICAgIFBhY2tlZFJlZlB0cjxTdHJpbmdJbXBsPiBtX3NvdXJj
ZVVSTERpcmVjdGl2ZTsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3VyY2VNYXBw
aW5nVVJMRGlyZWN0aXZlOwogCi0gICAgRml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgUmVmPFVubGlua2VkTWV0YWRh
dGFUYWJsZT4gbV9tZXRhZGF0YTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJl
YW0+IG1faW5zdHJ1Y3Rpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0luc3RydWN0aW9uU3Ry
ZWFtPiBtX2luc3RydWN0aW9uczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzPiBtX2xpdmVuZXNzOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00NzQsNyAr
NDc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgdW5zaWduZWQgbV9lbmREaXZvdDsKICAgICAg
ICAgfTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJh
bmdlPiBtX3R5cGVQcm9maWxlckluZm9NYXA7Ci0gICAgICAgIEZpeGVkVmVjdG9yPEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7
CisgICAgICAgIEZpeGVkVmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKICAgICAgICAgRml4ZWRWZWN0b3I8Qml0
VmVjdG9yPiBtX2JpdFZlY3RvcnM7CiAgICAgICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXJTZXQ+
IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKIApAQCAtNDgyLDEyICs0ODIsMTIgQEAgcHVibGlj
OgogICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB9
OwogCi0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCk7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNl
dChjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zm
c2V0KCkpOwogICAgIH0KLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVj
dGlvbiogcGMpCisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlv
biogcGMpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IHRoaXMtPmJ5
dGVjb2RlT2Zmc2V0KHBjKTsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHB1YmxpYzoKICAgICBCYXNlbGluZUV4
ZWN1dGlvbkNvdW50ZXImIGxsaW50RXhlY3V0ZUNvdW50ZXIoKSB7IHJldHVybiBtX2xsaW50RXhl
Y3V0ZUNvdW50ZXI7IH0KIAogcHJpdmF0ZToKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0
cyA9IEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAgICB1c2luZyBP
dXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCBpbnQ+OwogCiAgICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVK
dW1wVGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRleCA2ZDdiZWExZjM5NDBjMzc2M2I5ODQ4YTFlNjgy
ZjI0MTkyMGE0Yzg5Li45ZGFkNzhiNmY3ZjY0ZTRkOTk2ZmFjYjhlMGJmNTVjMGNlM2E2MjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFVubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyh1bnNp
Z25lZCBpbnN0cnVjdAogICAgIG1fdHlwZVByb2ZpbGVySW5mb01hcC5zZXQoaW5zdHJ1Y3Rpb25P
ZmZzZXQsIHJhbmdlKTsKIH0KIAotdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6Zmlu
YWxpemUoc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCit2
b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8
SlNJbnN0cnVjdGlvblN0cmVhbT4gaW5zdHJ1Y3Rpb25zKQogewogICAgIEFTU0VSVChpbnN0cnVj
dGlvbnMpOwogICAgIHsKQEAgLTE3MCw3ICsxNzAsNyBAQCBVbmxpbmtlZEhhbmRsZXJJbmZvKiBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4
LAogICAgIHJldHVybiBVbmxpbmtlZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXg8VW5saW5r
ZWRIYW5kbGVySW5mbz4obV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxl
cik7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0
aW9uKEJ5dGVjb2RlUmV3cml0ZXImIHJld3JpdGVyLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYg
aW5zdHJ1Y3Rpb25zKQordm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YXBwbHlNb2Rp
ZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYgcmV3cml0ZXIsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXImIGluc3RydWN0aW9ucykKIHsKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5n
ZXMsIHdlIGFkanVzdCB0aGUganVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9m
ZnNldCwgdGhlIG9mZnNldCB0byB0aGUganVtcCB0YXJnZXQsIGFuZAogICAgIC8vIHRoZSBpbnNl
cnRpb24gaW5mb3JtYXRpb24uCkBAIC0yMDUsMTMgKzIwNSwxMyBAQCB2b2lkIFVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiByZXdy
aXRlciwgSQogICAgIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlzLCBpbnN0cnVjdGlv
bnMsIG1fanVtcFRhcmdldHMpOwogfQogCi12b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
OjphZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNv
ZGVPZmZzZXQsIGludCB0YXJnZXQpCit2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjph
ZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBieXRlY29kZU9mZnNldCwgaW50IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0YXJn
ZXQpOwogICAgIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuc2V0KGJ5dGVjb2RlT2Zmc2V0LCB0YXJn
ZXQpOwogfQogCi1pbnQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBP
ZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK2ludCBVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0lu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1f
b3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMoYnl0ZWNvZGVPZmZzZXQpKTsKICAgICByZXR1
cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaAppbmRleCA2MGEzNTQxZGRkMjIyMWU5ZmU3OGIxYmE5YmY1Njg1NzNjZWU5NzQ0
Li5iM2Q1MGI4Zjk2ZjZjZWNlOWU5YjBlZWI2YWYzYTViNzgzZTIyZjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgVW5saW5rZWRNZXRhZGF0
YVRhYmxlJiBtZXRhZGF0YSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5tZXRhZGF0YSgpOyB9CiAg
ICAgdm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50
IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVu
c2lnbmVkIGNvbHVtbik7CiAgICAgdm9pZCBhZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyh1
bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgc3RhcnREaXZvdCwgdW5zaWduZWQg
ZW5kRGl2b3QpOwotICAgIHZvaWQgYWRkT3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNl
dChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKKyAgICB2b2lkIGFkZE9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IG9mZnNldCkKICAgICB7CiAgICAgICAgIG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRl
Y29kZU9mZnNldHMuYXBwZW5kKG9mZnNldCk7CiAgICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAg
cHVibGljOgogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXJzW2luZGV4XTsgfQogICAgIHZvaWQgYWRkSWRlbnRpZmll
cihjb25zdCBJZGVudGlmaWVyJiBpKSB7IHJldHVybiBtX2lkZW50aWZpZXJzLmFwcGVuZChpKTsg
fQogCi0gICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIGludD47Ci0gICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludCB0YXJnZXQpOwotICAgIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOwotICAgIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAg
IHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDx0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CisgICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0
KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7CisgICAg
aW50IG91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0KTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCB0eXBlbmFtZSBKU0luc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG91
dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgIH0KQEAgLTE5NCw5
ICsxOTQsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExpbmVBbmRDb2x1bW4oY29uc3QgRXhw
cmVzc2lvblJhbmdlSW5mbyYsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25z
dDsKIAotICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYsIEluc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyJik7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29k
ZVJld3JpdGVyJiwgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYpOwogCi0gICAgdm9pZCBmaW5h
bGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+KTsKKyAgICB2b2lkIGZpbmFs
aXplKHN0ZDo6dW5pcXVlX3B0cjxKU0luc3RydWN0aW9uU3RyZWFtPik7CiAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAg
ICAgVk0mIG1fdm07CiAgICAgU3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPiBtX2NvZGVCbG9jazsK
ICAgICAvLyBJbiBub24tUmFyZURhdGEuCi0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9p
ZGVudGlmaWVyczsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50
UmVnaXN0ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3Rh
bnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlczsKICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRp
b24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwg
VW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+
IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKKyAgICBWZWN0b3I8
dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsK
ICAgICBWZWN0b3I8SWRlbnRpZmllclNldD4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogICAg
IHVuc2lnbmVkIG1fbnVtQmluYXJ5QXJpdGhQcm9maWxlcyB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCA5ZGRmZDM0YmY3OWQ4ZjRiMTlmZGRlNTZiMmE0MTFiM2JjYjE2MDgwLi41ZGI5YWJhOTg5MGNh
MDcwOTBhMjk5ZjZjYzQ5Njk4YWRkY2JhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMzQsNiArMzM0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVzaW5nIE9wY29kZUlEID0gOjpKU0M6Ok9w
Y29kZUlEOwogICAgICAgICB1c2luZyBPcE5vcCA9IDo6SlNDOjpPcE5vcDsKICAgICAgICAgdXNp
bmcgQ29kZUJsb2NrID0gc3RkOjp1bmlxdWVfcHRyPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
PjsKKyAgICAgICAgdXNpbmcgSW5zdHJ1Y3Rpb25UeXBlID0gSlNJbnN0cnVjdGlvbjsKICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBvcGNvZGVGb3JEaXNhYmxpbmdPcHRpbWl6YXRp
b25zID0gb3BfZW5kOwogICAgIH07CiAKQEAgLTEwOTAsNyArMTA5MSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSnVtcE9wPgotICAgICAgICB2b2lkIHNldFRhcmdldEZvckp1bXBJbnN0
cnVjdGlvbihJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYsIGludCB0YXJnZXQpOworICAg
ICAgICB2b2lkIHNldFRhcmdldEZvckp1bXBJbnN0cnVjdGlvbih0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiwgaW50IHRhcmdldCk7CiAKICAgICAgICAgdXNpbmcgQmln
SW50TWFwRW50cnkgPSBzdGQ6OnR1cGxlPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdCwgYm9v
bD47CiAKQEAgLTExODgsNyArMTE4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1Zh
bHVlIGFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4LCBi
b29sIHNpZ24pOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRUZW1wbGF0ZU9iamVjdENvbnN0YW50
KFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+JiYsIGludCk7CiAKLSAgICAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVy
OyB9CisgICAgICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKIApAQCAtMTIwNCw3ICsxMjA1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVzdG9yZVREWlN0YWNrKGNvbnN0IFBy
ZXNlcnZlZFREWlN0YWNrJik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAg
ICAgICAgdm9pZCB3aXRoV3JpdGVyKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIsIGNv
bnN0IEZ1bmMmIGZuKQorICAgICAgICB2b2lkIHdpdGhXcml0ZXIoSlNJbnN0cnVjdGlvblN0cmVh
bVdyaXRlciYgd3JpdGVyLCBjb25zdCBGdW5jJiBmbikKICAgICAgICAgewogICAgICAgICAgICAg
YXV0byBwcmV2TGFzdE9wY29kZUlEID0gbV9sYXN0T3Bjb2RlSUQ7CiAgICAgICAgICAgICBhdXRv
IHByZXZMYXN0SW5zdHJ1Y3Rpb24gPSBtX2xhc3RJbnN0cnVjdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFz
ZS5oCmluZGV4IDBmOTE5OTM3YjVlNDZlNzhlNjExNzYyNDBkYmVhMTM3OGY3ZWU1OGMuLjE4ZDg2
MjNmZGJjOTRjODdmZTdhMWVkOTk5ZTZiN2JkODlkZWVjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2Uu
aApAQCAtNDYsNiArNDYsOSBAQCBjbGFzcyBCeXRlY29kZUdlbmVyYXRvckJhc2UgewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgogICAgIGZyaWVuZCBjbGFzcyBHZW5l
cmljTGFiZWw7CiAKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlclR5cGUgPSBJbnN0
cnVjdGlvblN0cmVhbVdyaXRlcjx0eXBlbmFtZSBUcmFpdHM6Okluc3RydWN0aW9uVHlwZT47Cisg
ICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlID0gSW5zdHJ1Y3Rpb25TdHJlYW08dHlwZW5h
bWUgVHJhaXRzOjpJbnN0cnVjdGlvblR5cGU+OworCiBwdWJsaWM6CiAgICAgQnl0ZWNvZGVHZW5l
cmF0b3JCYXNlKHR5cGVuYW1lIFRyYWl0czo6Q29kZUJsb2NrLCB1aW50MzJfdCB2aXJ0dWFsUmVn
aXN0ZXJDb3VudEZvckNhbGxlZVNhdmVzKTsKIApAQCAtNzcsMTIgKzgwLDEyIEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICB2b2lkIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CiAKLSAgICBJbnN0
cnVjdGlvblN0cmVhbVdyaXRlciBtX3dyaXRlcjsKKyAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
clR5cGUgbV93cml0ZXI7CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpDb2RlQmxvY2sgbV9jb2RlQmxv
Y2s7CiAKICAgICBib29sIG1fb3V0T2ZNZW1vcnlEdXJpbmdDb25zdHJ1Y3Rpb24geyBmYWxzZSB9
OwogICAgIHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgbV9sYXN0T3Bjb2RlSUQgPSBUcmFpdHM6
Om9wY29kZUZvckRpc2FibGluZ09wdGltaXphdGlvbnM7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06
Ok11dGFibGVSZWYgbV9sYXN0SW5zdHJ1Y3Rpb24geyBtX3dyaXRlci5yZWYoKSB9OworICAgIHR5
cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6TXV0YWJsZVJlZiBtX2xhc3RJbnN0cnVjdGlv
biB7IG1fd3JpdGVyLnJlZigpIH07CiAKICAgICBTZWdtZW50ZWRWZWN0b3I8R2VuZXJpY0xhYmVs
PFRyYWl0cz4sIDMyPiBtX2xhYmVsczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwg
MzI+IG1fY2FsbGVlTG9jYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaAppbmRl
eCBiZDc4OTBkNWZhYjllMTVlN2JlNWUzYjA3ZmQ4MThkNDIyNTBiNmE3Li4xMDE2YmU1NzBkODQz
MGE0ZjdiMjM0OTdmMDkzYTA5ZTVmOTVmZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlu
bGluZXMuaApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFp
dHM+OjplbWl0TGFiZWwoR2VuZXJpY0xhYmVsPFRyYWl0cz4mIGxhYmVsKQogdGVtcGxhdGU8dHlw
ZW5hbWUgVHJhaXRzPgogdm9pZCBCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6cmVjb3Jk
T3Bjb2RlKHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgQVNTRVJU
KG1fbGFzdE9wY29kZUlEID09IFRyYWl0czo6b3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9u
cyB8fCAobV9sYXN0T3Bjb2RlSUQgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24tPm9wY29kZUlEPHR5cGVu
YW1lIFRyYWl0czo6T3Bjb2RlVHJhaXRzPigpICYmIG1fd3JpdGVyLnBvc2l0aW9uKCkgPT0gbV9s
YXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBtX2xhc3RJbnN0cnVjdGlvbi0+c2l6ZTx0eXBlbmFt
ZSBUcmFpdHM6Ok9wY29kZVRyYWl0cz4oKSkpOworICAgIEFTU0VSVChtX2xhc3RPcGNvZGVJRCA9
PSBUcmFpdHM6Om9wY29kZUZvckRpc2FibGluZ09wdGltaXphdGlvbnMgfHwgKG1fbGFzdE9wY29k
ZUlEID09IG1fbGFzdEluc3RydWN0aW9uLT5vcGNvZGVJRCgpICYmIG1fd3JpdGVyLnBvc2l0aW9u
KCkgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBtX2xhc3RJbnN0cnVjdGlvbi0+c2l6
ZSgpKSk7CiAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24gPSBtX3dyaXRlci5yZWYoKTsKICAgICBtX2xh
c3RPcGNvZGVJRCA9IG9wY29kZUlEOwogfQpAQCAtMTAyLDYgKzEwMiw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFRyYWl0cz4KIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFRyYWl0cz46OmFsaWdu
V2lkZU9wY29kZTE2KCkKIHsKICNpZiBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCisgICAgc3Rh
dGljX2Fzc2VydChUcmFpdHM6Om1heE9wY29kZUlEV2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93
KTsKICAgICBzaXplX3Qgb3Bjb2RlU2l6ZSA9IDE7CiAgICAgc2l6ZV90IHByZWZpeEFuZE9wY29k
ZVNpemUgPSBvcGNvZGVTaXplICsgUGFkZGluZ0J5U2l6ZTxPcGNvZGVTaXplOjpXaWRlMTY+Ojp2
YWx1ZTsKICAgICB3aGlsZSAoKG1fd3JpdGVyLnBvc2l0aW9uKCkgKyBwcmVmaXhBbmRPcGNvZGVT
aXplKSAlIE9wY29kZVNpemU6OldpZGUxNikKQEAgLTExMyw3ICsxMTQsOSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHM+CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjphbGln
bldpZGVPcGNvZGUzMigpCiB7CiAjaWYgQ1BVKE5FRURTX0FMSUdORURfQUNDRVNTKQorICAgIHN0
YXRpY19hc3NlcnQoVHJhaXRzOjptYXhPcGNvZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJv
dyk7CiAgICAgc2l6ZV90IG9wY29kZVNpemUgPSAxOworICAgIHN0YXRpY19hc3NlcnQoVHJhaXRz
OjptYXhPcGNvZGVJREJ5dGVzID09IDEpOwogICAgIHNpemVfdCBwcmVmaXhBbmRPcGNvZGVTaXpl
ID0gb3Bjb2RlU2l6ZSArIFBhZGRpbmdCeVNpemU8T3Bjb2RlU2l6ZTo6V2lkZTMyPjo6dmFsdWU7
CiAgICAgd2hpbGUgKChtX3dyaXRlci5wb3NpdGlvbigpICsgcHJlZml4QW5kT3Bjb2RlU2l6ZSkg
JSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAgICAgIFRyYWl0czo6T3BOb3A6OnRlbXBsYXRlIGVt
aXQ8T3Bjb2RlU2l6ZTo6TmFycm93Pih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKaW5kZXgg
ODc1N2QzYTBkNTRmYzg5ZmIwZDk3YWM4Yjk5ZTg2YTM0MWViNmQ3NC4uMzc1NTA0ZTFmMTEyMjc1
MmQ4YzJjMTdlN2I4N2QzNWU0OTRiMTE4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKQEAgLTMz
LDkgKzMzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBSZWZlcmVuY2UgY291bnQgaW5kaWNhdGVz
IG51bWJlciBvZiBsaXZlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRoaXMgb2JqZWN0LgogY2xhc3Mg
U3RhdGljUHJvcGVydHlBbmFseXNpcyA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpY1Byb3BlcnR5
QW5hbHlzaXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0YXRpY1Byb3BlcnR5QW5hbHlz
aXM+IGNyZWF0ZShJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGluc3RydWN0aW9uUmVm
KQorICAgIHN0YXRpYyBSZWY8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gY3JlYXRlKHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmJiBpbnN0cnVjdGlvblJlZikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMoV1RG
TW92ZShpbnN0cnVjdGlvblJlZikpKTsgCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXMoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpKTsKICAgICB9CiAK
ICAgICB2b2lkIGFkZFByb3BlcnR5SW5kZXgodW5zaWduZWQgcHJvcGVydHlJbmRleCkgeyBtX3By
b3BlcnR5SW5kZXhlcy5hZGQocHJvcGVydHlJbmRleCk7IH0KQEAgLTQ1LDEyICs0NSwxMiBAQCBw
dWJsaWM6CiAgICAgaW50IHByb3BlcnR5SW5kZXhDb3VudCgpIHsgcmV0dXJuIG1fcHJvcGVydHlJ
bmRleGVzLnNpemUoKTsgfQogCiBwcml2YXRlOgotICAgIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMo
SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmJiBpbnN0cnVjdGlvblJlZikKKyAgICBTdGF0
aWNQcm9wZXJ0eUFuYWx5c2lzKHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVS
ZWYmJiBpbnN0cnVjdGlvblJlZikKICAgICAgICAgOiBtX2luc3RydWN0aW9uUmVmKFdURk1vdmUo
aW5zdHJ1Y3Rpb25SZWYpKQogICAgIHsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6
TXV0YWJsZVJlZiBtX2luc3RydWN0aW9uUmVmOworICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok11dGFibGVSZWYgbV9pbnN0cnVjdGlvblJlZjsKICAgICB0eXBlZGVmIEhhc2hTZXQ8
dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBQcm9wZXJ0eUluZGV4U2V0OwogICAgIFByb3BlcnR5SW5k
ZXhTZXQgbV9wcm9wZXJ0eUluZGV4ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAppbmRleCA1
ZjllNzM4NjJhNGFjZDMwN2IxMDFiZDFjZDZmMjNmYzUxNzUyZDNiLi5hZTQ5YjAyNzczYzY3MjBl
M2NmMzMxNTFjMTY5YTFlYmYyZTA4MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaApAQCAtMzUs
OCArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGlzIHVuZGVyc3Rvb2QgdG8gYmUgbG9zc3ks
IGFuZCBpdCdzIE9LIGlmIGl0IHR1cm5zIG91dCB0byBiZSB3cm9uZyBzb21ldGltZXMuCiBjbGFz
cyBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGNyZWF0ZVRoaXMo
UmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlv
blJlZik7Ci0gICAgdm9pZCBuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0
cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7CisgICAgdm9pZCBjcmVhdGVUaGlzKFJl
Z2lzdGVySUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBp
bnN0cnVjdGlvblJlZik7CisgICAgdm9pZCBuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCB0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKTsKICAg
ICB2b2lkIHB1dEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KTsg
Ly8gcHJvcGVydHlJbmRleCBpcyBhbiBpbmRleCBpbnRvIGEgdW5pcXVlZCBzZXQgb2Ygc3RyaW5n
cy4KICAgICB2b2lkIG1vdihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKQEAg
LTUwLDE0ICs1MCwxNCBAQCBwcml2YXRlOgogICAgIEFuYWx5c2lzTWFwIG1fYW5hbHlzZXM7CiB9
OwogCi1pbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKFJlZ2lz
dGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYp
CitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKFJlZ2lzdGVy
SUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVj
dGlvblJlZikKIHsKICAgICBBbmFseXNpc01hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fYW5h
bHlzZXMuYWRkKAogICAgICAgICBkc3QtPmluZGV4KCksIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6
OmNyZWF0ZShXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7IC8vIENhbid0IGhhdmUgdHdvICd0aGlzJyBp
biB0aGUgc2FtZSBjb25zdHJ1Y3Rvci4KIH0KIAotaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlB
bmFseXplcjo6bmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11
dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5
emVyOjpuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKQogewogICAgIGF1dG8gYW5hbHlzaXMgPSBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpOwog
ICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hbmFseXNlcy5hZGQoZHN0
LT5pbmRleCgpLCBhbmFseXNpcy5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlYWNiYzBjZTI3MmY2N2JlODJjNzkz
NzJhYTdmNzI4ODhiNmYyMTVmLi4wNTc4ZTRmY2M3ODdhYzM5Mjk5NDMwOTAyMWRkY2EwNTk3YzZh
YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcApAQCAtMTgyLDkgKzE4Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUqIGNhbGxUYXJn
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBD
YWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgRUNNQU1v
ZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4K
LSAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5
cGUgb3AsIENhbGxNb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCk7CisgICAgVGVybWlu
YWxpdHkgaGFuZGxlQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENh
bGxNb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2FsbE9wPgotICAgIFRlcm1pbmFsaXR5IGhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlKTsKKyAgICBUZXJtaW5hbGl0eSBoYW5k
bGVWYXJhcmdzQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxN
b2RlKTsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2Fs
bFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsKICAgICB2b2lkIGVtaXRBcmd1
bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKTsKICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7CkBAIC0yNDYsNyArMjQ2LDcg
QEAgcHJpdmF0ZToKICAgICBOb2RlKiBzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlm
aWVyLCBjb25zdCBQdXRCeVZhcmlhbnQmLCBOb2RlKiB2YWx1ZSk7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICB2b2lkIHBhcnNlR2V0QnlJZChjb25zdCBJbnN0cnVjdGlvbiopOwor
ICAgIHZvaWQgcGFyc2VHZXRCeUlkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICAgICB2b2lkIHNp
bXBsaWZ5R2V0QnlTdGF0dXMoTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMmKTsKICAgICB2b2lkIGhh
bmRsZUdldEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3Vs
YXRlZFR5cGUsIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCBCeXRlY29kZUluZGV4IG9zckV4
aXRJbmRleCk7CkBAIC0xMjU0LDEwICsxMjU0LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUq
IG1fdmFsdWUgeyBudWxscHRyIH07CiAgICAgICAgIFNldE1vZGUgbV9zZXRNb2RlOwogICAgIH07
Ci0gICAgCisKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7
CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CisgICAgY29u
c3QgSlNJbnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgYm9vbCBtX2hhc0Rl
YnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07
CiB9OwpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6YWRkSnVtcFRv
KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4K
LUJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChj
b25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSwgQnl0
ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpCitCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBl
IG9wLCBDYWxsTW9kZSBjYWxsTW9kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7CiAgICAgTm9kZSogY2FsbFRhcmdl
dCA9IGdldChjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkp
OwpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci1C
eXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3ND
YWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2Rl
KQorQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJh
cmdzQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNh
bGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8Q2FsbE9wPigpOwogICAgIGlu
dCBmaXJzdEZyZWVSZWcgPSBieXRlY29kZS5tX2ZpcnN0RnJlZS5vZmZzZXQoKTsKQEAgLTE1MzUs
MTQgKzE1MzUsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENh
bGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50IGMKICAgICAgICAgQnl0ZWNvZGVJ
bmRleCBvbGRJbmRleCA9IG1fY3VycmVudEluZGV4OwogICAgICAgICBhdXRvIG9sZFN0YWNrVG9w
ID0gbV9pbmxpbmVTdGFja1RvcDsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcCA9IHN0YWNrRW50
cnk7Ci0gICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChvcGNvZGVMZW5ndGhz
W29wX2VudGVyXSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoT3Bjb2RlSURXaWR0aEJ5U2l6ZTxK
U09wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTMyPjo6b3Bjb2RlSURTaXplID09IDEpOwor
ICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgob3Bjb2RlTGVuZ3Roc1tvcF9l
bnRlcl0gKyAxKTsKICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBwcm9jZXNzU2V0
TG9jYWxRdWV1ZSgpOwogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZEluZGV4OwogICAgICAg
ICBtX2lubGluZVN0YWNrVG9wID0gb2xkU3RhY2tUb3A7CiAgICAgICAgIG1fZXhpdE9LID0gZmFs
c2U7CiAKLSAgICAgICAgQmFzaWNCbG9jayoqIGVudHJ5QmxvY2tQdHIgPSB0cnlCaW5hcnlTZWFy
Y2g8QmFzaWNCbG9jayosIEJ5dGVjb2RlSW5kZXg+KHN0YWNrRW50cnktPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cywgc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLnNpemUoKSwgQnl0ZWNv
ZGVJbmRleChvcGNvZGVMZW5ndGhzW29wX2VudGVyXSksIGdldEJ5dGVjb2RlQmVnaW5Gb3JCbG9j
ayk7CisgICAgICAgIEJhc2ljQmxvY2sqKiBlbnRyeUJsb2NrUHRyID0gdHJ5QmluYXJ5U2VhcmNo
PEJhc2ljQmxvY2sqLCBCeXRlY29kZUluZGV4PihzdGFja0VudHJ5LT5tX2Jsb2NrTGlua2luZ1Rh
cmdldHMsIHN0YWNrRW50cnktPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5zaXplKCksIEJ5dGVjb2Rl
SW5kZXgob3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl0gKyAxKSwgZ2V0Qnl0ZWNvZGVCZWdpbkZvckJs
b2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW50cnlCbG9ja1B0cik7CiAgICAgICAgIGFk
ZEp1bXBUbygqZW50cnlCbG9ja1B0cik7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTY1NCw3
ICsxNjU1LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFy
aWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKIHRlbXBsYXRlPHR5cGVuYW1lIENo
ZWNrc0Z1bmN0b3I+CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3Vy
cmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CisgICAgY29uc3QgSlNJbnN0
cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJlbnRJbnN0cnVjdGlvbjsK
ICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNh
bGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwogCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCktPmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CkBAIC01MzQ1LDcgKzUzNDYsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpjbGVhckNhY2hlcygpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VHZXRCeUlkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUdldEJ5SWQoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24gPSBnZXRQcmVkaWN0aW9uKCk7CkBAIC01NDcxLDEyICs1NDcyLDEyIEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYWRk
SnVtcFRvKG1fY3VycmVudEluZGV4Lm9mZnNldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICAvLyBTd2l0Y2ggb24gdGhlIGN1cnJlbnQgYnl0
ZWNvZGUgb3Bjb2RlLgotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1fY3VycmVudEluZGV4KS5wdHIoKTsKKyAgICAgICAgY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1f
Y3VycmVudEluZGV4KS5wdHIoKTsKICAgICAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBjdXJy
ZW50SW5zdHJ1Y3Rpb247IC8vIFNvbWUgbWV0aG9kcyB3YW50IHRvIHVzZSB0aGlzLCBhbmQgd2Un
ZCByYXRoZXIgbm90IHRocmVhZCBpdCB0aHJvdWdoIGNhbGxzLgogICAgICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKLSAgICAgICAgCisKICAg
ICAgICAgVkVSQk9TRV9MT0coIiAgICBwYXJzaW5nICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICI6
ICIsIG9wY29kZUlELCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpKSB7CkBAIC04ODAwLDggKzg4MDEsOCBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgIGRhdGFMb2dMbigpOwogICAgICAgICBj
b2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNvZGUoKTsKICAgICB9Ci0gICAg
Ci0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiBqdW1wVGFyZ2V0czsK
KworICAgIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiBq
dW1wVGFyZ2V0czsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVt
cFRhcmdldHMpOwogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0ZWNvZGVBdERGR1Rp
bWUoKSkpIHsKICAgICAgICAgZGF0YUxvZygiSnVtcCB0YXJnZXRzOiAiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA1ZTMyZDJkMjRmMWIz
ZWQ4NzBjMzMwZjJlZjIzZDg1ZTRlY2U0ODM3Li41ODJhYWY1ZmQxOTY0YTQ0N2UxMTQ0MjE0YmY4
MjBkMTFkYWQyMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgaW5saW5lIHZvaWQgZGVidWdGYWlsKENvZGVC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgQ2FwYWJpbGl0eUxldmVsIHIKICAg
ICAgICAgZGF0YUxvZygiREZHIHJlamVjdGluZyBvcGNvZGUgaW4gIiwgKmNvZGVCbG9jaywgIiBi
ZWNhdXNlIG9mIG9wY29kZSAiLCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sICJcbiIpOwogfQogCi1D
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIFVOVVNFRF9QQVJBTShjb2RlQmxvY2spOyAv
LyBUaGlzIGZ1bmN0aW9uIGRvZXMgc29tZSBieXRlY29kZSBwYXJzaW5nLiBPcmRpbmFyaWx5IGJ5
dGVjb2RlIHBhcnNpbmcgcmVxdWlyZXMgdGhlIG93bmluZyBDb2RlQmxvY2suIEl0J3Mgc29ydCBv
ZiBzdHJhbmdlIHRoYXQgd2UgZG9uJ3QgdXNlIGl0IGhlcmUgcmlnaHQgbm93LgogICAgIFVOVVNF
RF9QQVJBTShwYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aAppbmRleCA0ZGE4OWFiNzQyM2EwZDgwOTllZDBjNTI5MDQ1YWJiMjVjMWI0ZGFlLi44ZTViMTAz
MGQ1OTQ4NDRkNmExOGExZWRmZDg1Mjk4M2EwOTNmYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgYm9vbCBtaWdodElu
bGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKik7CiBib29sIG1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKik7CiBib29sIGNhblVzZU9TUkV4aXRGdXp6
aW5nKENvZGVCbG9jayopOwogCi1pbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKTsKK2lubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlELCBDb2RlQmxvY2sqLCBjb25z
dCBKU0luc3RydWN0aW9uKiBwYyk7CiAKIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
Q29kZUJsb2NrKik7CiAjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKQEAgLTU4LDcgKzU4LDcgQEAg
aW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNsb3N1cmVDYWxsKENvZGVCbG9jayop
IHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgYm9vbCBjYW5Vc2VP
U1JFeGl0RnV6emluZyhDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQogCi1pbmxpbmUgQ2Fw
YWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qKSB7IHJldHVybiBDYW5ub3RDb21waWxlOyB9CitpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3QgSlNJbnN0
cnVjdGlvbiopIHsgcmV0dXJuIENhbm5vdENvbXBpbGU7IH0KIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayopIHsgcmV0dXJuIENhbm5vdENvbXBpbGU7IH0K
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKaW5kZXggODlhZTczZjIzZGE1N2M3M2VlMTA1NjE0YmM2NzQ3ZWQwMTkyNTVk
My4uYjI0M2M2NzQ3OTUwY2VmZDZiNTJkOGRlNTNhNWFhZWExNDhiYjBmYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JF
eGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhp
dC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pOwogICAgICAgICAg
ICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gY29kZUJsb2NrLT5nZXRBcnJheVBy
b2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5h
dChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CisgICAgICAgICAgICAgICAgY29u
c3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgc2tpcFByb2ZpbGU7CiAgICAgICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uLT5p
czxPcEdldEJ5SWQ+KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBp
bnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKGNvZGVCbG9jayk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKaW5kZXggMTgyMjIzOTZjZjQ1ZTdhZTdjM2IxMDNjNGVmYTk2ZmFhNzQxOGY3OS4uNTg0ZmZk
ODg1NmIxOGM3NzY4YmNhMmQzNzk1ZTkwZTgzMzFlMjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTQ4
LDcgKzE0OCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4g
Y2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvCiAKICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldDsKIAotICAgIGNvbnN0IEluc3RydWN0
aW9uJiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmluc3Ry
dWN0aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBjb25zdCBhdXRvJiBj
YWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmluc3RydWN0aW9u
cygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBpZiAoY2FsbGVySXNMTEludCkg
ewogI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgTExJbnQ6OnJldHVybkxvY2F0
aW9uVGh1bmsobmFtZSMjX3JldHVybl9sb2NhdGlvbiwgY2FsbEluc3RydWN0aW9uLndpZHRoKCkp
LmNvZGUoKQogCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQo
Vk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAg
Ym9vbCBleGl0VG9MTEludCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBjb2Rl
QmxvY2tGb3JFeGl0LT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuazsKICAg
ICBpZiAoZXhpdFRvTExJbnQpIHsKICAgICAgICAgYXV0byBieXRlY29kZUluZGV4ID0gZXhpdC5t
X2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYg
Y3VycmVudEluc3RydWN0aW9uID0gKmNvZGVCbG9ja0ZvckV4aXQtPmluc3RydWN0aW9ucygpLmF0
KGJ5dGVjb2RlSW5kZXgpLnB0cigpOworICAgICAgICBjb25zdCBhdXRvJiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSAqY29kZUJsb2NrRm9yRXhpdC0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRl
eCkucHRyKCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBk
ZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQogICAg
ICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5l
VGh1bmsoKS5jb2RlKCk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9U
YXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQp
CiAKICAgICAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpIHsKICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY3VycmVudEluc3RydWN0aW9u
KSwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJl
Z1QyLCAmdm0udGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93KTsKKyAgICAgICAgICAgIGppdC5z
dG9yZVB0cihHUFJJbmZvOjpyZWdUMiwgJnN0ZDo6Z2V0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPih2
bS50YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cpKTsKICAgICAgICAgfQogCiAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tGb3JFeGl0LT5tZXRh
ZGF0YVRhYmxlKCkpLCBMTEludDo6UmVnaXN0ZXJzOjptZXRhZGF0YVRhYmxlR1BSKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZmMz
YTZjNGZkYWUzZGQ4OTY3OGM2YmI5YTY1NjkwYjQ4ZjdmYWQ3YS4uMzYwZTE4MTgzZWNiYTFlMGNj
MDVkNzZjNzJjZGYxMjE5ZWNjYjE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIxMDAsNyArMjEwMCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludChOb2RlKiBub2RlKQogICAgICAgICBpZiAoZW1pdEVh
cmx5UmV0dXJuKSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0g
bV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieXRl
Y29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8qIGluc3Ry
dWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5k
ZXgub2Zmc2V0KCkpLnB0cigpOwogCiAgICAgICAgICAgICB1aW50cHRyX3QqIHB0ciA9IHZtKCku
Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9uKTsKICAgICAgICAgICAgIG1f
aml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDllNTk5YmZmZWM4YjkwMGZkNzIzOGVkYzYz
OWNlYjU2NDk0M2E5YzguLjhjNDRkNjRiODk1ZTgyNmZjYTRjMzczYTRjNDY2Y2IzMjE2YWM5Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTE2Mjc0LDcgKzE2Mjc0LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogCiAgICAgICAg
IENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbV9vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCk7CisgICAgICAgIGNvbnN0IGF1dG8q
IGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsK
ICAgICAgICAgdWludHB0cl90KiBwdHIgPSB2bS0+Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVy
KGluc3RydWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCmluZGV4IGZlNzlmNzhkMzc1MGQ2MzRkZTIzMjNjYWRkYjA2ZDQxN2U4
ODNiZTcuLmE4MjRmN2E1MTljZTQ1ZjRhNzQyNTU1OGUzNDRkMmYyN2Q0ZGQzY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAgLTI1
NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4
aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICAgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNv
ZGVPcmlnaW4pOwogICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0g
Y29kZUJsb2NrLT5nZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpKSB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7
CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2tpcFByb2ZpbGU7CiAgICAgICAgICAgICAg
ICAgaWYgKGluc3RydWN0aW9uLT5pczxPcEdldEJ5SWQ+KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRh
KGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNw
cAppbmRleCAyYWI2YTgwOTA4NmJjYjI1ZDA5MTZlZTE1NzZkMGVlYzgxMGJiMzBmLi5iOTVlNzQz
YTI2NWQ2NzNjNDFjMTczOTVlM2YzN2FmYWUzYzAyZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTU3NSw3ICs1NzUsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUiwgSlNDZWxsKiwg
KEpTR2xvYmFsT2JqZQogICAgICAgICAvLyBGb3Igbm93LCB3ZSB1c2UgYXJyYXkgYWxsb2NhdGlv
biBwcm9maWxlIGluIHRoZSBhY3R1YWwgQ29kZUJsb2NrLiBJdCBpcyBPSyBzaW5jZSBjdXJyZW50
IE5ld0FycmF5QnVmZmVyCiAgICAgICAgIC8vIGFuZCBQaGFudG9tTmV3QXJyYXlCdWZmZXIgYXJl
IGFsd2F5cyBib3VuZCB0byBhIHNwZWNpZmljIG9wX25ld19hcnJheV9idWZmZXIuCiAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNl
bGluZUNvZGVCbG9jayhtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLCBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpOwotICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChtYXRl
cmlhbGl6YXRpb24tPm9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CisgICAgICAgIGNv
bnN0IGF1dG8qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YXQobWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5ieXRlY29kZUluZGV4KCkpLnB0cigpOwogICAg
ICAgICBpZiAoIWN1cnJlbnRJbnN0cnVjdGlvbi0+aXM8T3BOZXdBcnJheUJ1ZmZlcj4oKSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBjYXNlIGNhbiBoYXBwZW4gaWYgT2JqZWN0LmtleXMsIGFuIE9w
Q2FsbCBpcyBmaXJzdCBjb252ZXJ0ZWQgaW50byBhIE5ld0FycmF5QnVmZmVyIHdoaWNoIGlzIHRo
ZW4gY29udmVydGVkIGludG8gYSBQaGFudG9tTmV3QXJyYXlCdWZmZXIuCiAgICAgICAgICAgICAv
LyBUaGVyZSBpcyBubyBuZWVkIHRvIHVwZGF0ZSB0aGUgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxl
IGluIHRoYXQgY2FzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvQXJndW1lbnQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0FyZ3VtZW50
LnJiCmluZGV4IGQ0ZDhjNjY4ZjQzMWI5ZmM2M2EwNmM0NmRmNGZhNTJlMTMzNzU0YzMuLjFmNWFm
ZWQ2Y2FkMzZmMWQ4YmVmZjZmODZlZDA1YTQ3ZmZhMTBiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJndW1lbnQucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9Bcmd1bWVudC5yYgpAQCAtNzEsOSArNzEsOSBAQCBjbGFzcyBBcmd1
bWVudAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBzZXQje2NhcGl0
YWxpemVkX25hbWV9KCN7QHR5cGUudG9fc30gdmFsdWUsIEZ1bmN0b3IgZnVuYykKICAgICB7Ci0g
ICAgICAgIGlmIChpc1dpZGUzMjwje3RyYWl0c30+KCkpCisgICAgICAgIGlmIChpc1dpZGUzMigp
KQogICAgICAgICAgICAgc2V0I3tjYXBpdGFsaXplZF9uYW1lfTxPcGNvZGVTaXplOjpXaWRlMzI+
KHZhbHVlLCBmdW5jKTsKLSAgICAgICAgZWxzZSBpZiAoaXNXaWRlMTY8I3t0cmFpdHN9PigpKQor
ICAgICAgICBlbHNlIGlmIChpc1dpZGUxNigpKQogICAgICAgICAgICAgc2V0I3tjYXBpdGFsaXpl
ZF9uYW1lfTxPcGNvZGVTaXplOjpXaWRlMTY+KHZhbHVlLCBmdW5jKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc2V0I3tjYXBpdGFsaXplZF9uYW1lfTxPcGNvZGVTaXplOjpOYXJyb3c+KHZh
bHVlLCBmdW5jKTsKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgQXJndW1lbnQKICAgICB7CiAgICAg
ICAgIGlmICghI3tGaXRzOjpjaGVjayAic2l6ZSIsICJ2YWx1ZSIsIEB0eXBlfSkKICAgICAgICAg
ICAgIHZhbHVlID0gZnVuYygpOwotICAgICAgICBhdXRvKiBzdHJlYW0gPSBiaXR3aXNlX2Nhc3Q8
dHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlKj4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4odGhpcykgKyAje0BpbmRleH0gKiBzaXplICsgUGFkZGluZ0J5U2l6ZTxzaXpl
Pjo6dmFsdWUgKyAvKiBPcGNvZGUgc2l6ZSAqLyAxKTsKKyAgICAgICAgYXV0byogc3RyZWFtID0g
Yml0d2lzZV9jYXN0PHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgI3tAaW5kZXh9ICogc2l6ZSArIFBhZGRp
bmdCeVNpemU8c2l6ZT46OnZhbHVlICsgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3RyYWl0c30sIHNp
emU+OjpvcGNvZGVJRFNpemUpOwogICAgICAgICAqc3RyZWFtID0gI3tGaXRzOjpjb252ZXJ0ICJz
aXplIiwgInZhbHVlIiwgQHR5cGV9OwogICAgIH0KIEVPRgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgppbmRleCA2ZjBhOGYxYTgwM2UxNTE2NGU5OTQ0MzQ3YmEzMzQ0OTY1OTg2
MDhkLi5lOTBmOTk0NjYxYTdmM2VkZWFiMDc3YmQwNDVkYTRjYWQ0OWZiZWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQ5LDEwICsxNDksMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEJhc2ljQmxvY2tMb2NhdGlvbjsKIAotdm9pZCBkdW1wQnl0ZWNv
ZGUoQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQs
IGNvbnN0IEluc3RydWN0aW9uKik7Cit2b2lkIGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlckJh
c2U8SlNJbnN0cnVjdGlvblN0cmVhbT4qIGR1bXBlciwgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0LCBjb25zdCBKU0luc3RydWN0aW9uKik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi12
b2lkIGR1bXBXYXNtKEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCBjb25zdCBJbnN0cnVjdGlvbiopOwordm9pZCBkdW1wV2FzbShCeXRlY29kZUR1
bXBlckJhc2U8V2FzbUluc3RydWN0aW9uU3RyZWFtPiogZHVtcGVyLCBXYXNtSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgY29uc3QgV2FzbUluc3RydWN0aW9uKik7CiAjZW5kaWYgLy8gRU5BQkxF
KFdFQkFTU0VNQkxZKQogCiBFT0YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvT3Bjb2RlLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNv
ZGUucmIKaW5kZXggMDYxYjc2YTgxM2Q0NzExMmNjOTBiOTkzNjhlYmNiY2VmZThlMmU1ZC4uZWU2
Nzg3YjE4ZTRkOGQzYWJmZjg5MTAyYmM1Y2NhNzcwMGMwMGRhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIKQEAgLTEwOCw2ICsxMDgsMTAgQEAgY2xhc3MgT3Bj
b2RlCiAgICAgICBAc2VjdGlvbi5pc193YXNtPyA/ICJXYXNtT3Bjb2RlVHJhaXRzIiA6ICJKU09w
Y29kZVRyYWl0cyIKICAgICBlbmQKIAorICAgIGRlZiB0eXBlX3ByZWZpeAorICAgICAgQHNlY3Rp
b24uaXNfd2FzbT8gPyAiV2FzbSIgOiAiSlMiCisgICAgZW5kCisKICAgICBkZWYgbWFwX2ZpZWxk
c193aXRoX3NpemUocHJlZml4LCBzaXplLCAmYmxvY2spCiAgICAgICAgIGFyZ3MgPSBbQXJndW1l
bnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCldCiAgICAgICAgIGFyZ3MgKz0gQGFy
Z3MuZHVwIGlmIEBhcmdzCkBAIC0xMjgsNyArMTMyLDcgQEAgY2xhc3MgT3Bjb2RlCiAKICAgICBk
ZWYgc3RydWN0CiAgICAgICAgIDw8LUVPRgotc3RydWN0ICN7Y2FwaXRhbGl6ZWRfbmFtZX0gOiBw
dWJsaWMgSW5zdHJ1Y3Rpb24geworc3RydWN0ICN7Y2FwaXRhbGl6ZWRfbmFtZX0gOiBwdWJsaWMg
I3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvbiB7CiAgICAgI3tvcGNvZGVJRH0KICAgICAje2xlbmd0
aFZhbHVlfQogICAgICN7dGVtcHN9CkBAIC0xNjIsNyArMTY2LDcgQEAgRU9GCiAgICAgZGVmIGNo
ZWNrcG9pbnRTaXplQXNzZXJ0CiAgICAgICAgIHJldHVybiBpZiBAY2hlY2twb2ludHMubmlsPwog
Ci0gICAgICAgICJzdGF0aWNfYXNzZXJ0KCN7Y2FwaXRhbGl6ZWRfbmFtZX06Omxlbmd0aCA+ICN7
Y2FwaXRhbGl6ZWRfbmFtZX06Om51bWJlck9mQ2hlY2twb2ludHMsIFwiRnVsbEJ5dGVjb2RlTGl2
ZXNzIHJlbGllcyBvbiB0aGUgbGVuZ3RoIG9mICN7Y2FwaXRhbGl6ZWRfbmFtZX0gYmVpbmcgZ3Jl
YXRlciB0aGFuIHRoZSBudW1iZXIgb2YgY2hlY2twb2ludHNcIik7IgorICAgICAgICAic3RhdGlj
X2Fzc2VydCgje2NhcGl0YWxpemVkX25hbWV9OjpsZW5ndGggKyAxID4gI3tjYXBpdGFsaXplZF9u
YW1lfTo6bnVtYmVyT2ZDaGVja3BvaW50cywgXCJGdWxsQnl0ZWNvZGVMaXZlc3MgcmVsaWVzIG9u
IHRoZSBsZW5ndGggb2YgI3tjYXBpdGFsaXplZF9uYW1lfSBiZWluZyBncmVhdGVyIHRoYW4gdGhl
IG51bWJlciBvZiBjaGVja3BvaW50c1wiKTsiCiAgICAgZW5kCiAKICAgICBkZWYgdGVtcHMKQEAg
LTIzMiw2ICsyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAgICAgICAgIHJldHVybiAje21hcF9maWVsZHNfd2l0aF9zaXplKCIiLCAiX19zaXplIiwg
JjpmaXRzX2NoZWNrKS5qb2luICJcbiAgICAgICAgICAgICYmICJ9CisgICAgICAgICAgICAmJiAo
X19zaXplID09IE9wY29kZVNpemU6Ok5hcnJvdyA/ICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIs
IG9wY29kZUlEVHlwZSwgMCkuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6ICN7QXJndW1lbnQu
bmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCkuZml0c19jaGVjayhTaXplOjpXaWRlMTYp
fSkKICAgICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2ID8gI3tvcF93
aWRlMTYuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6IHRydWUpCiAgICAgICAgICAgICAmJiAo
X19zaXplID09IE9wY29kZVNpemU6OldpZGUzMiA/ICN7b3Bfd2lkZTMyLmZpdHNfY2hlY2soU2l6
ZTo6TmFycm93KX0gOiB0cnVlKTsKICAgICB9CkBAIC0yNTEsNyArMjU2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAje29wX3dpZGUxNi5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KICAg
ICAgICAgICAgIGVsc2UgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAgICAg
ICAgICAgICAgI3tvcF93aWRlMzIuZml0c193cml0ZSBTaXplOjpOYXJyb3d9Ci0gICAgICAgICAg
ICAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNvZGVJRFR5cGUsIDApLmZpdHNfd3JpdGUg
U2l6ZTo6TmFycm93fQorICAgICAgICAgICAgI3tBcmd1bWVudC5uZXcoIm9wY29kZUlEIiwgb3Bj
b2RlSURUeXBlLCAwKS5maXRzX3dyaXRlICJPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlwZV9wcmVm
aXh9T3Bjb2RlVHJhaXRzLCBfX3NpemU+OjpvcGNvZGVJRFNpemUifQogI3ttYXBfb3BlcmFuZHNf
d2l0aF9zaXplKCIgICAgICAgICAgICAiLCAiX19zaXplIiwgJjpmaXRzX3dyaXRlKS5qb2luICJc
biJ9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjY0LDcgKzI2OSw3
IEBAIEVPRgogCiAgICAgZGVmIGR1bXBlcgogICAgICAgICA8PC1FT0YKLSAgICB2b2lkIGR1bXAo
Qnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgX19s
b2NhdGlvbiwgaW50IF9fc2l6ZVNoaWZ0QW1vdW50KQorICAgIHZvaWQgZHVtcChCeXRlY29kZUR1
bXBlckJhc2U8I3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvblN0cmVhbT4qIGR1bXBlciwgI3t0eXBl
X3ByZWZpeH1JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGludCBfX3NpemVT
aGlmdEFtb3VudCkKICAgICB7CiAgICAgICAgIGR1bXBlci0+cHJpbnRMb2NhdGlvbkFuZE9wKF9f
bG9jYXRpb24sICYiKioje0BuYW1lfSJbMiAtIF9fc2l6ZVNoaWZ0QW1vdW50XSk7CiAje3ByaW50
X2FyZ3MgeyB8YXJnfApAQCAtMjg0LDMwICsyODksMzAgQEAgRU9GCiAgICAgI3tjYXBpdGFsaXpl
ZF9uYW1lfShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgICAgICN7aW5pdC5jYWxsKCJPcGNv
ZGVTaXplOjpOYXJyb3ciKX0KICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBi
aXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlEKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIHN0YXRpY19jYXN0PCN7b3Bjb2RlSURUeXBlfT4o
Yml0d2lzZV9jYXN0PGNvbnN0IHR5cGVuYW1lIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3By
ZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJvdz46Om9wY29kZVR5cGUqPihzdHJl
YW0pWy0xXSkgPT0gb3Bjb2RlSUQpOwogICAgIH0KIAogICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0o
Y29uc3QgdWludDE2X3QqIHN0cmVhbSkKICAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6
OldpZGUxNiIpfQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIGJpdHdpc2Vf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQpOworICAgICAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RhdGljX2Nhc3Q8I3tvcGNvZGVJRFR5cGV9PihiaXR3aXNl
X2Nhc3Q8Y29uc3QgdHlwZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9w
Y29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTE2Pjo6b3Bjb2RlVHlwZSo+KHN0cmVhbSlbLTFd
KSA9PSBvcGNvZGVJRCk7CiAgICAgfQogCiAKICAgICAje2NhcGl0YWxpemVkX25hbWV9KGNvbnN0
IHVpbnQzMl90KiBzdHJlYW0pCiAgICAgICAgICN7aW5pdC5jYWxsKCJPcGNvZGVTaXplOjpXaWRl
MzIiKX0KICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBiaXR3aXNlX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlEKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChzdHJlYW0sIHN0YXRpY19jYXN0PCN7b3Bjb2RlSURUeXBlfT4oYml0d2lzZV9jYXN0
PGNvbnN0IHR5cGVuYW1lIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3ByZWZpeH1PcGNvZGVU
cmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29kZVR5cGUqPihzdHJlYW0pWy0xXSkgPT0g
b3Bjb2RlSUQpOwogICAgIH0KIAogICAgIHN0YXRpYyAje2NhcGl0YWxpemVkX25hbWV9IGRlY29k
ZShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgewogICAgICAgICAvLyBBIHBvaW50ZXIgaXMg
cG9pbnRpbmcgdG8gdGhlIGZpcnN0IG9wZXJhbmQgKG9wY29kZSBhbmQgcHJlZml4IGFyZSBub3Qg
aW5jbHVkZWQpLgogICAgICAgICBpZiAoKnN0cmVhbSA9PSAje3dpZGUzMn0pCi0gICAgICAgICAg
ICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzdHJlYW0gKyAyKSB9Owor
ICAgICAgICAgICAgcmV0dXJuIHsgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oc3RyZWFt
ICsgLyogcHJlZml4ICovIDEgKyBPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bj
b2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemUpIH07CiAgICAgICAg
IGlmICgqc3RyZWFtID09ICN7d2lkZTE2fSkKLSAgICAgICAgICAgIHJldHVybiB7IGJpdHdpc2Vf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHN0cmVhbSArIDIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0
cmVhbSArIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50
MTZfdCo+KHN0cmVhbSArIC8qIHByZWZpeCAqLyAxICsgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5
cGVfcHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTE2Pjo6b3Bjb2RlSURTaXpl
KSB9OworICAgICAgICByZXR1cm4geyBzdHJlYW0gKyBPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlw
ZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpOYXJyb3c+OjpvcGNvZGVJRFNpemUg
fTsKICAgICB9CiBFT0YKICAgICBlbmQKQEAgLTM2MiwxOCArMzY3LDE5IEBAIEVPRgogICAgIGVu
ZAogCiAgICAgZGVmIGxlbmd0aAotICAgICAgICAxICsgKEBhcmdzLm5pbD8gPyAwIDogQGFyZ3Mu
bGVuZ3RoKSArIChAbWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEpCisgICAgICAgIChAYXJncy5uaWw/
ID8gMCA6IEBhcmdzLmxlbmd0aCkgKyAoQG1ldGFkYXRhLmVtcHR5PyA/IDAgOiAxKQogICAgIGVu
ZAogCiAgICAgZGVmIHNlbGYuZHVtcF9ieXRlY29kZShuYW1lLCBvcGNvZGVfdHJhaXRzLCBvcGNv
ZGVzKQorICAgICAgICB0eXBlX3ByZWZpeCA9IChvcGNvZGVfdHJhaXRzID09IDpKU09wY29kZVRy
YWl0cyA/ICJKUyIgOiAob3Bjb2RlX3RyYWl0cyA9PSA6V2FzbU9wY29kZVRyYWl0cyA/ICJXYXNt
IiA6ICJFcnJvciN7b3Bjb2RlX3RyYWl0c30iKSkKICAgICAgICAgPDwtRU9GLmNob21wCi12b2lk
IGR1bXAje25hbWV9KEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IF9fbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiBfX2luc3RydWN0aW9uKQor
dm9pZCBkdW1wI3tuYW1lfShCeXRlY29kZUR1bXBlckJhc2U8I3t0eXBlX3ByZWZpeH1JbnN0cnVj
dGlvblN0cmVhbT4qIGR1bXBlciwgI3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IF9fbG9jYXRpb24sIGNvbnN0ICN7dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rpb24qIF9faW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgc3dpdGNoIChfX2luc3RydWN0aW9uLT5vcGNvZGVJRDwje29wY29kZV90
cmFpdHN9PigpKSB7CisgICAgc3dpdGNoIChfX2luc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CiAj
e29wY29kZXMubWFwIHsgfG9wfAogICAgICAgICA8PC1FT0YuY2hvbXAKICAgICBjYXNlICN7b3Au
bmFtZX06Ci0gICAgICAgIF9faW5zdHJ1Y3Rpb24tPmFzPCN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0s
ICN7b3Bjb2RlX3RyYWl0c30+KCkuZHVtcChkdW1wZXIsIF9fbG9jYXRpb24sIF9faW5zdHJ1Y3Rp
b24tPnNpemVTaGlmdEFtb3VudDwje29wY29kZV90cmFpdHN9PigpKTsKKyAgICAgICAgX19pbnN0
cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9uYW1lfT4oKS5kdW1wKGR1bXBlciwgX19sb2Nh
dGlvbiwgX19pbnN0cnVjdGlvbi0+c2l6ZVNoaWZ0QW1vdW50KCkpOwogICAgICAgICBicmVhazsK
IEVPRgogICAgIH0uam9pbiAiXG4ifQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9BYnN0cmFjdFBDLmgKaW5kZXggNzk1ZGE1MjRhNjNmNzQ5MTIwODRiMmNlMWE5OTVhOTA1
YjEwNGYwYy4uYzMxOWM3ODZhOGJlNjQ0MjM3MjBmODBkNGI5NjY0ODEzMDk0MjMzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCkBAIC0zMSw3
ICszMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsK
LXN0cnVjdCBJbnN0cnVjdGlvbjsKIAogY2xhc3MgQWJzdHJhY3RQQyB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCmluZGV4IDll
ZGY1OWI5Njg2YTVhZDZjZWE4MzgzZjc0MzMzMzYwYTE5YzZkNDEuLmE2MTgzYjBkNzI0ZjlmY2Rm
ZTU0MmQ0MmU5ZjFhZDY2YzcxYzE4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBTVVBQUkVTU19B
U0FOIENhbGxTaXRlSW5kZXggQ2FsbEZyYW1lOjp1bnNhZmVDYWxsU2l0ZUluZGV4KCkgY29uc3QK
ICAgICByZXR1cm4gQ2FsbFNpdGVJbmRleDo6ZnJvbUJpdHModW5zYWZlQ2FsbFNpdGVBc1Jhd0Jp
dHMoKSk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBj
b25zdAorY29uc3QgSlNJbnN0cnVjdGlvbiogQ2FsbEZyYW1lOjpjdXJyZW50VlBDKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoY2FsbFNpdGVCaXRzQXJlQnl0ZWNvZGVPZmZzZXQoKSk7CiAgICAgcmV0
dXJuIGNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5hdChjYWxsU2l0ZUJpdHNBc0J5dGVjb2Rl
T2Zmc2V0KCkpLnB0cigpOwogfQogCi12b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhjb25z
dCBJbnN0cnVjdGlvbiogdnBjKQordm9pZCBDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMoY29uc3Qg
SlNJbnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUoY29kZUJs
b2NrKCktPmJ5dGVjb2RlSW5kZXgodnBjKSk7CiAgICAgdGhpc1tzdGF0aWNfY2FzdDxpbnQ+KENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKV0udGFnKCkgPSBjYWxsU2l0
ZS5iaXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgKaW5kZXggODgyOTlmNDRkNmUwZTE5Mzg3YTZhOWNmNzc0ZjUwNzEyYWIwMDJiNC4uNDE5ZWZi
MzZhNDA5NWRiZTFjOGEyMDQ2MTI1ZThjNWM3ODJmMzMwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApAQCAtNDAsOCArNDAsNiBAQCBuYW1lc3Bh
Y2UgSlNDICB7CiAgICAgY2xhc3MgU291cmNlT3JpZ2luOwogICAgIGNsYXNzIFZpcnR1YWxSZWdp
c3RlcjsKIAotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKLQogICAgIGNsYXNzIENhbGxTaXRlSW5k
ZXggewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FsbFNpdGVJbmRleCgpID0gZGVmYXVsdDsKQEAg
LTE5OSw5ICsxOTcsOSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIENvZGVPcmlnaW4gY29kZU9yaWdpbigpIGNvbnN0OwogCiAgICAgICAgIGlubGluZSBSZWdp
c3RlciogdG9wT2ZGcmFtZSgpOwotICAgIAotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudFZQQygpIGNvbnN0OyAvLyBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIExMSW50IGFu
ZCBiYXNlbGluZS4KLSAgICAgICAgdm9pZCBzZXRDdXJyZW50VlBDKGNvbnN0IEluc3RydWN0aW9u
Kik7CisKKyAgICAgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0OyAv
LyBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIExMSW50IGFuZCBiYXNlbGluZS4KKyAgICAg
ICAgdm9pZCBzZXRDdXJyZW50VlBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKIAogICAgICAgICB2
b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogZnJhbWUpIHsgY2FsbGVyRnJhbWVBbmRQQygp
LmNhbGxlckZyYW1lID0gZnJhbWU7IH0KICAgICAgICAgaW5saW5lIHZvaWQgc2V0U2NvcGUoaW50
IHNjb3BlUmVnaXN0ZXJPZmZzZXQsIEpTU2NvcGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM2MjAyZGNiNWU5M2JmNWEw
NWNiYTY2NDk0OThjN2MzMzk2MzgzY2UuLmVkNjg5NTJmNmQ2ZWFlY2I1MDkxMjA5MDdjZjVkYTA5
NTMxYjE3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcApAQCAtNTE3LDkgKzUxNyw5IEBAIENhdGNoSW5mbzo6Q2F0Y2hJbmZvKGNv
bnN0IEhhbmRsZXJJbmZvKiBoYW5kbGVyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAg
Ly8gYW5kIGNhbiBjYXVzZSBhbiBvdmVyZmxvdy4gT1NSIGV4aXQgcHJvcGVybHkgZXhpdHMgdG8g
aGFuZGxlci0+dGFyZ2V0CiAgICAgICAgIC8vIGluIHRoZSBwcm9wZXIgZnJhbWUuCiAgICAgICAg
IGlmICghSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkKLSAg
ICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5hdChoYW5kbGVyLT50YXJnZXQpLnB0cigpOworICAgICAgICAgICAgbV9jYXRjaFBDRm9y
SW50ZXJwcmV0ZXIgPSB7IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+dGFy
Z2V0KS5wdHIoKSB9OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRl
cnByZXRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9
IHsgc3RhdGljX2Nhc3Q8SlNJbnN0cnVjdGlvbio+KG51bGxwdHIpIH07CiAgICAgfQogfQogCkBA
IC01MzEsOSArNTMxLDkgQEAgQ2F0Y2hJbmZvOjpDYXRjaEluZm8oY29uc3QgV2FzbTo6SGFuZGxl
ckluZm8qIGhhbmRsZXIsIGNvbnN0IFdhc206OkNhbGxlZSogY2FsbGUKICAgICAgICAgbV90eXBl
ID0gSGFuZGxlclR5cGU6OkNhdGNoOwogICAgICAgICBtX25hdGl2ZUNvZGUgPSBoYW5kbGVyLT5t
X25hdGl2ZUNvZGU7CiAgICAgICAgIGlmIChjYWxsZWUtPmNvbXBpbGF0aW9uTW9kZSgpID09IFdh
c206OkNvbXBpbGF0aW9uTW9kZTo6TExJbnRNb2RlKQotICAgICAgICAgICAgbV9jYXRjaFBDRm9y
SW50ZXJwcmV0ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBXYXNtOjpMTEludENhbGxlZSo+KGNhbGxl
ZSktPmluc3RydWN0aW9ucygpLmF0KGhhbmRsZXItPm1fdGFyZ2V0KS5wdHIoKTsKKyAgICAgICAg
ICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0geyBzdGF0aWNfY2FzdDxjb25zdCBXYXNtOjpM
TEludENhbGxlZSo+KGNhbGxlZSktPmluc3RydWN0aW9ucygpLmF0KGhhbmRsZXItPm1fdGFyZ2V0
KS5wdHIoKSB9OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnBy
ZXRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IHsg
c3RhdGljX2Nhc3Q8V2FzbUluc3RydWN0aW9uKj4obnVsbHB0cikgfTsKICAgICB9CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
aW5kZXggZTY0NjQ2NTY3OWYyMWQxM2QzNDRjZDY4ODIzOTE3MDc2ZmNjYWExMS4uNjJiYTAwMTky
ZTYyM2YyOGViNmI4YTkyODNhOTYyOTlmODkxMjllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxp
Z25tZW50LmgiCisjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
CiAjaWYgRU5BQkxFKENfTE9PUCkKQEAgLTY4LDcgKzY5LDYgQEAgc3RydWN0IEhhbmRsZXJJbmZv
OwogICAgIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgOiB1aW50OF90OwogICAgIHN0cnVjdCBDYWxs
RnJhbWVDbG9zdXJlOwogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKLSAgICBzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCiAgICAgZW51bSBEZWJ1Z0hvb2tU
eXBlIHsKQEAgLTEwMiw3ICsxMDIsOCBAQCBzdHJ1Y3QgSGFuZGxlckluZm87CiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWc+IG1fbmF0aXZlQ29kZTsKICNlbmRpZgotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9j
YXRjaFBDRm9ySW50ZXJwcmV0ZXI7CisKKyAgICAgICAgc3RkOjp2YXJpYW50PGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qPiBtX2NhdGNoUENGb3JJbnRlcnByZXRl
cjsKICAgICB9OwogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IDUxNWI3OTZiOGFiMzg5N2ZmYWQ5ODIyYjA0MjVlZWNiYjA1NGUwNTQuLmU5
YzBlY2MzMGVhY2M2OGM1NTlmOGFjNDYzZTEwNjIyMzFkZGViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgbV9k
aXNhc3NlbWJsZXItPnNldEZvckJ5dGVjb2RlTWFpblBhdGgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpLCBsYWJlbCgpKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiA9IGluc3RydWN0aW9ucy5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOworICAgICAgICBj
b25zdCBhdXRvKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQobV9ieXRlY29k
ZUluZGV4KS5wdHIoKTsKICAgICAgICAgQVNTRVJUKGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgp
KTsKIAogICAgICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVs
KCksIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSk7CkBAIC01NTEsOCArNTUxLDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKIAogICAgICAgICBCeXRlY29kZUluZGV4
IGZpcnN0VG8gPSBtX2J5dGVjb2RlSW5kZXg7CiAKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7Ci0gICAgICAgIAorICAgICAgICBjb25zdCBhdXRv
KiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOworCiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIHNs
b3cgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1
Z09mZnNldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYzI2NWNjYzA0Nzk4N2Jm
OWM3NzQ3ODgyNDFiZTA3MjFhMGE2NWQxZS4uYjhmZGE1ZDFiNDMxNWU5ZjdkNzA0YzQ2YWFhNWE1
YjFiYjAzNDRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC02Niw3ICs2NiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKICAgICBjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbzsKIAotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKKyAgICBzdHJ1Y3QgSlNPcGNvZGVUcmFp
dHM7CisgICAgdXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRy
YWl0cz47CisKICAgICBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogICAgIHN0cnVjdCBTaW1wbGVKdW1w
VGFibGU7CiAgICAgc3RydWN0IFN0cmluZ0p1bXBUYWJsZTsKQEAgLTI4OSw5ICsyOTIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdChKdW1wLCBpbnQp
OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGNvbXBpbGVP
cENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7Cisg
ICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiwgdW5zaWduZWQg
Y2FsbExpbmtJbmZvSW5kZXgpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgdm9pZCBjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwor
ICAgICAgICB2b2lkIGNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBKU0luc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0lu
ZGV4KTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgc3RkOjplbmFi
bGVfaWZfdDwKQEAgLTMwOSwxMyArMzEyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIGNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcCYsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5z
aWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
ICAgICAgICAgYm9vbCBjb21waWxlQ2FsbEV2YWwoY29uc3QgT3AmKTsKLSAgICAgICAgdm9pZCBj
b21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBjb21waWxlQ2FsbEV2YWxTbG93Q2Fz
ZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0UHV0Q2Fs
bFJlc3VsdChjb25zdCBPcCYpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXFK
dW1wKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPiB2
b2lkIGNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHZvaWQgY29tcGls
ZU9wRXFDb21tb24oVmlydHVhbFJlZ2lzdGVyIHNyYzEsIFZpcnR1YWxSZWdpc3RlciBzcmMyKTsK
ICAgICAgICAgdm9pZCBjb21waWxlT3BFcVNsb3dDb21tb24oVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwpAQCAtMzc1LDI1NyArMzc4LDI1NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoSlNWYWx1ZVJlZ3MsIFZpcnR1
YWxSZWdpc3Rlcik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZv
aWQgZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25k
aXRpb24pOworICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFu
ZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIHVuc2ln
bmVkIHRhcmdldCwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkKGNvbnN0IEluc3RydWN0
aW9uKiwgUmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5z
aWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAg
ICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkSW1wbChWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0
dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCBSZWxhdGlvbmFsQ29uZGl0aW9u
KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdF9jb21w
YXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRpdGlv
bik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAgICAgdm9pZCBlbWl0X2NvbXBh
cmVVbnNpZ25lZEFuZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3Rl
ciBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbG93T3BlcmF0aW9uPgotICAgICAgICB2b2lk
IGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEluc3RydWN0aW9uKiwgRG91YmxlQ29uZGl0
aW9uLCBTbG93T3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qLCBEb3VibGVDb25kaXRpb24sIFNsb3dPcGVyYXRpb24sIGJvb2wgaW52ZXJ0
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFNsb3dPcGVyYXRpb24+CiAgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcFNs
b3dJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIHVuc2lnbmVk
IHRhcmdldCwgc2l6ZV90IGluc3RydWN0aW9uU2l6ZSwgRG91YmxlQ29uZGl0aW9uLCBTbG93T3Bl
cmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICAKKwogICAgICAgICB2b2lkIGFzc2VydFN0YWNrUG9pbnRlck9mZnNldCgpOwogCi0g
ICAgICAgIHZvaWQgZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2JpdGFuZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfYml0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JpdHhv
cihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYml0bm90KGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY2F0Y2goY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfYXJndW1lbnRfY291bnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lcShjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVsbChjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3coY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JlbG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2Yo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2lu
c3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5j
ZW9mKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19lbXB0eShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdHlwZW9mX2lzX3VuZGVm
aW5lZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZp
bmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lz
X2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lzX251
bWJlcihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYWRkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JpdGFuZChjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iaXRvcihjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iaXR4b3IoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfYml0bm90KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfdGFpbF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1Zyhjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBKU0lu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9iZWxvdyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9iZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3RyeV9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2Yo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX25hbWUo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVf
YnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9s
YXp5X3JlZyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfaXNfZW1wdHkoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKik7CiAjaWYg
VVNFKEJJR0lOVDMyKQotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CiAjZWxzZQotICAgICAgICBOT19SRVRVUk4gdm9pZCBlbWl0X29wX2lzX2JpZ19p
bnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgTk9fUkVUVVJOIHZvaWQgZW1pdF9vcF9p
c19iaWdfaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICNlbmRpZgotICAgICAgICB2b2lkIGVt
aXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2pmYWxzZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam1wKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxX251bGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam51bmRlZmluZWRfb3Jf
bnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9wdHIoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2psZXNzKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfamdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3Bfam5sZXNzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9qbmxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfam5ncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9q
bmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamVx
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2piZWxvdyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfamJlbG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9ub3AoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N1cGVyX3Nh
bXBsZXJfYmVnaW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N1
cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9sc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX21vZChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcG93KGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9tb3YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25lcV9u
dWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXko
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV93aXRo
X3NpemUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5j
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2FzeW5jX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X25ld19hc3luY19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfZGVjKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9pbmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVf
dHlwZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHJvZmlsZV9j
b250cm9sX2Zsb3coY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9wYXJlbnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNf
b2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Nl
bGxfd2l0aF90eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2plcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pm
YWxzZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbXAoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9udWxsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2p1bmRlZmluZWRfb3JfbnVs
bChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbnVuZGVmaW5l
ZF9vcl9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pl
cV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9w
dHIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3MoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3NlcShjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcihjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcmVxKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pubGVzcyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmxlc3NlcShjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfamVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfamJlbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2piZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2p0
cnVlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xvb3BfaGlu
dChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190cmFw
cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9ub3AoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9iZWdp
bihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1w
bGVyX2VuZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sc2hp
ZnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbW9kKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Bvdyhjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9tb3YoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfbXVsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25lZ2F0ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbmVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2FycmF5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25l
d19hcnJheV93aXRoX3NpemUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jX2V4cChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2dl
bmVyYXRvcl9mdW5jX2V4cChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX25ld19yZWdleHAoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfbm90KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25zdHJp
Y3RlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWMoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5jKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyhj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcGFyZW50X3Nj
b3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV9p
ZChjb25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wID0g
T3BQdXRCeVZhbD4KLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3Nl
dHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X2dldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9yZXQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3JzaGlm
dChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X2Z1bmN0aW9u
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N0cmljdGVx
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zdWIoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVudHMoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3RvX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfdG9fb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3VuZXhwZWN0ZWRfbG9hZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfdW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX3Vyc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19wcm9wZXJ0eV9rZXkoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVy
X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9z
ZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcmV0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3JzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9zdWIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3Bfc3dpdGNoX2ltbShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF90aHJvdyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF90b19udW1iZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfdG9fbnVtZXJpYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF90b19zdHJpbmcoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfdG9fb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3RvX3ByaW1pdGl2ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF91bmV4cGVjdGVkX2xvYWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfdW5zaWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfdXJzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbChjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19wcm9wZXJ0eV9rZXko
Y29uc3QgSlNJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29k
ZVR5cGU+CiAgICAgICAgIHZvaWQgZ2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29k
ZVR5cGUmLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1lcmF0
b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVR5cGUsIHR5
cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgogICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRv
cl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IE9wY29kZVR5cGUmLCBTbG93UGF0aEZ1bmN0aW9uVHlw
ZSk7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3Bl
cnR5KGNvbnN0IEluc3RydWN0aW9uKik7Ci0KLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWls
X2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfdmFy
YXJncyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VxKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2dldF9jYWxsZWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdHJ5X2dldF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlf
aWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zZXRf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2Vv
Zihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9q
bGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2pncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNzKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRl
cihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tf
dHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
bmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotCi0gICAgICAgIHZvaWQgZW1pdF9v
cF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9y
X2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9l
bnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSlNJbnN0cnVjdGlvbiopOworCisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbChj
b25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbChjb25zdCBKU0luc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NhbGxfdmFyYXJncyhjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1
Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9lcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2dldF9jYWxsZWUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF9k
aXJlY3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Nl
dF9wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2lu
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2psZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZ3Jl
YXRlcihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9qbmxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3NlcShjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamVxKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pzdHJpY3RlcShjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9sb29wX2hpbnQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Bvdyhjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX211bChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lZ2F0
ZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X25ld19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25zdCBKU0luc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworCisgICAgICAgIHZv
aWQgZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAg
dm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBT
bG93UGF0aEZ1bmN0aW9uKTsKIAotICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29w
ZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX25l
eHQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBk
c3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5k
LCBBY2Nlc3NUeXBlKTsKICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlw
ZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdE5l
d0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVu
Y0NvbW1vbihjb25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihjb25zdCBJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihjb25zdCBKU0luc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MsIEdQUlJlZyk7CiAgICAgICAgIHZvaWQgZW1pdFZhclJlYWRPbmx5Q2hl
Y2soUmVzb2x2ZVR5cGUsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAgICAgICAgdm9pZCBlbWl0Tm90
aWZ5V3JpdGVXYXRjaHBvaW50KEdQUlJlZyBwb2ludGVyVG9TZXQpOwpAQCAtNjQzLDE0ICs2NDYs
MTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnRDaGFy
KFZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE5vblBy
b2ZpbGVkRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRo
SUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJvZmlsZWRGdW5jdGlvbiwgTm9u
UHJvZmlsZWRGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9u
LCBOb25Qcm9maWxlZEZ1bmN0aW9uKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0
eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE5v
blByb2ZpbGVkRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5
TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBJbnN0cnVjdGlvbiosIFByb2ZpbGVkRnVuY3Rpb24s
IE5vblByb2ZpbGVkRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIFByb2ZpbGVkRnVu
Y3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24pOwogCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5jdGlv
biwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9uPgot
ICAgICAgICB2b2lkIGVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+Kiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5j
dGlvbiwgUmVwYXRjaEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0TWF0aElDU2xvdyhKSVRC
aW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZFJl
cGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uKTsKICAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFBy
b2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFt
ZSBSZXBhdGNoRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBhdGNoRnVu
Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7CisgICAgICAgIHZvaWQg
ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRj
aEZ1bmN0aW9uKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7
CkBAIC04MzIsMTIgKzgzNSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgU25pcHBldEdlbmVyYXRvcj4KLSAg
ICAgICAgdm9pZCBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3kgc2hvdWxkRW1pdFByb2ZpbGluZyA9IFBy
b2ZpbGluZ1BvbGljeTo6Tm9Qcm9maWxpbmcpOworICAgICAgICB2b2lkIGVtaXRCaXRCaW5hcnlP
cEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmls
aW5nUG9saWN5IHNob3VsZEVtaXRQcm9maWxpbmcgPSBQcm9maWxpbmdQb2xpY3k6Ok5vUHJvZmls
aW5nKTsKIAotICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQpOworICAgICAgICB2b2lkIGVtaXRS
aWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBPcGNvZGVJRCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZv
aWQgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5cGUpOworICAgICAgICB2b2lk
IGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5cGUpOwogCiAgICAgICAgIHZv
aWQgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CiAKQEAgLTg0OCw4ICs4NTEsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgLy8gTG9hZHMgdGhlIGNoYXJhY3RlciB2YWx1ZSBvZiBhIHNpbmdsZSBj
aGFyYWN0ZXIgc3RyaW5nIGludG8gZHN0LgogICAgICAgICB2b2lkIGVtaXRMb2FkQ2hhcmFjdGVy
U3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwgSnVtcExpc3QmIGZhaWx1cmVz
KTsKIAotICAgICAgICBpbnQganVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiosIGludCB0YXJn
ZXQpOwotICAgICAgICAKKyAgICAgICAgaW50IGp1bXBUYXJnZXQoY29uc3QgSlNJbnN0cnVjdGlv
biosIGludCB0YXJnZXQpOworCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgZW1p
dEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKTsKICNlbHNlCkBAIC05NDUsOCArOTQ4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciBtX3BjVG9Db2Rl
T3JpZ2luTWFwQnVpbGRlcjsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2lu
TWFwPiBtX3BjVG9Db2RlT3JpZ2luTWFwOwogCi0gICAgICAgIEhhc2hNYXA8Y29uc3QgSW5zdHJ1
Y3Rpb24qLCB2b2lkKj4gbV9pbnN0cnVjdGlvblRvTWF0aElDOwotICAgICAgICBIYXNoTWFwPGNv
bnN0IEluc3RydWN0aW9uKiwgVW5pcXVlUmVmPE1hdGhJQ0dlbmVyYXRpb25TdGF0ZT4+IG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQ0dlbmVyYXRpb25TdGF0ZTsKKyAgICAgICAgSGFzaE1hcDxjb25zdCBK
U0luc3RydWN0aW9uKiwgdm9pZCo+IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQzsKKyAgICAgICAgSGFz
aE1hcDxjb25zdCBKU0luc3RydWN0aW9uKiwgVW5pcXVlUmVmPE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZT4+IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQ0dlbmVyYXRpb25TdGF0ZTsKIAogICAgICAgICBib29s
IG1fY2FuQmVPcHRpbWl6ZWQ7CiAgICAgICAgIGJvb2wgbV9zaG91bGRFbWl0UHJvZmlsaW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggZjQyNjA3
NGY0NWJhZjRmYzYwYzg1Mjg1ZDBkZmNiMGMxYTc1NWVjOS4uMDUzNzdiODIwNTgxZWFiZmFlODI5
ZWY0ZjVjYjA4MjAxOTE1YTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCkBAIC00NCwxMDcgKzQ0LDEwNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
dm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2psZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmxlc3M+KGN1cnJl
bnRJbnN0cnVjdGlvbiwgTGVzc1RoYW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbGVzc2Vx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qbGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9uLCBMZXNz
VGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZ3JlYXRlcihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXIo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29t
cGFyZUFuZEp1bXA8T3BKZ3JlYXRlcj4oY3VycmVudEluc3RydWN0aW9uLCBHcmVhdGVyVGhhbik7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyZXEoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1
bXA8T3BKZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuT3JFcXVhbCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pubGVzcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSm5s
ZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuT3JFcXVhbCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3NlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpubGVzc2VxPihj
dXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
am5ncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9qbmdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbmdyZWF0ZXI+KGN1cnJlbnRJbnN0
cnVjdGlvbiwgTGVzc1RoYW5PckVxdWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVh
dGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSm5ncmVhdGVyZXE+KGN1cnJlbnRJbnN0
cnVjdGlvbiwgTGVzc1RoYW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3MoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVzcyhjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKbGVzcz4oY3Vy
cmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbkFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBh
cmVMZXNzLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVzc2Vx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3NlcShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKbGVz
c2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQs
IG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEsIGZhbHNlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfamdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFy
ZUFuZEp1bXBTbG93PE9wSmdyZWF0ZXI+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlR3JlYXRl
clRoYW5BbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlciwgZmFsc2UsIGl0ZXIpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSmdyZWF0ZXJlcT4oY3VycmVudElu
c3RydWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxBbmRPcmRlcmVkLCBvcGVyYXRpb25D
b21wYXJlR3JlYXRlckVxLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmxl
c3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93
PE9wSm5sZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9y
VW5vcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlTGVzcywgdHJ1ZSwgaXRlcik7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9qbmxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2pubGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0
X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpubGVzc2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJs
ZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEsIHRydWUsIGl0
ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpuZ3JlYXRlcj4oY3VycmVu
dEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZCwgb3BlcmF0aW9u
Q29tcGFyZUdyZWF0ZXIsIHRydWUsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
am5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9q
bmdyZWF0ZXJlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5k
SnVtcFNsb3c8T3BKbmdyZWF0ZXJlcT4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhh
bk9yVW5vcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxLCB0cnVlLCBpdGVyKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfYmVsb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JlbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZDxPcEJlbG93Pihj
dXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYmVsb3dl
cShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfYmVsb3dlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgZW1pdF9jb21wYXJlVW5zaWduZWQ8T3BCZWxvd2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJl
bG93T3JFcXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2piZWxvdyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVV
bnNpZ25lZEFuZEp1bXA8T3BKYmVsb3c+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQmVsb3cpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9qYmVsb3dlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93ZXEoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVt
cDxPcEpiZWxvd2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93T3JFcXVhbCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF91bnNpZ25lZChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BVbnNpZ25lZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0
ZWNvZGUubV9kc3Q7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdW5zaWdu
ZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQordm9pZCBK
SVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2Rl
Lm1fbGhzOwpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
SW1wbChWaXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCB1bnNpCiAKIAog
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRK
dW1wKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kaXRpb24pCit2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1
YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wSW1wbChWaXJ0dWFsUmVnaXN0ZXIgb3Ax
LCBWaXJ0dWFsUmVnaXN0ZXIgbwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklU
OjplbWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQordm9pZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2ln
bmVkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmRpdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTI3NCw3ICsy
NzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRJbXBsKFZpcnR1YWxSZWdpc3Rl
ciBkc3QsIFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cCwgdHlwZW5hbWUgU2xvd09wZXJhdGlvbj4KLXZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdyhjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIERvdWJsZUNvbmRpdGlvbiBjb25k
aXRpb24sIFNsb3dPcGVyYXRpb24gb3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdyhjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRG91YmxlQ29uZGl0aW9uIGNv
bmRpdGlvbiwgU2xvd09wZXJhdGlvbiBvcGVyYXRpb24sIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0
cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1f
bGhzOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xv
d0ltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lzdGVyIG9wMiwKICAgICBlbWl0
SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJldHVy
blZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pbmMoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5jPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBzcmNEc3QgPSBieXRlY29kZS5tX3NyY0RzdDsKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pbmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9kZWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2RlYyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWM+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyY0RzdCA9IGJ5dGVjb2RlLm1fc3JjRHN0OwpAQCAt
NDE4LDcgKzQxOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiAjaWYgQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRf
b3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9tb2QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTW9kPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTQ1MSw3ICs0NTEs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9t
b2QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDYxLDEzICs0NjEs
MTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGkKIAogI2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAot
dm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0
X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9tb2Qo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQog
ewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQpAQCAtNDc2LDcgKzQ3Niw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEVORDogT1BfTU9EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi12b2lk
IEpJVDo6ZW1pdF9vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQ
b3c+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAt
NTIyLDcgKzUyMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCBy
ZXN1bHRSZWdzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAg
LTUzMCw3ICs1MzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG93KGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaQogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gJm1fdW5saW5rZWRDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxl
KGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubV9wcm9maWxlSW5kZXgpOwogICAg
IEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1fbWF0aElDcy5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUp
OwpAQCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRNYXRoSUNGYXN0PE9wTmVnYXRl
PihuZWdhdGVJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9u
ZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
QEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgU25pcHBldEdlbmVyYXRvcj4KLXZvaWQgSklUOjplbWl0
Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxpbmdQb2xpY3kgcHJvZmlsaW5nUG9saWN5KQordm9pZCBKSVQ6OmVtaXRCaXRCaW5h
cnlPcEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJv
ZmlsaW5nUG9saWN5IHByb2ZpbGluZ1BvbGljeSkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0g
Ynl0ZWNvZGUubV9kc3Q7CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBKSVQ6OmVtaXRCaXRCaW5h
cnlPcEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2Zp
bGkKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wTGlzdCgpKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfYml0bm90KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9iaXRub3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wQml0bm90PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBieXRlY29kZS5tX2Rz
dDsKQEAgLTYwOCwyNyArNjA4LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2JpdG5vdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdGFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0
YW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0
Qml0QmluYXJ5T3BGYXN0UGF0aDxPcEJpdGFuZCwgSklUQml0QW5kR2VuZXJhdG9yPihjdXJyZW50
SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeTo6U2hvdWxkRW1pdFByb2ZpbGluZyk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2JpdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGg8T3BCaXRvciwg
SklUQml0T3JHZW5lcmF0b3I+KGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5OjpT
aG91bGRFbWl0UHJvZmlsaW5nKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYml0eG9yKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9iaXR4
b3IoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRC
aXRCaW5hcnlPcEZhc3RQYXRoPE9wQml0eG9yLCBKSVRCaXRYb3JHZW5lcmF0b3I+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5OjpTaG91bGRFbWl0UHJvZmlsaW5nKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoPE9wTHNoaWZ0
LCBKSVRMZWZ0U2hpZnRHZW5lcmF0b3I+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQg
SklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFz
dFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCBv
cGNvZGVJRCkKIHsKICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfcnNoaWZ0IHx8IG9wY29kZUlE
ID09IG9wX3Vyc2hpZnQpOwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKQEAgLTY0NCw3ICs2NDQs
NyBAQCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
LXZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OlNoaWZ0VHlwZSBzbmlwcGV0
U2hpZnRUeXBlKQordm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlm
dFR5cGUgc25pcHBldFNoaWZ0VHlwZSkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC02ODIsMTcgKzY4MiwxNyBAQCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRG
YXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdodAog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXBMaXN0KCkpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9yc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3JzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24s
IG9wX3JzaGlmdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Vyc2hpZnQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Vyc2hpZnQoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRSaWdodFNo
aWZ0RmFzdFBhdGgoY3VycmVudEluc3RydWN0aW9uLCBvcF91cnNoaWZ0KTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJm1fdW5saW5r
ZWRDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
QWRkPigpLm1fcHJvZmlsZUluZGV4KTsKICAgICBKSVRBZGRJQyogYWRkSUMgPSBtX21hdGhJQ3Mu
YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0TWF0aElDRmFzdDxPcEFkZD4oYWRkSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9u
VmFsdWVBZGRQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVBZGQpOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
YWRkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVk
RnVuY3Rpb24sIHR5cGVuYW1lIE5vblByb2ZpbGVkRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1pdE1h
dGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rp
b24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikKK3ZvaWQgSklUOjpl
bWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxl
ZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNzU1LDcgKzc1NSw3IEBA
IHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SUMsIGNvbnN0IEluc3RydWN0aW9uKiBjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlw
ZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Q
cm9maWxlZEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlv
biBub25Qcm9maWxlZEZ1bmN0aW9uKQordm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFy
eU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxl
ZEZ1bmN0aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9
IGJ5dGVjb2RlLm1fZHN0OwpAQCAtODIyLDcgKzgyMiw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElD
RmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlv
bioKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVu
YW1lIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0
eXBlbmFtZSBSZXBhdGNoRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlv
biwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVw
YXRjaEZ1bmN0aW9uKQordm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmls
ZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVwYXRjaEZ1bmN0
aW9uKQogewogICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElDR2VuZXJhdGlvblN0YXRl
ID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZpbmQoY3VycmVudEluc3Ry
dWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRo
U3RhcnQgPSBsYWJlbCgpOwpAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElD
U2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9u
KiBjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBl
bmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwg
dHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHByb2ZpbGVkUmVwYXRjaEZ1bmN0
aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbiBy
ZXBhdGNoRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElD
PEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJv
ZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVwYXRjaEZ1
bmN0aW9uKQogewogICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElDR2VuZXJhdGlvblN0
YXRlID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZpbmQoY3VycmVudElu
c3RydWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQ
YXRoU3RhcnQgPSBsYWJlbCgpOwpAQCAtOTI1LDcgKzkyNSw3IEBAIHZvaWQgSklUOjplbWl0TWF0
aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVj
dGlvbioKICAgICB9KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGl2PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTk4Myw3ICs5ODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZt
X3VubGlua2VkQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGUoY3VycmVudEluc3RydWN0aW9u
LT5hczxPcE11bD4oKS5tX3Byb2ZpbGVJbmRleCk7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9t
YXRoSUNzLmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CkBAIC05OTEsNyArOTkxLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9w
ZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX211bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIApAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAg
ICAgZW1pdE1hdGhJQ1Nsb3c8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwg
b3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N1Yihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
c3ViKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZtX3VubGlua2VkQ29kZUJsb2NrLT5iaW5h
cnlBcml0aFByb2ZpbGUoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN1Yj4oKS5tX3Byb2ZpbGVJ
bmRleCk7CiAgICAgSklUU3ViSUMqIHN1YklDID0gbV9tYXRoSUNzLmFkZEpJVFN1YklDKGFyaXRo
UHJvZmlsZSk7CkBAIC0xMDA3LDcgKzEwMDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TWF0aElDRmFzdDxP
cFN1Yj4oc3ViSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxl
ZCwgb3BlcmF0aW9uVmFsdWVTdWIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBjNjhlNDdlZTljODhiMTZlODE2MTRmZGM4ZGNh
MGM2MGM0MmMyODk3Li44OTk4MDg3MmQyYjcyNzc0YzY5NTZiMzkxMTkyZTg3MTgxYjM3ZTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX3JldChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcmV0KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChyZXR1cm5WYWx1ZUpTUiwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKIApAQCAtMTg4LDcgKzE4
OCw3IEBAIGJvb2wgSklUOjpjb21waWxlQ2FsbEV2YWwoY29uc3QgT3BDYWxsRXZhbCYgYnl0ZWNv
ZGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93
Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29u
c3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMjMwLDcg
KzIzMCw3IEBAIGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwoY29uc3QgT3BUYWlsQ2FsbCYgYnl0
ZWNvZGUsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5zCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCkKK3ZvaWQgSklUOjpjb21waWxlT3BDYWxs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9J
bmRleCkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRv
IGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZv
aWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5z
aWduZWQgY2FsbExpbmtJbmZvSW5kCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVkKQordm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgdW5zaWduZWQpCiB7CiAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcD4oKTsKQEAgLTMyNSw4NyArMzI1LDg3IEBAIHZvaWQgSklUOjpj
b21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jYWxsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BD
YWxsPE9wQ2FsbD4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF90YWlsX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbChjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbDxPcFRhaWxD
YWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF9ldmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wQ2FsbEV2YWw+KGN1
cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wQ2FsbFZhcmFyZ3M+KGN1
cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wVGFp
bENhbGxWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbDxP
cENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8
T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBj
b21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1f
Y2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2Nh
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2NhbGwo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcFRh
aWxDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX2V2YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX2V2YWwoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRl
cik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENhbGxWYXJhcmdzPihj
dXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbFZhcmFyZ3M+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2Fy
Z3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dD
YXNlPE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIs
IG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jb25z
dHJ1Y3RfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxl
T3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0
ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9j
b25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jb25z
dHJ1Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2Fz
ZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0lu
ZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29u
c3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKICAgICBhdXRvKiB0cnlGYXN0RnVuY3Rp
b24gPSAoWyZdICgpIHsKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBmYXN0Q2FzZS5s
aW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBKU0lu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JP
cGVuPigpOwogCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAg
ICBkb25lLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOwogICAgIGF1dG8qIHRy
eUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAg
IGZhc3RDYXNlLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T3BJdGVyYXRvck5leHQ+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwCmluZGV4IGI4NmU5YTQxMDNjODUwNmMzZmRiYmFjNTRkN2U5NGU2NjYwYWFkOTku
LjA0NzM5MmUxMmJhMWI1NjZlNzI2OGJhNTY2ZjVjOWJlNzI4OGZlOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcApAQCAtNTcsMTggKzU3LDIwIEBAIHZv
aWQgZ2VuZXJpY1Vud2luZChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIENhdGNo
SW5mbyBoYW5kbGVyID0gdm0uaW50ZXJwcmV0ZXItPnVud2luZCh2bSwgY2FsbEZyYW1lLCBleGNl
cHRpb24pOyAvLyBUaGlzIG1heSB1cGRhdGUgY2FsbEZyYW1lLgogCiAgICAgdm9pZCogY2F0Y2hS
b3V0aW5lOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBu
dWxscHRyOworICAgIEpTT3JXYXNtSW5zdHJ1Y3Rpb24gY2F0Y2hQQ0ZvckludGVycHJldGVyID0g
eyBzdGF0aWNfY2FzdDxKU0luc3RydWN0aW9uKj4obnVsbHB0cikgfTsKICAgICBpZiAoaGFuZGxl
ci5tX3ZhbGlkKSB7CiAgICAgICAgIGNhdGNoUENGb3JJbnRlcnByZXRlciA9IGhhbmRsZXIubV9j
YXRjaFBDRm9ySW50ZXJwcmV0ZXI7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgY2F0Y2hSb3V0
aW5lID0gaGFuZGxlci5tX25hdGl2ZUNvZGUuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICNlbHNlCi0g
ICAgICAgIGlmIChjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPmlzV2lkZTMyKCkpCi0gICAgICAgICAg
ICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cihjYXRjaFBDRm9ySW50ZXJw
cmV0ZXItPm9wY29kZUlEKCkpOwotICAgICAgICBlbHNlIGlmIChjYXRjaFBDRm9ySW50ZXJwcmV0
ZXItPmlzV2lkZTE2KCkpCi0gICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0V2lk
ZTE2Q29kZVB0cihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPm9wY29kZUlEKCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0Q29kZVB0cihjYXRjaFBD
Rm9ySW50ZXJwcmV0ZXItPm9wY29kZUlEKCkpOworICAgICAgICBzdGQ6OnZpc2l0KFsmXShhdXRv
KiBwYykgeworICAgICAgICAgICAgaWYgKHBjLT5pc1dpZGUzMigpKQorICAgICAgICAgICAgICAg
IGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKHBjLT5pc1dpZGUxNigpKQorICAgICAgICAgICAgICAgIGNh
dGNoUm91dGluZSA9IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0
Q29kZVB0cihwYy0+b3Bjb2RlSUQoKSk7CisgICAgICAgIH0sIGNhdGNoUENGb3JJbnRlcnByZXRl
cik7CiAjZW5kaWYKICAgICB9IGVsc2UKICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6Omhh
bmRsZVVuY2F1Z2h0RXhjZXB0aW9uKHZtKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMDJlMmY4YWVhM2M5Mzc5N2I0
ZTVkMTJmM2JkYTJhYjViMzQwZjZjZC4uYmZmYjJmNGMzMDMwZWVlZTE0Zjg5MGVmODFjYTBlM2U4
MTk4N2NkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTIyMCw3
ICsyMjAsNyBAQCBpbmxpbmUgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIEpJVDo6ZmFzdFBhdGhSZXN1
bWVQb2ludCgpIGNvbnN0CiAgICAgaWYgKGl0ZXIgIT0gbV9mYXN0UGF0aFJlc3VtZUxhYmVscy5l
bmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIC8vIE5leHQgaW5zdHJ1Y3Rp
b24gaW4gc2VxdWVuY2UKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
ID0gbV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZUluZGV4
KS5wdHIoKTsKKyAgICBjb25zdCBhdXRvKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3VubGlua2Vk
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOwogICAg
IHJldHVybiBtX2xhYmVsc1ttX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1
Y3Rpb24tPnNpemUoKV07CiB9CiAKQEAgLTQzMiw3ICs0MzIsNyBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoSlNWYWx1ZVJlZ3MganNSZWcsIFZp
cnR1YWxSZQogICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoanNSZWcpOwogfQog
Ci1BTFdBWVNfSU5MSU5FIGludCBKSVQ6Omp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBpbnQgdGFyZ2V0KQorQUxXQVlTX0lOTElORSBpbnQgSklUOjpqdW1wVGFyZ2V0
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBpbnQgdGFyZ2V0KQogewogICAgIGlm
ICh0YXJnZXQpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAppbmRleCA1NmRmYjg3MzY1MjNhNzVjM2NhNTEyYzhmYzE4YzMxMzI0
NjAxZDY4Li41Yjg1YzdhYzUxN2E3MDJkY2ZkN2E2MmVkZjA5MjExYTNkNWQzMzNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX21vdihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW92KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE1vdj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0g
Ynl0ZWNvZGUubV9kc3Q7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX21vdihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHN0b3JlVmFsdWUoanNS
ZWdUMTAsIGFkZHJlc3NGb3IoZHN0KSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW5k
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVuZD4oKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKQEAgLTc2
LDcgKzc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgcmV0KCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2ptcChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
am1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEptcD4oKTsKICAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJn
ZXRMYWJlbCk7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2ptcChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiAKLXZvaWQgSklUOjplbWl0X29w
X25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX25ld19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
TmV3T2JqZWN0PigpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNs
b3dDYXNlKHNsb3dDYXNlcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiB9CiAKIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5j
ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVycmlkZXNIYXNJbnN0YW5jZT4o
KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNDYsNyAr
MTQ2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiAKLXZvaWQgSklUOjplbWl0X29w
X2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SW5zdGFuY2VvZj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0xOTIsMTAgKzE5MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5j
ZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2Vv
Zihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LSAgICAKKwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5z
dGFuY2VvZj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1f
ZHN0OwogICAgIApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0
YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSXNFbXB0eT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfZW1wdHko
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90eXBlb2Zf
aXNfdW5kZWZpbmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF90eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFR5cGVvZklzVW5kZWZpbmVkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzVW5kZWZpbmVkT3JOdWxsPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTI4NCw3ICsyODQsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogfQogCiAKLXZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xl
YW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2lzX2Jvb2xlYW4oY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCb29sZWFu
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTMwMyw3
ICszMDMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpz
UmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNOdW1iZXI+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogfQogCiAjaWYgVVNFKEJJR0lOVDMyKQotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
aXNfYmlnX2ludChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0zNDYsMTQgKzM0
NiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVn
VDEwKTsKIH0KICNlbHNlIC8vIGlmICFVU0UoQklHSU5UMzIpCi1OT19SRVRVUk4gdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopCitOT19SRVRVUk4gdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICAvLyBJ
ZiB3ZSBvbmx5IGhhdmUgSGVhcEJpZ0ludHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxXaXRoVHlwZSBp
bnN0ZWFkIG9mIGlzQmlnSW50LgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxf
d2l0aF90eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBl
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTM3MSw3
ICszNzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfb2Jq
ZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzT2JqZWN0PigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTM4OCw3ICszODgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1ByaW1pdGl2ZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3RvX3Byb3BlcnR5X2tleShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvUHJvcGVydHlLZXk+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3RvX3Byb3BlcnR5X2tleShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25h
bWUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0RnVuY3Rpb25OYW1lPigpOwog
CkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZSwgZ2xvYmFsT2JqZWN0R1BSLCBmdW5jdGlvbkdQUiwg
bmFtZUpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25vdChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcE5vdD4oKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fb3BlcmFuZCwganNSZWdUMTApOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSklU
OjplbWl0X29wX25vdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfamZhbHNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSmZhbHNlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3Vy
cmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTQ4OSw3ICs0ODks
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0Zh
bHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEplcU51bGw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVjb2Rl
Lm1fdmFsdWU7CkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBtYXNxdWVyYWRlc0ds
b2JhbE9iamVjdElzRm9yZWlnbi5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9q
bmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2puZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVx
TnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAg
LTUzOCw3ICs1MzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlz
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfanVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qdW5kZWZpbmVk
X29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnVuZGVmaW5lZE9yTnVs
bD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAt
NTU0LDcgKzU1NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoSWZO
dWxsKGpzUmVnVDEwKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRlZmlu
ZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BKbnVuZGVmaW5lZE9yTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUg
PSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2pudW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBhZGRKdW1wKGJyYW5jaElmTm90TnVsbChqc1JlZ1QxMCksIHRhcmdldCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2plcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2plcV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSmVxUHRyPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBieXRlY29k
ZS5tX3ZhbHVlOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9wdHIo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUu
bV92YWx1ZTsKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEVxPigpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9saHMs
IHJlZ1QwKTsKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwogICAgIHVuc2ln
bmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rh
cmdldExhYmVsKTsKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogI2VuZGlmCiAKLXZvaWQgSklU
OjplbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BK
dHJ1ZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC02NzgsNyArNjc4LDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IoVk0mIHZtKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxPigpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9saHMsIHJlZ1QwKTsKQEAgLTY5MCw3ICs2OTAs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1Jl
Z1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFy
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC03MDIs
NyArNzAyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Ro
cm93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRocm93PigpOwogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwpAQCAtNzUwLDcg
Kzc1MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF90
aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICNpZiBVU0UoSlNWQUxVRTY0KQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVx
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC04MjUsMTggKzgyNSwxOCBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0cmlj
dEVxPE9wU3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BTdHJpY3RFcTxPcE5zdHJpY3RlcT4oY3VycmVudElu
c3RydWN0aW9uKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6Y29tcGls
ZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcD4oKTsKICAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtOTA1LDE3ICs5MDUsMTcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfanN0cmlj
dGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21w
aWxlT3BTdHJpY3RFcUp1bXA8T3BKc3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0cmljdEVxSnVtcDxP
cEpuc3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKQEAgLTkyNiw3ICs5MjYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0
cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAog
ICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQ
UiksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtOTM5
LDcgKzkzOSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICNlbmRpZgogCi12b2lkIEpJ
VDo6ZW1pdF9vcF90b19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3RvX251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BUb051bWJlcj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtOTU0LDcgKzk1NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWJl
cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdFZSZWcsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BUb051bWVyaWM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdFZSZWcgPSBieXRlY29kZS5t
X2RzdDsKQEAgLTk3NSw3ICs5NzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0VlJlZywganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90
b19zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX3RvX3N0cmluZyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1N0
cmluZz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpA
QCAtOTkwLDcgKzk5MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3N0cmluZyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdFZSZWcsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF90b19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9PYmplY3Q+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEwMDYs
NyArMTAwNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX29iamVjdChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dFZSZWcsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhdGNoPigpOwogCkBAIC0xMDUyLDEyICsx
MDUyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVjdGlvbiopCit2b2lk
IEpJVDo6ZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSlNJbnN0cnVjdGlvbiop
CiB7CiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlLi4uCiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UGFyZW50U2NvcGU+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGN1cnJlbnRTY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CkBAIC0xMDY3LDcgKzEw
NjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1t
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9zd2l0Y2hfaW1tKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN3aXRjaEltbT4o
KTsKICAgICBzaXplX3QgdGFibGVJbmRleCA9IGJ5dGVjb2RlLm1fdGFibGVJbmRleDsKQEAgLTEw
OTQsNyArMTA5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBK
U1N3aXRjaFB0clRhZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0
Y2hfY2hhcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgZmFzdCBwYXRoLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1MjEKQEAgLTExMTksNyArMTExOSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN3aXRjaFN0cmluZz4oKTsKICAgICBzaXpl
X3QgdGFibGVJbmRleCA9IGJ5dGVjb2RlLm1fdGFibGVJbmRleDsKQEAgLTExNDIsNyArMTE0Miw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBKU1N3aXRjaFB0
clRhZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VxX251bGwoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXFOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTExNzQsNyArMTE3NCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9uZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
TmVxTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBA
IC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3Ry
dWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQog
ewogICAgIC8vIEV2ZW4gdGhvdWdoIENUSSBkb2Vzbid0IHVzZSB0aGVtLCB3ZSBpbml0aWFsaXpl
IG91ciBjb25zdGFudAogICAgIC8vIHJlZ2lzdGVycyB0byB6YXAgc3RhbGUgcG9pbnRlcnMsIHRv
IGF2b2lkIHVubmVjZXNzYXJpbHkgcHJvbG9uZ2luZwpAQCAtMTMzNSw3ICsxMzM1LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJH
ZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldFNjb3BlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29w
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX3RvX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBzcmNEc3QgPSBieXRlY29kZS5tX3NyY0RzdDsKQEAgLTEzNTks
NyArMTM1OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwg
QWRkcmVzcyhqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHJlZ1QyKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVf
dGhpcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVUaGlzPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29kZS5tX2NhbGxlZTsKQEAgLTEzOTQsNyAr
MTM5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2No
ZWNrX3Rkeihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTQwOSw3ICsxNDA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y2hlY2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIC8vIFNs
b3cgY2FzZXMKIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE0MjAsNyArMTQyMCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Rz
dCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xNDMyLDcgKzE0
MzIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kc3QsIHJldHVyblZhbHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pl
cShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IApAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBlbWl0
SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJn
ZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGVidWc+KCk7CiAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIHJlZ1QwKTsKQEAgLTE0NjYsNyArMTQ2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYnVn
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbm9EZWJ1Z2dlclJl
cXVlc3RzLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQo
Y29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkgJiYgbV91bmxp
bmtlZENvZGVCbG9jay0+bG9vcEhpbnRzQXJlRWxpZ2libGVGb3JGdXp6aW5nRWFybHlSZXR1cm4o
KSkpIHsKICAgICAgICAgdWludHB0cl90KiBwdHIgPSB2bSgpLmdldExvb3BIaW50RXhlY3V0aW9u
Q291bnRlcihpbnN0cnVjdGlvbik7CkBAIC0xNDk0LDcgKzE0OTQsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIH0KIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gRW1pdCB0aGUgc2xvdyBwYXRoIGZvciB0aGUg
SklUIG9wdGltaXphdGlvbiBjaGVjazoKQEAgLTE1MjEsMjYgKzE1MjEsMjYgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2wKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFw
cyhjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFwcyhjb25z
dCBKU0luc3RydWN0aW9uKikKIHsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoTm9uWmVy
bywgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPnRyYXBzKCkudHJhcEJpdHNBZGRyZXNzKCkpLCBUcnVz
dGVkSW1tMzIoVk1UcmFwczo6QXN5bmNFdmVudHMpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X25vcChjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9ub3AoY29uc3QgSlNJ
bnN0cnVjdGlvbiopCiB7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVn
aW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9i
ZWdpbihjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSks
IEFic29sdXRlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50
KSkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBJbnN0
cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBKU0lu
c3RydWN0aW9uKikKIHsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVz
cyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50KSkpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2No
ZWNrX3RyYXBzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE1ODEs
NyArMTU4MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpv
cF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2CiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX2NoZWNrX3Ry
YXBzX2hhbmRsZXIiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3Jl
Z2V4cChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdSZWdleHA+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTU5NCw3ICsxNTk0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0
TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNjE2
LDI4ICsxNjE2LDI4IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX25ld19mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5ld0Z1bmM+KGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5ld0dlbmVyYXRvckZ1bmM+KGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuYyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5ld0FzeW5jR2VuZXJhdG9yRnVuYz4o
Y3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX25ld19hc3luY19mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5ld0FzeW5jRnVuYz4oY3VycmVudEluc3Ry
dWN0aW9uKTsKIH0KLSAgICAKKwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0xNjU5LDI3ICsxNjU5LDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24o
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX25ld19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb248T3BO
ZXdGdW5jRXhwPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21t
b248T3BOZXdHZW5lcmF0b3JGdW5jRXhwPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNF
eHByQ29tbW9uPE9wTmV3QXN5bmNGdW5jRXhwPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAg
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb248T3BOZXdBc3luY0dlbmVyYXRv
ckZ1bmNFeHA+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9Ci0gICAgCi12b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKKwordm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cE5ld0FycmF5PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
QEAgLTE2OTEsNyArMTY5MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJheShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXJyYXlXaXRoUHJvZmlsZSwgZHN0LCBhcmd1bWVudEdQUjAsIGFyZ3VtZW50R1BSMSwg
YXJndW1lbnRHUFIyLCBzaXplKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dp
dGhfc2l6ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BOZXdBcnJheVdpdGhTaXplPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKQEAgLTE3MDgsNyArMTcwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19h
cnJheV93aXRoX3NpemUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlLCBkc3Qs
IGdsb2JhbE9iamVjdEdQUiwgcHJvZmlsZUdQUiwgc2l6ZUpTUik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBtX2lzU2hhcmVhYmxlID0gZmFsc2U7CiAKQEAgLTE3
NzQsNyArMTc3NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGp1bXBUb0VuZC5saW5rKHRoaXMpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5zaGFkb3dDaGlja2VuKCkpOwogICAg
IHVwZGF0ZVRvcENhbGxGcmFtZSgpOwpAQCAtMTc4OCw3ICsxNzg4LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3QKICAgICBsb2dTaGFkb3dDaGlja2VuUHJvbG9ndWVQYWNrZXQoc2hhZG93UGFj
a2V0UmVnLCBzY3JhdGNoMVJlZywgcmVnVDMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9sb2df
c2hhZG93X2NoaWNrZW5fdGFpbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHZtKCku
c2hhZG93Q2hpY2tlbigpKTsKICAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKQEAgLTE4MDcsNyAr
MTgwNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9nU2hhZG93Q2hpY2tlblRh
aWxQYWNrZXQoc2hhZG93UGFja2V0UmVnLCBqc1JlZ1QzMiwgcmVnVDQsIHJlZ1QxLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxl
X2NvbnRyb2xfZmxvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIG1faXNTaGFyZWFibGUgPSBmYWxzZTsKIApAQCAt
MTgyMSw3ICsxODIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYXJndW1lbnRfY291bnQoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQXJndW1lbnRDb3VudD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xODMyLDcgKzE4MzIsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHQpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRSZXN0TGVuZ3RoPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldEFyZ3VtZW50PigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9hcmd1bWVudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJvdG90eXBlT2Y+KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA0NDI5NDg1MzZlNzMx
ZWJlMDZhOGFlNzBmODM2NDNlYjIzNjJmNDAyLi44MTk5NzgwYzk1NjcwOGVkYWI2YjU5OTM2NDg1
ODJiNWQ1YmQxYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BFcVNsb3dDb21t
b24oVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKICAgICBkb25lLmxpbmso
dGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BFcT4oKTsKIApAQCAtODYsNyArODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxPigp
OwogCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qZXEo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwogICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRKdW1wKGJyYW5jaDMyKEVxdWFs
LCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIGpzUmVnVDMyLnBheWxvYWRHUFIoKSksIHRhcmdldCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSm5lcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoMzIoTm90RXF1YWwsIGpzUmVnVDEwLnBheWxv
YWRHUFIoKSwganNSZWdUMzIucGF5bG9hZEdQUigpKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXE+KCk7CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9k
c3QsIHJldHVyblZhbHVlSlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BOZXE+KCk7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIHJldHVyblZhbHVlSlNS
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXE+KCk7CiAgICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9q
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
CiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJldHVyblZhbHVl
R1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpu
ZXE+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BTdHJpY3RFcUNvbW1vbihWaXJ0dWFsUmVnaXN0ZXIgc3JjMSwgIFZpcnR1YWxS
ZWdpc3RlciBzcmMyKQogICAgIGZpcnN0SXNPYmplY3QubGluayh0aGlzKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3N0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFN0cmljdGVxPigpOwogICAgIGNvbXBpbGVPcFN0cmljdEVxQ29tbW9uKGJ5dGVjb2Rl
Lm1fbGhzLCBieXRlY29kZS5tX3Jocyk7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE5zdHJpY3RlcT4oKTsKICAgICBjb21waWxlT3BTdHJpY3RFcUNvbW1v
bihieXRlY29kZS5tX2xocywgYnl0ZWNvZGUubV9yaHMpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVn
VDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnN0cmljdGVxPigpOwogICAgIGludCB0YXJnZXQg
PSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7
CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2gzMihFcXVh
bCwganNSZWdUMTAucGF5bG9hZEdQUigpLCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJnZXQp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuc3RyaWN0ZXE+KCk7CiAgICAgaW50IHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
QEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2gzMihOb3RF
cXVhbCwganNSZWdUMTAucGF5bG9hZEdQUigpLCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJn
ZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0yMjgsNyArMjI4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hU
ZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IGMwY2I3MmZiNjBkOTM1MzUzOWU5NDE3YWNiZjg0ZTUxMDhkMzg1MDIu
LmVmYzlhMGU4YmIwMmUyMjU4MTE4NDYyM2QxMDYwYTg5MzVjZGYyYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjgyNSw3ICsyODI1LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3du
S2V5VHlwZSwgY2hhciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4ocmVzdWx0KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29s
dmVTY29wZUZvckJhc2VsaW5lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEluc3RydWN0aW9uKiBwYykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODc3LDcgKzI4NzcsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzb2x2ZWRTY29w
ZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9t
U2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgSlNJbnN0cnVjdGlvbiogcGMpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBA
IC0yOTE5LDcgKzI5MTksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0
RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KgogICAgIH0pKSk7CiB9
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IGQ1ZTlmNWM3MDVhNTg5MzkwNzExYmFmNzM3MGIwMDRiMjYxZmRiODQu
LjJhNTlmNjRlODg1YWQ1YTI1ZTE4NjcyZjk2YzNkZDViYjg2NWJkMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC02OCw3ICs2OCwxMCBAQCBjbGFzcyBX
YXRjaHBvaW50U2V0OwogCiBzdHJ1Y3QgRUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1l
Owotc3RydWN0IEluc3RydWN0aW9uOworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJ
bnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24g
PSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwogCiB0eXBlZGVmIGNoYXIqIFVudXNl
ZFB0cjsKIApAQCAtMjk0LDkgKzI5Nyw5IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKCiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5
cGUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0
YWJsZUluZGV4LCBpbnQzMl90IG1pbikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoVk0qLCBFbmNvZGVkSlNW
YWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4LCBpbnQzMl90IG1pbikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRoVW5rbm93bktleVR5cGUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUlu
ZGV4KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVTY29wZUZv
ckJhc2VsaW5lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1
Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
R2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5z
dHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJ5dGVjb2RlUEMpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2
ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBKU0luc3RydWN0aW9uKiBieXRlY29kZVBDKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
SlNJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5p
dGlhbENhcGFjaXR5LCBjaGFyKiwgKFZNKiwgSlNPYmplY3QqKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3Jh
Z2UsIGNoYXIqLCAoVk0qLCBKU09iamVjdCosIHNpemVfdCBuZXdTaXplKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDhlYjIxMzhh
MTFjOWNiOTY5OWZjM2ZhMjlkYWEyMmU1NTJiMTljODEuLmM4YjhiMGJmM2RlMWYzY2ZiN2JkZDli
MDFjMjdhNDc2Nzk5OTM3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVH
ZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nh
c2VFbgogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KQEAgLTE2NSw3ICsxNjUsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxT
bG93T3BlcmF0aW9uVAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BHZXRQcml2YXRlTmFtZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBBU1NFUlQoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKIApAQCAtMjYw
LDcgKzI2MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyCiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtMjk1LDcgKzI5NSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRG
aWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIFVOVVNFRF9QQVJBTShjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFYKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVf
YnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0zNDgs
NyArMzQ4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwpAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC00MTcsMTQgKzQxNywxNCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsK
IH0KIAotdGVtcGxhdGUgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsPihj
b25zdCBJbnN0cnVjdGlvbiopOwordGVtcGxhdGUgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3Zh
bDxPcFB1dEJ5VmFsPihjb25zdCBKU0luc3RydWN0aW9uKik7CiAKLXZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlW
YWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwog
ICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5k
ZXgpOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UCiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtNTIyLDcgKzUy
Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3Vs
ZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
QEAgLTU4NCw3ICs1ODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcgogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24i
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9i
eV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJCeUlkPigpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGJ5dGVjb2RlLm1fYmFzZSwgcmVnVDAp
OwpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblB1dEdldHRlckJ5SWQsIHJlZ1QyLCByZWdUMCwgbV91bmxpbmtlZENvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCksIG9wdGlvbnMsIHJlZ1Qx
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9i
eV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRTZXR0ZXJCeUlkPigpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGJ5dGVjb2RlLm1fYmFzZSwgcmVnVDAp
OwpAQCAtNjA0LDcgKzYwNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblB1dFNldHRlckJ5SWQsIHJlZ1QyLCByZWdUMCwgbV91bmxpbmtlZENvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCksIG9wdGlvbnMsIHJlZ1Qx
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdl
dHRlclNldHRlckJ5SWQ+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYnl0
ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBAIC02MTUsNyArNjE1LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwgcmVn
VDMsIHJlZ1QwLCBtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpLmltcGwoKSwgYXR0cmlidXRlLCByZWdUMSwgcmVnVDIpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV92YWwoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlWYWw+KCk7CiAKQEAgLTYzNCw3ICs2MzQs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0
dGVyQnlWYWwsIGdsb2JhbE9iamVjdEdSUCwgYmFzZUdQUiwgcHJvcGVydHlKU1IsIGF0dHJpYnV0
ZXMsIHNldHRlckdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfc2V0dGVyX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRT
ZXR0ZXJCeVZhbD4oKTsKIApAQCAtNjUzLDcgKzY1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRTZXR0ZXJCeVZhbCwgZ2xvYmFsT2JqZWN0R1JQ
LCBiYXNlR1BSLCBwcm9wZXJ0eUpTUiwgYXR0cmlidXRlcywgc2V0dGVyR1BSKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFy
cmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2Rl
bF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC03NjIsNyArNzYyLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVs
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGgKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BEZWxCeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC04MDQsNyArODA0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFz
ZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3Zh
bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC04NzQsNyArODc0LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3Zh
bF9jYWxsU2xvd09wZXJhdGlvblQKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVD
YWxsIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlf
aWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTA4LDcgKzkw
OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZS
ZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9p
ZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC05MzQsNyArOTM0LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3Qo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJ
ZERpcmVjdD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1f
ZHN0OwpAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CkBAIC05OTMsNyArOTkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9k
aXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRl
Y29kZS5tX2RzdDsKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0xMTAw
LDcgKzExMDAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaAogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTEzOCw3ICsx
MTM4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAg
LTEyMDEsNyArMTIwMSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPCiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
biIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZVZSZWcsIFNob3VsZEZpbHRlckJhc2UpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKQEAgLTEzMTAsNyArMTMxMCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoCiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEzNDIsNyArMTM0Miw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CkBAIC0xMzcwLDcgKzEzNzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC0xNDA2LDcgKzE0MDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2lu
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0xNDg2LDMxICsxNDg2
LDMxIEBAIHZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZSB0eXBlKQogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKICAgICBlbWl0SGFz
UHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3Bl
cnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0
ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgZW1pdEhhc1By
aXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKICAgICBlbWl0SGFzUHJpdmF0
ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFz
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5k
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgZW1pdEhhc1ByaXZhdGVT
bG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wUmVzb2x2ZVNjb3BlPigpOwogICAgIFJlc29sdmVUeXBlIHByb2ZpbGVkUmVzb2x2ZVR5
cGUgPSBieXRlY29kZS5tZXRhZGF0YShtX3Byb2ZpbGVkQ29kZUJsb2NrKS5tX3Jlc29sdmVUeXBl
OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYgdm0KICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9yZXNvbHZlX3Njb3BlIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9mcm9t
X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRGcm9tU2NvcGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtMTk3NCw3ICsxOTc0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IoVk0mIHYKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9nZXRfZnJvbV9zY29wZSIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9f
c2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX3B1dF90b19zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRU
b1Njb3BlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7
CkBAIC0yMTEzLDcgKzIxMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTIxNzMsNyArMjE3Myw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF90b19zY29wZUdl
bmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3RvX3Njb3BlIik7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEZyb21Bcmd1bWVudHM+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjE4Niw3ICsyMTg2LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpz
UmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Rv
X2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb0FyZ3VtZW50
cz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzID0gYnl0ZWNvZGUubV9hcmd1bWVu
dHM7CkBAIC0yMjAxLDcgKzIyMDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1l
bnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRl
QmFycmllcihhcmd1bWVudHMsIHZhbHVlLCBTaG91bGRGaWx0ZXJWYWx1ZSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEludGVybmFsRmllbGQ+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVn
VDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfaW50
ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0SW50ZXJuYWxG
aWVsZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAg
LTIyMzEsNyArMjIzMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcm9w
ZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByb3Bl
cnR5RW51bWVyYXRvcj4oKTsKIApAQCAtMjI2NSw3ICsyMjY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBkb25lQ2FzZXMubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRW51bWVyYXRvck5leHQ+KCk7CiAKQEAgLTIzMjgsNyArMjMyOCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5VmFsPigpOwogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTI0MTYsNyArMjQxNiw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1
cm5WYWx1ZUpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJh
dG9yX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5VmFs
PigpLCBpdGVyKTsKIH0KQEAgLTI0NTgsNDggKzI0NTgsNDggQEAgdm9pZCBKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1Bh
dGhGdW4KICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1l
cmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0
eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93
X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9lbnVtZXJh
dG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JI
YXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7
CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9w
cm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29w
X2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9l
bnVtZXJhdG9yKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwp
OwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9l
bnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKikKIHsK
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKikK
K3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBKU0lu
c3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGQw
YjM3Mzg5MjFhNGYwMDE1MTJlN2RlZTNhODQ0M2M1MTkzYmQyNmMuLjY3MDc3NTdiYzVjNGEyNmNl
MzllYzJhODVjNGFhZTY4NzM5NTc1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAKICAgICBz
dGF0aWNfYXNzZXJ0KGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUgPCBVSU5U
OF9NQVgpOwogICAgIHN0YXRpY19hc3NlcnQod2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lIDwgVUlOVDhfTUFYKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4T3Bj
b2RlTGVuZ3RoICsgMTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heEJ5
dGVjb2RlU3RydWN0TGVuZ3RoICsgMTsgKytpKSB7CiAgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXSA9IGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmU7CiAgICAgICAgIGdfanNjQ29uZmlnLmxsaW50Lndhc21FeGNlcHRpb25JbnN0cnVj
dGlvbnNbaV0gPSB3YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCmluZGV4IDM3YzFhZmU2ZGU3NmM4
OTM1YWM3NDZkNjBmYjQ5N2QzMWU2ZTdjYTkuLmMwMzMzZDM0MmIwOWIwMzA0MDEwZjQ0NjI4NDNm
YzA4OTQ4MjllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAg
LTU1LDggKzU1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgdm9pZCBpbml0aWFs
aXplKCk7CiAKLSAgICBmcmllbmQgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygp
OwotICAgIGZyaWVuZCBJbnN0cnVjdGlvbiogd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwor
ICAgIGZyaWVuZCBKU0luc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICBm
cmllbmQgV2FzbUluc3RydWN0aW9uKiB3YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiAgICAg
ZnJpZW5kIE9wY29kZSogb3Bjb2RlTWFwKCk7CiAgICAgZnJpZW5kIE9wY29kZSogb3Bjb2RlTWFw
V2lkZTE2KCk7CiAgICAgZnJpZW5kIE9wY29kZSogb3Bjb2RlTWFwV2lkZTMyKCk7CkBAIC03NCwx
NCArNzQsMTQgQEAgcHJpdmF0ZToKIAogdm9pZCBpbml0aWFsaXplKCk7CiAKLWlubGluZSBJbnN0
cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKK2lubGluZSBKU0luc3RydWN0aW9uKiBl
eGNlcHRpb25JbnN0cnVjdGlvbnMoKQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PElu
c3RydWN0aW9uKj4oZ19qc2NDb25maWcubGxpbnQuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0luc3RydWN0aW9uKj4oZ19qc2NDb25maWcubGxp
bnQuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKTsKIH0KLSAgICAKLWlubGluZSBJbnN0cnVjdGlvbiog
d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisKK2lubGluZSBXYXNtSW5zdHJ1Y3Rpb24qIHdh
c21FeGNlcHRpb25JbnN0cnVjdGlvbnMoKQogewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5z
dHJ1Y3Rpb24qPihnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKTsK
KyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdhc21JbnN0cnVjdGlvbio+KGdfanNjQ29uZmlnLmxs
aW50Lndhc21FeGNlcHRpb25JbnN0cnVjdGlvbnMpOwogfQogCiBpbmxpbmUgT3Bjb2RlKiBvcGNv
ZGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcAppbmRleCBlODgzMTUzMjhjY2I4Zjg1YjNmNWRmNzE1NThhMGNiY2NiMzU4NTZjLi5kMjFj
MWEyMTAyODQ4ZjBmMzk3NWI5MmQzMzAxYTNjYmU3ZmZiMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcApAQCAtMzgsNyArMzgsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIHJldHVy
blRvVGhyb3coVk0mIHZtKQorSlNJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhWTSYgdm0pCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNpZiBMTElOVF9UUkFDSU5HCkBAIC01MCw3ICs1MCw3
IEBAIEluc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KFZNJiB2bSkKICAgICByZXR1cm4gTExJbnQ6
OmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwogfQogCi1JbnN0cnVjdGlvbiogd2FzbVJldHVyblRv
VGhyb3coVk0mIHZtKQorV2FzbUluc3RydWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhWTSYgdm0p
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNpZiBMTElOVF9UUkFDSU5HCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKaW5kZXggZTVmOTAyMWZhZGI4
ZWZjYjI1ODdjMGNhNjAxNzZlYmYxZGNiYWM0YS4uZmRhMzUzMmRjYzBhODg1YzQxOGU2Njc2YTIy
OTJkYzQzM2I1MzdlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuaApAQCAtMzMsMTYgKzMzLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBWTTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIHRlbXBsYXRlPFB0clRh
Zz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5nIEpTSW5z
dHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OworCiBuYW1lc3BhY2Ug
TExJbnQgewogCiAvLyBHaXZlcyB5b3UgYSBQQyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJw
cmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQKIC8vIGJldHdlZW4gMSBhbmQgOSBz
bG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZQog
Ly8gaW50ZXJwcmV0ZXIncyBleGNlcHRpb24gaGFuZGxlci4KLUluc3RydWN0aW9uKiByZXR1cm5U
b1Rocm93KFZNJik7Ci1JbnN0cnVjdGlvbiogd2FzbVJldHVyblRvVGhyb3coVk0mKTsKK0pTSW5z
dHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mKTsKK1dhc21JbnN0cnVjdGlvbiogd2FzbVJldHVy
blRvVGhyb3coVk0mKTsKIAogLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBj
YWxsIHRodW5rLgogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
IGNhbGxUb1Rocm93KFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAppbmRleCA3YTBlN2RmZTY1NmJmNDM0MDRjZThjZTZmYTUzZTk4ZGUxMWZk
OWU4Li4wYzViZjllMWQ2MjFlNmJiYjdjMWE5NjA2OTAwOGMzZjUzOGMxNGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEyNiw3ICsx
MjYsNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgeyByZXR1cgogICAgICgodGFyZ2V0T2Zmc2V0KSA/ICh0
YXJnZXRPZmZzZXQpIDogY29kZUJsb2NrLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KHBjKSkKIAogI2Rl
ZmluZSBKVU1QX1RPKHRhcmdldCkgZG8geyBcCi0gICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBj
KSArICh0YXJnZXQpKTsgXAorICAgICAgICBwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJ
bnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArICh0YXJn
ZXQpKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0JSQU5DSChjb25k
aXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICBcCkBAIC0yMjAsNyArMjIwLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gVHlwZXM+IHZvaWQgc2xvd1BhdGhMb2dGKGNvbnN0IGNoYXIqLCBjb25z
dCBUeXBlcyYuLi4pIHsgfQogCiAjZW5kaWYgLy8gTExJTlRfVFJBQ0lORwogCi1leHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQor
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKQogewogICAgIGlmICghT3B0aW9uczo6dHJhY2VMTEludEV4ZWN1dGlvbigpKQog
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQor
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCkKIHsKICAgICBpZiAoIU9wdGlvbnM6OnRyYWNlTExJbnRFeGVj
dXRpb24oKSkKICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICBM
TElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0dXBHZXRC
eUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1l
dGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlw
ZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUodm0pOwogCkBAIC04MDQsNyArODA0LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRC
eUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
b2QKICAgICB2bS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKIH0KIAotc3RhdGljIEpTVmFsdWUg
cGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQor
c3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBKU0luc3RydWN0aW9uKiBw
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRh
ZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjAwNiw3ICsy
MDA2LDcgQEAgZW51bSBjbGFzcyBTZXRBcmd1bWVudHNXaXRoIHsKIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9wLCBTZXRBcmd1bWVudHNXaXRoIHNldD4KLWlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgdmFyYXJnc1NldHVwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiog
cGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZh
cmFyZ3NTZXR1cChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7
CiAKQEAgLTIwNTYsNyArMjA1Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
b25zdHJ1Y3RfdmFyYXJncykKICAgICByZXR1cm4gdmFyYXJnc1NldHVwPE9wQ29uc3RydWN0VmFy
YXJncywgU2V0QXJndW1lbnRzV2l0aDo6T2JqZWN0PihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29u
c3RydWN0KTsKIH0KIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCitpbmxpbmUgU2xvd1BhdGhSZXR1
cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3Ry
dWN0aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBv
aW50KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTIzNzYsMTMgKzIzNzYsMTMgQEAgc3RhdGljIHZv
aWQgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU0dsb2JhbE8KICAgICAgICAgdmFsdWVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2Jq
ZWN0LmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlKTsKIH0KIAotaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRjaFRvTmV4dEluc3RydWN0aW9uRHVyaW5nRXhp
dChUaHJvd1Njb3BlJiBzY29wZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYgcGMpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0SW5z
dHJ1Y3Rpb25EdXJpbmdFeGl0KFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmIHBjKQogewogICAgIGlmIChzY29wZS5leGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChyZXR1cm5Ub1Rocm93KHNjb3BlLnZt
KCkpLCBudWxscHRyKTsKIAogICAgIGlmIChPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkg
fHwgY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewot
ICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOworICAg
ICAgICBjb25zdCBKU0luc3RydWN0aW9uKiBuZXh0UEMgPSBwYy5uZXh0KCkucHRyKCk7CiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50Ojpu
b3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
aW5kZXggN2VjODAxNWVlOGM1YWVjNGM1MjlkNmRjNTI4MmEzNDNjNzRhNGJlYi4uN2JkMTA3Yjk1
NWU1ZThjNTU5NTI1MGU1MWJjZmY3Yzc2Yjg0YzljNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTI2LDI0ICsyNiwyNCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIENhbGxGcmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBQcm90b0NhbGxG
cmFtZTsKIAogbmFtZXNwYWNlIExMSW50IHsKIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiosIGlu
dCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKSBSRUZFUkVOQ0VEX0ZST01fQVNNOwotZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1lKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgUkVG
RVJFTkNFRF9GUk9NX0FTTTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Ry
YWNlX29wZXJhbmQoQ2FsbEZyYW1lKiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKSBSRUZFUkVOQ0VEX0ZST01fQVNNOworZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1lKiwgY29uc3QgSlNJbnN0cnVj
dGlvbiosIGludCBmcm9tV2hlcmUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBSRUZFUkVOQ0VE
X0ZST01fQVNNOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfbGlua19jYWxs
KENhbGxGcmFtZSosIEpTQ2VsbCosIENhbGxMaW5rSW5mbyopIFJFRkVSRU5DRURfRlJPTV9BU007
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF92aXJ0dWFsX2NhbGwoQ2FsbEZy
YW1lKiwgSlNDZWxsKiwgQ2FsbExpbmtJbmZvKikgUkVGRVJFTkNFRF9GUk9NX0FTTTsKIGV4dGVy
biAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3coQ2FsbEZyYW1lKiwgSlNDZWxsKikg
UkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CiAKICNkZWZpbmUgTExJTlRfU0xPV19Q
QVRIX0RFQ0wobmFtZSkgXAotICAgIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
XyMjbmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorICAg
IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiAKICNkZWZpbmUgTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKG5hbWUpIFwKICAgICBMTElOVF9TTE9XX1BBVEhfREVDTChuYW1lKSBS
RUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDRmYTRmYjNkNzkxYjMz
NDc4MGQ4ZDg4MDZhYjAyZDhlYmNmNzA1OGEuLmQwM2M2NmVlNDE5YTcxM2ViMzVmZWNhY2E3NDRh
ZWRlODQxYmE4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTMyMCw4ICszMjAsMTAgQEAgZW5kCiAKICMgT3Bjb2Rl
IG9mZnNldHMKIGNvbnN0IE9wY29kZUlETmFycm93U2l6ZSA9IDEgIyBPcGNvZGVJRAotY29uc3Qg
T3Bjb2RlSURXaWRlMTZTaXplID0gMiAjIFdpZGUxNiBQcmVmaXggKyBPcGNvZGVJRAotY29uc3Qg
T3Bjb2RlSURXaWRlMzJTaXplID0gMiAjIFdpZGUzMiBQcmVmaXggKyBPcGNvZGVJRAorY29uc3Qg
T3Bjb2RlSURXaWRlMTZTaXplSlMgPSAyICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlECitjb25z
dCBPcGNvZGVJRFdpZGUzMlNpemVKUyA9IDIgIyBXaWRlMzIgUHJlZml4ICsgT3Bjb2RlSUQKK2Nv
bnN0IE9wY29kZUlEV2lkZTE2U2l6ZVdhc20gPSAzICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlE
KDEgYnl0ZSkgIyBGSVhNRTogY2hhbmdlIHRoaXMgYmFjayBvbmNlIEVXUyBwYXNzZXMuCitjb25z
dCBPcGNvZGVJRFdpZGUzMlNpemVXYXNtID0gMyAjIFdpZGUzMiBQcmVmaXggKyBPcGNvZGVJRCgx
IGJ5dGUpICMgRklYTUU6IGNoYW5nZSB0aGlzIGJhY2sgb25jZSBFV1MgcGFzc2VzLgogCiBpZiBY
ODZfNjRfV0lOIG9yIENfTE9PUF9XSU4KICAgICBjb25zdCBHaWdhY2FnZUNvbmZpZyA9IF9nX2dp
Z2FjYWdlQ29uZmlnCkBAIC0zNTgsMzUgKzM2MCw1MSBAQCBtYWNybyBkaXNwYXRjaEluZGlyZWN0
KG9mZnNldFJlZykKICAgICBkaXNwYXRjaChvZmZzZXRSZWcpCiBlbmQKIAotbWFjcm8gZ2VuZXJp
Y0Rpc3BhdGNoT3AoZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCittYWNybyBnZW5lcmljRGlz
cGF0Y2hPcEpTKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1lKQogICAgIG1hY3JvIGRpc3BhdGNo
TmFycm93KCkKLSAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3Ro
IC0gMSkgKiAxICsgT3Bjb2RlSUROYXJyb3dTaXplKQorICAgICAgICBkaXNwYXRjaCgoY29uc3Rl
eHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogMSArIE9wY29kZUlETmFycm93U2l6ZSkKICAgICBl
bmQKIAogICAgIG1hY3JvIGRpc3BhdGNoV2lkZTE2KCkKLSAgICAgICAgZGlzcGF0Y2goKGNvbnN0
ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoIC0gMSkgKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplKQor
ICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogMiArIE9w
Y29kZUlEV2lkZTE2U2l6ZUpTKQogICAgIGVuZAogCiAgICAgbWFjcm8gZGlzcGF0Y2hXaWRlMzIo
KQotICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGggLSAxKSAq
IDQgKyBPcGNvZGVJRFdpZGUzMlNpemUpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9w
Y29kZU5hbWUlX2xlbmd0aCkgKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplSlMpCisgICAgZW5kCisK
KyAgICBzaXplKGRpc3BhdGNoTmFycm93LCBkaXNwYXRjaFdpZGUxNiwgZGlzcGF0Y2hXaWRlMzIs
IG1hY3JvIChkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQpCitlbmQKKworbWFjcm8gZ2VuZXJpY0Rp
c3BhdGNoT3BXYXNtKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1lKQorICAgIG1hY3JvIGRpc3Bh
dGNoTmFycm93KCkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVu
Z3RoKSAqIDEgKyBPcGNvZGVJRE5hcnJvd1NpemUpCisgICAgZW5kCisKKyAgICBtYWNybyBkaXNw
YXRjaFdpZGUxNigpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xl
bmd0aCkgKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplV2FzbSkKKyAgICBlbmQKKworICAgIG1hY3Jv
IGRpc3BhdGNoV2lkZTMyKCkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFt
ZSVfbGVuZ3RoKSAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVXYXNtKQogICAgIGVuZAogCiAgICAg
c2l6ZShkaXNwYXRjaE5hcnJvdywgZGlzcGF0Y2hXaWRlMTYsIGRpc3BhdGNoV2lkZTMyLCBtYWNy
byAoZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogZW5kCiAKIG1hY3JvIGRpc3BhdGNoT3Aoc2l6
ZSwgb3Bjb2RlTmFtZSkKLSAgICBnZW5lcmljRGlzcGF0Y2hPcChkaXNwYXRjaCwgc2l6ZSwgb3Bj
b2RlTmFtZSkKKyAgICBnZW5lcmljRGlzcGF0Y2hPcEpTKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVO
YW1lKQogZW5kCiAKIAogbWFjcm8gZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwg
ZHN0KQotICAgIHNpemUoZ2V0dU9wZXJhbmROYXJyb3csIGdldHVPcGVyYW5kV2lkZTE2LCBnZXR1
T3BlcmFuZFdpZGUzMiwgbWFjcm8gKGdldHUpCisgICAgc2l6ZShnZXR1T3BlcmFuZE5hcnJvdywg
Z2V0dU9wZXJhbmRXaWRlMTZKUywgZ2V0dU9wZXJhbmRXaWRlMzJKUywgbWFjcm8gKGdldHUpCiAg
ICAgICAgIGdldHUob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBlbmQpCiBlbmQK
IAogbWFjcm8gZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgc2l6
ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZTE2LCBnZXRPcGVyYW5kV2lkZTMyLCBt
YWNybyAoZ2V0KQorICAgIHNpemUoZ2V0T3BlcmFuZE5hcnJvdywgZ2V0T3BlcmFuZFdpZGUxNkpT
LCBnZXRPcGVyYW5kV2lkZTMySlMsIG1hY3JvIChnZXQpCiAgICAgICAgIGdldChvcGNvZGVTdHJ1
Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgIGVuZCkKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDk4NzZlZjZlZjc0
MmFjZWVkYWUyNjlhMmFiNDU0YzViNjJjZDUxNmIuLmU3YTRkMTk4ODhhYjM5MTJiZGQ3NzdhYmFk
MDBhODBmNDg5OWQ4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
QUxXQVlTX0lOTElORSBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0
PE9wY29kZT4obV92YWx1ZSk7IH0KIAogICAgIG9wZXJhdG9yIENhbGxGcmFtZSooKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8Q2FsbEZyYW1lKj4obV92YWx1ZSk7IH0KLSAgICBvcGVyYXRvciBjb25z
dCBJbnN0cnVjdGlvbiooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24q
PihtX3ZhbHVlKTsgfQorICAgIG9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKCkgeyByZXR1
cm4gYml0d2lzZV9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPihtX3ZhbHVlKTsgfQogICAgIG9w
ZXJhdG9yIEpTQ2VsbCooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4obV92YWx1ZSk7
IH0KICAgICBvcGVyYXRvciBQcm90b0NhbGxGcmFtZSooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
UHJvdG9DYWxsRnJhbWUqPihtX3ZhbHVlKTsgfQogICAgIG9wZXJhdG9yIFJlZ2lzdGVyKigpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxSZWdpc3Rlcio+KG1fdmFsdWUpOyB9CkBAIC0yODcsNyArMjg3
LDcgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRyeU9wY29kZUlELCB2b2lk
KiBleGVjdXRhYmxlQWRkcmVzcywgVk0qIHZtLAogICAgICAgICAvLyBpbml0aWFsaXplZCB0aGUg
b3Bjb2RlTWFwIGFib3ZlLiBUaGlzIGlzIGJlY2F1c2UgZ2V0Q29kZVB0cigpCiAgICAgICAgIC8v
IGNhbiBkZXBlbmQgb24gdGhlIG9wY29kZU1hcC4KICAgICAgICAgdWludDhfdCogZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oTExJbnQ6OmV4Y2VwdGlv
bkluc3RydWN0aW9ucygpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heE9w
Y29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1h
eEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMTsgKytpKQogICAgICAgICAgICAgZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zW2ldID0gbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKIAog
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAyMjcxNmY4MWJi
ZDkwNzhjOTZmZWUxMWRkOGM0MTBlMmE1OWFkNGYyLi5hY2U4NzExNjcyZTcwMjE2ZDM5YTQ4ZGYx
NWZkNjZkNmI1N2M0MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMzQsMjAgKzM0LDIwIEBAIG1h
Y3JvIGdldE9wZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBs
b2FkYnNpIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCArIE9wY29k
ZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZFdp
ZGUxNihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRoIGNvbnN0ZXhwciAl
b3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVb
UEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUxNkpTKG9wY29kZVN0cnVjdCwg
ZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGggY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVs
ZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZUpTW1BCLCBQQywgMV0sIGRzdAog
ZW5kCiAKLW1hY3JvIGdldE9wZXJhbmRXaWRlMTYob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRz
dCkKLSAgICBsb2FkaHNpIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRl
eCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXRPcGVy
YW5kV2lkZTE2SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaHNpIGNv
bnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdp
ZGUxNlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZFdpZGUz
MihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bj
b2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVbUEIs
IFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUzMkpTKG9wY29kZVN0cnVjdCwgZmll
bGROYW1lLCBkc3QpCisgICAgbG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5h
bWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5k
CiAKLW1hY3JvIGdldE9wZXJhbmRXaWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkK
LSAgICBsb2FkaXMgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICog
NCArIE9wY29kZUlEV2lkZTMyU2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldE9wZXJhbmRX
aWRlMzJKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpcyBjb25zdGV4
cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJT
aXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAogbWFjcm8gbWFrZVJldHVybihnZXQsIGRpc3Bh
dGNoLCBmbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYzQ1MzM1MWQ0OTI2Y2Y3NGU4ZDZlZjg1ODU5ODc0YTQ1
YmFkNTlmYS4uNWRlN2JjYzdmZDBkNGYwNDBmMmRmOTRiZDQ3MzQ1ZDgzNTg2OTQ0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KQEAgLTM5LDIwICszOSwzNiBAQCBtYWNybyBnZXRPcGVyYW5kTmFycm93KG9wY29kZVN0
cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgbG9hZGJzcSBjb25zdGV4cHIgJW9wY29kZVN0cnVj
dCVfJWZpZWxkTmFtZSVfaW5kZXggKyBPcGNvZGVJRE5hcnJvd1NpemVbUEIsIFBDLCAxXSwgZHN0
CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMTYob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUs
IGRzdCkKLSAgICBsb2FkaCBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5k
ZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0dU9w
ZXJhbmRXaWRlMTZKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRoIGNv
bnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdp
ZGUxNlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXRPcGVyYW5kV2lkZTE2
KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGhzcSBjb25zdGV4cHIgJW9w
Y29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplW1BC
LCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMTZXYXNtKG9wY29kZVN0cnVjdCwg
ZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGggY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVs
ZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZVdhc21bUEIsIFBDLCAxXSwgZHN0
CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUs
IGRzdCkKLSAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5k
ZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0T3Bl
cmFuZFdpZGUxNkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGhzcSBj
b25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURX
aWRlMTZTaXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0T3BlcmFuZFdpZGUz
MihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRpcyBjb25zdGV4cHIgJW9w
Y29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplW1BC
LCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0T3BlcmFuZFdpZGUxNldhc20ob3Bjb2RlU3RydWN0LCBm
aWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaHNxIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmll
bGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVXYXNtW1BCLCBQQywgMV0sIGRz
dAorZW5kCisKK21hY3JvIGdldHVPcGVyYW5kV2lkZTMySlMob3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKKyAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVf
aW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplSlNbUEIsIFBDLCAxXSwgZHN0CitlbmQKKwor
bWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzJXYXNtKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3Qp
CisgICAgbG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICog
NCArIE9wY29kZUlEV2lkZTMyU2l6ZVdhc21bUEIsIFBDLCAxXSwgZHN0CitlbmQKKworbWFjcm8g
Z2V0T3BlcmFuZFdpZGUzMkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9h
ZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNv
ZGVJRFdpZGUzMlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKK2VuZAorCittYWNybyBnZXRPcGVyYW5k
V2lkZTMyV2FzbShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpcyBjb25z
dGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRl
MzJTaXplV2FzbVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCiBtYWNybyBtYWtlUmV0dXJuKGdldCwg
ZGlzcGF0Y2gsIGZuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dl
YkFzc2VtYmx5LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5h
c20KaW5kZXggM2U1Mzc5MDUyMjcxOWQ2NjBkZGFmMjJkM2VmM2VjZmYzZTU2NjVmZi4uZmJhZTJi
NGRmYWJkZWVjMWEwMjgxNDZlNzM0NzQ1ZDJmOTQ1YWRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBtYWNybyB3
YXNtTmV4dEluc3RydWN0aW9uKCkKIGVuZAogCiBtYWNybyB3YXNtTmV4dEluc3RydWN0aW9uV2lk
ZTE2KCkKLSAgICBsb2FkYiBPcGNvZGVJRE5hcnJvd1NpemVbUEIsIFBDLCAxXSwgdDAKKyAgICBs
b2FkaCBPcGNvZGVJRE5hcnJvd1NpemVbUEIsIFBDLCAxXSwgdDAgIyBGSVhNRTogY2hhbmdlIHRo
aXMgYmFjayBvbmNlIEVXUyBwYXNzZXMuCiAgICAgbGVhcCBfZ19vcGNvZGVNYXBXaWRlMTYsIHQx
CiAgICAgam1wIE51bWJlck9mSlNPcGNvZGVJRHMgKiBQdHJTaXplW3QxLCB0MCwgUHRyU2l6ZV0s
IEJ5dGVjb2RlUHRyVGFnLCBBZGRyZXNzRGl2ZXJzaWZpZWQKIGVuZAogCiBtYWNybyB3YXNtTmV4
dEluc3RydWN0aW9uV2lkZTMyKCkKLSAgICBsb2FkYiBPcGNvZGVJRE5hcnJvd1NpemVbUEIsIFBD
LCAxXSwgdDAKKyAgICBsb2FkaCBPcGNvZGVJRE5hcnJvd1NpemVbUEIsIFBDLCAxXSwgdDAgIyBG
SVhNRTogY2hhbmdlIHRoaXMgYmFjayBvbmNlIEVXUyBwYXNzZXMuCiAgICAgbGVhcCBfZ19vcGNv
ZGVNYXBXaWRlMzIsIHQxCiAgICAgam1wIE51bWJlck9mSlNPcGNvZGVJRHMgKiBQdHJTaXplW3Qx
LCB0MCwgUHRyU2l6ZV0sIEJ5dGVjb2RlUHRyVGFnLCBBZGRyZXNzRGl2ZXJzaWZpZWQKIGVuZApA
QCAtNDYwLDcgKzQ2MCw3IEBAIGVuZAogIyBXYXNtIHdyYXBwZXIgb2YgZ2V0L2dldHUgdGhhdCBv
cGVyYXRlIG9uIGN0eAogbWFjcm8gd2dldHMoY3R4LCBmaWVsZCwgZHN0KQogICAgIGN0eChtYWNy
byhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNpemUpCi0gICAgICAgIHNpemUoZ2V0T3BlcmFu
ZE5hcnJvdywgZ2V0T3BlcmFuZFdpZGUxNiwgZ2V0T3BlcmFuZFdpZGUzMiwgbWFjcm8gKGdldCkK
KyAgICAgICAgc2l6ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZTE2V2FzbSwgZ2V0
T3BlcmFuZFdpZGUzMldhc20sIG1hY3JvIChnZXQpCiAgICAgICAgICAgICBnZXQob3Bjb2RlU3Ry
dWN0LCBmaWVsZCwgZHN0KQogICAgICAgICBlbmQpCiAgICAgZW5kKQpAQCAtNDY4LDcgKzQ2OCw3
IEBAIGVuZAogCiBtYWNybyB3Z2V0dShjdHgsIGZpZWxkLCBkc3QpCiAgICAgY3R4KG1hY3JvKG9w
Y29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKLSAgICAgICAgc2l6ZShnZXR1T3BlcmFuZE5h
cnJvdywgZ2V0dU9wZXJhbmRXaWRlMTYsIGdldHVPcGVyYW5kV2lkZTMyLCBtYWNybyAoZ2V0dSkK
KyAgICAgICAgc2l6ZShnZXR1T3BlcmFuZE5hcnJvdywgZ2V0dU9wZXJhbmRXaWRlMTZXYXNtLCBn
ZXR1T3BlcmFuZFdpZGUzMldhc20sIG1hY3JvIChnZXR1KQogICAgICAgICAgICAgZ2V0dShvcGNv
ZGVTdHJ1Y3QsIGZpZWxkLCBkc3QpCiAgICAgICAgIGVuZCkKICAgICBlbmQpCkBAIC00NzgsNyAr
NDc4LDcgQEAgZW5kCiAKIG1hY3JvIGRpc3BhdGNoKGN0eCkKICAgICBjdHgobWFjcm8ob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBzaXplKQotICAgICAgICBnZW5lcmljRGlzcGF0Y2hPcCh3YXNt
RGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCisgICAgICAgIGdlbmVyaWNEaXNwYXRjaE9wV2Fz
bSh3YXNtRGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCiAgICAgZW5kKQogZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBjYTI0ZTc1
NDBhYjRkZGU1MTFhNTk2NmExNzFkNjk4OTM2NTNlMTViLi4xNmEyMzJmY2FjMzI2ZGMzYzZlMWMy
ZDFlYzc4MTAxYjllYWU0ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCkBAIC05ODMsNyArOTgzLDcgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRW
ZWN0b3I8Q2FjaGVkU3RyaW5nSnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRh
YmxlczsKICAgICBDYWNoZWRWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+
IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgQ2FjaGVkSGFzaE1hcDx1bnNpZ25l
ZCwgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFu
Z2U+IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKLSAgICBDYWNoZWRWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKKyAg
ICBDYWNoZWRWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29w
UHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOwogICAgIENhY2hlZFZlY3RvcjxDYWNo
ZWRCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkSGFzaFNl
dDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFz
aD4+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIDogMTsKQEAgLTE0MzksMTggKzE0MzksMTggQEAgcHJpdmF0ZToKICAg
ICBFbmNvZGVkVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBDYWNoZWRJbnN0cnVjdGlvblN0cmVh
bSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8SW5zdHJ1Y3Rpb25TdHJlYW0+IHsKK2NsYXNzIENhY2hl
ZEluc3RydWN0aW9uU3RyZWFtIDogcHVibGljIENhY2hlZE9iamVjdDxKU0luc3RydWN0aW9uU3Ry
ZWFtPiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIHN0cmVhbSkKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBzdHJlYW0pCiAgICAgewogICAgICAgICBt
X2luc3RydWN0aW9ucy5lbmNvZGUoZW5jb2Rlciwgc3RyZWFtLm1faW5zdHJ1Y3Rpb25zKTsKICAg
ICB9CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNv
bnN0CisgICAgSlNJbnN0cnVjdGlvblN0cmVhbSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBWZWN0b3I8dWludDhfdCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZs
b3csIDE2LCBJbnN0cnVjdGlvblN0cmVhbU1hbGxvYz4gaW5zdHJ1Y3Rpb25zVmVjdG9yOwogICAg
ICAgICBtX2luc3RydWN0aW9ucy5kZWNvZGUoZGVjb2RlciwgaW5zdHJ1Y3Rpb25zVmVjdG9yKTsK
LSAgICAgICAgcmV0dXJuIG5ldyBJbnN0cnVjdGlvblN0cmVhbShXVEZNb3ZlKGluc3RydWN0aW9u
c1ZlY3RvcikpOworICAgICAgICByZXR1cm4gbmV3IEpTSW5zdHJ1Y3Rpb25TdHJlYW0oV1RGTW92
ZShpbnN0cnVjdGlvbnNWZWN0b3IpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xODc5LDcgKzE4
NzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFVubGlua2Vk
Q29kZUJsb2NrJik7CiAgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYsIFVubGlua2VkQ29kZUJsb2Nr
JikgY29uc3Q7CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbSogaW5zdHJ1Y3Rpb25zKERlY29kZXIm
IGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmRlY29kZShkZWNvZGVyKTsg
fQorICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW0qIGluc3RydWN0aW9ucyhEZWNvZGVyJiBkZWNvZGVy
KSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9ucy5kZWNvZGUoZGVjb2Rlcik7IH0KIAogICAg
IFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3RoaXNSZWdp
c3RlcjsgfQogICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1
cm4gbV9zY29wZVJlZ2lzdGVyOyB9CkBAIC0xOTY2LDExICsxOTY2LDExIEBAIHByaXZhdGU6CiAg
ICAgQ2FjaGVkUmVmUHRyPENhY2hlZFN0cmluZ0ltcGw+IG1fc291cmNlTWFwcGluZ1VSTERpcmVj
dGl2ZTsKIAogICAgIENhY2hlZFB0cjxDYWNoZWRJbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVj
dGlvbnM7Ci0gICAgQ2FjaGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVt
cFRhcmdldHM7CisgICAgQ2FjaGVkVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkSlNWYWx1ZT4g
bV9jb25zdGFudFJlZ2lzdGVyczsKICAgICBDYWNoZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsKICAgICBDYWNoZWRW
ZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbz4gbV9leHByZXNzaW9uSW5mbzsKLSAgICBDYWNoZWRI
YXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD4gbV9vdXRPZkxpbmVKdW1wVGFy
Z2V0czsKKyAgICBDYWNoZWRIYXNoTWFwPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgaW50PiBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogCiAgICAgQ2FjaGVkVmVjdG9yPENh
Y2hlZElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFdy
aXRlQmFycmllcjxDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1bmN0aW9uRGVjbHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApp
bmRleCA4Y2YxMGQyNjQ2YmUzY2RmMWEzYTIzNzFjNTUxODYxYmE2NDJkYzFhLi4xZWVlZTJjYjll
NDZjNDRmMTljOGQ0ZjAyYjY1MTA3YjMzZDRhNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTExMiwxMCArMTEyLDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoYkNvbmRpdGlvbikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcGMgPSBieXRlY29k
ZS5tX3RhcmdldExhYmVsIFwKLSAgICAgICAgICAgICAgICA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyBi
eXRlY29kZS5tX3RhcmdldExhYmVsKSBcCisgICAgICAgICAgICAgICAgPyByZWludGVycHJldF9j
YXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihwYykgKyBieXRlY29kZS5tX3RhcmdldExhYmVsKSBcCiAgICAgICAgICAgICAgICAgOiBjb2Rl
QmxvY2stPm91dE9mTGluZUp1bXBUYXJnZXQocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArIHBj
LT5zaXplKCkpOyBcCisgICAgICAgICAgICBwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJ
bnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArIHBjLT5z
aXplKCkpOyBcCiAgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKQEAgLTU1Miw3ICs1NTIsNyBA
QCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX25lZ2F0ZSkKIH0KIAogI2lm
IEVOQUJMRShERkdfSklUKQotc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5
QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQp
CitzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFs
T2JqZWN0KiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBK
U1ZhbHVlIHJlc3VsdCwgSlNWYWx1ZSBsZWZ0LCBKU1ZhbHVlIHJpZ2h0KQogewogICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9ICpjb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZv
clBDKHBjKTsKIApAQCAtNTg2LDcgKzU4Niw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAg
ICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CiB9CiAjZWxzZQotc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1
ZSkgeyB9CitzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIEpTVmFsdWUs
IEpTVmFsdWUsIEpTVmFsdWUpIHsgfQogI2VuZGlmCiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1df
UEFUSChzbG93X3BhdGhfdG9fbnVtYmVyKQpAQCAtODQ2LDcgKzg0Niw3IEBAIEpTQ19ERUZJTkVf
Q09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3RydWN0b3IpCiB9CiAKIHRlbXBsYXRl
PE9wY29kZVNpemUgd2lkdGg+Ci1BTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBpdGVy
YXRvck9wZW5UcnlGYXN0SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjKQorQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JPcGVu
VHJ5RmFzdEltcGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IHBjKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JP
cGVuLCB3aWR0aD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jayk7CkBAIC04OTIsNyArODkyLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKQogfQogCiB0ZW1wbGF0ZTxPcGNvZGVTaXpl
IHdpZHRoPgotQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JOZXh0VHJ5
RmFzdEltcGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUs
IGNvbnN0IEluc3RydWN0aW9uKiBwYykKK0FMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBl
IGl0ZXJhdG9yTmV4dFRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yTmV4dCwgd2lkdGg+KCk7CiAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA5YjI0N2I3
ZTU2OTYzMTJmY2ZjNDZmOThhYWYxNzU0NmZkODQ5NmJhLi5kYzZhOGQxMDkzMTczY2IxMDYwOTMx
YTAwMDU2ODk3MmE2YzBjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ4LDEzICsyNDgsMTIgQEAgaW5saW5lIEpTQXJyYXkq
IGFsbG9jYXRlTmV3QXJyYXlCdWZmZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNJ
bW11dGFibGUKIH0gLy8gbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocwogCiBjbGFzcyBDYWxsRnJh
bWU7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQ09NTU9OX1NM
T1dfUEFUSChuYW1lKSBcCi0gICAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihuYW1lLCBTbG93
UGF0aFJldHVyblR5cGUsIChDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiopKQorICAgIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04obmFtZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZy
YW1lKiwgY29uc3QgSlNJbnN0cnVjdGlvbiopKQogCiAjZGVmaW5lIEpTQ19ERUZJTkVfQ09NTU9O
X1NMT1dfUEFUSChuYW1lKSBcCi0gICAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG5hbWUsIFNs
b3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
biogcGMpKQorICAgIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihuYW1lLCBTbG93UGF0aFJldHVy
blR5cGUsIChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQog
CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2sp
OwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5
Q2hlY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJh
c2VkRnV6emVyQWdlbnRCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zp
bGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKaW5kZXggMTcwZjFhNjBkYWJiMjU2NzFjMGVkNmNk
Mzc1YzBiOWIxMjhkMTY2NS4uMjY5ODg2YmZjMjEyN2QzNGVlMTQ2MGQ3Nzg3MWFjYTM4NWY4ODQx
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6
emVyQWdlbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxl
QmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCkBAIC03NSw4ICs3NSw4IEBAIFNwZWN1bGF0ZWRUeXBl
IEZpbGVCYXNlZEZ1enplckFnZW50QmFzZTo6Z2V0UHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgY29uCiAgICAgVmVjdG9yPFN0cmluZz4gdXJsUGFydHMgPSBzb3VyY2VVUkwuc3BsaXQo
Jy8nKTsKICAgICBwcmVkaWN0aW9uVGFyZ2V0LnNvdXJjZUZpbGVuYW1lID0gdXJsUGFydHMuaXNF
bXB0eSgpID8gc291cmNlVVJMIDogdXJsUGFydHMubGFzdCgpOwogCi0gICAgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucyA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCk7Ci0g
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGFuSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0
ZWNvZGVJbmRleCkucHRyKCk7CisgICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25zID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKTsKKyAgICBjb25zdCBhdXRvKiBhbkluc3RydWN0aW9uID0gaW5z
dHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIHByZWRpY3Rpb25UYXJnZXQu
b3Bjb2RlSWQgPSBhbkluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCiAgICAgaW50IHN0YXJ0TG9j
YXRpb24gPSBwcmVkaWN0aW9uVGFyZ2V0LmRpdm90IC0gcHJlZGljdGlvblRhcmdldC5zdGFydE9m
ZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZp
Zy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKaW5kZXggOWI2
OTEzZjk0MGNjMjkwYmVlMmMyNmQ0ZTVhZGM3OGI5YmMxYmNhYy4uNTViN2EwZjhjMjJhOTlkZTVi
NWFjOTJiODFiMmVmODEzYTFkZDI0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDQ29uZmlnLmgKQEAgLTEwMSw4ICsxMDEsOCBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICB2b2lk
ICgqc2hlbGxUaW1lb3V0Q2hlY2tDYWxsYmFjaykoVk0mKTsKIAogICAgIHN0cnVjdCB7Ci0gICAg
ICAgIHVpbnQ4X3QgZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21heE9wY29kZUxlbmd0aCArIDFdOwot
ICAgICAgICB1aW50OF90IHdhc21FeGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3Ro
ICsgMV07CisgICAgICAgIHVpbnQ4X3QgZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21heEJ5dGVjb2Rl
U3RydWN0TGVuZ3RoICsgMV07CisgICAgICAgIHVpbnQ4X3Qgd2FzbUV4Y2VwdGlvbkluc3RydWN0
aW9uc1ttYXhCeXRlY29kZVN0cnVjdExlbmd0aCArIDFdOwogICAgICAgICBjb25zdCB2b2lkKiBn
YXRlTWFwW251bWJlck9mR2F0ZXNdOwogICAgIH0gbGxpbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBlOGE0ZTdhNjIzMzlkMzZiZWEwZjcyNTdi
NDE3MzVlYzgyNDNlZjU3Li4yOTQ5ZDA5MjVmYzA0NDc0YTZkZDI4MDc3NWU0YTM1OGY0YzBhZWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC03Myw3
ICs3Myw2IEBAIGNsYXNzIENMb29wOwogCiBzdHJ1Y3QgQ2xhc3NJbmZvOwogc3RydWN0IER1bXBD
b250ZXh0Owotc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IE1ldGhvZFRhYmxlOwogZW51bSBj
bGFzcyBVbmtub3duIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2xvd1BhdGhGdW5jdGlvbi5oCmluZGV4IGJmYzM4YzY1MDlkMTU4MTVjZGM1NDE3MDQ1Y2M3Mjg3
ZmRjMTk2NzIuLjMyNjdlYTk0OGY4ZDhiMzkyMzY1MTc4MzAyNTMyZTNlOGEyMmQwNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmgKQEAg
LTMwLDggKzMwLDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1lOwotc3Ry
dWN0IEluc3RydWN0aW9uOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCYXNlSW5zdHJ1Y3Rp
b247CitzdHJ1Y3QgSlNPcGNvZGVUcmFpdHM7Cit1c2luZyBKU0luc3RydWN0aW9uID0gQmFzZUlu
c3RydWN0aW9uPEpTT3Bjb2RlVHJhaXRzPjsKIAotdXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNs
b3dQYXRoUmV0dXJuVHlwZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMqKShDYWxsRnJhbWUqLCBj
b25zdCBJbnN0cnVjdGlvbiopOwordXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0
dXJuVHlwZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMqKShDYWxsRnJhbWUqLCBjb25zdCBKU0lu
c3RydWN0aW9uKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IGY2NmRhYWI4YzcxMTUwMWUzZmU5ZDFmMzdmMjM2MTJkM2FhNDEwNjUu
LmUzMmRjYjBhZDM0YjIzYmNkYTI0NzFhMDNlZTkyY2I1MjMzMzgyMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIHZvaWQgVk06OnNldENy
YXNoT25WTUNyZWF0aW9uKGJvb2wgc2hvdWxkQ3Jhc2gpCiAgICAgdm1DcmVhdGlvblNob3VsZENy
YXNoID0gc2hvdWxkQ3Jhc2g7CiB9CiAKLXZvaWQgVk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291
bnRlcihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2b2lkIFZNOjphZGRMb29wSGlu
dEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2sgfTsKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHMuYWRkKGluc3RydWN0aW9u
LCBzdGQ6OnBhaXI8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjx1aW50cHRyX3Q+PigwLCBudWxs
cHRyKSk7CkBAIC0xNDU2LDE0ICsxNDU2LDE0IEBAIHZvaWQgVk06OmFkZExvb3BIaW50RXhlY3V0
aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgKythZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0OwogfQogCi11aW50cHRyX3QqIFZNOjpnZXRMb29wSGlu
dEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQordWludHB0
cl90KiBWTTo6Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvb3BIaW50RXhlY3V0aW9u
Q291bnRMb2NrIH07CiAgICAgYXV0byBpdGVyID0gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5m
aW5kKGluc3RydWN0aW9uKTsKICAgICByZXR1cm4gaXRlci0+dmFsdWUuc2Vjb25kLmdldCgpOwog
fQogCi12b2lkIFZNOjpyZW1vdmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uKQordm9pZCBWTTo6cmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3Vu
dGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRMb2NrIH07CiAgICAgYXV0byBpdGVyID0gbV9s
b29wSGludEV4ZWN1dGlvbkNvdW50cy5maW5kKGluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IDc4NmNkNjAzZjRjM2EyNzlkOGJhODVkYzEzMmE0NzNjYTY4YzAw
ZmUuLmRjNjgzNjNjZDQ2OTM2ODRhOWM4NjVmZmZlZWJiZDdlODg5NmQ4M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIlRodW5rR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVk1UcmFwcy5oIgogI2luY2x1ZGUgIldhc21Db250ZXh0Lmgi
CisjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KQEAgLTE2MSw3ICsxNjIsMTQgQEAgY2xhc3MgU2lnbmF0dXJlOwogfQogCiBzdHJ1Y3Qg
RW50cnlGcmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBCYXNlSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgSlNPcGNvZGVUcmFpdHM7CitzdHJ1Y3QgV2Fz
bU9wY29kZVRyYWl0czsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNP
cGNvZGVUcmFpdHM+OwordXNpbmcgV2FzbUluc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPFdh
c21PcGNvZGVUcmFpdHM+OworCit1c2luZyBKU09yV2FzbUluc3RydWN0aW9uID0gc3RkOjp2YXJp
YW50PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qPjsKIAogY2xh
c3MgUXVldWVkVGFzayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUXVldWVkVGFzayk7CkBA
IC02NjksNyArNjc3LDcgQEAgcHVibGljOgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lRm9yQ2F0
Y2g7CiAgICAgQ2FsbGVlQml0cyBjYWxsZWVGb3JXYXNtQ2F0Y2g7CiAgICAgdm9pZCogdGFyZ2V0
TWFjaGluZVBDRm9yVGhyb3c7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHRhcmdldEludGVycHJl
dGVyUENGb3JUaHJvdzsKKyAgICBKU09yV2FzbUluc3RydWN0aW9uIHRhcmdldEludGVycHJldGVy
UENGb3JUaHJvdzsKICAgICB1aW50MzJfdCBvc3JFeGl0SW5kZXg7CiAgICAgdm9pZCogb3NyRXhp
dEp1bXBEZXN0aW5hdGlvbjsKICAgICBSZWdFeHAqIG1fZXhlY3V0aW5nUmVnRXhwIHsgbnVsbHB0
ciB9OwpAQCAtODU1LDkgKzg2Myw5IEBAIHB1YmxpYzoKICAgICAgICAgU2V0Rm9yU2NvcGU8RXhj
ZXB0aW9uKj4gbV9zYXZlZExhc3RFeGNlcHRpb247CiAgICAgfTsKIAotICAgIHZvaWQgYWRkTG9v
cEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgdWludHB0cl90
KiBnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICB2
b2lkIHJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwor
ICAgIHZvaWQgYWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICB1aW50cHRyX3QqIGdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgdm9pZCByZW1vdmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29u
c3QgSlNJbnN0cnVjdGlvbiopOwogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHdyaXRlQmFycmll
cihjb25zdCBKU0NlbGwqIGZyb20pIHsgaGVhcC53cml0ZUJhcnJpZXIoZnJvbSk7IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSwgSlNWYWx1
ZSB0bykgeyBoZWFwLndyaXRlQmFycmllcihmcm9tLCB0byk7IH0KQEAgLTEwMDAsNyArMTAwOCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbk9uVGVybWluYXRpb24g
eyBmYWxzZSB9OwogCiAgICAgTG9jayBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRMb2NrOwotICAg
IEhhc2hNYXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCBzdGQ6OnBhaXI8dW5zaWduZWQsIHN0ZDo6dW5p
cXVlX3B0cjx1aW50cHRyX3Q+Pj4gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50czsKKyAgICBIYXNo
TWFwPGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBzdGQ6OnBhaXI8dW5zaWduZWQsIHN0ZDo6dW5pcXVl
X3B0cjx1aW50cHRyX3Q+Pj4gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50czsKIAogI2lmIEVOQUJM
RShERkdfRE9FU19HQ19WQUxJREFUSU9OKQogICAgIERvZXNHQ0NoZWNrIG1fZG9lc0dDOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNwcAppbmRleCA2NDMyN2U5OWMxNTQw
ZTZlYmQ2MjFhNjRkMWMxYjllOTRiYzdiNDRlLi5hMzIxYzUyZjE1ZWNhNTIyMTNlY2Q2ZWU5MjE3
MjcxOTgxMWIzMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q2FsbGVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNw
cApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Fz
bUNhbGxlZS5oIgorI2luY2x1ZGUgInJ1bnRpbWUvVk0uaCIKIAogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKIApAQCAtMTAwLDkgKzEwMSw5IEBAIExMSW50Q2FsbGVlOjpMTEludENhbGxlZShGdW5j
dGlvbkNvZGVCbG9ja0dlbmVyYXRvciYgZ2VuZXJhdG9yLCBzaXplX3QgaW5kZXgsIHN0CiAgICAg
ICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbiA9ICptX2luc3RydWN0aW9ucy0+YXQodW5saW5rZWRI
YW5kbGVyLm1fdGFyZ2V0KS5wdHIoKTsKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IHRhcmdldDsKICAgICAgICAgICAgIGlmICh1bmxpbmtlZEhh
bmRsZXIubV90eXBlID09IEhhbmRsZXJUeXBlOjpDYXRjaCkKLSAgICAgICAgICAgICAgICB0YXJn
ZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6aGFu
ZGxlV2FzbUNhdGNoKGluc3RydWN0aW9uLndpZHRoPFdhc21PcGNvZGVUcmFpdHM+KCkpLmNvZGUo
KSk7CisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9u
SGFuZGxlclB0clRhZz4oTExJbnQ6OmhhbmRsZVdhc21DYXRjaChpbnN0cnVjdGlvbi53aWR0aCgp
KS5jb2RlKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRhcmdldCA9IENv
ZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpoYW5kbGVXYXNt
Q2F0Y2hBbGwoaW5zdHJ1Y3Rpb24ud2lkdGg8V2FzbU9wY29kZVRyYWl0cz4oKSkuY29kZSgpKTsK
KyAgICAgICAgICAgICAgICB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPihMTEludDo6aGFuZGxlV2FzbUNhdGNoQWxsKGluc3RydWN0aW9uLndpZHRoKCkp
LmNvZGUoKSk7CiAKICAgICAgICAgICAgIGhhbmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRs
ZXIsIHRhcmdldCk7CiAgICAgICAgIH0KQEAgLTE0NCwxMyArMTQ1LDEzIEBAIHN0ZDo6dHVwbGU8
dm9pZCosIHZvaWQqPiBMTEludENhbGxlZTo6cmFuZ2UoKSBjb25zdAogICAgIHJldHVybiB7IG51
bGxwdHIsIG51bGxwdHIgfTsKIH0KIAotSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBMTEludENh
bGxlZTo6b3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVj
b2RlT2Zmc2V0KQorV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgTExJbnRDYWxsZWU6Om91
dE9mTGluZUp1bXBPZmZzZXQoV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVP
ZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMoYnl0
ZWNvZGVPZmZzZXQpKTsKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0
ZWNvZGVPZmZzZXQpOwogfQogCi1jb25zdCBJbnN0cnVjdGlvbiogTExJbnRDYWxsZWU6Om91dE9m
TGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorY29uc3QgV2FzbUluc3RydWN0
aW9uKiBMTEludENhbGxlZTo6b3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBXYXNtSW5zdHJ1Y3Rp
b24qIHBjKQogewogICAgIGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChwYyk7CiAgICAgaW50
IHRhcmdldCA9IG91dE9mTGluZUp1bXBPZmZzZXQob2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21DYWxsZWUuaAppbmRleCBiMTg0Yzc5YjAwOTgwZjcwOWI4NDBmYjBjODE5MjM2
ODQ0ZjYwNzMxLi4xZDM3MWI0M2YwYTA1NjdhNGI0OGNiZmY5MGNlYWZkMTBjMWFlZjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCkBAIC0yMzYsNyArMjM2LDcgQEAg
cHVibGljOgogICAgIHVpbnQzMl90IG51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
QXJndW1lbnRzOyB9CiAgICAgY29uc3QgRml4ZWRWZWN0b3I8VHlwZT4mIGNvbnN0YW50VHlwZXMo
KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50VHlwZXM7IH0KICAgICBjb25zdCBGaXhlZFZlY3Rv
cjx1aW50NjRfdD4mIGNvbnN0YW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9Ci0g
ICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
ICptX2luc3RydWN0aW9uczsgfQorICAgIGNvbnN0IFdhc21JbnN0cnVjdGlvblN0cmVhbSYgaW5z
dHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gKm1faW5zdHJ1Y3Rpb25zOyB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHVpbnQ2NF90IGdldENvbnN0YW50KFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RhbnRzW3JlZy50b0NvbnN0YW50SW5kZXgoKV07IH0KICAgICBBTFdB
WVNfSU5MSU5FIFR5cGUgZ2V0Q29uc3RhbnRUeXBlKFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0
CkBAIC0yNDUsMjAgKzI0NSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2NvbnN0YW50
VHlwZXNbcmVnLnRvQ29uc3RhbnRJbmRleCgpXTsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0IG51bWJlck9mSnVtcFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRz
LnNpemUoKTsgfQotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBUYXJnZXQo
KSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQorICAgIHR5cGVuYW1lIFdhc21JbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG51bWJlck9mSnVtcFRhcmdldHMoKSB7IHJldHVybiBtX2p1
bXBUYXJnZXRzLnNpemUoKTsgfQorICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IGxhc3RKdW1wVGFyZ2V0KCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0K
IAotICAgIGNvbnN0IEluc3RydWN0aW9uKiBvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zm
c2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBp
bnN0cnVjdGlvbikKKyAgICBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIG91dE9mTGluZUp1bXBUYXJn
ZXQoY29uc3QgV2FzbUluc3RydWN0aW9uKik7CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCk7CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25T
dHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5l
SnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24q
IHJldHVybkFkZHJlc3MpCisgICAgaW5saW5lIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcmV0dXJuQWRk
cmVzcykKICAgICB7CiAgICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gbV9p
bnN0cnVjdGlvbnMtPmF0KDApLnB0cigpOwotICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlv
bnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIG1faW5zdHJ1Y3Rpb25zLT5zaXpl
KCkpOworICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IFdhc21JbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihp
bnN0cnVjdGlvbnNCZWdpbikgKyBtX2luc3RydWN0aW9ucy0+c2l6ZSgpKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiByZXR1cm5B
ZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zRW5kKTsKICAgICAgICAgcmV0dXJuIHJldHVybkFkZHJlc3Mg
LSBpbnN0cnVjdGlvbnNCZWdpbjsKICAgICB9CkBAIC0yODcsNyArMjg3LDcgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogCi0gICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFw
PEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CisgICAgdXNpbmcgT3V0T2ZMaW5lSnVt
cFRhcmdldHMgPSBIYXNoTWFwPHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
LCBpbnQ+OwogCiBwcml2YXRlOgogICAgIExMSW50Q2FsbGVlKEZ1bmN0aW9uQ29kZUJsb2NrR2Vu
ZXJhdG9yJiwgc2l6ZV90IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1l
U2VjdGlvbj4+JiYpOwpAQCAtMzAxLDkgKzMwMSw5IEBAIHByaXZhdGU6CiAgICAgdWludDMyX3Qg
bV9udW1Bcmd1bWVudHMgeyAwIH07CiAgICAgRml4ZWRWZWN0b3I8VHlwZT4gbV9jb25zdGFudFR5
cGVzOwogICAgIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiBtX2NvbnN0YW50czsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAgIGNvbnN0
IHZvaWQqIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51bGxwdHIgfTsKLSAgICBGaXhlZFZl
Y3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOworICAgIEZpeGVk
VmVjdG9yPHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJn
ZXRzOwogICAgIEZpeGVkVmVjdG9yPGNvbnN0IFNpZ25hdHVyZSo+IG1fc2lnbmF0dXJlczsKICAg
ICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIExMSW50
VGllclVwQ291bnRlciBtX3RpZXJVcENvdW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcApp
bmRleCA0MTc0OTEzZDY4Y2I2NWM4MWU2ODEyNzc5NWQzMDJhMGE4NzZiYjM3Li45YzMyNmQ2MjE2
MTkxN2Q3ODEyMjlmZGQxMWE5MzA1Mzg1M2RjY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5j
cHAKQEAgLTMzLDE5ICszMywxOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogCi12b2lkIEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpzZXRJbnN0cnVjdGlvbnMoc3Rk
Ojp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCit2b2lkIEZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpzZXRJbnN0cnVjdGlvbnMoc3RkOjp1bmlxdWVfcHRyPFdh
c21JbnN0cnVjdGlvblN0cmVhbT4gaW5zdHJ1Y3Rpb25zKQogewogICAgIG1faW5zdHJ1Y3Rpb25z
ID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogICAgIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciA9
IG1faW5zdHJ1Y3Rpb25zLT5yYXdQb2ludGVyKCk7CiB9CiAKLXZvaWQgRnVuY3Rpb25Db2RlQmxv
Y2tHZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCBieXRlY29kZU9mZnNldCwgaW50IHRhcmdldCkKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2tH
ZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQsIGludCB0YXJnZXQpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQodGFyZ2V0KTsKICAgICBtX291dE9mTGluZUp1bXBUYXJnZXRzLnNldChieXRlY29k
ZU9mZnNldCwgdGFyZ2V0KTsKIH0KIAotSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBGdW5jdGlv
bkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQordHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQo
dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiB7
CiAgICAgQVNTRVJUKG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMoYnl0ZWNvZGVPZmZz
ZXQpKTsKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZz
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9u
Q29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCA3ZTRhNDBiZjQ1MDg2ZGY3NzhhMzMzMTA5
NTIxYWJhN2Y3M2ZjNzllLi44NTU4YjBlNzZjYmU5OTQ4MTQzNTczYTBjMWQzMDU5MTczMGJiODM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2Rl
QmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtODEsNyArODEsOCBAQCBwdWJsaWM6CiAgICAg
dWludDMyX3QgbnVtQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1Bcmd1bWVudHM7IH0K
ICAgICBjb25zdCBWZWN0b3I8VHlwZT4mIGNvbnN0YW50VHlwZXMoKSBjb25zdCB7IHJldHVybiBt
X2NvbnN0YW50VHlwZXM7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjb25zdGFudHMo
KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50czsgfQotICAgIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KKyAg
ICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjb25zdGFudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fY29uc3RhbnRzOyB9CisgICAgY29uc3QgV2FzbUluc3RydWN0aW9uU3RyZWFtJiBpbnN0
cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KIAogICAgIHZvaWQg
c2V0TnVtVmFycyh1bnNpZ25lZCBudW1WYXJzKSB7IG1fbnVtVmFycyA9IG51bVZhcnM7IH0KICAg
ICB2b2lkIHNldE51bUNhbGxlZUxvY2Fscyh1bnNpZ25lZCBudW1DYWxsZWVMb2NhbHMpIHsgbV9u
dW1DYWxsZWVMb2NhbHMgPSBudW1DYWxsZWVMb2NhbHM7IH0KQEAgLTkzLDI3ICs5NCwyNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2NvbnN0YW50VHlwZXNbcmVnLnRvQ29uc3RhbnRJbmRl
eCgpXTsKICAgICB9CiAKLSAgICB2b2lkIHNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8
SW5zdHJ1Y3Rpb25TdHJlYW0+KTsKLSAgICB2b2lkIGFkZEp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBqdW1wVGFyZ2V0KSB7IG1fanVtcFRhcmdldHMuYXBwZW5kKGp1bXBUYXJn
ZXQpOyB9Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBudW1iZXJPZkp1bXBUYXJnZXRz
KCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5zaXplKCk7IH0KLSAgICBJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGxhc3RKdW1wVGFyZ2V0KCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7
IH0KKyAgICB2b2lkIHNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3RydWN0
aW9uU3RyZWFtPik7CisgICAgdm9pZCBhZGRKdW1wVGFyZ2V0KHR5cGVuYW1lIFdhc21JbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGp1bXBUYXJnZXQpIHsgbV9qdW1wVGFyZ2V0cy5hcHBlbmQoanVt
cFRhcmdldCk7IH0KKyAgICB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBu
dW1iZXJPZkp1bXBUYXJnZXRzKCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5zaXplKCk7IH0KKyAg
ICB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBsYXN0SnVtcFRhcmdldCgp
IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAKLSAgICB2b2lkIGFkZE91dE9mTGlu
ZUp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7Ci0gICAg
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQpOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5l
SnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKKyAg
ICB2b2lkIGFkZE91dE9mTGluZUp1bXBUYXJnZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQsIGludCB0YXJnZXQpOworICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQpOworICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGluc3RydWN0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1
bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgIH0KIAotICAgIGlubGluZSBJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBy
ZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCBieXRlY29kZU9mZnNldChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJl
c3MpCiAgICAgewogICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1faW5z
dHJ1Y3Rpb25zLT5hdCgwKS5wdHIoKTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25z
RW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikgKyBtX2luc3RydWN0aW9ucy0+c2l6ZSgp
KTsKKyAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5z
dHJ1Y3Rpb25zQmVnaW4pICsgbV9pbnN0cnVjdGlvbnMtPnNpemUoKSk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zQmVnaW4gJiYgcmV0dXJuQWRk
cmVzcyA8IGluc3RydWN0aW9uc0VuZCk7CiAgICAgICAgIHJldHVybiByZXR1cm5BZGRyZXNzIC0g
aW5zdHJ1Y3Rpb25zQmVnaW47CiAgICAgfQogCi0gICAgSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCBMTEludFRpZXJVcENvdW50ZXI6Ok9TUkVudHJ5RGF0YT4mIHRpZXJVcENvdW50
ZXIoKSB7IHJldHVybiBtX3RpZXJVcENvdW50ZXI7IH0KKyAgICBIYXNoTWFwPHR5cGVuYW1lIFdh
c21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBMTEludFRpZXJVcENvdW50ZXI6Ok9TUkVudHJ5
RGF0YT4mIHRpZXJVcENvdW50ZXIoKSB7IHJldHVybiBtX3RpZXJVcENvdW50ZXI7IH0KIAogICAg
IHVuc2lnbmVkIGFkZFNpZ25hdHVyZShjb25zdCBTaWduYXR1cmUmKTsKIApAQCAtMTI1LDcgKzEy
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgVW5saW5r
ZWRIYW5kbGVySW5mbyYgaGFuZGxlcikgeyBtX2V4Y2VwdGlvbkhhbmRsZXJzLmFwcGVuZChoYW5k
bGVyKTsgfQogCiBwcml2YXRlOgotICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFz
aE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OworICAgIHVzaW5nIE91dE9mTGlu
ZUp1bXBUYXJnZXRzID0gSGFzaE1hcDx0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgaW50PjsKIAogICAgIHVpbnQzMl90IG1fZnVuY3Rpb25JbmRleDsKIApAQCAtMTM2LDEy
ICsxMzcsMTIgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX251bUFyZ3VtZW50cyB7IDAgfTsK
ICAgICBWZWN0b3I8VHlwZT4gbV9jb25zdGFudFR5cGVzOwogICAgIFZlY3Rvcjx1aW50NjRfdD4g
bV9jb25zdGFudHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBtX2lu
c3RydWN0aW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3RydWN0aW9uU3RyZWFtPiBt
X2luc3RydWN0aW9uczsKICAgICBjb25zdCB2b2lkKiBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIg
eyBudWxscHRyIH07Ci0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVt
cFRhcmdldHM7CisgICAgVmVjdG9yPHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0PiBtX2p1bXBUYXJnZXRzOwogICAgIFZlY3Rvcjxjb25zdCBTaWduYXR1cmUqPiBtX3NpZ25h
dHVyZXM7CiAgICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsK
LSAgICBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50VGllclVwQ291bnRl
cjo6T1NSRW50cnlEYXRhPiBtX3RpZXJVcENvdW50ZXI7CisgICAgSGFzaE1hcDx0eXBlbmFtZSBX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgTExJbnRUaWVyVXBDb3VudGVyOjpPU1JFbnRy
eURhdGE+IG1fdGllclVwQ291bnRlcjsKICAgICBWZWN0b3I8SnVtcFRhYmxlPiBtX2p1bXBUYWJs
ZXM7CiAgICAgVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdlbmVyYXRv
clRyYWl0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdlbmVyYXRvclRyYWl0
cy5oCmluZGV4IDZhODhiYjRkMGI4YTdhZmY4MWQ5ODA3MGRhNjI3YTUzOTY4NmVkMDEuLjcwODIz
YzgxNjkzNDc1NTUyOWMwOGE2NmM5Nzg2OGYyMjFiMmMwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRzLmgKQEAgLTM3LDYgKzM3LDcgQEAg
c3RydWN0IEdlbmVyYXRvclRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQgPSBXYXNtT3Bjb2Rl
SUQ7CiAgICAgdXNpbmcgT3BOb3AgPSBXYXNtTm9wOwogICAgIHVzaW5nIENvZGVCbG9jayA9IHN0
ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcj47CisgICAgdXNpbmcgSW5z
dHJ1Y3Rpb25UeXBlID0gV2FzbUluc3RydWN0aW9uOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bj
b2RlSUQgb3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9ucyA9IHdhc21fdW5yZWFjaGFibGU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJh
dG9yLmNwcAppbmRleCBiNDBlNzIxZjk3NTM0ZTEyNGE1OGQyMjRkNmRhNWEyM2RjYTcxNTRlLi5l
Mzk4YzZlNDA0ZTNiZTk3NDIxN2Y5OTcxOGM2OTFjMDJmOWY4YjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTQ3NCw3ICs0
NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluYWxpemVQcmV2aW91c0Jsb2NrRm9yQ2F0Y2go
Q29udHJvbFR5cGUmLCBTdGFjayYpOwogCiAgICAgc3RydWN0IFN3aXRjaEVudHJ5IHsKLSAgICAg
ICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQ7CisgICAgICAgIFdhc21JbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldDsKICAgICAgICAgaW50KiBqdW1wVGFyZ2V0OwogICAg
IH07CiAKQEAgLTUxMCw3ICs1MTAsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rp
b25Db2RlQmxvY2tHZW5lcmF0b3I+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZUJ5dAogfQogCiAK
LXVzaW5nIEJ1ZmZlciA9IEluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvbkJ1ZmZlcjsKK3Vz
aW5nIEJ1ZmZlciA9IHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6SW5zdHJ1Y3Rpb25C
dWZmZXI7CiBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QnVmZmVyPiogdGhyZWFkU3BlY2lmaWNCdWZm
ZXJQdHI7CiAKIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCdWZmZXI+JiB0aHJlYWRTcGVjaWZpY0J1
ZmZlcigpCkBAIC0xMjI4LDcgKzEyMjgsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRTd2l0
Y2goRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBjb25zdCBWZWN0b3I8Q29udHJvbFR5cAogICAg
IFdhc21Td2l0Y2g6OmVtaXQodGhpcywgY29uZGl0aW9uLCB0YWJsZUluZGV4KTsKIAogICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCA9
IG1fbGFzdEluc3RydWN0aW9uLm9mZnNldCgpOworICAgIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IG9mZnNldCA9IG1fbGFzdEluc3RydWN0aW9uLm9mZnNldCgpOwogCiAgICAgYXV0byBh
ZGRUYXJnZXQgPSBbJl0oQ29udHJvbFR5cGUmIHRhcmdldCkgewogICAgICAgICBSZWZQdHI8TGFi
ZWw+IHRhcmdldExhYmVsID0gdGFyZ2V0LnRhcmdldExhYmVsRm9yQnJhbmNoKCk7CkBAIC0xODUw
LDEzICsxODUwLDEzIEBAIHZvaWQgR2VuZXJpY0xhYmVsPFdhc206OkdlbmVyYXRvclRyYWl0cz46
OnNldExvY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxXYXNtCiAKICNkZWZpbmUgQ0FTRShf
X29wKSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogIFwKLSAgICAgICAgaW5zdHJ1Y3Rpb24t
PmNhc3Q8X19vcCwgV2FzbU9wY29kZVRyYWl0cz4oKS0+c2V0VGFyZ2V0TGFiZWwoQm91bmRMYWJl
bCh0YXJnZXQpLCBbJl0oKSB7IFwKKyAgICAgICAgaW5zdHJ1Y3Rpb24tPmNhc3Q8X19vcD4oKS0+
c2V0VGFyZ2V0TGFiZWwoQm91bmRMYWJlbCh0YXJnZXQpLCBbJl0oKSB7IFwKICAgICAgICAgICAg
IGdlbmVyYXRvci5tX2NvZGVCbG9jay0+YWRkT3V0T2ZMaW5lSnVtcFRhcmdldChpbnN0cnVjdGlv
bi5vZmZzZXQoKSwgdGFyZ2V0KTsgXAogICAgICAgICAgICAgcmV0dXJuIEJvdW5kTGFiZWwoKTsg
XAogICAgICAgICB9KTsgXAogICAgICAgICBicmVhazsKIAotICAgICAgICBzd2l0Y2ggKGluc3Ry
dWN0aW9uLT5vcGNvZGVJRDxXYXNtT3Bjb2RlVHJhaXRzPigpKSB7CisgICAgICAgIHN3aXRjaCAo
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKICAgICAgICAgQ0FTRShXYXNtSm1wKQogICAgICAg
ICBDQVNFKFdhc21KdHJ1ZSkKICAgICAgICAgQ0FTRShXYXNtSmZhbHNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50VGllclVwQ291bnRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmNwcAppbmRl
eCAwNzVjOWFhYmNmOGMxYjk2ZjljZTM4MDljY2IzNjM3M2MwMjViMGRiLi42YWM5ZDVkN2ViYjJi
YmQ4Y2U3Y2NkZDFkYjQ1YzM5Zjg2NTk3ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmNwcApAQCAtMzAsMTMgKzMwLDEz
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLXZvaWQgTExJbnRUaWVy
VXBDb3VudGVyOjphZGRPU1JFbnRyeURhdGFGb3JMb29wKEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgb2Zmc2V0LCBPU1JFbnRyeURhdGEmJiBkYXRhKQordm9pZCBMTEludFRpZXJVcENvdW50ZXI6
OmFkZE9TUkVudHJ5RGF0YUZvckxvb3AodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgb2Zmc2V0LCBPU1JFbnRyeURhdGEmJiBkYXRhKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9vc3JFbnRyeURhdGEuYWRkKG9mZnNldCwgV1RGTW92ZShkYXRhKSk7CiAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotYXV0byBMTElu
dFRpZXJVcENvdW50ZXI6Om9zckVudHJ5RGF0YUZvckxvb3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCBvZmZzZXQpIGNvbnN0IC0+IGNvbnN0IE9TUkVudHJ5RGF0YSYKK2F1dG8gTExJbnRUaWVy
VXBDb3VudGVyOjpvc3JFbnRyeURhdGFGb3JMb29wKHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0IG9mZnNldCkgY29uc3QgLT4gY29uc3QgT1NSRW50cnlEYXRhJgogewogICAg
IGF1dG8gZW50cnkgPSBtX29zckVudHJ5RGF0YS5maW5kKG9mZnNldCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoZW50cnkgIT0gbV9vc3JFbnRyeURhdGEuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50VGllclVwQ291bnRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50VGllclVwQ291bnRlci5oCmluZGV4IDE0MGE4MmM4
ZTRhMzE4NzkzY2NmYjgzMjFjMDI1MDE5NmM4MzRlZmIuLjAyOGFiNzgxNGM4MTAyNGNiNDYyYTU0
MjYyMWRmOGYzNzg1MmY0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MTEludFRpZXJVcENvdW50ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
ICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyPiB2YWx1ZXM7CiAgICAgfTsKIAotICAgIExMSW50
VGllclVwQ291bnRlcihIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5
RGF0YT4mJiBvc3JFbnRyeURhdGEpCisgICAgTExJbnRUaWVyVXBDb3VudGVyKEhhc2hNYXA8dHlw
ZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YT4mJiBvc3JF
bnRyeURhdGEpCiAgICAgICAgIDogbV9vc3JFbnRyeURhdGEoV1RGTW92ZShvc3JFbnRyeURhdGEp
KQogICAgIHsKICAgICAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwpAQCAtNzYsMTQgKzc2LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNldE5ld1RocmVzaG9sZChPcHRpb25zOjp0aHJlc2hv
bGRGb3JPTUdPcHRpbWl6ZVNvb24oKSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRPU1JFbnRyeURh
dGFGb3JMb29wKEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YSYmKTsKKyAg
ICB2b2lkIGFkZE9TUkVudHJ5RGF0YUZvckxvb3AodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YSYmKTsKIAotICAgIGNvbnN0IE9TUkVudHJ5RGF0YSYg
b3NyRW50cnlEYXRhRm9yTG9vcChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KSBjb25zdDsKKyAg
ICBjb25zdCBPU1JFbnRyeURhdGEmIG9zckVudHJ5RGF0YUZvckxvb3AodHlwZW5hbWUgV2FzbUlu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpIGNvbnN0OwogCiAgICAgTG9jayBtX2xvY2s7CiAgICAg
Q29tcGlsYXRpb25TdGF0dXMgbV9jb21waWxhdGlvblN0YXR1cyB7IENvbXBpbGF0aW9uU3RhdHVz
OjpOb3RDb21waWxlZCB9OwogICAgIENvbXBpbGF0aW9uU3RhdHVzIG1fbG9vcENvbXBpbGF0aW9u
U3RhdHVzIHsgQ29tcGlsYXRpb25TdGF0dXM6Ok5vdENvbXBpbGVkIH07Ci0gICAgSGFzaE1hcDxJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBPU1JFbnRyeURhdGE+IG1fb3NyRW50cnlEYXRhOwor
ICAgIEhhc2hNYXA8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVu
dHJ5RGF0YT4gbV9vc3JFbnRyeURhdGE7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2Fz
bQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAppbmRleCBj
ZjI3ZmVhMzI5MGQzMDgwYzAyZjQyYmE1OTZlYzI4YjJmODk1NGRiLi4yYTg2N2Q2YzczZmRlZjNl
OTE4NzA2YTNmMDcyYzBkNTgyOTkzY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2xvd1BhdGhzLmNwcApAQCAtMjg5LDEzICsyODksMTMgQEAgV0FTTV9TTE9XX1BBVEhf
REVDTCh0cmFjZSkKICAgICBpZiAoIU9wdGlvbnM6OnRyYWNlTExJbnRFeGVjdXRpb24oKSkKICAg
ICAgICAgV0FTTV9FTkRfSU1QTCgpOwogCi0gICAgV2FzbU9wY29kZUlEIG9wY29kZUlEID0gcGMt
Pm9wY29kZUlEPFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgV2FzbU9wY29kZUlEIG9wY29kZUlE
ID0gcGMtPm9wY29kZUlEKCk7CiAgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogZXhlY3V0aW5n
IGJjIyV6dSwgJXMsIHBjID0gJXBcbiIsCiAgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAg
ICAgICAgQ0FMTEVFKCksCiAgICAgICAgIGNhbGxGcmFtZSwKICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KENBTExFRSgpLT5ieXRlY29kZU9mZnNldChwYykpLAotICAgICAgICBwYy0+bmFt
ZTxXYXNtT3Bjb2RlVHJhaXRzPigpLAorICAgICAgICBwYy0+bmFtZSgpLAogICAgICAgICBwYyk7
CiAgICAgaWYgKG9wY29kZUlEID09IHdhc21fZW50ZXIpIHsKICAgICAgICAgZGF0YUxvZ0YoIkZy
YW1lIHdpbGwgZXZlbnR1YWxseSByZXR1cm4gdG8gJXBcbiIsIGNhbGxGcmFtZS0+cmV0dXJuUEMo
KS52YWx1ZSgpKTsKQEAgLTMxOCwxMyArMzE4LDEzIEBAIFdBU01fU0xPV19QQVRIX0RFQ0wob3V0
X29mX2xpbmVfanVtcF90YXJnZXQpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wocmVmX2Z1bmMpCiB7
Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmVmRnVuYywgV2FzbU9wY29kZVRy
YWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZWZGdW5jPigpOwog
ICAgIFdBU01fUkVUVVJOKFdhc206Om9wZXJhdGlvbldhc21SZWZGdW5jKGluc3RhbmNlLCBpbnN0
cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJs
ZV9nZXQpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVHZXQsIFdh
c21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFi
bGVHZXQ+KCk7CiAgICAgaW50MzJfdCBpbmRleCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9pbmRleCku
dW5ib3hlZEludDMyKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gV2FzbTo6b3BlcmF0
aW9uR2V0V2FzbVRhYmxlRWxlbWVudChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4
LCBpbmRleCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC0zMzQsNyArMzM0LDcgQEAgV0FTTV9TTE9X
X1BBVEhfREVDTCh0YWJsZV9nZXQpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfc2V0KQog
ewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlU2V0LCBXYXNtT3Bjb2Rl
VHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlU2V0Pigp
OwogICAgIHVpbnQzMl90IGluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2luZGV4KS51bmJveGVk
VUludDMyKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUgdmFsdWUgPSBSRUFEKGluc3RydWN0aW9uLm1f
dmFsdWUpLmVuY29kZWRKU1ZhbHVlKCk7CiAgICAgaWYgKCFXYXNtOjpvcGVyYXRpb25TZXRXYXNt
VGFibGVFbGVtZW50KGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluZGV4LCB2
YWx1ZSkpCkBAIC0zNDQsNyArMzQ0LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9zZXQp
CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfaW5pdCkKIHsKLSAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21UYWJsZUluaXQsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0
byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVJbml0PigpOwogICAgIHVpbnQzMl90IGRz
dE9mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9kc3RPZmZzZXQpLnVuYm94ZWRVSW50MzIoKTsK
ICAgICB1aW50MzJfdCBzcmNPZmZzZXQgPSBSRUFEKGluc3RydWN0aW9uLm1fc3JjT2Zmc2V0KS51
bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3QgbGVuZ3RoID0gUkVBRChpbnN0cnVjdGlvbi5t
X2xlbmd0aCkudW5ib3hlZFVJbnQzMigpOwpAQCAtMzU3LDIwICszNTcsMjAgQEAgV0FTTV9TTE9X
X1BBVEhfREVDTChlbGVtX2Ryb3ApCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAK
LSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21FbGVtRHJvcCwgV2FzbU9wY29kZVRy
YWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21FbGVtRHJvcD4oKTsK
ICAgICBXYXNtOjpvcGVyYXRpb25XYXNtRWxlbURyb3AoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1f
ZWxlbWVudEluZGV4KTsKICAgICBXQVNNX0VORCgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNM
KHRhYmxlX3NpemUpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVT
aXplLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbVRhYmxlU2l6ZT4oKTsKICAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25HZXRXYXNt
VGFibGVTaXplKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgpKTsKIH0KIAogV0FT
TV9TTE9XX1BBVEhfREVDTCh0YWJsZV9maWxsKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBw
Yy0+YXM8V2FzbVRhYmxlRmlsbCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUZpbGw+KCk7CiAgICAgdWludDMyX3Qgb2Zmc2V0ID0g
UkVBRChpbnN0cnVjdGlvbi5tX29mZnNldCkudW5ib3hlZFVJbnQzMigpOwogICAgIEVuY29kZWRK
U1ZhbHVlIGZpbGwgPSBSRUFEKGluc3RydWN0aW9uLm1fZmlsbCkuZW5jb2RlZEpTVmFsdWUoKTsK
ICAgICB1aW50MzJfdCBzaXplID0gUkVBRChpbnN0cnVjdGlvbi5tX3NpemUpLnVuYm94ZWRVSW50
MzIoKTsKQEAgLTM4MSw3ICszODEsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2ZpbGwp
CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfY29weSkKIHsKLSAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21UYWJsZUNvcHksIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0
byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVDb3B5PigpOwogICAgIGludDMyX3QgZHN0
T2Zmc2V0ID0gUkVBRChpbnN0cnVjdGlvbi5tX2RzdE9mZnNldCkudW5ib3hlZEludDMyKCk7CiAg
ICAgaW50MzJfdCBzcmNPZmZzZXQgPSBSRUFEKGluc3RydWN0aW9uLm1fc3JjT2Zmc2V0KS51bmJv
eGVkSW50MzIoKTsKICAgICBpbnQzMl90IGxlbmd0aCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9sZW5n
dGgpLnVuYm94ZWRJbnQzMigpOwpAQCAtMzkyLDcgKzM5Miw3IEBAIFdBU01fU0xPV19QQVRIX0RF
Q0wodGFibGVfY29weSkKIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9ncm93KQogewotICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlR3JvdywgV2FzbU9wY29kZVRyYWl0
cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUdyb3c+KCk7CiAg
ICAgRW5jb2RlZEpTVmFsdWUgZmlsbCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9maWxsKS5lbmNvZGVk
SlNWYWx1ZSgpOwogICAgIHVpbnQzMl90IHNpemUgPSBSRUFEKGluc3RydWN0aW9uLm1fc2l6ZSku
dW5ib3hlZFVJbnQzMigpOwogICAgIFdBU01fUkVUVVJOKFdhc206Om9wZXJhdGlvbldhc21UYWJs
ZUdyb3coaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwgZmlsbCwgc2l6ZSkpOwpA
QCAtNDAwLDE0ICs0MDAsMTQgQEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9ncm93KQogCiBX
QVNNX1NMT1dfUEFUSF9ERUNMKGdyb3dfbWVtb3J5KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbUdyb3dNZW1vcnksIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBp
bnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtR3Jvd01lbW9yeT4oKTsKICAgICBpbnQzMl90IGRlbHRh
ID0gUkVBRChpbnN0cnVjdGlvbi5tX2RlbHRhKS51bmJveGVkSW50MzIoKTsKICAgICBXQVNNX1JF
VFVSTihXYXNtOjpvcGVyYXRpb25Hcm93TWVtb3J5KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGRlbHRh
KSk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2ZpbGwpCiB7Ci0gICAgYXV0byBp
bnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5RmlsbCwgV2FzbU9wY29kZVRyYWl0cz4oKTsK
KyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlGaWxsPigpOwogICAgIHVp
bnQzMl90IGRzdEFkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fZHN0QWRkcmVzcykudW5ib3hl
ZFVJbnQzMigpOwogICAgIHVpbnQzMl90IHRhcmdldFZhbHVlID0gUkVBRChpbnN0cnVjdGlvbi5t
X3RhcmdldFZhbHVlKS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3QgY291bnQgPSBSRUFE
KGluc3RydWN0aW9uLm1fY291bnQpLnVuYm94ZWRVSW50MzIoKTsKQEAgLTQxOCw3ICs0MTgsNyBA
QCBXQVNNX1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9maWxsKQogCiBXQVNNX1NMT1dfUEFUSF9ERUNM
KG1lbW9yeV9jb3B5KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9y
eUNvcHksIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtTWVtb3J5Q29weT4oKTsKICAgICB1aW50MzJfdCBkc3RBZGRyZXNzID0gUkVBRChpbnN0
cnVjdGlvbi5tX2RzdEFkZHJlc3MpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBzcmNB
ZGRyZXNzID0gUkVBRChpbnN0cnVjdGlvbi5tX3NyY0FkZHJlc3MpLnVuYm94ZWRVSW50MzIoKTsK
ICAgICB1aW50MzJfdCBjb3VudCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9jb3VudCkudW5ib3hlZFVJ
bnQzMigpOwpAQCAtNDI5LDcgKzQyOSw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2Nv
cHkpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2luaXQpCiB7Ci0gICAgYXV0byBpbnN0
cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5SW5pdCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAg
ICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlJbml0PigpOwogICAgIHVpbnQz
Ml90IGRzdEFkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fZHN0QWRkcmVzcykudW5ib3hlZFVJ
bnQzMigpOwogICAgIHVpbnQzMl90IHNyY0FkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fc3Jj
QWRkcmVzcykudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90IGxlbmd0aCA9IFJFQUQoaW5z
dHJ1Y3Rpb24ubV9sZW5ndGgpLnVuYm94ZWRVSW50MzIoKTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBX
QVNNX1NMT1dfUEFUSF9ERUNMKGRhdGFfZHJvcCkKIHsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbURhdGFEcm9wLCBXYXNt
T3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbURhdGFE
cm9wPigpOwogICAgIFdhc206Om9wZXJhdGlvbldhc21EYXRhRHJvcChpbnN0YW5jZSwgaW5zdHJ1
Y3Rpb24ubV9kYXRhU2VnbWVudEluZGV4KTsKICAgICBXQVNNX0VORCgpOwogfQpAQCAtNDc0LDcg
KzQ3NCw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbCkKIHsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGwsIFdh
c21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2Fs
bD4oKTsKICAgICByZXR1cm4gZG9XYXNtQ2FsbChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5j
dGlvbkluZGV4KTsKIH0KIApAQCAtNDgyLDcgKzQ4Miw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wo
Y2FsbF9ub190bHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAKLSAgICBhdXRv
IGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCk7
CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbE5vVGxzPigpOwogICAgIHJl
dHVybiBkb1dhc21DYWxsKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOwog
fQogCkBAIC01MTEsMTQgKzUxMSwxNCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRvV2Fz
bUNhbGxJbmRpcmVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuYwogCiBXQVNN
X1NMT1dfUEFUSF9ERUNMKGNhbGxfaW5kaXJlY3QpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtQ2FsbEluZGlyZWN0LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxJbmRpcmVjdD4oKTsKICAgICB1bnNpZ25lZCBm
dW5jdGlvbkluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpLnVuYm94ZWRJ
bnQzMigpOwogICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5j
ZSwgZnVuY3Rpb25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5t
X3NpZ25hdHVyZUluZGV4KTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX2luZGlyZWN0
X25vX3RscykKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsSW5kaXJl
Y3ROb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21DYWxsSW5kaXJlY3ROb1Rscz4oKTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4
ID0gUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpLnVuYm94ZWRJbnQzMigpOwogICAg
IHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rpb25J
bmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUlu
ZGV4KTsKIH0KQEAgLTU0OCwzNSArNTQ4LDM1IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
ZG9XYXNtQ2FsbFJlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2UqIGNhCiAK
IFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9yZWYpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtQ2FsbFJlZiwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21DYWxsUmVmPigpOwogICAgIEpTVmFsdWUgcmVmZXJlbmNlID0g
SlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5jZSkuZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0
YW5jZSwgcmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKIH0KIAogV0FT
TV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZl9ub190bHMpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtQ2FsbFJlZk5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWZOb1Rscz4oKTsKICAgICBKU1ZhbHVl
IHJlZmVyZW5jZSA9IEpTVmFsdWU6OmRlY29kZShSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25S
ZWZlcmVuY2UpLmVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBkb1dhc21DYWxsUmVmKGNh
bGxGcmFtZSwgaW5zdGFuY2UsIHJlZmVyZW5jZSwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRl
eCk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0woc2V0X2dsb2JhbF9yZWYpCiB7Ci0gICAgYXV0
byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtU2V0R2xvYmFsUmVmLCBXYXNtT3Bjb2RlVHJhaXRz
PigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVNldEdsb2JhbFJlZj4oKTsK
ICAgICBpbnN0YW5jZS0+c2V0R2xvYmFsKGluc3RydWN0aW9uLm1fZ2xvYmFsSW5kZXgsIFJFQUQo
aW5zdHJ1Y3Rpb24ubV92YWx1ZSkuanNWYWx1ZSgpKTsKICAgICBXQVNNX0VORF9JTVBMKCk7CiB9
CiAKIFdBU01fU0xPV19QQVRIX0RFQ0woc2V0X2dsb2JhbF9yZWZfcG9ydGFibGVfYmluZGluZykK
IHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWZQb3J0YWJs
ZUJpbmRpbmcsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBj
LT5hczxXYXNtU2V0R2xvYmFsUmVmUG9ydGFibGVCaW5kaW5nPigpOwogICAgIGluc3RhbmNlLT5z
ZXRHbG9iYWwoaW5zdHJ1Y3Rpb24ubV9nbG9iYWxJbmRleCwgUkVBRChpbnN0cnVjdGlvbi5tX3Zh
bHVlKS5qc1ZhbHVlKCkpOwogICAgIFdBU01fRU5EX0lNUEwoKTsKIH0KIAogV0FTTV9TTE9XX1BB
VEhfREVDTChtZW1vcnlfYXRvbWljX3dhaXQzMikKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0g
cGMtPmFzPFdhc21NZW1vcnlBdG9taWNXYWl0MzIsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5QXRvbWljV2FpdDMyPigpOwogICAg
IHVuc2lnbmVkIGJhc2UgPSBSRUFEKGluc3RydWN0aW9uLm1fcG9pbnRlcikudW5ib3hlZEludDMy
KCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gaW5zdHJ1Y3Rpb24ubV9vZmZzZXQ7CiAgICAgdWlu
dDMyX3QgdmFsdWUgPSBSRUFEKGluc3RydWN0aW9uLm1fdmFsdWUpLnVuYm94ZWRJbnQzMigpOwpA
QCAtNTg5LDcgKzU4OSw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2F0b21pY193YWl0
MzIpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2F0b21pY193YWl0NjQpCiB7Ci0gICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5QXRvbWljV2FpdDY0LCBXYXNtT3Bj
b2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUF0
b21pY1dhaXQ2ND4oKTsKICAgICB1bnNpZ25lZCBiYXNlID0gUkVBRChpbnN0cnVjdGlvbi5tX3Bv
aW50ZXIpLnVuYm94ZWRJbnQzMigpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IGluc3RydWN0aW9u
Lm1fb2Zmc2V0OwogICAgIHVpbnQ2NF90IHZhbHVlID0gUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVl
KS51bmJveGVkSW50NjQoKTsKQEAgLTYwMiw3ICs2MDIsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNM
KG1lbW9yeV9hdG9taWNfd2FpdDY0KQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9hdG9t
aWNfbm90aWZ5KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUF0
b21pY05vdGlmeSwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0g
cGMtPmFzPFdhc21NZW1vcnlBdG9taWNOb3RpZnk+KCk7CiAgICAgdW5zaWduZWQgYmFzZSA9IFJF
QUQoaW5zdHJ1Y3Rpb24ubV9wb2ludGVyKS51bmJveGVkSW50MzIoKTsKICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSBpbnN0cnVjdGlvbi5tX29mZnNldDsKICAgICBpbnQzMl90IGNvdW50ID0gUkVBRChp
bnN0cnVjdGlvbi5tX2NvdW50KS51bmJveGVkSW50MzIoKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBX
QVNNX1NMT1dfUEFUSF9ERUNMKHRocm93KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRocm93LCBXYXNtT3Bjb2RlVHJhaXRzPigp
OworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRocm93PigpOwogICAgIGNvbnN0
IFdhc206OlRhZyYgdGFnID0gaW5zdGFuY2UtPnRhZyhpbnN0cnVjdGlvbi5tX2V4Y2VwdGlvbklu
ZGV4KTsKIAogICAgIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiB2YWx1ZXModGFnLnBhcmFtZXRlckNv
dW50KCkpOwpAQCAtNjU1LDcgKzY1NSw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wocmV0aHJvdykK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFz
PFdhc21SZXRocm93LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbVJldGhyb3c+KCk7CiAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBSRUFEKGlu
c3RydWN0aW9uLm1fZXhjZXB0aW9uKS5qc1ZhbHVlKCk7CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBleGNlcHRpb24pOwogCkBAIC02OTksMTQgKzY5OSwxNCBA
QCBXQVNNX1NMT1dfUEFUSF9ERUNMKHJldHJpZXZlX2FuZF9jbGVhcl9leGNlcHRpb24pCiAgICAg
ICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihpbnN0cnVjdGlvbi5tX2V4Y2VwdGlvbikgPSB0aHJv
d25WYWx1ZTsKICAgICB9OwogCi0gICAgaWYgKHBjLT5pczxXYXNtQ2F0Y2gsIFdhc21PcGNvZGVU
cmFpdHM+KCkpCi0gICAgICAgIGhhbmRsZUNhdGNoKHBjLT5hczxXYXNtQ2F0Y2gsIFdhc21PcGNv
ZGVUcmFpdHM+KCkpOwotICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hBbGwsIFdhc21PcGNv
ZGVUcmFpdHM+KCkpCi0gICAgICAgIGhhbmRsZUNhdGNoQWxsKHBjLT5hczxXYXNtQ2F0Y2hBbGws
IFdhc21PcGNvZGVUcmFpdHM+KCkpOwotICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hOb1Rs
cywgV2FzbU9wY29kZVRyYWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21D
YXRjaE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpKTsKLSAgICBlbHNlIGlmIChwYy0+aXM8V2Fz
bUNhdGNoQWxsTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCkpCi0gICAgICAgIGhhbmRsZUNhdGNo
QWxsKHBjLT5hczxXYXNtQ2F0Y2hBbGxOb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKSk7CisgICAg
aWYgKHBjLT5pczxXYXNtQ2F0Y2g+KCkpCisgICAgICAgIGhhbmRsZUNhdGNoKHBjLT5hczxXYXNt
Q2F0Y2g+KCkpOworICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hBbGw+KCkpCisgICAgICAg
IGhhbmRsZUNhdGNoQWxsKHBjLT5hczxXYXNtQ2F0Y2hBbGw+KCkpOworICAgIGVsc2UgaWYgKHBj
LT5pczxXYXNtQ2F0Y2hOb1Rscz4oKSkKKyAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21D
YXRjaE5vVGxzPigpKTsKKyAgICBlbHNlIGlmIChwYy0+aXM8V2FzbUNhdGNoQWxsTm9UbHM+KCkp
CisgICAgICAgIGhhbmRsZUNhdGNoQWxsKHBjLT5hczxXYXNtQ2F0Y2hBbGxOb1Rscz4oKSk7CiAg
ICAgZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC03MTcs
MTkgKzcxNywxOSBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHJldHJpZXZlX2FuZF9jbGVhcl9leGNl
cHRpb24pCiAgICAgV0FTTV9SRVRVUk5fVFdPKHBjLCBwYXlsb2FkKTsKIH0KIAotZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIFdhc206Okluc3RhbmNlKiBp
bnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSBleGNlcHRpb25UeXBlKQorZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSog
aW5zdGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUgZXhjZXB0aW9uVHlwZSkKIHsKICAgICBVTlVT
RURfUEFSQU0ocGMpOwogICAgIFdBU01fUkVUVVJOX1RXTyhvcGVyYXRpb25XYXNtVG9KU0V4Y2Vw
dGlvbihjYWxsRnJhbWUsIGV4Y2VwdGlvblR5cGUsIGluc3RhbmNlKSwgbnVsbHB0cik7CiB9CiAK
LWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50KGNv
bnN0IEluc3RydWN0aW9uKiBwYywgdWludDMyX3QgeCkKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMs
IHVpbnQzMl90IHgpCiB7CiAgICAgdm9pZCogcmVzdWx0ID0gYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50NjRfdD4oX19idWlsdGluX3BvcGNvdW50KHgpKSk7CiAgICAgV0FTTV9S
RVRVUk5fVFdPKHBjLCByZXN1bHQpOwogfQogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3VudGxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgdWludDY0
X3QgeCkKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNv
dW50bGwoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWludDY0X3QgeCkKIHsKICAgICB2b2lk
KiByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihfX2J1
aWx0aW5fcG9wY291bnRsbCh4KSkpOwogICAgIFdBU01fUkVUVVJOX1RXTyhwYywgcmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaAppbmRleCBiNjRjZTdj
ZGU0MWFhYTA2ODk3ZThmZmZlZDgyYThkMDY0MzJkZmQwLi40NjA5ZTM2YjAzOTI0ZDEwZWEwMjc0
NTYxMGYwZjJmZTRlODMxZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNs
b3dQYXRocy5oCkBAIC0zNCw5ICszNCwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENh
bGxGcmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKIAor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCYXNlSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgV2FzbU9w
Y29kZVRyYWl0czsKK3VzaW5nIFdhc21JbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxXYXNt
T3Bjb2RlVHJhaXRzPjsKKwogbmFtZXNwYWNlIFdhc20gewogY2xhc3MgSW5zdGFuY2U7CiB9CkBA
IC00NCw3ICs0Nyw3IEBAIGNsYXNzIEluc3RhbmNlOwogbmFtZXNwYWNlIExMSW50IHsKIAogI2Rl
ZmluZSBXQVNNX1NMT1dfUEFUSF9ERUNMKG5hbWUpIFwKLSAgICBleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV8jI25hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlKQorICAgIGV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtXyMjbmFtZShDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgV2FzbTo6SW5zdGFuY2UqIGlu
c3RhbmNlKQogCiAjZGVmaW5lIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKG5hbWUpIFwKICAg
ICBXQVNNX1NMT1dfUEFUSF9ERUNMKG5hbWUpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVS
TkFMCkBAIC04Nyw5ICs5MCw5IEBAIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHRocm93KTsK
IFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHJldGhyb3cpOwogV0FTTV9TTE9XX1BBVEhfSElE
REVOX0RFQ0wocmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbik7CiAKLWV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3Rocm93X2V4Y2VwdGlvbihDYWxsRnJhbWUq
LCBjb25zdCBJbnN0cnVjdGlvbiosIFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6RXhj
ZXB0aW9uVHlwZSkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7Ci1leHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3VudChjb25zdCBJbnN0cnVj
dGlvbiogcGMsIHVpbnQzMl90KSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKLWV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5U
RVJOQUw7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90aHJv
d19leGNlcHRpb24oQ2FsbEZyYW1lKiwgY29uc3QgV2FzbUluc3RydWN0aW9uKiwgV2FzbTo6SW5z
dGFuY2UqIGluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlKSBSRUZFUkVOQ0VEX0ZST01fQVNN
IFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93
YXNtX3BvcGNvdW50KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMsIHVpbnQzMl90KSBSRUZFUkVO
Q0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IHNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWlu
dDY0X3QpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6TExJbnQKIAo=
</data>
<flag name="commit-queue"
          id="480963"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453550</attachid>
            <date>2022-03-01 16:51:44 -0800</date>
            <delta_ts>2022-03-01 17:15:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237347-20220301165143.patch</filename>
            <type>text/plain</type>
            <size>374883</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDBlZmU2YjYzNDkzM2Q3NzkxM2Y3MzU5MmNmNWY5MjJiY2NhYWJkLi44MDYzY2ZmNTdhMzE3ODRm
YjAyM2M3MDBiOGJhZDhjNzMwNzM3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NjIgQEAKKzIwMjItMDMtMDEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE9wY29kZVRyYWl0cyB0byBzdXBwb3J0IHRo
ZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgMi1ieXRlIFdBU00gb3Bjb2RlIGlkcyBpbiBieXRlY29k
ZSBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzczNDcKKworICAgICAgICBUaGUgbnVtYmVyIG9mIFdBU00gb3Bjb2RlcyB3aWxsIGluY3Jl
YXNlIGJleW9uZCAyNTUgd2hlbiBXQVNNIFNJTUQgaXMgaW1wbGVtZW50ZWQsIGFuZCBzbyB0aGlz
IHBhdGNoCisgICAgICAgIGNoYW5nZXMgT3Bjb2RlVHJhaXRzIHRvIGFsbG93IGZvciB0aGUgcG9z
c2liaWxpdHkgb2YgaGF2aW5nIHR3by1ieXRlIFdBU00gb3Bjb2RlcyB3aXRob3V0IHJlZ3Jlc3Np
bmcKKyAgICAgICAgSlMuIFdlIGhhdmUgdG8gdGhyZWFkIHRoZXNlIE9wY29kZVRyYWl0cyBldmVy
eXdoZXJlIHRoYXQgdGhleSBhcmUgdXNlZCBzbyB0aGF0IGNvZGUgY2FuIHJlYWQgdGhlCisgICAg
ICAgIGNvcnJlY3QgdmFsdWUgd2hlbiBkZWNvZGluZyBhbiBpbnN0cnVjdGlvbiBzdHJlYW0uIFRo
aXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIHRoZSBzaXplIG9mIFdBU00gb3Bjb2RlcworICAgICAg
ICB5ZXQsIGFsdGhvdWdoIEkgaGF2ZSB0ZXN0ZWQgdGhhdCB0aGUgdGVzdCBzdWl0ZSBzdGlsbCBw
YXNzZXMgaWYgd2UgZG8gaW5jcmVhc2UgdGhlIG9wY29kZSBzaXplLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OkJ5dGVjb2RlQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjphZGRMZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2lj
QmxvY2s8T3Bjb2RlVHJhaXRzPjo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjppc0p1bXBU
YXJnZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6
Y29tcHV0ZUltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVU
cmFpdHM+Ojpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRl
Y29kZUJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmFkZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25B
bmRPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVh
bVR5cGU+OjpkdW1wVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
Om91dE9mTGluZUp1bXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAg
IChKU0M6Oldhc206OkJ5dGVjb2RlRHVtcGVyOjpyZWdpc3Rlck5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCBjb25zdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppbnN0cnVjdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4p
OgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3Jb
XSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmR1bXApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBoKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRl
TG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEluc3Ry
dWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5M
aXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjpyZXBsYWNlQnl0ZWNvZGVXaXRoRnJhZ21lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjphZGp1c3RBYnNvbHV0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdEp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFu
ZENvbHVtbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdV
cGRhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5h
cnlBcml0aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0
aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlv
bkF0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAo
SlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om9wY29kZUlEIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
Ojppc1dpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aXNXaWRl
MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNNZXRhZGF0YSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om51bWJlck9mQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OnNpemVTaGlmdEFtb3VudCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURXaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURCeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0
cnVjdGlvbjo6aXMgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmNhc3QpOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OmNhc3QgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rp
b246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHA6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5CeXRlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaDoKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6Om9wZXJhdG9yLT4gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6QmFzZVJlZjo6cHRyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6OnVud3JhcCBjb25zdCk6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6cHRyKToK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6OnB0ciBjb25zdCk6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjp1bndyYXApOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6dW53cmFwIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Oml0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVy
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OnN3YXApOgorICAgICAgICAoSlND
OjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNPcGNvZGVTaGFwZSk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlU2l6ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6Cisg
ICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6anVtcFRh
cmdldEZvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6ZXh0cmFjdFN0b3JlZEp1bXBUYXJn
ZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjp1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0
c0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OmR1bXBMaW5lQ29sdW1uRW50cnkpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
bnN0cnVjdGlvbkF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6
b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6d2l0aFdyaXRlcik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjpyZWNvcmRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRlT3Bjb2RlMTYp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRl
T3Bjb2RlMzIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
Lmg6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMpOgorICAgICAgICAo
SlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVW
YXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJl
Y3Vyc2l2ZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0
eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJl
dHVyblBDKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
b21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToK
KyAgICAgICAgKiBnZW5lcmF0b3IvQXJndW1lbnQucmI6CisgICAgICAgICogZ2VuZXJhdG9yL0RT
TC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvT3Bjb2RlLnJiOgorICAgICAgICAqIGludGVycHJl
dGVyL0Fic3RyYWN0UEMuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmN1cnJlbnRWUEMgY29uc3QpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2F0Y2hJbmZvOjpDYXRjaEluZm8pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGht
ZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbGVzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pn
cmVhdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pncmVhdGVyZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5sZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2pubGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZ3JlYXRlcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3Bfamxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2psZXNz
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9qbmxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pubGVz
c2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2JlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JlbG93ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamJlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2piZWxvd2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Bvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcG93KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0
aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRub3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdHhvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Vyc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9z
dWIpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jYWxsX2V2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2FsbF92
YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1bWVQb2ludCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpJVDo6anVtcFRhcmdldCk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW92KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbXApOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfZW1wdHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191
bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X2NlbGxfd2l0aF90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3NldF9mdW5jdGlvbl9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2plcV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5l
cV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9z
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5zdHJpY3Rl
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmlj
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zd2l0Y2hfY2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5n
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRl
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVidWcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19yZWdleHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Fz
eW5jX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhf
c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1l
bnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2plcSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9zdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pz
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcSk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
dHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGly
ZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRl
X2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpMTEludDo6d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgor
ICAgICAgICAoSlNDOjpMTEludDo6d2FzbVJldHVyblRvVGhyb3cpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50
R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTEludDo6ZGlzcGF0
Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkNMb29w
UmVnaXN0ZXI6Om9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKToKKyAgICAgICAgKEpTQzo6
Q0xvb3A6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpDTG9vcFJlZ2lzdGVyOjpvcGVyYXRvciBj
b25zdCBJbnN0cnVjdGlvbiopOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZEluc3RydWN0aW9uU3RyZWFt
OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFz
dEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6Cisg
ICAgICAgIChKU0M6OlZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAo
SlNDOjpWTTo6cmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRDYWxsZWU6OkxMSW50Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRDYWxsZWU6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTElu
dENhbGxlZTo6b3V0T2ZMaW5lSnVtcFRhcmdldCk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVl
Lmg6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6c2V0SW5zdHJ1
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6
OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogd2FzbS9X
YXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVu
Y3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OmNvbnN0YW50UmVnaXN0ZXJzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6Omluc3RydWN0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjph
ZGRKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5l
cmF0b3I6Om51bWJlck9mSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlv
bkNvZGVCbG9ja0dlbmVyYXRvcjo6bGFzdEp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNt
OjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpieXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjp0aWVy
VXBDb3VudGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50R2VuZXJhdG9yOjphZGRTd2l0Y2gpOgorICAgICAgICAoSlNDOjpHZW5lcmljTGFiZWw8V2Fz
bTo6R2VuZXJhdG9yVHJhaXRzPjo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIHdhc20vV2FzbUxM
SW50VGllclVwQ291bnRlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50VGllclVwQ291
bnRlcjo6YWRkT1NSRW50cnlEYXRhRm9yTG9vcCk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50
VGllclVwQ291bnRlcjo6b3NyRW50cnlEYXRhRm9yTG9vcCBjb25zdCBjb25zdCk6CisgICAgICAg
ICogd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmg6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50VGllclVwQ291bnRlcjo6TExJbnRUaWVyVXBDb3VudGVyKToKKyAgICAgICAgKiB3YXNtL1dh
c21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6V0FTTV9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24p
OgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fcG9wY291bnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fcG9wY291bnRsbCk6CisgICAgICAgICogd2Fz
bS9XYXNtU2xvd1BhdGhzLmg6CisKIDIwMjItMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQXBwbGVXaW5dIFN0YXJ0IHVzaW5nIFZp
c3VhbCBTdHVkaW8gMjAyMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3NWE0N2JjZTVjMTA0ZWQ3OWQ2NzM5ZTk4
ZGVhNDhhZGI0ZWQxNjIxLi5iODIyYmI0ZWY4ZjE2ZjNhZDdhOWJmNGI3ZTk2Y2MxODdmNzcxMjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcApAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5F
X0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihCeXRlY29kZUJhc2ljQmxvY2spOwogCi1C
eXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayhjb25zdCBJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgYmxvY2tJbmRleCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK0J5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpC
eXRlY29kZUJhc2ljQmxvY2soY29uc3QgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpS
ZWYmIGluc3RydWN0aW9uLCB1bnNpZ25lZCBibG9ja0luZGV4KQogICAgIDogbV9sZWFkZXJPZmZz
ZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpCiAgICAgLCBtX3RvdGFsTGVuZ3RoKDApCiAgICAgLCBt
X2luZGV4KGJsb2NrSW5kZXgpCkBAIC00MiwyNiArNDMsMzAgQEAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjpCeXRlY29kZUJhc2ljQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1
Y3Rpb24KICAgICBhZGRMZW5ndGgoaW5zdHJ1Y3Rpb24tPnNpemUoKSk7CiB9CiAKLUJ5dGVjb2Rl
QmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jazo6U3BlY2lh
bEJsb2NrVHlwZSBibG9ja1R5cGUsIHVuc2lnbmVkIGJsb2NrSW5kZXgpCi0gICAgOiBtX2xlYWRl
ck9mZnNldChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6
IFVJTlRfTUFYKQotICAgICwgbV90b3RhbExlbmd0aChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6IFVJTlRfTUFYKQordGVtcGxhdGU8dHlwZW5hbWUgT3Bj
b2RlVHJhaXRzPgorQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkJ5dGVjb2RlQmFz
aWNCbG9jayh0eXBlbmFtZSBCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6U3BlY2lh
bEJsb2NrVHlwZSBibG9ja1R5cGUsIHVuc2lnbmVkIGJsb2NrSW5kZXgpCisgICAgOiBtX2xlYWRl
ck9mZnNldChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVu
dHJ5QmxvY2sgPyAwIDogVUlOVF9NQVgpCisgICAgLCBtX3RvdGFsTGVuZ3RoKGJsb2NrVHlwZSA9
PSBCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jayA/IDAgOiBVSU5U
X01BWCkKICAgICAsIG1faW5kZXgoYmxvY2tJbmRleCkKIHsKIH0KIAotdm9pZCBCeXRlY29kZUJh
c2ljQmxvY2s6OmFkZExlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OmFkZExlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkKIHsKICAgICBtX2RlbHRhLmFw
cGVuZChieXRlY29kZUxlbmd0aCk7CiAgICAgbV90b3RhbExlbmd0aCArPSBieXRlY29kZUxlbmd0
aDsKIH0KIAotdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkKK3RlbXBsYXRl
PHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz46OnNocmlua1RvRml0KCkKIHsKICAgICBtX2RlbHRhLnNocmlua1RvRml0KCk7CiAgICAg
bV9zdWNjZXNzb3JzLnNocmlua1RvRml0KCk7CiB9CiAKLXN0YXRpYyBib29sIGlzSnVtcFRhcmdl
dChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordGVtcGxhdGU8
dHlwZW5hbWUgT3Bjb2RlVHJhaXRzPgorc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KHR5cGVuYW1l
IE9wY29kZVRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3Rvcjx0eXBlbmFtZSBC
eXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpP
ZmZzZXQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9jYXRjaCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02OSwx
NCArNzQsMTUgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnMKICAgICByZXR1cm4gc3RkOjpiaW5h
cnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29k
ZU9mZnNldCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KIHRlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrPgotYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+
IEJhc2ljQmxvY2tWZWN0b3IKK2F1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46
OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlw
ZSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCiB7CiAgICAgQmFzaWNCbG9ja1Zl
Y3RvciBiYXNpY0Jsb2NrczsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
MzI+IGp1bXBUYXJnZXRzOworICAgIFZlY3Rvcjx0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5
cGU6Ok9mZnNldCwgMzI+IGp1bXBUYXJnZXRzOwogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGp1bXBUYXJnZXRzKTsKIAotICAgIGF1dG8gbGlu
a0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBmcm9tLCBCeXRlY29kZUJhc2ljQmxv
Y2smIHRvKSB7CisgICAgYXV0byBsaW5rQmxvY2tzID0gWyZdIChCeXRlY29kZUJhc2ljQmxvY2s8
T3Bjb2RlVHJhaXRzPiYgZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz4mIHRv
KSB7CiAgICAgICAgIGZyb20uYWRkU3VjY2Vzc29yKHRvKTsKICAgICB9OwogCkBAIC04NSwyNSAr
OTEsMjUgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBiYXNpY0Jsb2Nrcy5yZXNl
cnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIC8vIEVudHJ5IGJsb2NrLgotICAgICAgICAgICAgYmFzaWNCbG9ja3MuY29uc3RydWN0QW5k
QXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgp
KTsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChCeXRlY29kZUJh
c2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgpKTsK
ICAgICAgICAgICAgIC8vIEZpcnN0IGJsb2NrLgotICAgICAgICAgICAgYmFzaWNCbG9ja3MuY29u
c3RydWN0QW5kQXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jaywgYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChC
eXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Mu
c2l6ZSgpKTsKICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmFzaWNCbG9ja3NbMF0sIGJhc2ljQmxv
Y2tzWzFdKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVu
dCA9ICZiYXNpY0Jsb2Nrcy5sYXN0KCk7Ci0gICAgICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0g
KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKSAtPiBCeXRlY29kZUJh
c2ljQmxvY2sqIHsKKyAgICAgICAgYXV0byogY3VycmVudCA9ICZiYXNpY0Jsb2Nrcy5sYXN0KCk7
CisgICAgICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKGNvbnN0IHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6UmVmJiBpbnN0cnVjdGlvbikgLT4gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9w
Y29kZVRyYWl0cz4qIHsKICAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVu
ZChpbnN0cnVjdGlvbiwgYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAm
YmFzaWNCbG9ja3MubGFzdCgpOwogICAgICAgICB9OwogICAgICAgICBib29sIG5leHRJbnN0cnVj
dGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rp
b24gOiBpbnN0cnVjdGlvbnMpIHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVPZmZzZXQgPSBp
bnN0cnVjdGlvbi5vZmZzZXQoKTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCk7CisgICAgICAgICAgICBhdXRvIG9wY29kZUlEID0gaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAKICAgICAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFs
c2U7CiAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGp1bXAgdGFy
Z2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgotICAgICAg
ICAgICAgaWYgKG5leHRJbnN0cnVjdGlvbklzTGVhZGVyIHx8IGlzSnVtcFRhcmdldChvcGNvZGVJ
RCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgaWYgKG5leHRJ
bnN0cnVjdGlvbklzTGVhZGVyIHx8IGlzSnVtcFRhcmdldDxPcGNvZGVUcmFpdHM+KG9wY29kZUlE
LCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgY3VycmVu
dCA9IGFwcGVuZEJsb2NrKGluc3RydWN0aW9uKTsKICAgICAgICAgICAgICAgICBjcmVhdGVkQmxv
Y2sgPSB0cnVlOwogICAgICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFs
c2U7CkBAIC0xMjAsNyArMTI2LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICAg
ICAgY3VycmVudC0+YWRkTGVuZ3RoKGluc3RydWN0aW9uLT5zaXplKCkpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIEV4aXQgYmxvY2suCi0gICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFw
cGVuZChCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgpKTsK
KyAgICAgICAgYmFzaWNCbG9ja3MuY29uc3RydWN0QW5kQXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjpFeGl0QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAg
IGJhc2ljQmxvY2tzLnNocmlua1RvRml0KCk7CiAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2Nrcy5s
YXN0KCkuaXNFeGl0QmxvY2soKSk7CiAgICAgfQpAQCAtMTI4LDE1ICsxMzQsMTUgQEAgYXV0byBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJgogCiAgICAgLy8gTGluayBiYXNpYyBibG9ja3MgdG9nZXRoZXIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXTsKKyAgICAg
ICAgYXV0byYgYmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXTsKIAogICAgICAgICBpZiAoYmxvY2suaXNF
bnRyeUJsb2NrKCkgfHwgYmxvY2suaXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCB2aXNpdGVkTGVuZ3RoID0gMDsgdmlzaXRlZExlbmd0aCA8IGJsb2NrLnRvdGFsTGVuZ3Ro
KCk7KSB7Ci0gICAgICAgICAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGluc3RydWN0aW9uID0g
aW5zdHJ1Y3Rpb25zLmF0KGJsb2NrLmxlYWRlck9mZnNldCgpICsgdmlzaXRlZExlbmd0aCk7Ci0g
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwor
ICAgICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChibG9jay5sZWFk
ZXJPZmZzZXQoKSArIHZpc2l0ZWRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBvcGNvZGVJRCA9
IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCiAgICAgICAgICAgICB2aXNpdGVkTGVuZ3RoICs9
IGluc3RydWN0aW9uLT5zaXplKCk7CiAKQEAgLTE3MSw3ICsxNzcsNyBAQCBhdXRvIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mCiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGJyYW5jaCwgbGluayB0byB0
aGUgYmxvY2socykgdGhhdCB3ZSBqdW1wIHRvLgogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9w
Y29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbi5vZmZzZXQoKSAr
IGluc3RydWN0aW9uLT5zaXplKCkgPT0gYmxvY2subGVhZGVyT2Zmc2V0KCkgKyBibG9jay50b3Rh
bExlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87CisgICAgICAgICAgICAgICAgVmVjdG9y
PHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0LCAxPiBieXRlY29kZU9mZnNl
dHNKdW1wZWRUbzsKICAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlv
bihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAg
ICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyT2ZKdW1wVGFyZ2V0cyA9IGJ5dGVjb2RlT2Zmc2V0
c0p1bXBlZFRvLnNpemUoKTsKQEAgLTIwMCw3ICsyMDYsNyBAQCBhdXRvIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mCiAgICAgICAgIC8vIElmIHdlIGZhbGwgdGhyb3VnaCB0aGVuIGxpbmsgdG8gdGhlIG5leHQg
YmxvY2sgaW4gcHJvZ3JhbSBvcmRlci4KICAgICAgICAgaWYgKGZhbGxzVGhyb3VnaCkgewogICAg
ICAgICAgICAgQVNTRVJUKGkgKyAxIDwgYmFzaWNCbG9ja3Muc2l6ZSgpKTsKLSAgICAgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayYgbmV4dEJsb2NrID0gYmFzaWNCbG9ja3NbaSArIDFdOworICAg
ICAgICAgICAgYXV0byYgbmV4dEJsb2NrID0gYmFzaWNCbG9ja3NbaSArIDFdOwogICAgICAgICAg
ICAgbGlua0Jsb2NrcyhibG9jaywgbmV4dEJsb2NrKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIx
NCwxMiArMjIwLDE0IEBAIGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICByZXR1cm4gYmFzaWNC
bG9ja3M7CiB9CiAKLWF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNp
Y0Jsb2NrVmVjdG9yCit0ZW1wbGF0ZTw+CithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29k
ZVRyYWl0cz46OmNvbXB1dGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucykgLT4gQmFzaWNCbG9ja1ZlY3RvcgogewogICAgIHJldHVy
biBjb21wdXRlSW1wbChjb2RlQmxvY2ssIGluc3RydWN0aW9ucyk7CiB9CiAKLWF1dG8gQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxv
Y2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tW
ZWN0b3IKK3RlbXBsYXRlPD4KK2F1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrPEpTT3Bjb2RlVHJhaXRz
Pjo6Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCBK
U0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tWZWN0b3IKIHsK
ICAgICByZXR1cm4gY29tcHV0ZUltcGwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5o
CmluZGV4IGQwYTg4MmQ1NDYzMjI5MTFjMzdlZWFiZGMwYWZkMzBmNWFlZjczNGEuLmQ3NjQzZDE5
ZjgyY2Q0YzYyZGIzNmY4YzZjMTUyNGVkYWJiMDY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTM3LDIxICszNywy
NCBAQCBjbGFzcyBCeXRlY29kZUdyYXBoOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKLXN0cnVjdCBJ
bnN0cnVjdGlvbjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIERF
Q0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEJ5dGVjb2RlQmFzaWNCbG9jayk7
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KIGNsYXNzIEJ5dGVjb2RlQmFzaWNC
bG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUJhc2ljQmxvY2spOwogICAgIGZyaWVu
ZCBjbGFzcyBCeXRlY29kZUdyYXBoOwogcHVibGljOgogICAgIHVzaW5nIEJhc2ljQmxvY2tWZWN0
b3IgPSBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywg
MTYsIEJ5dGVjb2RlQmFzaWNCbG9ja01hbGxvYz47Ci0gICAgc3RhdGljX2Fzc2VydChtYXhPcGNv
ZGVMZW5ndGggPD0gVUlOVDhfTUFYKTsKKyAgICB1c2luZyBJbnN0cnVjdGlvblR5cGUgPSBCYXNl
SW5zdHJ1Y3Rpb248T3Bjb2RlVHJhaXRzPjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVR5
cGUgPSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OworICAgIHN0YXRpY19hc3Nl
cnQobWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPD0gVUlOVDhfTUFYKTsKICAgICBlbnVtIFNwZWNp
YWxCbG9ja1R5cGUgeyBFbnRyeUJsb2NrLCBFeGl0QmxvY2sgfTsKLSAgICBpbmxpbmUgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmLCB1bnNpZ25lZCBibG9j
a0luZGV4KTsKKyAgICBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrKGNvbnN0IHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZTo6UmVmJiwgdW5zaWduZWQgYmxvY2tJbmRleCk7CiAgICAgaW5s
aW5lIEJ5dGVjb2RlQmFzaWNCbG9jayhTcGVjaWFsQmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0lu
ZGV4KTsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrJiYpID0gZGVm
YXVsdDsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz4mJikgPSBkZWZhdWx0OwogCiAKICAgICBib29sIGlzRW50cnlCbG9jaygpIHsgcmV0dXJu
ICFtX2xlYWRlck9mZnNldCAmJiAhbV90b3RhbExlbmd0aDsgfQpAQCAtNzIsMTIgKzc1LDEyIEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBPbmx5IGNhbGxlZCBmcm9tIEJ5dGVjb2RlR3Jh
cGguCi0gICAgc3RhdGljIEJhc2ljQmxvY2tWZWN0b3IgY29tcHV0ZShDb2RlQmxvY2sqLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKTsKLSAgICBzdGF0aWMgQmFzaWNCbG9j
a1ZlY3RvciBjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+
IHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpOworICAgIHN0YXRpYyBCYXNpY0Js
b2NrVmVjdG9yIGNvbXB1dGUoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
JiBpbnN0cnVjdGlvbnMpOworICAgIHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGUoVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGlu
c3RydWN0aW9ucyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+IHN0YXRpYyBCYXNpY0Js
b2NrVmVjdG9yIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtVHlwZSYgaW5zdHJ1Y3Rpb25zKTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKLSAg
ICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrKQorICAgIHZvaWQg
YWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiBibG9jaykKICAg
ICB7CiAgICAgICAgIGlmICghbV9zdWNjZXNzb3JzLmNvbnRhaW5zKGJsb2NrLmluZGV4KCkpKQog
ICAgICAgICAgICAgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jay5pbmRleCgpKTsKQEAgLTg1LDcg
Kzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSB2b2lkIGFkZExlbmd0aCh1bnNpZ25lZCk7
CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OworICAgIHR5
cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OwogICAg
IHVuc2lnbmVkIG1fdG90YWxMZW5ndGg7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKIApAQCAtOTYs
NCArOTksNyBAQCBwcml2YXRlOgogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCit1c2lu
ZyBKU0J5dGVjb2RlQmFzaWNCbG9jayA9IEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29kZVRyYWl0
cz47Cit1c2luZyBXYXNtQnl0ZWNvZGVCYXNpY0Jsb2NrID0gQnl0ZWNvZGVCYXNpY0Jsb2NrPFdh
c21PcGNvZGVUcmFpdHM+OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDViZjY3YjYxYjYy
YmMxMmUwNGMyZmE3Y2E5MzQzYzBjN2FkZTY3MDAuLjA2MWQ3YmQxNDJkYjQ5ZWYwM2M5ZjMwNTY4
NGVmNzE2OTQ0MjVlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtNDEsMzEgKzQxLDM0IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi12b2lkIEJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKQordGVtcGxhdGU8dHlw
ZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgordm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SW5z
dHJ1Y3Rpb25TdHJlYW1UeXBlPjo6cHJpbnRMb2NhdGlvbkFuZE9wKHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBt
X2N1cnJlbnRMb2NhdGlvbiA9IGxvY2F0aW9uOwogICAgIG1fb3V0LnByaW50ZigiWyU0dV0gJS0x
OHMgIiwgbG9jYXRpb24sIG9wKTsKIH0KIAotdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OmR1bXBW
YWx1ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25T
dHJlYW1UeXBlPgordm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
Pjo6ZHVtcFZhbHVlKFZpcnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgbV9vdXQucHJpbnRmKCIl
cyIsIHJlZ2lzdGVyTmFtZShyZWcpLmRhdGEoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZT4KIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgQnl0
ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8VHJhaXRzPiBsYWJl
bCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OmR1bXBW
YWx1ZShHZW5lcmljQm91bmRMYWJlbDxUcmFpdHM+IGxhYmVsKQogewogICAgIGludCB0YXJnZXQg
PSBsYWJlbC50YXJnZXQoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgdGFyZ2V0ID0gb3V0
T2ZMaW5lSnVtcE9mZnNldChtX2N1cnJlbnRMb2NhdGlvbik7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCB0YXJnZXRPZmZzZXQgPSB0YXJnZXQgKyBtX2N1cnJlbnRMb2NhdGlvbjsKKyAg
ICBhdXRvIHRhcmdldE9mZnNldCA9IHRhcmdldCArIG1fY3VycmVudExvY2F0aW9uOwogICAgIG1f
b3V0LnByaW50KHRhcmdldCwgIigtPiIsIHRhcmdldE9mZnNldCwgIikiKTsKIH0KIAotdGVtcGxh
dGUgdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxK
U0dlbmVyYXRvclRyYWl0cz4pOwordGVtcGxhdGUgdm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SlNJ
bnN0cnVjdGlvblN0cmVhbT46OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxKU0dlbmVyYXRv
clRyYWl0cz4pOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotdGVtcGxhdGUgdm9pZCBCeXRl
Y29kZUR1bXBlckJhc2U6OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxXYXNtOjpHZW5lcmF0
b3JUcmFpdHM+KTsKK3RlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPFdhc21JbnN0cnVj
dGlvblN0cmVhbT46OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxXYXNtOjpHZW5lcmF0b3JU
cmFpdHM+KTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKIHRlbXBsYXRlPGNsYXNz
IEJsb2NrPgpAQCAtNzgsNyArODEsNyBAQCBDU3RyaW5nIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdpc3RlciByKSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgQmxvY2s+Ci1pbnQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAoraW50IEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAogewogICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxp
bmVKdW1wT2Zmc2V0KG9mZnNldCk7CiB9CkBAIC05MSwxNCArOTQsMTQgQEAgQ1N0cmluZyBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElD
U3RhdHVzTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoY29u
c3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNN
YXAmKQogewogICAgIDo6SlNDOjpkdW1wQnl0ZWNvZGUodGhpcywgaXQub2Zmc2V0KCksIGl0LnB0
cigpKTsKICAgICB0aGlzLT5tX291dC5wcmludCgiXG4iKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBi
bG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlw
ZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0
YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIG91dCk7CiAgICAg
ZHVtcGVyLmR1bXBCeXRlY29kZShpdCwgc3RhdHVzTWFwKTsKQEAgLTIxMCw3ICsyMTMsNyBAQCB2
b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN0cmluZ1N3aXRjaEp1bXBU
YWJsZXMoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmxvY2s+Ci1zdGF0aWMgdm9pZCBkdW1w
SGVhZGVyKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgUHJpbnRTdHJlYW0mIG91dCkKK3N0YXRpYyB2b2lkIGR1bXBIZWFkZXIoQmxvY2sqIGJsb2Nr
LCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFByaW50U3RyZWFtJiBv
dXQpCiB7CiAgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwogICAgIHNpemVfdCB3aWRl
MTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKQEAgLTI1Miw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBk
dW1wRm9vdGVyKER1bXBlciYgZHVtcGVyKQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZv
aWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQordm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAm
IHN0YXR1c01hcCkKIHsKICAgICBkdW1wSGVhZGVyKGJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7
CiAKQEAgLTI2Niw3ICsyNjksNyBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJsb2NrKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rp
b25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0
dXNNYXAmIGljU3RhdHVzTWFwKQordm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBHcmFwaChCbG9jayogYmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElD
U3RhdHVzTWFwJiBpY1N0YXR1c01hcCkKIHsKICAgICBkdW1wSGVhZGVyKGJsb2NrLCBpbnN0cnVj
dGlvbnMsIG91dCk7CiAKQEAgLTI4NSw3ICsyODgsNyBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25T
dAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2Nr
IDogZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogZ3JhcGgpIHsKICAgICAgICAgaWYg
KGJsb2NrLmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApAQCAtMzE3LDYgKzMyMCw4IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0
CiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIAordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1w
ZXJCYXNlPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+OwordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1w
ZXJCYXNlPFdhc21JbnN0cnVjdGlvblN0cmVhbT47CiB0ZW1wbGF0ZSBjbGFzcyBCeXRlY29kZUR1
bXBlcjxDb2RlQmxvY2s+OwogdGVtcGxhdGUgY2xhc3MgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+OwogdGVtcGxhdGUgY2xhc3MgQ29kZUJsb2NrQnl0
ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjsKQEAgLTMzMSw3ICszMzYsNyBAQCB2b2lkIEJ5dGVjb2Rl
RHVtcGVyOjpkdW1wQmxvY2soRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBjb25z
dCBNb2R1bGVJbgogICAgIHNpemVfdCB3aWRlMTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKICAgICBz
aXplX3Qgd2lkZTMySW5zdHJ1Y3Rpb25Db3VudCA9IDA7CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBi
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgaXQgIT0gYmxvY2stPmluc3RydWN0aW9ucygp
LmVuZCgpOyBpdCArPSBpdC0+c2l6ZTxXYXNtT3Bjb2RlVHJhaXRzPigpKSB7CisgICAgZm9yIChh
dXRvIGl0ID0gYmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5lbmQoKTsgaXQgKz0gaXQtPnNpemUoKSkgewogICAgICAgICBpZiAoaXQtPmlz
V2lkZTE2KCkpCiAgICAgICAgICAgICArK3dpZGUxNkluc3RydWN0aW9uQ291bnQ7CiAgICAgICAg
IGVsc2UgaWYgKGl0LT5pc1dpZGUzMigpKQpAQCAtMzU5LDcgKzM2NCw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI6OmR1bXBCbG9jayhGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2ssIGNv
bnN0IE1vZHVsZUluCiAgICAgICAgIGJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSk7CiAKICAgICBC
eXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIG91dCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gYmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5l
bmQoKTsgaXQgKz0gaXQtPnNpemU8V2FzbU9wY29kZVRyYWl0cz4oKSkgeworICAgIGZvciAoYXV0
byBpdCA9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1
Y3Rpb25zKCkuZW5kKCk7IGl0ICs9IGl0LT5zaXplKCkpIHsKICAgICAgICAgZHVtcFdhc20oJmR1
bXBlciwgaXQub2Zmc2V0KCksIGl0LnB0cigpKTsKICAgICAgICAgb3V0LnByaW50KCJcbiIpOwog
ICAgIH0KQEAgLTQxNiw2ICs0MjEsMTkgQEAgQ1N0cmluZyBCeXRlY29kZUR1bXBlcjo6Zm9ybWF0
Q29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRfdCBjb25zdGFudCkgY29uc3QKICAgICB9CiB9CiAK
K0NTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6OnJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIgcikg
Y29uc3QKK3sKKyAgICBpZiAoci5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBjb25zdGFu
dE5hbWUocik7CisKKyAgICByZXR1cm4gdG9DU3RyaW5nKHIpOworfQorCitpbnQgQnl0ZWNvZGVE
dW1wZXI6Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgb2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxpbmVK
dW1wT2Zmc2V0KG9mZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdhc20KIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmgKaW5kZXggMjE2ZTZlNjdlYTBkMmRjN2Q5M2FhNDUxMjhlOWEwNjJk
M2Q2M2I5Yi4uNWRlMTVlOGNjYTIyNGQyNjAyOWYwYmE0ZGE3ZmVjNWEwYmY5YzEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTI2
LDkgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Js
b2NrLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCkBAIC0zNywxNSArMzksMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlR3JhcGg7CiAKLXN0cnVjdCBJbnN0cnVj
dGlvbjsKLQordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgogY2xhc3Mg
Qnl0ZWNvZGVEdW1wZXJCYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CeXRlY29kZUR1bXBl
ckJhc2UoKQogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHByaW50TG9jYXRpb25BbmRPcChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CisgICAgdm9p
ZCBwcmludExvY2F0aW9uQW5kT3AodHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZz
ZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgdm9pZCBkdW1wT3BlcmFuZChjb25zdCBjaGFyKiBvcGVyYW5kTmFtZSwgVCBvcGVyYW5k
LCBib29sIGlzRmlyc3QgPSBmYWxzZSkKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBDU3RyaW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0KSBjb25zdCA9
IDA7CiAKICAgICBCeXRlY29kZUR1bXBlckJhc2UoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAg
OiBtX291dChvdXQpCkBAIC03NSwxMyArNzYsMTMgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAg
IFByaW50U3RyZWFtJiBtX291dDsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fY3Vy
cmVudExvY2F0aW9uIHsgMCB9OworICAgIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6
T2Zmc2V0IG1fY3VycmVudExvY2F0aW9uIHsgMCB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgQmxv
Y2s+Ci1jbGFzcyBCeXRlY29kZUR1bXBlciA6IHB1YmxpYyBCeXRlY29kZUR1bXBlckJhc2Ugewor
Y2xhc3MgQnl0ZWNvZGVEdW1wZXIgOiBwdWJsaWMgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1
Y3Rpb25TdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxv
Y2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVt
cEJ5dGVjb2RlKEJsb2NrKiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAKICAg
ICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAg
IDogQnl0ZWNvZGVEdW1wZXJCYXNlKG91dCkKQEAgLTk0LDEwICs5NSwxMCBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgQmxvY2sqIGJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jazsgfQog
Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSlNJbnN0
cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKIAogICAgIENTdHJp
bmcgcmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdpc3RlcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50
IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpIGNv
bnN0IG92ZXJyaWRlOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBD
U3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIpIGNvbnN0OwpAQCAtMTA4LDggKzEw
OSw4IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIGNsYXNzIENvZGVCbG9ja0J5
dGVjb2RlRHVtcGVyIGZpbmFsIDogcHVibGljIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW0mLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01h
cCgpKTsKLSAgICBzdGF0aWMgdm9pZCBkdW1wR3JhcGgoQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmls
ZSgpLCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGlj
IHZvaWQgZHVtcEdyYXBoKEJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVj
b2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpLCBjb25zdCBJQ1N0
YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKIAogICAgIHZvaWQgZHVtcElkZW50aWZpZXJzKCk7
CiAgICAgdm9pZCBkdW1wQ29uc3RhbnRzKCk7CkBAIC0xMzIsMTYgKzEzMywyOSBAQCBuYW1lc3Bh
Y2UgV2FzbSB7CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjsKIHN0cnVjdCBNb2R1
bGVJbmZvcm1hdGlvbjsKIAotY2xhc3MgQnl0ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpCeXRlY29kZUR1bXBlcjxGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcj4geworY2xhc3MgQnl0
ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpCeXRlY29kZUR1bXBlckJhc2U8V2FzbUlu
c3RydWN0aW9uU3RyZWFtPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEZ1
bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBQcmlu
dFN0cmVhbSYgb3V0KTsKIAotcHJpdmF0ZToKLSAgICB1c2luZyBKU0M6OkJ5dGVjb2RlRHVtcGVy
PEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPjo6Qnl0ZWNvZGVEdW1wZXI7CisgICAgQnl0ZWNv
ZGVEdW1wZXIoRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBQcmludFN0cmVhbSYg
b3V0KQorICAgICAgICA6IEJ5dGVjb2RlRHVtcGVyQmFzZShvdXQpCisgICAgICAgICwgbV9ibG9j
ayhibG9jaykKKyAgICB7CisgICAgfQogCisgICAgfkJ5dGVjb2RlRHVtcGVyKCkgb3ZlcnJpZGUg
eyB9CisKKyAgICBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2soKSBjb25zdCB7IHJl
dHVybiBtX2Jsb2NrOyB9CisKKyAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0
ZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CiAgICAgdm9p
ZCBkdW1wQ29uc3RhbnRzKCk7Ci0gICAgQ1N0cmluZyBjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lz
dGVyIGluZGV4KSBjb25zdCBmaW5hbDsKKyAgICBDU3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFs
UmVnaXN0ZXIgaW5kZXgpIGNvbnN0OwogICAgIENTdHJpbmcgZm9ybWF0Q29uc3RhbnQoVHlwZSwg
dWludDY0X3QpIGNvbnN0OworCisgICAgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIG1fYmxv
Y2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApp
bmRleCBmNjAzNmIxYjgyZGEyZWZkOGNkYzczYzgwZjkxNTYwNTU4Y2Y5YzZjLi4wMTI1NDk2OTQz
MzQwMThkZTM1NTUxYzcyYmRjMjkwNWZmZWQ5ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgWWllbGREYXRh
IHsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IHBvaW50IHsgMCB9OworICAgIHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBwb2ludCB7IDAgfTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYXJndW1lbnQgeyAwIH07CiAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKIH07
CkBAIC01MiwxNCArNTIsMTQgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0
YT4gWWllbGRzOwogCiAgICAgc3RydWN0IEdlbmVyYXRvckZyYW1lRGF0YSB7Ci0gICAgICAgIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbV9wb2ludDsKKyAgICAgICAgdHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fcG9pbnQ7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBt
X2RzdDsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGU7CiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBtX3N5bWJvbFRhYmxlOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9pbml0aWFs
VmFsdWU7CiAgICAgfTsKIAotICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucywgU3ltYm9s
VGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5l
cmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29k
ZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KQogICAgICAgICA6IG1fYnl0ZWNvZGVHZW5lcmF0b3IoYnl0ZWNvZGVHZW5lcmF0
b3IpCiAgICAgICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICAgICAsIG1faW5zdHJ1
Y3Rpb25zKGluc3RydWN0aW9ucykKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3lpZWxkczsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGVu
dGVyUG9pbnQoKSBjb25zdAorICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBl
bnRlclBvaW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5h
dChtX2VudGVyUG9pbnQpOwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2dlbmVyYXRvckZyYW1lRGF0YTsKICAgICB9CiAKLSAgICBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QKKyAgICBjb25zdCBKU0luc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW5zdHJ1Y3Rpb25zOwogICAgIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHByaXZhdGU6CiAgICAg
fQogCiAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7Ci0gICAgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2VudGVyUG9pbnQ7CisgICAgdHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fZW50ZXJQb2ludDsKICAgICBzdGQ6Om9wdGlvbmFsPEdl
bmVyYXRvckZyYW1lRGF0YT4gbV9nZW5lcmF0b3JGcmFtZURhdGE7CiAgICAgVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IqIG1fY29kZUJsb2NrOwotICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVy
JiBtX2luc3RydWN0aW9uczsKKyAgICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX2luc3Ry
dWN0aW9uczsKICAgICBCeXRlY29kZUdyYXBoIG1fZ3JhcGg7CiAgICAgVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CiAgICAgWWllbGRzIG1feWllbGRzOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBydW4oVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIm
IGluc3RydWN0aW9ucykKKyAgICB2b2lkIHJ1bihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciog
Y29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMpCiAgICAg
ewogICAgICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVy
bWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4KICAgICAgICAg
Ly8gVGhpcyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBxdWVzdGlv
biwgIndoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4KQEAgLTI4
Niw3ICsyODYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAg
IHJld3JpdGVyLmV4ZWN1dGUoKTsKIH0KIAotdm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9u
KEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9u
cywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgpCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0
ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvciogY29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMs
IFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4KQogewogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0
ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9uKCkpKSB7CiAgICAgICAgIGRhdGFMb2dMbigi
Qnl0ZWNvZGVzIGJlZm9yZSBnZW5lcmF0b3JpZmljYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKaW5kZXggODMwMWQ0MDU3YTMzZDIxYmEzOGMzOGM5YzkyMGY1NDkzNGRiYmI4NS4uYzlmMWE5
ZTUxNjViNDEwNGZmODkwNzI0ODYxMzZiYTRmOTkxMjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKQEAgLTI5LDExICsyOSwxNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2Rl
R2VuZXJhdG9yOwotY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CiBjbGFzcyBTeW1ib2xU
YWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOwogY2xhc3MgU3ltYm9sVGFi
bGU7CiAKLXZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRvciYs
IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImLCBT
eW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCk7CitzdHJ1Y3QgSlNPcGNvZGVUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1
Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciA9
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyPEpTSW5zdHJ1Y3Rpb24+OworCit2b2lkIHBlcmZvcm1H
ZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3ImLCBVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvciosIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKaW5kZXggYzhkNGE1MTYxOGM3OGM4NGEzM2IxYWEzYmZjMjlhYWY0
OTgyYTllMC4uZDI4M2NiNjVlZjAwN2FiODE3ZWQ2YWMyNjY4ZjA3MGU0MzczZTBjNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0zNCwz
MSArMzQsMzEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9j
azsKLQogY2xhc3MgQnl0ZWNvZGVHcmFwaCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVHcmFwaCk7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgQmFzaWNCbG9ja3NWZWN0b3IgPSBCeXRlY29kZUJhc2ljQmxvY2s6OkJhc2ljQmxvY2tW
ZWN0b3I7CisgICAgdXNpbmcgQmFzaWNCbG9ja1R5cGUgPSBKU0J5dGVjb2RlQmFzaWNCbG9jazsK
KyAgICB1c2luZyBCYXNpY0Jsb2Nrc1ZlY3RvciA9IHR5cGVuYW1lIEJhc2ljQmxvY2tUeXBlOjpC
YXNpY0Jsb2NrVmVjdG9yOworICAgIHVzaW5nIEluc3RydWN0aW9uU3RyZWFtVHlwZSA9IHR5cGVu
YW1lIEJhc2ljQmxvY2tUeXBlOjpJbnN0cnVjdGlvblN0cmVhbVR5cGU7CiAKICAgICB0eXBlZGVm
IFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3JhcGg+IGl0ZXJhdG9yOwog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci0gICAgaW5saW5lIEJ5dGVj
b2RlR3JhcGgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJik7CisgICAg
aW5saW5lIEJ5dGVjb2RlR3JhcGgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtVHlwZSYpOwogCiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpy
ZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCks
IG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBibG9ja0Nv
bnRhaW5zQnl0ZWNvZGVPZmZzZXQoY29uc3QgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaywgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBzdGF0aWMgYm9vbCBi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoY29uc3QgQmFzaWNCbG9ja1R5cGUmIGJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBieXRlY29kZU9mZnNldCkKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLmxlYWRlck9mZnNldCgp
OwogICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVj
b2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2sudG90YWxMZW5ndGgoKTsKICAgICB9CiAK
LSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBCYXNpY0Jsb2Nr
VHlwZSogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU6Ok9mZnNldCBieXRlY29kZU9mZnNldCkKICAgICB7CiAgICAgICAgIC8qCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7
IGkrKykgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgKi8KIAotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2sgPSBh
cHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxCeXRlY29kZUJhc2ljQmxvY2ssIHVuc2lnbmVkPihtX2Jh
c2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChCeXRl
Y29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2spIHsgcmV0dXJuIGJhc2ljQmxvY2stPmxlYWRlck9m
ZnNldCgpOyB9KTsKKyAgICAgICAgQmFzaWNCbG9ja1R5cGUqIGJhc2ljQmxvY2sgPSBhcHByb3hp
bWF0ZUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrVHlwZSwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3Ms
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKEJhc2ljQmxvY2tUeXBl
KiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsgfSk7CiAg
ICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgogICAgICAg
ICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCpiYXNpY0Jsb2NrLCBieXRlY29kZU9m
ZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9jazsKQEAgLTg2LDIzICs4NiwyMyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmYmFzaWNCbG9ja1sxXTsKICAgICB9CiAKLSAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKKyAgICBCYXNpY0Jsb2NrVHlwZSogZmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlw
ZTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0cnlCaW5hcnlT
ZWFyY2g8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNp
Y0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKEJ5dGVjb2RlQmFzaWNCbG9jayogYmFz
aWNCbG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0KCk7IH0pOworICAgICAg
ICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2tUeXBlLCB1bnNpZ25lZD4obV9iYXNp
Y0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKEJhc2ljQmxv
Y2tUeXBlKiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsg
fSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNC
bG9ja3Muc2l6ZSgpOyB9Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBhdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxCeXRlY29kZUdyYXBoKj4odGhpcyktPm1fYmFz
aWNCbG9ja3NbaW5kZXhdOyB9Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKyAgICBCYXNpY0Jsb2Nr
VHlwZSYgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Qnl0ZWNv
ZGVHcmFwaCo+KHRoaXMpLT5tX2Jhc2ljQmxvY2tzW2luZGV4XTsgfQorICAgIEJhc2ljQmxvY2tU
eXBlJiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7
IH0KIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9
CiAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0K
LSAgICBCeXRlY29kZUJhc2ljQmxvY2smIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KLSAgICBC
eXRlY29kZUJhc2ljQmxvY2smIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorICAg
IEJhc2ljQmxvY2tUeXBlJiBmaXJzdCgpIHsgcmV0dXJuIGF0KDApOyB9CisgICAgQmFzaWNCbG9j
a1R5cGUmIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQogCiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLSAgICB2b2lkIGR1bXAoQ29kZUJsb2NrVHlwZSog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxPcGVyYW5kczxTcGVjdWxhdGVkVHlwZT4+PiBzcGVjdWxhdGlvbkF0SGVh
ZCwgUHJpbnRTdHJlYW0mIHByaW50ZXIgPSBXVEY6OmRhdGFGaWxlKCkpCisgICAgdm9pZCBkdW1w
KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlJiBp
bnN0cnVjdGlvbnMsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE9wZXJhbmRzPFNwZWN1bGF0ZWRUeXBl
Pj4+IHNwZWN1bGF0aW9uQXRIZWFkLCBQcmludFN0cmVhbSYgcHJpbnRlciA9IFdURjo6ZGF0YUZp
bGUoKSkKICAgICB7CiAgICAgICAgIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPENvZGVCbG9ja1R5
cGU+OjpkdW1wR3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsICp0aGlzLCBzcGVjdWxhdGlv
bkF0SGVhZCwgcHJpbnRlcik7CiAgICAgfQpAQCAtMTEzLDggKzExMyw4IEBAIHByaXZhdGU6CiAK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLUJ5dGVjb2RlR3JhcGg6OkJ5dGVj
b2RlR3JhcGgoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVh
bSYgaW5zdHJ1Y3Rpb25zKQotICAgIDogbV9iYXNpY0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGUoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpKQorQnl0ZWNvZGVHcmFwaDo6Qnl0ZWNv
ZGVHcmFwaChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
VHlwZSYgaW5zdHJ1Y3Rpb25zKQorICAgIDogbV9iYXNpY0Jsb2NrcyhCYXNpY0Jsb2NrVHlwZTo6
Y29tcHV0ZShjb2RlQmxvY2ssIGluc3RydWN0aW9ucykpCiB7CiAgICAgQVNTRVJUKG1fYmFzaWNC
bG9ja3Muc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggZTg2Y2UxODc3MTA3
NThmNjgzYTEyN2M4OWQxNjJiNjVmYjQ0NWNlZS4uMjA3ZTQ2MjczNjc4YjkxMjNmYmI4MDY3Y2Y4
MjI1MWEwYjYwMmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTUwLDEwICs1MCwxMCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbgogICAgIHNpemVfdCBzaXplID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEZ1bGxC
eXRlY29kZUxpdmVuZXNzPihzaXplKTsKIAotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBi
bG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgZm9yIChh
dXRvJiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAg
ICAgIGlmIChibG9jay5pc0VudHJ5QmxvY2soKSB8fCBibG9jay5pc0V4aXRCbG9jaygpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIG91dCA9IGJsb2NrLm91dCgp
OwogCiAgICAgICAgIGF1dG8gdXNlID0gWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewpAQCAtOTYs
OSArOTYsOSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkJsb2NrcyA9IG1fZ3Jh
cGguc2l6ZSgpOwogICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBwcmVkZWNlc3NvcnMobnVtYmVy
T2ZCbG9ja3MpOwotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgp
CisgICAgZm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpCiAgICAgICAgIHByZWRlY2Vzc29yc1ti
bG9jay5pbmRleCgpXS5yZXNpemUobnVtYmVyT2ZCbG9ja3MpOwotICAgIGZvciAoQnl0ZWNvZGVC
YXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogbV9n
cmFwaCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHN1Y2Nlc3NvckluZGV4IDogYmxvY2suc3Vj
Y2Vzc29ycygpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBibG9ja0luZGV4ID0gYmxvY2suaW5k
ZXgoKTsKICAgICAgICAgICAgIHByZWRlY2Vzc29yc1tzdWNjZXNzb3JJbmRleF1bYmxvY2tJbmRl
eF0gPSB0cnVlOwpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpkdW1wUmVzdWx0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgfQogICAgIH07
CiAKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBtX2dyYXBoKSB7CisgICAg
Zm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpIHsKICAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNv
ZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCAm
YmxvY2ssIGJsb2NrLmxlYWRlck9mZnNldCgpLCBibG9jay50b3RhbExlbmd0aCgpKTsKIAogICAg
ICAgICBkYXRhTG9nRigiUHJlZGVjZXNzb3JzOiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGU1
MDk0NzVhOTliMWVkZTk0YWE5MjI4YTk1NTc4NjNhN2ZhYTUyMmQuLjgxNjkyYWUzNDc4ZjE3MzNk
YWNmNDRhYjMwZGFkYWM3YTVkOTk2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTUxLDIzICs1
MSwyMyBAQCBlbnVtIGNsYXNzIExpdmVuZXNzQ2FsY3VsYXRpb25Qb2ludCA6IHVpbnQ4X3Qgewog
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgotICAgIHN0YXRp
YyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5z
dHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNl
RnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2Rl
QmxvY2tUeXBlKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVw
T3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSosIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNv
bnN0IFVzZUZ1bmN0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhV
c2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIERlZkZ1bmN0
b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5
cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUlu
ZGV4LCBjb25zdCBEZWZGdW5jdG9yJik7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29k
ZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgQnl0
ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IERlZkZ1bmN0b3ImKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVu
YW1lIERlZkZ1bmN0b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4KENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOworICAg
IHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiwgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25z
dCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZT4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiBvdXQpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0m
LCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9u
cz4KLSAgICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVCYXNpY0Jsb2NrJiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KTsKKyAg
ICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGVCbG9j
a1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgSlNCeXRlY29kZUJh
c2ljQmxvY2smLCBCeXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgot
ICAgIHN0YXRpYyBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlw
ZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxv
Y2smKTsKKyAgICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVC
bG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgSlNCeXRlY29k
ZUJhc2ljQmxvY2smKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5
cGVuYW1lIEluc3RydWN0aW9ucz4KICAgICBzdGF0aWMgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVz
c0luZm9BdEluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBC
eXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAppbmRleCA2NDhjNGI1ZTk2MzA4NTFkODk4MTcxZDFkMDc3NTY2MjRlYTY1NTVjLi41Njc2
NGNlNjFlZjBkNDg0YzhiM2E1NWM0NmFmYTRmZmIxYzI4MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNJbmxpbmVzLmgKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lz
dGVyRm9yTGl2ZW5lc3MoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IERl
ZkZ1bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6
c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgYXV0
byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAg
ICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KApAQCAtNzEsNyArNzEsNyBAQCBpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERl
ZihDb2RlQmxvY2tUeXBlKgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0
eXBlbmFtZSBVc2VGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UpCitpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVz
ZShDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
Y29uc3QgVXNlRnVuY3RvciYgdXNlKQogewogICAgIGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1
Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVJbmRleCgKQEAgLTgzLDEyICs4MywxMiBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgot
aW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKK2lubGluZSB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRp
b25IYW5kbGVyKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKIHsKLSAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlv
biBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8g
SWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJp
YWJsZXMgb2YgdGhlCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVk
ZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIEJ5dGVjb2RlSW5kZXguCiAgICAg
aWYgKGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZUluZGV4KGJ5
dGVjb2RlSW5kZXgpKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2Nr
ID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7
CisgICAgICAgIGF1dG8qIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOwogICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2Nr
KTsKICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKICAgICB9
CkBAIC05Nyw3ICs5Nyw3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kCiAvLyBTaW1wbGlmaWVk
IGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmly
c3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4g
dGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VG
dW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQ
cm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhl
Y3V0ZXMgdGhlIEJ5dGVjb2RlSW5kZXggaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxs
eSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRo
aXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2Ug
YW5kIGRlZiB0aGUgc2FtZQpAQCAtMTIwLDcgKzEyMCw3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUq
IGNvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci1pbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2Nr
VHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBGYXN0Qml0
VmVjdG9yJiBvdXQpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBKU0luc3Ry
dWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsKICAgICBhdXRvIG51
bWJlck9mQ2hlY2twb2ludHMgPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCktPm51bWJl
ck9mQ2hlY2twb2ludHMoKTsKICAgICBmb3IgKENoZWNrcG9pbnQgY2hlY2twb2ludCA9IG51bWJl
ck9mQ2hlY2twb2ludHM7IGNoZWNrcG9pbnQtLTspIHsKQEAgLTEzOCw3ICsxMzgsNyBAQCBpbmxp
bmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrVHlwZSogY29kZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlw
ZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVH
cmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2ssIEJ5dGVjb2RlSW5kZXggdGFy
Z2V0SW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK2lubGluZSBib29sIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgSlNCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBCeXRlY29k
ZUluZGV4IHRhcmdldEluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFibG9jay5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLmlzRW50cnlCbG9jaygp
KTsKQEAgLTE1OSw3ICsxNTksNyBAQCBpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFn
YXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxp
bmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2soQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxv
Y2spCitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEpTQnl0ZWNvZGVCYXNp
Y0Jsb2NrJiBibG9jaykKIHsKICAgICBpZiAoYmxvY2suaXNFeGl0QmxvY2soKSB8fCBibG9jay5p
c0VudHJ5QmxvY2soKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcwLDcgKzE3MCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4K
IGlubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Z2V0TGl2
ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWJ5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpLCAiZ2V0TGl2ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbiBjYW4ndCBi
ZSB1c2VkIHRvIGFzayBxdWVzdGlvbnMgYWJvdXQgY2hlY2twb2ludHMiKTsKLSAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsKKyAgICBhdXRvKiBibG9jayA9IGdyYXBoLmZpbmRC
YXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSk7CiAgICAg
QVNTRVJUKGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAg
QVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgogaW5saW5l
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5MaXZlbmVzc0ZpeHBvaW50KENv
ZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMs
IEJ5dGVjb2RlR3JhcGgmIGdyYXBoKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVz
ID0gY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKTsKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayYgYmxvY2sgOiBncmFwaCkgeworICAgIGZvciAoYXV0byYgYmxvY2sgOiBncmFwaCkgewog
ICAgICAgICBibG9jay5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJs
b2NrLm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLmluKCku
Y2xlYXJBbGwoKTsKQEAgLTE5MiwxNyArMTkyLDE3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjo6cnVuTGl2ZW5lc3NGaXhwb2ludChDb2RlQmxvY2tUeXBlKiBjb2Rl
CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgbGFz
dEJsb2NrID0gZ3JhcGgubGFzdCgpOworICAgIGF1dG8mIGxhc3RCbG9jayA9IGdyYXBoLmxhc3Qo
KTsKICAgICBsYXN0QmxvY2suaW4oKS5jbGVhckFsbCgpOwogICAgIGxhc3RCbG9jay5vdXQoKS5j
bGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwogICAgIG5ld091dC5yZXNpemUo
bGFzdEJsb2NrLm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0g
ZmFsc2U7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IGdyYXBoLmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGJsb2NrIDog
Z3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAgICBuZXdPdXQu
Y2xlYXJBbGwoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2tJbmRleCA6IGJsb2Nr
LnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgc3Vj
Y2Vzc29yID0gZ3JhcGhbYmxvY2tJbmRleF07CisgICAgICAgICAgICAgICAgYXV0byYgc3VjY2Vz
c29yID0gZ3JhcGhbYmxvY2tJbmRleF07CiAgICAgICAgICAgICAgICAgbmV3T3V0IHw9IHN1Y2Nl
c3Nvci5pbigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYmxvY2sub3V0KCkgPSBuZXdP
dXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVS
ZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdy
aXRlci5jcHAKaW5kZXggODEwMjZhYjNjNzg0ZjFhYzNlMTQ0NDAwMWYzNzJiODJkNGNhYmY3ZS4u
NGFkMDYyY2JiNzY5Mjg4ODI2YjdmYWJlZWM5MTJiMmE0NzQxY2Q4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5GcmFn
bWVudCh1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aQogICAgIH0KIH0KIAotdm9pZCBCeXRl
Y29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGluc2VydGlvblBvaW50LCBJ
bmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiYgd3Jp
dGVyKQordm9pZCBCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGlu
c2VydGlvblBvaW50LCBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIEpTSW5zdHJ1Y3Rpb25T
dHJlYW1Xcml0ZXImJiB3cml0ZXIpCiB7CiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50LnBvc2l0
aW9uID09IFBvc2l0aW9uOjpCZWZvcmUgfHwgaW5zZXJ0aW9uUG9pbnQucG9zaXRpb24gPT0gUG9z
aXRpb246OkFmdGVyKTsKICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbiB7CkBAIC0x
MTQsMTEgKzExNCwxMSBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRz
KCkKICAgICBhdXRvIG91dE9mTGluZUp1bXBUYXJnZXRzID0gbV9jb2RlQmxvY2stPnJlcGxhY2VP
dXRPZkxpbmVKdW1wVGFyZ2V0cygpOwogCiAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgZm9yIChJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwgbV93cml0ZXIuc2l6ZSgpOykgewor
ICAgIGZvciAodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwg
bV93cml0ZXIuc2l6ZSgpOykgewogICAgICAgICBpbnQgYmVmb3JlID0gMDsKICAgICAgICAgaW50
IGFmdGVyID0gMDsKICAgICAgICAgaW50IHJlbW92ZSA9IDA7Ci0gICAgICAgIHdoaWxlIChjdXJy
ZW50SW5zZXJ0aW9uICE9IG1faW5zZXJ0aW9ucy5lbmQoKSAmJiBzdGF0aWNfY2FzdDxJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0PihjdXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNl
dCkgPT0gaSkgeworICAgICAgICB3aGlsZSAoY3VycmVudEluc2VydGlvbiAhPSBtX2luc2VydGlv
bnMuZW5kKCkgJiYgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0PihjdXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNldCkgPT0gaSkgewogICAg
ICAgICAgICAgYXV0byBzaXplID0gY3VycmVudEluc2VydGlvbi0+bGVuZ3RoKCk7CiAgICAgICAg
ICAgICBpZiAoY3VycmVudEluc2VydGlvbi0+dHlwZSA9PSBJbnNlcnRpb246OlR5cGU6OlJlbW92
ZSkKICAgICAgICAgICAgICAgICByZW1vdmUgKz0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCmluZGV4IDBkY2ViZTc5MzkwYjRm
ZjBiNWQ4YmIwMmI1NTJmOGZlMjQ2YTJlNWEuLjViZGY3N2QwNzM0YWU4MjgyZGJlNjI2NjRkNWUy
YWU4YThkYzBlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVJld3JpdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlUmV3cml0ZXIuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDMy
X3QgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOwogCi0gICAgICAg
IEluc2VydGlvblBvaW50KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBQb3NpdGlv
biBwb3MpCisgICAgICAgIEluc2VydGlvblBvaW50KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBvZmZzZXQsIFBvc2l0aW9uIHBvcykKICAgICAgICAgICAgIDogYnl0ZWNvZGVP
ZmZzZXQob2Zmc2V0KQogICAgICAgICAgICAgLCBwb3NpdGlvbihwb3MpCiAgICAgICAgIHsKQEAg
LTEzMiwxNCArMTMyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFR5cGUgdHlwZTsKICAgICAgICAg
SW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoOwogICAgICAgICBzaXplX3QgcmVtb3ZlTGVuZ3Ro
OwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBpbnN0cnVjdGlvbnM7CisgICAgICAg
IEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgaW5zdHJ1Y3Rpb25zOwogICAgIH07CiAKIHB1Ymxp
YzoKICAgICBjbGFzcyBGcmFnbWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhZ21l
bnQpOwogICAgIHB1YmxpYzoKLSAgICAgICAgRnJhZ21lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5
dGVjb2RlR2VuZXJhdG9yLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgd3JpdGVyLCBJbmNsdWRl
QnJhbmNoJiBpbmNsdWRlQnJhbmNoKQorICAgICAgICBGcmFnbWVudChCeXRlY29kZUdlbmVyYXRv
ciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlciwg
SW5jbHVkZUJyYW5jaCYgaW5jbHVkZUJyYW5jaCkKICAgICAgICAgICAgIDogbV9ieXRlY29kZUdl
bmVyYXRvcihieXRlY29kZUdlbmVyYXRvcikKICAgICAgICAgICAgICwgbV93cml0ZXIod3JpdGVy
KQogICAgICAgICAgICAgLCBtX2luY2x1ZGVCcmFuY2goaW5jbHVkZUJyYW5jaCkKQEAgLTE3MSwx
MSArMTcxLDExIEBAIHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBtX2J5dGVjb2RlR2VuZXJhdG9yOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciYgbV93cml0ZXI7CisgICAgICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1fd3Jp
dGVyOwogICAgICAgICBJbmNsdWRlQnJhbmNoJiBtX2luY2x1ZGVCcmFuY2g7CiAgICAgfTsKIAot
ICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9y
LCBCeXRlY29kZUdyYXBoJiBncmFwaCwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlcikKKyAgICBCeXRlY29kZVJld3Jp
dGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgQnl0ZWNvZGVHcmFwaCYg
Z3JhcGgsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIEpTSW5zdHJ1Y3Rp
b25TdHJlYW1Xcml0ZXImIHdyaXRlcikKICAgICAgICAgOiBtX2J5dGVjb2RlR2VuZXJhdG9yKGJ5
dGVjb2RlR2VuZXJhdG9yKQogICAgICAgICAsIG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9j
b2RlQmxvY2soY29kZUJsb2NrKQpAQCAtMTg0LDEwICsxODQsMTAgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRC
ZWZvcmUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9u
IGZ1bmN0aW9uKQorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRCZWZvcmUoY29uc3QgdHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24p
CiAgICAgewogICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2ggPSBJbmNsdWRlQnJh
bmNoOjpObzsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgd3JpdGVyOworICAgICAg
ICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyIHdyaXRlcjsKICAgICAgICAgRnJhZ21lbnQgZnJh
Z21lbnQobV9ieXRlY29kZUdlbmVyYXRvciwgd3JpdGVyLCBpbmNsdWRlQnJhbmNoKTsKICAgICAg
ICAgZnVuY3Rpb24oZnJhZ21lbnQpOwogICAgICAgICBmcmFnbWVudC5hbGlnbigpOwpAQCAtMTk1
LDEwICsxOTUsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0
aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcihjb25zdCBJbnN0cnVjdGlvblN0cmVh
bTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24sIHNpemVfdCBhbGlnbkNvbmdy
dWVudCA9IDApCisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKGNvbnN0IHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uLCBz
aXplX3QgYWxpZ25Db25ncnVlbnQgPSAwKQogICAgIHsKICAgICAgICAgSW5jbHVkZUJyYW5jaCBp
bmNsdWRlQnJhbmNoID0gSW5jbHVkZUJyYW5jaDo6Tm87Ci0gICAgICAgIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyIHdyaXRlcjsKKyAgICAgICAgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciB3cml0
ZXI7CiAgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1fYnl0ZWNvZGVHZW5lcmF0b3IsIHdyaXRl
ciwgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKICAgICAgICAg
ZnJhZ21lbnQuYWxpZ24oYWxpZ25Db25ncnVlbnQpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAgICB2b2lkIHJlcGxh
Y2VCeXRlY29kZVdpdGhGcmFnbWVudChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0
cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgdm9pZCByZXBsYWNlQnl0ZWNvZGVXaXRo
RnJhZ21lbnQoY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVj
dGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCiAgICAgewogICAgICAgICAvLyBOb3RlOiBUaGlzIGZ1
bmN0aW9uIHByZXNlcnZlcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBzdWJzZXF1ZW50IGJ5dGVjb2Rl
IChvbiB0YXJnZXRzIHdoZXJlIHRoaXMgbWF0dGVycykKICAgICAgICAgbV9pbnNlcnRpb25zLmFw
cGVuZChJbnNlcnRpb24geyBJbnNlcnRpb25Qb2ludChpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9z
aXRpb246Ok9yaWdpbmFsQnl0ZWNvZGVQb2ludCksIEluc2VydGlvbjo6VHlwZTo6UmVtb3ZlLCBJ
bmNsdWRlQnJhbmNoOjpObywgaW5zdHJ1Y3Rpb24tPnNpemUoKSwgeyB9IH0pOwpAQCAtMjE3LDEy
ICsyMTcsMTIgQEAgcHVibGljOgogCiAgICAgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgoKSB7IHJldHVy
biBtX2dyYXBoOyB9CiAKLSAgICBpbnQzMl90IGFkanVzdEFic29sdXRlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYWJzb2x1dGVPZmZzZXQpCisgICAgaW50MzJfdCBhZGp1c3RBYnNv
bHV0ZU9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYWJzb2x1dGVP
ZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Q
b2ludCgwLCBQb3NpdGlvbjo6RW50cnlQb2ludCksIEluc2VydGlvblBvaW50KGFic29sdXRlT2Zm
c2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCkpOwogICAgIH0KIAotICAgIGludDMyX3QgYWRqdXN0
SnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9yaWdpbmFsQnl0ZWNvZGVPZmZz
ZXQsIGludDMyX3Qgb3JpZ2luYWxKdW1wVGFyZ2V0KQorICAgIGludDMyX3QgYWRqdXN0SnVtcFRh
cmdldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29k
ZU9mZnNldCwgaW50MzJfdCBvcmlnaW5hbEp1bXBUYXJnZXQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludChvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0
LCBQb3NpdGlvbjo6TGFiZWxQb2ludCksIEluc2VydGlvblBvaW50KG9yaWdpbmFsSnVtcFRhcmdl
dCwgUG9zaXRpb246OkxhYmVsUG9pbnQpKTsKICAgICB9CkBAIC0yMzAsNyArMjMwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRqdXN0SnVtcFRhcmdldHMoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2gsIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyJiYgZnJhZ21lbnQpOworICAgIHZvaWQgaW5zZXJ0SW1wbChJbnNlcnRpb25Qb2lu
dCwgSW5jbHVkZUJyYW5jaCwgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYmIGZyYWdtZW50KTsK
IAogICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKICAgICB2b2lk
IGFwcGx5TW9kaWZpY2F0aW9uKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICBC
eXRlY29kZUdlbmVyYXRvciYgbV9ieXRlY29kZUdlbmVyYXRvcjsKICAgICBCeXRlY29kZUdyYXBo
JiBtX2dyYXBoOwogICAgIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBtX2NvZGVCbG9jazsK
LSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgbV93cml0ZXI7CisgICAgSlNJbnN0cnVjdGlv
blN0cmVhbVdyaXRlciYgbV93cml0ZXI7CiAgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKaW5kZXggZmI1NmQ0Y2JiNWM5ZTg3MmE5NzRmNTI1NGU2MWFiMGYwZTk3
ZmRmYi4uZDljNzJiMThkOWE3ZTdmYzM4YzMxYWYxMzljZmRhNTJjOGQzNGEzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBVU0VTIFVTRVNfT1JfREVGUwog
I2RlZmluZSBERUZTIFVTRVNfT1JfREVGUwogCi12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJ
bmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSlNJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgU2NvcGVk
TGFtYmRhPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lk
KFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1
YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQogewogCiAgICAgYXV0byBkZWZBdCA9IFsmXSAoQ2hlY2tw
b2ludCB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDdiNTJhMzkwZWNjNTM4
ZmNiNmI2MWI3NTRjMDdiZDEzODNlNzRiZmYuLjk4OGU2YzMwNjg5OGYxOGE3NTM2ZWMyYWEyMjc0
OWE2YTg5NWIxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIsIGNvbnN0
IEluc3RydWN0aW9uKiwgQ2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmlydHVh
bFJlZ2lzdGVyKT4mKTsKLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNp
Z25lZCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBDaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYpOwordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciwgY29uc3QgSlNJbnN0cnVjdGlvbiosIENoZWNrcG9pbnQs
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rlcik+Jik7Cit2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBDaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYp
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2lu
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
c3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiAo
Y29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgY29kZUJsb2Nr
LT51c2VzQ2FsbEV2YWwoKSkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgp
KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKIHsKICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKGNv
ZGVCbG9jay0+bnVtVmFycygpLCBpbnN0cnVjdGlvbiwgY2hlY2twb2ludCwgc2NvcGVkTGFtYmRh
PHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4oZnVuY3RvcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwZTU3OWY5MjkwM2I4YzhlYTc3NTU2
MTM2ZDZlNTE2YTFlNGNhNmYyLi5iMzc5Yzk3YzlkZTk3ZDcwZmY0ZjA5MTdkNzIxMDY4NmZiZDRi
ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCkKICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wR3Jh
cGgodGhpcywgaW5zdHJ1Y3Rpb25zKCksIGdyYXBoLCBvdXQsIHN0YXR1c01hcCk7CiB9CiAKLXZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAg
ICAgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJ5dGVjb2RlKHRoaXMsIG91dCwgaXQs
IHN0YXR1c01hcCk7CiB9CkBAIC00NzQsMTAgKzQ3NCwxMSBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICBicmVhazsgXAogICAgIH0KIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1dG8m
IGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9uU3RyZWFtKSB7CiAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgIG1fYnl0ZWNvZGVDb3N0
ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOworICAgICAgICBzdGF0aWNfYXNzZXJ0KE9wY29k
ZUlEV2lkdGhCeVNpemU8SlNPcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29k
ZUlEU2l6ZSA9PSAxKTsKKyAgICAgICAgbV9ieXRlY29kZUNvc3QgKz0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gKyAxOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgICAgIExJTkso
T3BHZXRCeVZhbCwgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdldFByaXZhdGVOYW1lLCBwcm9m
aWxlKQpAQCAtMjA4MCw3ICsyMDgxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5n
ZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBpbnQKIAogYm9v
bCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbikKIHsKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKKyAgICBjb25zdCBhdXRv
JiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOwogICAgIGZvciAoY29uc3QgYXV0
byYgaXQgOiBpbnN0cnVjdGlvblN0cmVhbSkgewogICAgICAgICBpZiAoaXQtPmlzPE9wRGVidWc+
KCkpIHsKICAgICAgICAgICAgIGludCB1bnVzZWQ7CkBAIC0zMDcyLDcgKzMwNzMsNyBAQCB2b2lk
IENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKQogICAgICAgICByZXR1cm4g
c3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKTsKICAgICB9OwogCi0gICAgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAg
c3dpdGNoIChvcGNvZGVJRCkgewpAQCAtMzI2Miw4ICszMjYzLDggQEAgdm9pZCBDb2RlQmxvY2s6
OnZhbGlkYXRlKCkKICAgICAgICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
blN0cmVhbSA9IGluc3RydWN0aW9ucygpOworCisgICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25T
dHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9u
IDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIGlmICghIWJhc2VsaW5lQWx0ZXJuYXRpdmUoKS0+
aGFuZGxlckZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleChpbnN0cnVjdGlvbi5vZmZzZXQo
KSkpKSB7CkBAIC0zMzExLDEzICszMzEyLDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRTdGVwcGlu
Z01vZGUoQ29kZUJsb2NrOjpTdGVwcGluZ01vZGUgbW9kZSkKICAgICAgICAgamV0dGlzb24oUHJv
ZmlsZXI6OkpldHRpc29uRHVlVG9EZWJ1Z2dlclN0ZXBwaW5nKTsKIH0KIAotaW50IENvZGVCbG9j
azo6b3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCitpbnQgQ29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAg
IGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChwYyk7CiAgICAgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9u
KiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQor
Y29uc3QgSlNJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChw
Yyk7CiAgICAgaW50IHRhcmdldCA9IG1fdW5saW5rZWRDb2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0
KG9mZnNldCk7CkBAIC0zMzM0LDcgKzMzMzUsNyBAQCBVbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJs
b2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieQog
ICAgIHJldHVybiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKIH0KIAotQmluYXJ5QXJpdGhQcm9maWxlKiBDb2Rl
QmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK0Jp
bmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7CiAg
ICAgY2FzZSBvcF9hZGQ6CkBAIC0zMzUyLDcgKzMzNTMsNyBAQCBCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1VbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2Nr
Ojp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJp
dGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewogICAgIGNhc2Ug
b3BfbmVnYXRlOgpAQCAtMzM5MSw5ICszMzkyLDkgQEAgdm9pZCBDb2RlQmxvY2s6Omluc2VydEJh
c2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAgICAgaWYgKCF1
bmxpbmtlZENvZGVCbG9jaygpLT5oYXNPcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
cygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgRml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9w
UHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CisgICAgY29uc3QgRml4ZWRWZWN0
b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgYnl0ZWNvZGVPZmZzZXRzID0gdW5saW5r
ZWRDb2RlQmxvY2soKS0+b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgb2Zmc2V0c0xlbmd0aCA9IGJ5dGVjb2RlT2Zmc2V0cy5zaXpl
KCk7IGkgPCBvZmZzZXRzTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgLy8gQmVjYXVzZSBvcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgYmFz
aWMgYmxvY2ssIGZpbmRpbmcgCisgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBm
aW5kaW5nCiAgICAgICAgIC8vIHRoZSBuZXh0IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93IHdpbGwg
Z2l2ZSB1cyB0aGUgdGV4dCByYW5nZSBvZiBhIHNpbmdsZSBiYXNpYyBibG9jay4KICAgICAgICAg
c2l6ZV90IHN0YXJ0SWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2ldOwogICAgICAgICBhdXRvIGluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoc3RhcnRJZHgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDQ5MWJiOGVlMDViMTU5NzNkNTlkZDM2M2E4
NDA1NjQ1YjZjMmMxZGQuLmNjN2UyY2RkMGI2MzQ4NzBmZDVjZDI2MzRhOWU1N2IwNDVkY2I1NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIxNSwx
MiArMjE1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKCk7CiAgICAgdm9p
ZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9
IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRT
dHJlYW0mKTsKLSAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgdm9pZCBwcmludFN0cnVjdHVyZShQcmludFN0cmVhbSYsIGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOworICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwgY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IHZvaWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBKU0luc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOwogCiAgICAgdm9pZCBkdW1wTWF0aElDU3Rh
dHMoKTsKIApAQCAtMjg4LDMyICsyODgsMzIgQEAgcHVibGljOgogICAgIHZvaWQgbGlua0luY29t
aW5nUG9seW1vcnBoaWNDYWxsKENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIFBvbHltb3JwaGljQ2Fs
bE5vZGUqKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKTsKLSAgICBpbnQgb3V0
T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKKyAgICBj
b25zdCBKU0luc3RydWN0aW9uKiBvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIHBjKTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5v
dXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiAgICAgfQotICAgIGludCBvdXRPZkxpbmVKdW1w
T2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYyk7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZz
ZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpOworICAgIGludCBvdXRP
ZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rp
b24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlv
bi5wdHIoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNv
bnN0IEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChjb25zdCBKU0luc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgIHsKICAg
ICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5hdCgw
KS5wdHIoKTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihp
bnN0cnVjdGlvbnNCZWdpbikgKyBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICBjb25z
dCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuQWRk
cmVzcyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25z
RW5kKTsKICAgICAgICAgcmV0dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KGNvbnN0IElu
c3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXgoY29uc3QgSlNJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAg
ICAgIHJldHVybiBCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KHJldHVybkFkZHJlc3MpKTsK
ICAgICB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmluc3RydWN0aW9ucygpOyB9Ci0gICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9CisgICAgY29uc3QgSlNJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmluc3RydWN0aW9ucygpOyB9CisgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25BdChCeXRlY29kZUluZGV4IGluZGV4KSBjb25zdCB7IHJldHVybiBpbnN0cnVjdGlvbnMoKS5h
dChpbmRleCkucHRyKCk7IH0KIAogICAgIHNpemVfdCBwcmVkaWN0ZWRNYWNoaW5lQ29kZVNpemUo
KTsKIApAQCAtNDI4LDggKzQyOCw4IEBAIHB1YmxpYzoKIAogICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKICAg
ICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5
dGVjb2RlSW5kZXgpOwotICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmgKaW5kZXggNTFmMWQwMmUxODI1NThjOWMyOTEyZDg0MGM1ODgxMDQ4
Y2E4MDFkOS4uNTBkNzJhNDQxZTMxYThjYTYxZTAzMzA0NDQ3ZDY3N2MzNThmMDFhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTQwLDYgKzQw
LDcgQEAgc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gOjpKU0M6Om9wY29kZUxlbmd0aHM7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCogb3Bjb2RlTmFtZXMgPSA6OkpTQzo6b3Bj
b2RlTmFtZXM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNoZWNrcG9pbnRDb3VudFRhYmxl
ID0gYnl0ZWNvZGVDaGVja3BvaW50Q291bnRUYWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9w
Y29kZVNpemUgbWF4T3Bjb2RlSURXaWR0aCA9IG1heEpTT3Bjb2RlSURXaWR0aDsKIH07CiAKIHN0
cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKQEAgLTUyLDEyICs1MywxMiBAQCBzdHJ1Y3QgV2FzbU9w
Y29kZVRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2Rl
TGVuZ3RocyA9IHdhc21PcGNvZGVMZW5ndGhzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
Y2hhciogY29uc3QqIG9wY29kZU5hbWVzID0gd2FzbU9wY29kZU5hbWVzOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjaGVja3BvaW50Q291bnRUYWJsZSA9IHdhc21DaGVja3BvaW50Q291bnRU
YWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgbWF4T3Bjb2RlSURXaWR0aCA9
IG1heFdhc21PcGNvZGVJRFdpZHRoOwogfTsKIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGU+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uIHsKLQog
ICAgIHN0cnVjdCBNZXRhZGF0YSB7IH07CiAKIHByb3RlY3RlZDoKQEAgLTY4LDEyMSArNjksMTI0
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBXaWR0aD4KICAgICBjbGFzcyBJ
bXBsIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgICAgICB0eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEIG9wY29kZUlE
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRD4o
bV9vcGNvZGUpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBUeXBlQnlTaXpl
PE9wY29kZVNpemU6Ok5hcnJvdz46OnVuc2lnbmVkVHlwZSBtX29wY29kZTsKKyAgICAgICAgdHlw
ZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIFdpZHRoPjo6b3Bjb2RlVHlwZSBtX29w
Y29kZTsKICAgICB9OwogCiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0g
SlNPcGNvZGVUcmFpdHM+CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBvcGNvZGVJRCgp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRzPigpKQotICAgICAgICAg
ICAgcmV0dXJuIHdpZGUzMjxUcmFpdHM+KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKTsK
LSAgICAgICAgaWYgKGlzV2lkZTE2PFRyYWl0cz4oKSkKLSAgICAgICAgICAgIHJldHVybiB3aWRl
MTY8VHJhaXRzPigpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCk7Ci0gICAgICAgIHJldHVy
biBuYXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpOworICAgICAgICBpZiAoaXNX
aWRlMzIoKSkKKyAgICAgICAgICAgIHJldHVybiB3aWRlMzIoKS0+b3Bjb2RlSUQoKTsKKyAgICAg
ICAgaWYgKGlzV2lkZTE2KCkpCisgICAgICAgICAgICByZXR1cm4gd2lkZTE2KCktPm9wY29kZUlE
KCk7CisgICAgICAgIHJldHVybiBuYXJyb3coKS0+b3Bjb2RlSUQoKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBUcmFpdHM6Om9wY29kZU5hbWVz
W29wY29kZUlEPFRyYWl0cz4oKV07CisgICAgICAgIHJldHVybiBUcmFpdHM6Om9wY29kZU5hbWVz
W29wY29kZUlEKCldOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaXNXaWRlMTYoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3
aWRlMTY7CisgICAgICAgIHJldHVybiBuYXJyb3coKS0+b3Bjb2RlSUQoKSA9PSBUcmFpdHM6Ondp
ZGUxNjsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGlzV2lkZTMyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBu
YXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRyYWl0czo6d2lkZTMyOwor
ICAgICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAg
ICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8
VHJhaXRzPigpKQorICAgICAgICBpZiAoaXNXaWRlMzIoKSkKICAgICAgICAgICAgIHJldHVybiBP
cGNvZGVTaXplOjpXaWRlMzI7Ci0gICAgICAgIHJldHVybiBpc1dpZGUxNjxUcmFpdHM+KCkgPyBP
cGNvZGVTaXplOjpXaWRlMTYgOiBPcGNvZGVTaXplOjpOYXJyb3c7CisgICAgICAgIHJldHVybiBp
c1dpZGUxNigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93OwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAg
IGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wY29kZUlE
PFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CisgICAg
ICAgIHJldHVybiBvcGNvZGVJRCgpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRh
ZGF0YTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aENo
ZWNrcG9pbnRzOworICAgICAgICByZXR1cm4gb3Bjb2RlSUQoKSA8IFRyYWl0czo6bnVtYmVyT2ZC
eXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGVja3BvaW50
cygpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0NoZWNrcG9pbnRzPFRyYWl0cz4oKSkK
KyAgICAgICAgaWYgKCFoYXNDaGVja3BvaW50cygpKQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRhYmxlW29wY29kZUlEPFRyYWl0
cz4oKV07CisgICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRhYmxlW29wY29k
ZUlEKCldOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2Rl
VHJhaXRzPgogICAgIGludCBzaXplU2hpZnRBbW91bnQoKSBjb25zdAogICAgIHsKLSAgICAgICAg
aWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMjsKLSAgICAgICAgaWYgKGlzV2lkZTE2PFRyYWl0cz4oKSkKKyAgICAgICAg
aWYgKGlzV2lkZTE2KCkpCiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+
CisgICAgT3Bjb2RlU2l6ZSBvcGNvZGVJRFdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChpc1dpZGUzMigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJh
aXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemU7CisgICAgICAgIGlmIChpc1dp
ZGUxNigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBP
cGNvZGVTaXplOjpXaWRlMTY+OjpvcGNvZGVJRFNpemU7CisgICAgICAgIHJldHVybiBPcGNvZGVJ
RFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6b3Bjb2RlSURTaXplOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIG9wY29kZUlEQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICh1bnNpZ25lZCkgb3Bjb2RlSURXaWR0aCgpOworICAgIH0KKwogICAgIHNpemVf
dCBzaXplKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gc2l6ZVNoaWZ0QW1vdW50ID0gdGhp
cy0+c2l6ZVNoaWZ0QW1vdW50PFRyYWl0cz4oKTsKKyAgICAgICAgYXV0byBzaXplU2hpZnRBbW91
bnQgPSB0aGlzLT5zaXplU2hpZnRBbW91bnQoKTsKICAgICAgICAgc2l6ZV90IHByZWZpeFNpemUg
PSBzaXplU2hpZnRBbW91bnQgPyAxIDogMDsKICAgICAgICAgc2l6ZV90IG9wZXJhbmRTaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBzaXplU2hpZnRBbW91bnQ7Ci0gICAgICAgIHNpemVf
dCBzaXplT2ZCeXRlY29kZSA9IDE7Ci0gICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIChU
cmFpdHM6Om9wY29kZUxlbmd0aHNbb3Bjb2RlSUQ8VHJhaXRzPigpXSAtIDEpICogb3BlcmFuZFNp
emUgKyBwcmVmaXhTaXplOworICAgICAgICBzaXplX3Qgc2l6ZU9mQnl0ZWNvZGUgPSBvcGNvZGVJ
REJ5dGVzKCk7CisgICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIFRyYWl0czo6b3Bjb2Rl
TGVuZ3Roc1tvcGNvZGVJRCgpXSAqIG9wZXJhbmRTaXplICsgcHJlZml4U2l6ZTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4K
KyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIGJvb2wgaXMoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUOjpvcGNvZGVJRDsKKyAgICAgICAgcmV0
dXJuIG9wY29kZUlEKCkgPT0gVDo6b3Bjb2RlSUQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xh
c3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8Y2xh
c3MgVD4KICAgICBUIGFzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoaXM8VCwgVHJh
aXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAgICByZXR1cm4gVDo6
ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRoLCB0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRo
PgogICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoaXM8
VCwgVHJhaXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAgICByZXR1
cm4gVChyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB0eXBlbmFtZSBUeXBlQnlTaXplPHdpZHRo
Pjo6dW5zaWduZWRUeXBlKj4odGhpcyArICh3aWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cgPyAx
IDogMikpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFQqIGNhc3QoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgQVNTRVJU
KChpczxUPigpKSk7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KHRoaXMpOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJh
aXRzPgorICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgY29uc3QgVCogY2FzdCgpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAgICAgICBBU1NFUlQo
KGlzPFQ+KCkpKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHRo
aXMpOwogICAgIH0KIApAQCAtMTkxLDI5ICsxOTUsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6Ok5hcnJvdz4qPih0aGlz
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0
cz4KICAgICBjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qIHdpZGUxNigpIGNvbnN0CiAg
ICAgewotCi0gICAgICAgIEFTU0VSVChpc1dpZGUxNjxUcmFpdHM+KCkpOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZigqdGhpcykgPT0gMSwgIlBvaW50ZXIgbWF0aCIpOworICAgICAgICBB
U1NFUlQoaXNXaWRlMTYoKSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBjb25zdCBJbXBsPE9w
Y29kZVNpemU6OldpZGUzMj4qIHdpZGUzMigpIGNvbnN0CiAgICAgewotCi0gICAgICAgIEFTU0VS
VChpc1dpZGUzMjxUcmFpdHM+KCkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZigqdGhp
cykgPT0gMSwgIlBvaW50ZXIgbWF0aCIpOworICAgICAgICBBU1NFUlQoaXNXaWRlMzIoKSk7CiAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lk
ZTMyPio+KHRoaXMgKyAxKTsKICAgICB9CiB9OwogCi1zdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJs
aWMgQmFzZUluc3RydWN0aW9uPE9wY29kZUlEPiB7Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2Yo
SW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBt
YXRoIik7Ci0KLXN0cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdh
c21PcGNvZGVJRD4gewotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0g
MSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKK3VzaW5nIEpT
SW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgV2Fz
bUluc3RydWN0aW9uICA9IEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2RlVHJhaXRzPjsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKEpTSW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMg
dGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAKaW5k
ZXggMzhjYWY5NWZkOWUwNjEwNTNlMTM1YTU5ZmUxYTNjNzVmODVhODVkMy4uNTM1NDI5N2NkZmE2
Yjc5ZDA2NmFhMTM3MWZlODA2OGRiMTQ1ZTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBAIC0zMCwyMCArMzAsNCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihJbnN0cnVjdGlvblN0cmVhbSk7CiAKLUluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0
cmVhbShJbnN0cnVjdGlvbkJ1ZmZlciYmIGluc3RydWN0aW9ucykKLSAgICA6IG1faW5zdHJ1Y3Rp
b25zKFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSkKLXsgfQotCi1zaXplX3QgSW5zdHJ1Y3Rpb25TdHJl
YW06OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6
ZSgpOwotfQotCi1ib29sIEluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyhJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pIGNvbnN0Ci17Ci0KLSAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gYml0
d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnN0cnVjdGlvbik7Ci0gICAgcmV0dXJuIHBvaW50
ZXIgPj0gbV9pbnN0cnVjdGlvbnMuZGF0YSgpICYmIHBvaW50ZXIgPCAobV9pbnN0cnVjdGlvbnMu
ZGF0YSgpICsgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAppbmRleCAzZTk3OGQz
MzJkNThkNzBhNTI5ZDI4ZjA1MjY2NDQ4Y2ZmNzZlYjEwLi5jZTY3ZGNmMmQwNWQwMThhN2UxNDlk
OWVlMGY3MTk2YTM2YWMwM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaApAQCAtMzQsMTUgKzM0LDE5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihJbnN0cnVjdGlv
blN0cmVhbSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KIGNsYXNzIElu
c3RydWN0aW9uU3RyZWFtIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGZy
aWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwogICAgIGZyaWVuZCBjbGFz
cyBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTsKIHB1YmxpYzoKICAgICB1c2luZyBJbnN0cnVjdGlv
bkJ1ZmZlciA9IFZlY3Rvcjx1aW50OF90LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYsIElu
c3RydWN0aW9uU3RyZWFtTWFsbG9jPjsKIAotICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
OworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9pbnN0cnVjdGlvbnMuc2l6ZSgpOworICAgIH0KIAogICAgIHVzaW5nIE9mZnNldCA9IHVuc2ln
bmVkOwogCkBAIC01MSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgQmFzZVJlZiB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFz
cyBJbnN0cnVjdGlvblN0cmVhbTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgQmFzZVJlZihjb25z
dCBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiYgb3RoZXIpCkBAIC02NSw4ICs2OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX2luZGV4ID0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQog
Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIHVud3JhcCgpOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogcHRy
KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IEluc3Ry
dWN0aW9uVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAg
ICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHB0cigpIGNvbnN0IHsgcmV0dXJuIHVu
d3JhcCgpOyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJhc2VSZWY8SW5zdHJ1
Y3Rpb25CdWZmZXI+JiBvdGhlcikgY29uc3QKICAgICAgICAgewpAQCAtODcsNyArOTEsNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlu
bGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5k
ZXhdKTsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBCYXNlUmVmKEluc3RydWN0aW9uQnVm
ZmVyJiBpbnN0cnVjdGlvbnMsIHNpemVfdCBpbmRleCkKQEAgLTEwMywzMyArMTA3LDM2IEBAIHB1
YmxpYzoKICAgICB1c2luZyBSZWYgPSBCYXNlUmVmPGNvbnN0IEluc3RydWN0aW9uQnVmZmVyPjsK
IAogICAgIGNsYXNzIE11dGFibGVSZWYgOiBwdWJsaWMgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZl
cj4gewotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0
ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVzaW5nIEJhc2VSZWY8SW5zdHJ1Y3Rpb25C
dWZmZXI+OjpCYXNlUmVmOworICAgICAgICB1c2luZyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVy
Pjo6bV9pbmRleDsKKyAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj46Om1f
aW5zdHJ1Y3Rpb25zOwogCiAgICAgcHVibGljOgogICAgICAgICBSZWYgZnJlZXplKCkgY29uc3Qg
IHsgcmV0dXJuIFJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX2luZGV4IH07IH0KLSAgICAgICAgaW5s
aW5lIEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gdW53cmFwKCk7IH0KLSAgICAg
ICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
dW53cmFwKCk7IH0KLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiBwdHIoKSB7IHJldHVybiB1
bndyYXAoKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHB0cigpIGNvbnN0
IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlubGluZSBJbnN0cnVjdGlvblR5cGUqIG9w
ZXJhdG9yLT4oKSB7IHJldHVybiB1bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgY29uc3QgSW5z
dHJ1Y3Rpb25UeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAg
ICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlwZSogcHRyKCkgeyByZXR1cm4gdW53cmFwKCk7IH0K
KyAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uVHlwZSogcHRyKCkgY29uc3QgeyByZXR1
cm4gdW53cmFwKCk7IH0KICAgICAgICAgaW5saW5lIG9wZXJhdG9yIFJlZigpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBSZWYgeyBtX2luc3RydWN0aW9ucywgbV9pbmRleCB9OwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIHVud3Jh
cCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlv
bnNbbV9pbmRleF0pOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogdW53cmFw
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KCZt
X2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0KKyAgICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlw
ZSogdW53cmFwKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvblR5cGUqPigm
bV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVj
dGlvblR5cGUqIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
SW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5kZXhdKTsgfQogICAgIH07CiAK
IHByaXZhdGU6CiAgICAgY2xhc3MgaXRlcmF0b3IgOiBwdWJsaWMgUmVmIHsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4g
ZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOwogCiAgICAgcHVibGljOgogICAgICAgICB1
c2luZyBSZWY6OlJlZjsKKyAgICAgICAgdXNpbmcgUmVmOjptX2luZGV4OwogCiAgICAgICAgIFJl
ZiYgb3BlcmF0b3IqKCkKICAgICAgICAgewpAQCAtMTQ0LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpcyAr
PSB0aGlzLT5wdHIoKS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMTc2LDE5ICsx
ODMsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuZGF0YSgpOwog
ICAgIH0KIAotICAgIGJvb2wgY29udGFpbnMoSW5zdHJ1Y3Rpb24qKSBjb25zdDsKKyAgICBib29s
IGNvbnRhaW5zKEluc3RydWN0aW9uVHlwZSogaW5zdHJ1Y3Rpb24pIGNvbnN0CisgICAgeworICAg
ICAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBwb2ludGVyID49IG1faW5zdHJ1Y3Rpb25z
LmRhdGEoKSAmJiBwb2ludGVyIDwgKG1faW5zdHJ1Y3Rpb25zLmRhdGEoKSArIG1faW5zdHJ1Y3Rp
b25zLnNpemUoKSk7CisgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSW5zdHJ1Y3Rp
b25TdHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJik7CisgICAgZXhwbGljaXQgSW5zdHJ1Y3Rpb25T
dHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJiBpbnN0cnVjdGlvbnMpCisgICAgICAgIDogbV9pbnN0
cnVjdGlvbnMoV1RGTW92ZShpbnN0cnVjdGlvbnMpKQorICAgIHsgfQogCiAgICAgSW5zdHJ1Y3Rp
b25CdWZmZXIgbV9pbnN0cnVjdGlvbnM7CiB9OwogCi1jbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciA6IHB1YmxpYyBJbnN0cnVjdGlvblN0cmVhbSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0
cnVjdGlvblR5cGU+CitjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciA6IHB1YmxpYyBJbnN0
cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+IHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNv
ZGVSZXdyaXRlcjsKIHB1YmxpYzoKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVj
dGlvblR5cGU+OjpJbnN0cnVjdGlvblN0cmVhbTsKKyAgICB1c2luZyB0eXBlbmFtZSBJbnN0cnVj
dGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpJbnN0cnVjdGlvbkJ1ZmZlcjsKKyAgICB1c2lu
ZyB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpNdXRhYmxlUmVm
OworICAgIHVzaW5nIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46
Ok9mZnNldDsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+Ojpt
X2luc3RydWN0aW9uczsKKwogICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyKCkKLSAgICAgICAg
OiBJbnN0cnVjdGlvblN0cmVhbSh7IH0pCisgICAgICAgIDogSW5zdHJ1Y3Rpb25TdHJlYW08SW5z
dHJ1Y3Rpb25UeXBlPih7IH0pCiAgICAgeyB9CiAKICAgICB2b2lkIHNldEluc3RydWN0aW9uQnVm
ZmVyKEluc3RydWN0aW9uQnVmZmVyJiYgYnVmZmVyKQpAQCAtMjYxLDE0ICsyODEsMTQgQEAgcHVi
bGljOgogICAgICAgICBtX3Bvc2l0aW9uID0gcmVmLm9mZnNldCgpOwogICAgIH0KIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gZmluYWxpemUoKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiBmaW5hbGl6ZSgpCiAg
ICAgewogICAgICAgICBtX2ZpbmFsaXplZCA9IHRydWU7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25z
LnNocmlua1RvRml0KCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rp
b25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtKFdURk1vdmUobV9pbnN0cnVjdGlvbnMp
KSB9OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPElu
c3RydWN0aW9uVHlwZT4+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT4o
V1RGTW92ZShtX2luc3RydWN0aW9ucykpIH07CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEluc3RydWN0aW9uU3RyZWFtPiBmaW5hbGl6ZShJbnN0cnVjdGlvbkJ1ZmZlciYgdXNlZEJ1ZmZl
cikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBl
Pj4gZmluYWxpemUoSW5zdHJ1Y3Rpb25CdWZmZXImIHVzZWRCdWZmZXIpCiAgICAgewogICAgICAg
ICBtX2ZpbmFsaXplZCA9IHRydWU7CiAKQEAgLTI3OCw3ICsyOTgsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgdXNlZEJ1ZmZlciA9IFdURk1vdmUobV9pbnN0cnVjdGlvbnMpOwogCi0gICAgICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9u
U3RyZWFtKFdURk1vdmUocmVzdWx0QnVmZmVyKSkgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiB7IG5ldyBJbnN0cnVj
dGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+KFdURk1vdmUocmVzdWx0QnVmZmVyKSkgfTsKICAg
ICB9CiAKICAgICBNdXRhYmxlUmVmIHJlZigpCkBAIC0yODYsNyArMzA2LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gTXV0YWJsZVJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX3Bvc2l0aW9uIH07
CiAgICAgfQogCi0gICAgdm9pZCBzd2FwKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBvdGhlcikK
KyAgICB2b2lkIHN3YXAoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI8SW5zdHJ1Y3Rpb25UeXBlPiYg
b3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9maW5hbGl6ZWQsIG90aGVyLm1fZmlu
YWxpemVkKTsKICAgICAgICAgc3RkOjpzd2FwKG1fcG9zaXRpb24sIG90aGVyLm1fcG9zaXRpb24p
OwpAQCAtMjk1LDEwICszMTUsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNsYXNzIGl0
ZXJhdG9yIDogcHVibGljIE11dGFibGVSZWYgewotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXI7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xh
c3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVz
aW5nIE11dGFibGVSZWY6Ok11dGFibGVSZWY7CisgICAgICAgIHVzaW5nIE11dGFibGVSZWY6Om1f
aW5kZXg7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIE11dGFibGVSZWYmIG9wZXJhdG9yKigpCkBA
IC0zMTQsNyArMzM1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3Ir
KygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpcyArPSBwdHIoKS0+c2l6ZSgp
OworICAgICAgICAgICAgcmV0dXJuICp0aGlzICs9IHRoaXMtPnB0cigpLT5zaXplKCk7CiAgICAg
ICAgIH0KICAgICB9OwogCkBAIC0zMzQsNSArMzU1LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
ZmluYWxpemVkIHsgZmFsc2UgfTsKIH07CiAKK3VzaW5nIEpTSW5zdHJ1Y3Rpb25TdHJlYW0gPSBJ
bnN0cnVjdGlvblN0cmVhbTxKU0luc3RydWN0aW9uPjsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb25TdHJl
YW1Xcml0ZXIgPSBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjxKU0luc3RydWN0aW9uPjsKK3VzaW5n
IFdhc21JbnN0cnVjdGlvblN0cmVhbSA9IEluc3RydWN0aW9uU3RyZWFtPFdhc21JbnN0cnVjdGlv
bj47CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCmluZGV4IDZjMDczY2Y2NzZhYmQ2ODBiZjNjM2Y3NGMxZTFmMTA0NDg4OWQ3N2EuLjQz
NDhjZTdhODM3MTA2MWU2ZjVkY2ZkYjNkNWJjZWMxMTM2Zjc1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJ5
dGVjb2Rlcy5oIgogI2luY2x1ZGUgIkxMSW50T3Bjb2RlLmgiCisjaW5jbHVkZSAiT3Bjb2RlU2l6
ZS5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtODgs
MTAgKzg5LDE0IEBAIGV4dGVybiBjb25zdCB1bnNpZ25lZCB3YXNtT3Bjb2RlTGVuZ3Roc1tdOwog
ICAgIEZPUl9FQUNIX1dBU01fSUQoT1BDT0RFX0lEX0xFTkdUSFMpOwogI3VuZGVmIE9QQ09ERV9J
RF9MRU5HVEhTCiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4SlNPcGNvZGVMZW5ndGgg
PSAvKiBPcGNvZGUgKi8gMSArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8qIE9wZXJhbmRzICov
IChNQVhfTEVOR1RIX09GX0JZVEVDT0RFX0lEUyAtIDEpICogNDsKLXN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4V2FzbU9wY29kZUxlbmd0aCA9IC8qIE9wY29kZSAqLyAxICsgLyogV2lkZTMy
IE9wY29kZSAqLyAxICsgLyogT3BlcmFuZHMgKi8gKE1BWF9MRU5HVEhfT0ZfV0FTTV9JRFMgLSAx
KSAqIDQ7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE9wY29kZUxlbmd0aCA9IHN0ZDo6
bWF4KG1heEpTT3Bjb2RlTGVuZ3RoLCBtYXhXYXNtT3Bjb2RlTGVuZ3RoKTsKLXN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6OmdldE1TQlNl
dENvbnN0ZXhwcihtYXhPcGNvZGVMZW5ndGgpICsgMTsKK3N0YXRpY19hc3NlcnQoTlVNQkVSX09G
X0JZVEVDT0RFX0lEUyA8IDI1NSk7CitzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgbWF4SlNP
cGNvZGVJRFdpZHRoID0gT3Bjb2RlU2l6ZTo6TmFycm93Oworc3RhdGljX2Fzc2VydChOVU1CRVJf
T0ZfV0FTTV9JRFMgPCAyNTUpOworc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG1heFdhc21P
cGNvZGVJRFdpZHRoID0gT3Bjb2RlU2l6ZTo6V2lkZTE2OyAvLyBGSVhNRTogY2hhbmdlIHRoaXMg
YmFjayBvbmNlIEVXUyBwYXNzZXMuCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEpTQnl0
ZWNvZGVTdHJ1Y3RMZW5ndGggPSAvKiBPcGNvZGUgKi8gbWF4SlNPcGNvZGVJRFdpZHRoICsgLyog
V2lkZTMyIE9wY29kZSAqLyAxICsgLyogT3BlcmFuZHMgKi8gTUFYX0xFTkdUSF9PRl9CWVRFQ09E
RV9JRFMgKiA0Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhXYXNtQnl0ZWNvZGVTdHJ1
Y3RMZW5ndGggPSAvKiBPcGNvZGUgKi8gbWF4V2FzbU9wY29kZUlEV2lkdGggKyAvKiBXaWRlMzIg
T3Bjb2RlICovIDEgKyAvKiBPcGVyYW5kcyAqLyBNQVhfTEVOR1RIX09GX1dBU01fSURTICogNDsK
K3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPSBzdGQ6
Om1heChtYXhKU0J5dGVjb2RlU3RydWN0TGVuZ3RoLCBtYXhXYXNtQnl0ZWNvZGVTdHJ1Y3RMZW5n
dGgpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aEZvck1heEJ5dGVjb2RlU3Ry
dWN0TGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIobWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5n
dGgpICsgMTsKIAogI2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKG1h
Y3JvKSBcCiAgICAgbWFjcm8oT3BDYWxsVmFyYXJncykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmgKaW5kZXggNGEyYWY2YTEwNmE0Nzk0NmM4OGMw
OWRlOGM1YzFkMDE5MWVmNjFlNy4uOGI3YzYzZjVkYTcyYTEyZTk3ZWJkNmNkN2I1Zjk3NjNkYTBk
YjRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlSW5saW5l
cy5oCkBAIC01NCw3ICs1NCw3IEBAIGlubGluZSBib29sIGlzT3Bjb2RlU2hhcGUoT3Bjb2RlSUQg
b3Bjb2RlSUQpCiB9CiAKIHRlbXBsYXRlPE9wY29kZVNoYXBlIHNoYXBlLCB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c2hhcGUgIT0gQW55T3Bjb2RlU2hhcGU+PgotaW5saW5lIGJvb2wgaXNP
cGNvZGVTaGFwZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCitpbmxpbmUgYm9vbCBp
c09wY29kZVNoYXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIHJl
dHVybiBpc09wY29kZVNoYXBlPHNoYXBlPihpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaAppbmRleCAyNGIxNjJi
OTNmNzllODRhMGQxODY0MjMxYWNkYmQ3M2U1OWFhMDYzLi5hNjUzYTk2Yjg3ODJmYmVlYjRjMWZk
YzRjN2UyOGE2YmVlOGQzNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlU2l6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGVTaXplLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gT3Bjb2RlU2l6ZSB7CkBA
IC03Miw0ICs3NCwyNSBAQCBzdHJ1Y3QgUGFkZGluZ0J5U2l6ZTxPcGNvZGVTaXplOjpXaWRlMzI+
IHsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsdWUgPSAxOwogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgVHJhaXRzLCBPcGNvZGVTaXplPgorc3RydWN0IE9wY29kZUlEV2lkdGhCeVNp
emU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KK3N0cnVjdCBPcGNvZGVJRFdpZHRoQnlT
aXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6TmFycm93PiB7CisgICAgdXNpbmcgb3Bjb2RlVHlwZSA9
IHVpbnQ4X3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG9wY29kZUlEU2l6ZSA9
IE9wY29kZVNpemU6Ok5hcnJvdzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KK3N0
cnVjdCBPcGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTE2PiB7Cisg
ICAgdXNpbmcgb3Bjb2RlVHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8VHJhaXRzOjpt
YXhPcGNvZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdywgdWludDhfdCwgdWludDE2X3Q+
Ojp0eXBlOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBvcGNvZGVJRFNpemUgPSBz
dGF0aWNfY2FzdDxPcGNvZGVTaXplPihzaXplb2Yob3Bjb2RlVHlwZSkpOworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVHJhaXRzPgorc3RydWN0IE9wY29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBP
cGNvZGVTaXplOjpXaWRlMzI+IHsKKyAgICB1c2luZyBvcGNvZGVUeXBlID0gdHlwZW5hbWUgc3Rk
Ojpjb25kaXRpb25hbDxUcmFpdHM6Om1heE9wY29kZUlEV2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFy
cm93LCB1aW50OF90LCB1aW50MTZfdD46OnR5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNv
ZGVTaXplIG9wY29kZUlEU2l6ZSA9IHN0YXRpY19jYXN0PE9wY29kZVNpemU+KHNpemVvZihvcGNv
ZGVUeXBlKSk7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZDJlODUw
NmM0YzQyNmJiYjdhYjU0NTg0N2M5MjM0MDMzNDRkOWIxNi4uZDhhNzYxMGY3M2UzN2NmNzM4NDcz
NmIwYWY3OTMwNjExMjNkYjZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2Nr
Pgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCitzdGF0aWMgdm9pZCBn
ZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3Rvcjx0eXBlbmFt
ZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAg
ZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgWyZdKGludDMyX3QgcmVsYXRpdmVPZmZzZXQpIHsKICAgICAgICAgb3V0LmFwcGVuZChp
bnN0cnVjdGlvbi5vZmZzZXQoKSArIHJlbGF0aXZlT2Zmc2V0KTsKQEAgLTU0LDcgKzU0LDcgQEAg
ZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSB7CiB9OwogCiB0ZW1wbGF0
ZTxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSBNb2RlLCB0eXBlbmFtZSBCbG9jaywgc2l6
ZV90IHZlY3RvclNpemU+Ci12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChC
bG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBW
ZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgdmVjdG9yU2l6ZT4mIG91dCkKK3ZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHR5cGVuYW1lIEpTSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQo
b3V0LmlzRW1wdHkoKSk7CiAKQEAgLTg4LDMyICs4OCwzMiBAQCB2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbQogICAgIG91dC5zaHJpbmtDYXBhY2l0eSh0b0luZGV4KTsKIH0KIAotdm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQogewogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJ
bnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xh
aW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSwgb3V0KTsKIH0KIAotdm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgMzI+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywg
VmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpCiB7
CiAgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlv
bnMsIG91dCk7CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5z
dHJ1Y3Rpb25zLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iq
IGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0
b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCkKIHsKICAg
ICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywg
b3V0KTsKIH0KIAotdm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvdXQpCit2b2lkIHJl
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29k
ZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvdXQpCiB7CiAgICAgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2Rl
OjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogfQogCi12b2lk
IGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCAxPiYgb3V0KQogewogICAgIGdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24o
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3V0KTsKIH0KIAotdm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JJbnN0cnVjdGlvbihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3Rvcjx0eXBlbmFtZSBK
U0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpCiB7CiAgICAgZ2V0SnVtcFRhcmdl
dHNGb3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvdXQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmlu
ZGV4IGYxNzVlMmNjYTdkYTEyOGVhNDViMmIxMzdhM2I5YjgwNjY1MTYyYjAuLmQ4ZWEwZmRjNGU5
NGYzNzE5N2YwNjc5ZjI1ZjBiMGFjOWZhNzZlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMyLDEzICszMiwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogCiAvLyBSZXR1cm4g
YSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24g
b2YgYSBqdW1wLgotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZl
Y3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Ci12b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KTsK
LXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ciosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91
dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgY29uc3QgSlNJ
bnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBKU0luc3RydWN0aW9uU3Ry
ZWFtJiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBv
dXQpOwogCi12b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvciosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQ+JiBvdXQpOwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwg
VmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIG91dCk7CiAKLXZv
aWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYg
b3V0KTsKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgVmVjdG9yPEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFt
OjpSZWYmLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYg
b3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IqLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmLCBW
ZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAppbmRleCAwYmQ0MDM5ODQ1MmQ5
Y2VmNjUwYzg0OWVhN2UyZTNkYzczNjY0ZGM1Li5mN2VmYWJiZDk0MzhkMDhmYjA2NDMzMzg5MzQ0
ZjRhYWM5MmEyN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKQEAgLTkwLDcgKzkwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+Ci1pbmxpbmUgaW50IGp1
bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgdGFyZ2V0KQoraW5saW5lIGludCBq
dW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgdGFyZ2V0KQog
ewogICAgIGlmICh0YXJnZXQpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CkBAIC05OCw3ICs5OCw3
IEBAIGlubGluZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hN
YXA+Ci1pbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihIYXNoTWFwJiBvdXRPZkxp
bmVKdW1wVGFyZ2V0cywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24s
IHVuc2lnbmVkIHRhcmdldCkKK2lubGluZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEhh
c2hNYXAmIG91dE9mTGluZUp1bXBUYXJnZXRzLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCB1bnNpZ25lZCB0YXJnZXQpCiB7CiAgICAgaWYgKHRh
cmdldCkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKQEAgLTEwNywxNCArMTA3LDE0IEBAIGlubGlu
ZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEhhc2hNYXAmIG91dE9mTGluZUp1bXBUYXJn
ZXRzLCBjb25zdCBJbnN0cnVjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBC
bG9jaz4KLWlubGluZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKK2lubGluZSBp
bnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2NrLCBjb25zdCB0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgcmV0dXJuIGp1bXBUYXJnZXRG
b3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0aW9uPgot
aW5saW5lIHZvaWQgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2sm
JiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBj
b25zdCBGdW5jdGlvbiYgZnVuY3Rpb24pCitpbmxpbmUgdm9pZCBleHRyYWN0U3RvcmVkSnVtcFRh
cmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJ
bnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0
aW9uKQogewogI2RlZmluZSBDQVNFX09QKF9fb3ApIFwKICAgICBjYXNlIF9fb3A6Om9wY29kZUlE
OiBcCkBAIC0xMzUsNyArMTM1LDcgQEAgU1dJVENIX0pNUChDQVNFX09QLCBTV0lUQ0hfQ0FTRSwg
U1dJVENIX0RFRkFVTFRfT0ZGU0VUKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlw
ZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIENvZGVCbG9ja09ySGFzaE1hcD4KLWlubGluZSB2b2lk
IHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0
cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0aW9uLCBDb2RlQmxvY2tPckhhc2hNYXAmIGNv
ZGVCbG9ja09ySGFzaE1hcCkKK2lubGluZSB2b2lkIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9y
SW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCB0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uLCBjb25zdCBG
dW5jdGlvbiYgZnVuY3Rpb24sIENvZGVCbG9ja09ySGFzaE1hcCYgY29kZUJsb2NrT3JIYXNoTWFw
KQogewogI2RlZmluZSBDQVNFX09QKF9fb3ApIFwKICAgICBjYXNlIF9fb3A6Om9wY29kZUlEOiB7
IFwKQEAgLTE3MSw3ICsxNzEsNyBAQCBTV0lUQ0hfSk1QKENBU0VfT1AsIFNXSVRDSF9DQVNFLCBT
V0lUQ0hfREVGQVVMVF9PRkZTRVQpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBl
bmFtZSBGdW5jdGlvbj4KLWlubGluZSB2b2lkIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5z
dHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgZmluYWxPZmZzZXQsIEluc3RydWN0
aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbikKK2lu
bGluZSB2b2lkIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNv
ZGVCbG9jaywgdW5zaWduZWQgZmluYWxPZmZzZXQsIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIHVw
ZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBmaW5hbE9mZnNl
dCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0aW9uLCBjb2RlQmxvY2spOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYWM1
NzEyN2JjZjg5MDcyYmUwMzg0MTZkYTEzOWI0MWYxNjRhZTYxNC4uYTlhZjdjZjQzMWZkNGMzZjUw
NWNlODBjMGZmNWEyNDMyNDIxNTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgaW5s
aW5lIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmdldExpbmVBbmRDb2x1bW4oY29uc3QgRXhwcmVz
c2lvblJhbmdlSW5mbyYgaW5mbywKIH0KIAogI2lmbmRlZiBOREVCVUcKLXN0YXRpYyB2b2lkIGR1
bXBMaW5lQ29sdW1uRW50cnkoc2l6ZV90IGluZGV4LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYg
aW5zdHJ1Y3Rpb25TdHJlYW0sIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBs
aW5lLCB1bnNpZ25lZCBjb2x1bW4pCitzdGF0aWMgdm9pZCBkdW1wTGluZUNvbHVtbkVudHJ5KHNp
emVfdCBpbmRleCwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0s
IHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1
bW4pCiB7CiAgICAgY29uc3QgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uU3RyZWFtLmF0
KGluc3RydWN0aW9uT2Zmc2V0KTsKICAgICBjb25zdCBjaGFyKiBldmVudCA9ICIiOwpAQCAtMjk0
LDcgKzI5NCw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjp+VW5saW5rZWRDb2RlQmxvY2soKQogICAg
IH0KIH0KIAotY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0
cnVjdGlvbnMoKSBjb25zdAorY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2Rl
QmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faW5zdHJ1Y3Rpb25z
LmdldCgpKTsKICAgICByZXR1cm4gKm1faW5zdHJ1Y3Rpb25zOwpAQCAtMzMyLDcgKzMzMiw3IEBA
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgVW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KENvZGVCbG9jayogY29kCiAgICAgcmV0dXJuICptX2xpdmVuZXNzOwogfQogCi1p
bnQgVW5saW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK2ludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZM
aW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNv
ZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMo
Ynl0ZWNvZGVPZmZzZXQpKTsKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQo
Ynl0ZWNvZGVPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAxYzU5MDQyZTBkMGMzODExYjNjOWJlMjE1OGNkYzU0
YzAxZGJiODFjLi45NDFiZjNhOWJmZDIyYzY5Y2Q2ZWJmZTg2ZjhkMjlkZGU1MWY3ZWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aApAQCAtMjExLDEyICsyMTEsMTIgQEAgcHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJC
aW5kaW5nKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNQYXJzZXJTY3JpcHRNb2RlPihtX3NjcmlwdE1vZGUpOyB9CiAK
LSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3Q7Ci0gICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29u
c3QgeyByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9Ci0gICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQorICAgIGNv
bnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OworICAgIGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9CisgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgewog
ICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGluc3RydWN0aW9ucygpLmF0
KDApLnB0cigpOwotICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGluc3RydWN0aW9uc0JlZ2luKSArIGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGNv
bnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJbnN0
cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikg
KyBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnN0cnVj
dGlvbiA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiBpbnN0cnVjdGlvbiA8IGluc3RydWN0aW9uc0Vu
ZCk7CiAgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbiAtIGluc3RydWN0aW9uc0JlZ2luOwogICAg
IH0KQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQogCi0gICAgY29uc3QgRml4ZWRWZWN0
b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIG9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNv
ZGVPZmZzZXRzKCkgY29uc3QKKyAgICBjb25zdCBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBKU0luc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
cygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CiAgICAgICAgIHJl
dHVybiBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOwpA
QCAtNDM4LDkgKzQzOCw5IEBAIHByaXZhdGU6CiAgICAgUGFja2VkUmVmUHRyPFN0cmluZ0ltcGw+
IG1fc291cmNlVVJMRGlyZWN0aXZlOwogICAgIFBhY2tlZFJlZlB0cjxTdHJpbmdJbXBsPiBtX3Nv
dXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7CiAKLSAgICBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOworICAgIEZpeGVkVmVjdG9yPHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBSZWY8VW5saW5r
ZWRNZXRhZGF0YVRhYmxlPiBtX21ldGFkYXRhOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVj
dGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEpTSW5zdHJ1
Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM+IG1fbGl2ZW5lc3M7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTQ3NCw3ICs0NzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB1bnNpZ25lZCBtX2VuZERpdm90
OwogICAgICAgICB9OwogICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKLSAgICAgICAgRml4ZWRWZWN0b3I8
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2Rl
T2Zmc2V0czsKKyAgICAgICAgRml4ZWRWZWN0b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOwogICAgICAgICBGaXhlZFZl
Y3RvcjxCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICAgICAgRml4ZWRWZWN0b3I8SWRlbnRp
ZmllclNldD4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogCkBAIC00ODIsMTIgKzQ4MiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAx
OwogICAgIH07CiAKLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0KTsKLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlv
blN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldCh0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOworICAgIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1
Y3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVj
dGlvbi5vZmZzZXQoKSk7CiAgICAgfQotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0
IEluc3RydWN0aW9uKiBwYykKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBKU0lu
c3RydWN0aW9uKiBwYykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
dGhpcy0+Ynl0ZWNvZGVPZmZzZXQocGMpOwogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9m
ZnNldChieXRlY29kZU9mZnNldCk7CkBAIC00OTksNyArNDk5LDcgQEAgcHVibGljOgogICAgIEJh
c2VsaW5lRXhlY3V0aW9uQ291bnRlciYgbGxpbnRFeGVjdXRlQ291bnRlcigpIHsgcmV0dXJuIG1f
bGxpbnRFeGVjdXRlQ291bnRlcjsgfQogCiBwcml2YXRlOgotICAgIHVzaW5nIE91dE9mTGluZUp1
bXBUYXJnZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OworICAg
IHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDx0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CiAKICAgICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBtX291
dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJl
RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4IDZkN2JlYTFmMzk0MGMzNzYzYjk4
NDhhMWU2ODJmMjQxOTIwYTRjODkuLjlkYWQ3OGI2ZjdmNjRlNGQ5OTZmYWNiOGUwYmY1NWMwY2Uz
YTYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZv
aWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZFR5cGVQcm9maWxlckV4cHJlc3Npb25J
bmZvKHVuc2lnbmVkIGluc3RydWN0CiAgICAgbV90eXBlUHJvZmlsZXJJbmZvTWFwLnNldChpbnN0
cnVjdGlvbk9mZnNldCwgcmFuZ2UpOwogfQogCi12b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGluc3RydWN0
aW9ucykKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKHN0ZDo6dW5p
cXVlX3B0cjxKU0luc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCiB7CiAgICAgQVNTRVJU
KGluc3RydWN0aW9ucyk7CiAgICAgewpAQCAtMTcwLDcgKzE3MCw3IEBAIFVubGlua2VkSGFuZGxl
ckluZm8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpoYW5kbGVyRm9ySW5kZXgodW5zaWdu
ZWQgaW5kZXgsCiAgICAgcmV0dXJuIFVubGlua2VkSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRl
eDxVbmxpbmtlZEhhbmRsZXJJbmZvPihtX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWly
ZWRIYW5kbGVyKTsKIH0KIAotdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YXBwbHlN
b2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYgcmV3cml0ZXIsIEluc3RydWN0aW9uU3RyZWFt
V3JpdGVyJiBpbnN0cnVjdGlvbnMpCit2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjph
cHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiByZXdyaXRlciwgSlNJbnN0cnVjdGlv
blN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zKQogewogICAgIC8vIEJlZm9yZSBhcHBseWluZyB0
aGUgY2hhbmdlcywgd2UgYWRqdXN0IHRoZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0
ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCiAgICAgLy8g
dGhlIGluc2VydGlvbiBpbmZvcm1hdGlvbi4KQEAgLTIwNSwxMyArMjA1LDEzIEBAIHZvaWQgVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0
ZXImIHJld3JpdGVyLCBJCiAgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRoaXMsIGlu
c3RydWN0aW9ucywgbV9qdW1wVGFyZ2V0cyk7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBieXRlY29kZU9mZnNldCwgaW50IHRhcmdldCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0LCBpbnQgdGFyZ2V0KQogewogICAgIFJFTEVBU0VfQVNT
RVJUKHRhcmdldCk7CiAgICAgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5zZXQoYnl0ZWNvZGVPZmZz
ZXQsIHRhcmdldCk7CiB9CiAKLWludCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZM
aW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQor
aW50IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAgICBB
U1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5jb250YWlucyhieXRlY29kZU9mZnNldCkpOwog
ICAgIHJldHVybiBtX291dE9mTGluZUp1bXBUYXJnZXRzLmdldChieXRlY29kZU9mZnNldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDYwYTM1NDFkZGQyMjIxZTlmZTc4YjFiYTliZjU2ODU3
M2NlZTk3NDQuLmIzZDUwYjhmOTZmNmNlY2U5ZTliMGVlYjZhZjNhNWI3ODNlMjJmMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBVbmxpbmtl
ZE1ldGFkYXRhVGFibGUmIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPm1ldGFkYXRh
KCk7IH0KICAgICB2b2lkIGFkZEV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zm
c2V0LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQg
bGluZSwgdW5zaWduZWQgY29sdW1uKTsKICAgICB2b2lkIGFkZFR5cGVQcm9maWxlckV4cHJlc3Np
b25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERpdm90LCB1
bnNpZ25lZCBlbmREaXZvdCk7Ci0gICAgdm9pZCBhZGRPcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KQorICAgIHZvaWQgYWRk
T3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgbV9vcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0cy5hcHBlbmQob2Zmc2V0KTsKICAgICB9CkBAIC0xNzYsMTAgKzE3
NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcihpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcnNbaW5kZXhdOyB9CiAgICAgdm9pZCBhZGRJ
ZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGkpIHsgcmV0dXJuIG1faWRlbnRpZmllcnMuYXBw
ZW5kKGkpOyB9CiAKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKLSAgICB2b2lkIGFkZE91dE9mTGluZUp1bXBU
YXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7Ci0gICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0gICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rp
b24pCisgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAgICB2b2lkIGFkZE91dE9mTGluZUp1
bXBUYXJnZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQgdGFyZ2V0
KTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQpOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewogICAgICAgICBy
ZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQpA
QCAtMTk0LDkgKzE5NCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TGluZUFuZENvbHVtbihj
b25zdCBFeHByZXNzaW9uUmFuZ2VJbmZvJiwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1
bW4pIGNvbnN0OwogCi0gICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVy
JiwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImKTsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9u
KEJ5dGVjb2RlUmV3cml0ZXImLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJik7CiAKLSAgICB2
b2lkIGZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4pOworICAgIHZv
aWQgZmluYWxpemUoc3RkOjp1bmlxdWVfcHRyPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+KTsKIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCkBAIC0yMDcsNyArMjA3LDcgQEAgcHJp
dmF0ZToKICAgICBWTSYgbV92bTsKICAgICBTdHJvbmc8VW5saW5rZWRDb2RlQmxvY2s+IG1fY29k
ZUJsb2NrOwogICAgIC8vIEluIG5vbi1SYXJlRGF0YS4KLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwogICAgIFZlY3RvcjxJZGVudGlm
aWVyPiBtX2lkZW50aWZpZXJzOwogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1f
Y29uc3RhbnRSZWdpc3RlcnM7CiAgICAgVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4g
bV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247CkBAIC0yMjEsNyArMjIxLDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fdW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAgIFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpG
YXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICBIYXNoTWFwPHVu
c2lnbmVkLCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Np
b25SYW5nZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwotICAgIFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOworICAg
IFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxl
Q29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CiAgICAgVmVjdG9yPEJpdFZlY3Rvcj4gbV9iaXRW
ZWN0b3JzOwogICAgIFZlY3RvcjxJZGVudGlmaWVyU2V0PiBtX2NvbnN0YW50SWRlbnRpZmllclNl
dHM7CiAgICAgdW5zaWduZWQgbV9udW1CaW5hcnlBcml0aFByb2ZpbGVzIHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IDlkZGZkMzRiZjc5ZDhmNGIxOWZkZGU1NmIyYTQxMWIzYmNiMTYwODAuLjVkYjlh
YmE5ODkwY2EwNzA5MGEyOTlmNmNjNDk2OThhZGRjYmE5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMz
NCw2ICszMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdXNpbmcgT3Bjb2RlSUQgPSA6
OkpTQzo6T3Bjb2RlSUQ7CiAgICAgICAgIHVzaW5nIE9wTm9wID0gOjpKU0M6Ok9wTm9wOwogICAg
ICAgICB1c2luZyBDb2RlQmxvY2sgPSBzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I+OworICAgICAgICB1c2luZyBJbnN0cnVjdGlvblR5cGUgPSBKU0luc3RydWN0aW9u
OwogICAgICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG9wY29kZUZvckRpc2FibGluZ09w
dGltaXphdGlvbnMgPSBvcF9lbmQ7CiAgICAgfTsKIApAQCAtMTA5MCw3ICsxMDkxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKIAogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wT3A+Ci0gICAgICAgIHZvaWQgc2V0VGFyZ2V0Rm9y
SnVtcEluc3RydWN0aW9uKEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiwgaW50IHRhcmdl
dCk7CisgICAgICAgIHZvaWQgc2V0VGFyZ2V0Rm9ySnVtcEluc3RydWN0aW9uKHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmLCBpbnQgdGFyZ2V0KTsKIAogICAgICAgICB1
c2luZyBCaWdJbnRNYXBFbnRyeSA9IHN0ZDo6dHVwbGU8VW5pcXVlZFN0cmluZ0ltcGwqLCB1aW50
OF90LCBib29sPjsKIApAQCAtMTE4OCw3ICsxMTg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpTVmFsdWUgYWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4X3Qg
cmFkaXgsIGJvb2wgc2lnbik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRlT2JqZWN0
Q29uc3RhbnQoUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJiwgaW50KTsKIAotICAgICAg
ICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
bV93cml0ZXI7IH0KKyAgICAgICAgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5z
dHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIAogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogCkBAIC0xMjA0LDcg
KzEyMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZXN0b3JlVERaU3RhY2so
Y29uc3QgUHJlc2VydmVkVERaU3RhY2smKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgotICAgICAgICB2b2lkIHdpdGhXcml0ZXIoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdy
aXRlciwgY29uc3QgRnVuYyYgZm4pCisgICAgICAgIHZvaWQgd2l0aFdyaXRlcihKU0luc3RydWN0
aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIsIGNvbnN0IEZ1bmMmIGZuKQogICAgICAgICB7CiAgICAg
ICAgICAgICBhdXRvIHByZXZMYXN0T3Bjb2RlSUQgPSBtX2xhc3RPcGNvZGVJRDsKICAgICAgICAg
ICAgIGF1dG8gcHJldkxhc3RJbnN0cnVjdGlvbiA9IG1fbGFzdEluc3RydWN0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ckJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3JCYXNlLmgKaW5kZXggMGY5MTk5MzdiNWU0NmU3OGU2MTE3NjI0MGRiZWExMzc4ZjdlZTU4
Yy4uMThkODYyM2ZkYmM5NGM4N2ZlN2ExZWQ5OTllNmI3YmQ4OWRlZWM1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yQmFzZS5oCkBAIC00Niw2ICs0Niw5IEBAIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZSB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+CiAgICAgZnJpZW5kIGNs
YXNzIEdlbmVyaWNMYWJlbDsKIAorICAgIHVzaW5nIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyVHlw
ZSA9IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyPHR5cGVuYW1lIFRyYWl0czo6SW5zdHJ1Y3Rpb25U
eXBlPjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVR5cGUgPSBJbnN0cnVjdGlvblN0cmVh
bTx0eXBlbmFtZSBUcmFpdHM6Okluc3RydWN0aW9uVHlwZT47CisKIHB1YmxpYzoKICAgICBCeXRl
Y29kZUdlbmVyYXRvckJhc2UodHlwZW5hbWUgVHJhaXRzOjpDb2RlQmxvY2ssIHVpbnQzMl90IHZp
cnR1YWxSZWdpc3RlckNvdW50Rm9yQ2FsbGVlU2F2ZXMpOwogCkBAIC03NywxMiArODAsMTIgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgcmVjbGFpbUZyZWVSZWdpc3RlcnMoKTsKIAot
ICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyIG1fd3JpdGVyOworICAgIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyVHlwZSBtX3dyaXRlcjsKICAgICB0eXBlbmFtZSBUcmFpdHM6OkNvZGVCbG9jayBt
X2NvZGVCbG9jazsKIAogICAgIGJvb2wgbV9vdXRPZk1lbW9yeUR1cmluZ0NvbnN0cnVjdGlvbiB7
IGZhbHNlIH07CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBtX2xhc3RPcGNvZGVJRCA9
IFRyYWl0czo6b3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9uczsKLSAgICBJbnN0cnVjdGlv
blN0cmVhbTo6TXV0YWJsZVJlZiBtX2xhc3RJbnN0cnVjdGlvbiB7IG1fd3JpdGVyLnJlZigpIH07
CisgICAgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpNdXRhYmxlUmVmIG1fbGFzdElu
c3RydWN0aW9uIHsgbV93cml0ZXIucmVmKCkgfTsKIAogICAgIFNlZ21lbnRlZFZlY3RvcjxHZW5l
cmljTGFiZWw8VHJhaXRzPiwgMzI+IG1fbGFiZWxzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdp
c3RlcklELCAzMj4gbV9jYWxsZWVMb2NhbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlSW5saW5l
cy5oCmluZGV4IGJkNzg5MGQ1ZmFiOWUxNWU3YmU1ZTNiMDdmZDgxOGQ0MjI1MGI2YTcuLjhkYzYy
YmI2MjAzOTU0ZTJlY2Q5MmJkODY5ODE3YjEyOTk2MzllNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3JCYXNlSW5saW5lcy5oCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlPFRyYWl0cz46OmVtaXRMYWJlbChHZW5lcmljTGFiZWw8VHJhaXRzPiYgbGFiZWwpCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHM+CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+
OjpyZWNvcmRPcGNvZGUodHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBvcGNvZGVJRCkKIHsKLSAg
ICBBU1NFUlQobV9sYXN0T3Bjb2RlSUQgPT0gVHJhaXRzOjpvcGNvZGVGb3JEaXNhYmxpbmdPcHRp
bWl6YXRpb25zIHx8IChtX2xhc3RPcGNvZGVJRCA9PSBtX2xhc3RJbnN0cnVjdGlvbi0+b3Bjb2Rl
SUQ8dHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVUcmFpdHM+KCkgJiYgbV93cml0ZXIucG9zaXRpb24o
KSA9PSBtX2xhc3RJbnN0cnVjdGlvbi5vZmZzZXQoKSArIG1fbGFzdEluc3RydWN0aW9uLT5zaXpl
PHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlVHJhaXRzPigpKSk7CisgICAgQVNTRVJUKG1fbGFzdE9w
Y29kZUlEID09IFRyYWl0czo6b3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9ucyB8fCAobV9s
YXN0T3Bjb2RlSUQgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgJiYgbV93cml0ZXIu
cG9zaXRpb24oKSA9PSBtX2xhc3RJbnN0cnVjdGlvbi5vZmZzZXQoKSArIG1fbGFzdEluc3RydWN0
aW9uLT5zaXplKCkpKTsKICAgICBtX2xhc3RJbnN0cnVjdGlvbiA9IG1fd3JpdGVyLnJlZigpOwog
ICAgIG1fbGFzdE9wY29kZUlEID0gb3Bjb2RlSUQ7CiB9CkBAIC0xMDIsNiArMTAyLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVHJhaXRzPgogdm9pZCBCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRz
Pjo6YWxpZ25XaWRlT3Bjb2RlMTYoKQogewogI2lmIENQVShORUVEU19BTElHTkVEX0FDQ0VTUykK
KyAgICBzdGF0aWNfYXNzZXJ0KFRyYWl0czo6T3Bjb2RlVHJhaXRzOjptYXhPcGNvZGVJRFdpZHRo
ID09IE9wY29kZVNpemU6Ok5hcnJvdyk7CiAgICAgc2l6ZV90IG9wY29kZVNpemUgPSAxOwogICAg
IHNpemVfdCBwcmVmaXhBbmRPcGNvZGVTaXplID0gb3Bjb2RlU2l6ZSArIFBhZGRpbmdCeVNpemU8
T3Bjb2RlU2l6ZTo6V2lkZTE2Pjo6dmFsdWU7CiAgICAgd2hpbGUgKChtX3dyaXRlci5wb3NpdGlv
bigpICsgcHJlZml4QW5kT3Bjb2RlU2l6ZSkgJSBPcGNvZGVTaXplOjpXaWRlMTYpCkBAIC0xMTMs
NiArMTE0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgogdm9pZCBCeXRlY29kZUdlbmVy
YXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRlT3Bjb2RlMzIoKQogewogI2lmIENQVShORUVEU19B
TElHTkVEX0FDQ0VTUykKKyAgICBzdGF0aWNfYXNzZXJ0KFRyYWl0czo6T3Bjb2RlVHJhaXRzOjpt
YXhPcGNvZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdyk7CiAgICAgc2l6ZV90IG9wY29k
ZVNpemUgPSAxOwogICAgIHNpemVfdCBwcmVmaXhBbmRPcGNvZGVTaXplID0gb3Bjb2RlU2l6ZSAr
IFBhZGRpbmdCeVNpemU8T3Bjb2RlU2l6ZTo6V2lkZTMyPjo6dmFsdWU7CiAgICAgd2hpbGUgKCht
X3dyaXRlci5wb3NpdGlvbigpICsgcHJlZml4QW5kT3Bjb2RlU2l6ZSkgJSBPcGNvZGVTaXplOjpX
aWRlMzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5oCmluZGV4IDg3NTdkM2EwZDU0ZmM4OWZiMGQ5N2Fj
OGI5OWU4NmEzNDFlYjZkNzQuLjM3NTUwNGUxZjExMjI3NTJkOGMyYzE3ZTdiODdkMzVlNDk0YjEx
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGlj
UHJvcGVydHlBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5oCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBK
U0MgewogLy8gUmVmZXJlbmNlIGNvdW50IGluZGljYXRlcyBudW1iZXIgb2YgbGl2ZSByZWdpc3Rl
cnMgdGhhdCBhbGlhcyB0aGlzIG9iamVjdC4KIGNsYXNzIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMg
OiBwdWJsaWMgUmVmQ291bnRlZDxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiBjcmVhdGUoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok11dGFibGVSZWYmJiBpbnN0cnVjdGlvblJlZikKKyAgICBzdGF0aWMgUmVmPFN0YXRp
Y1Byb3BlcnR5QW5hbHlzaXM+IGNyZWF0ZSh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpN
dXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKSk7
IAorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKFdU
Rk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGRQcm9wZXJ0eUlu
ZGV4KHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpIHsgbV9wcm9wZXJ0eUluZGV4ZXMuYWRkKHByb3Bl
cnR5SW5kZXgpOyB9CkBAIC00NSwxMiArNDUsMTIgQEAgcHVibGljOgogICAgIGludCBwcm9wZXJ0
eUluZGV4Q291bnQoKSB7IHJldHVybiBtX3Byb3BlcnR5SW5kZXhlcy5zaXplKCk7IH0KIAogcHJp
dmF0ZToKLSAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKEluc3RydWN0aW9uU3RyZWFtOjpNdXRh
YmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCisgICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyh0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCiAg
ICAgICAgIDogbV9pbnN0cnVjdGlvblJlZihXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkKICAgICB7
CiAgICAgfQogCi0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgbV9pbnN0cnVjdGlv
blJlZjsKKyAgICB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIG1faW5z
dHJ1Y3Rpb25SZWY7CiAgICAgdHlwZWRlZiBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8
dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4g
UHJvcGVydHlJbmRleFNldDsKICAgICBQcm9wZXJ0eUluZGV4U2V0IG1fcHJvcGVydHlJbmRleGVz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKaW5kZXggNWY5ZTczODYyYTRhY2QzMDdiMTAxYmQx
Y2Q2ZjIzZmM1MTc1MmQzYi4uYWU0OWIwMjc3M2M2NzIwZTNjZjMzMTUxYzE2OWExZWJmMmUwODE2
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAvLyBpcyB1bmRlcnN0b29kIHRvIGJlIGxvc3N5LCBhbmQgaXQncyBPSyBpZiBpdCB0dXJu
cyBvdXQgdG8gYmUgd3Jvbmcgc29tZXRpbWVzLgogY2xhc3MgU3RhdGljUHJvcGVydHlBbmFseXpl
ciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBjcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1
Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpOwotICAgIHZvaWQgbmV3T2Jq
ZWN0KFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1
Y3Rpb25SZWYpOworICAgIHZvaWQgY3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QsIHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpOworICAgIHZv
aWQgbmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7CiAgICAgdm9pZCBwdXRCeUlkKFJlZ2lzdGVy
SUQqIGRzdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCk7IC8vIHByb3BlcnR5SW5kZXggaXMgYW4g
aW5kZXggaW50byBhIHVuaXF1ZWQgc2V0IG9mIHN0cmluZ3MuCiAgICAgdm9pZCBtb3YoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCkBAIC01MCwxNCArNTAsMTQgQEAgcHJpdmF0
ZToKICAgICBBbmFseXNpc01hcCBtX2FuYWx5c2VzOwogfTsKIAotaW5saW5lIHZvaWQgU3RhdGlj
UHJvcGVydHlBbmFseXplcjo6Y3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9u
U3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKQoraW5saW5lIHZvaWQgU3RhdGljUHJv
cGVydHlBbmFseXplcjo6Y3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QsIHR5cGVuYW1lIEpTSW5z
dHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpCiB7CiAgICAgQW5hbHlz
aXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFkZCgKICAgICAgICAgZHN0
LT5pbmRleCgpLCBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUoV1RGTW92ZShpbnN0cnVj
dGlvblJlZikpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOyAvLyBDYW4ndCBoYXZlIHR3byAndGhpcycgaW4gdGhlIHNhbWUgY29uc3RydWN0b3Iu
CiB9CiAKLWlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChSZWdp
c3RlcklEKiBkc3QsIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVm
KQoraW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bmV3T2JqZWN0KFJlZ2lzdGVy
SUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVj
dGlvblJlZikKIHsKICAgICBhdXRvIGFuYWx5c2lzID0gU3RhdGljUHJvcGVydHlBbmFseXNpczo6
Y3JlYXRlKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKTsKICAgICBBbmFseXNpc01hcDo6QWRkUmVz
dWx0IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKGRzdC0+aW5kZXgoKSwgYW5hbHlzaXMuY29w
eVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggZWFjYmMwY2UyNzJmNjdiZTgyYzc5MzcyYWE3ZjcyODg4YjZmMjE1Zi4uMDU3
OGU0ZmNjNzg3YWMzOTI5OTQzMDkwMjFkZGNhMDU5N2M2YWFkMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTE4Miw5ICsxODIsOSBA
QCBwcml2YXRlOgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMsCiAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIEVDTUFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgp
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci0gICAgVGVybWluYWxpdHkgaGFuZGxl
Q2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSwgQnl0ZWNv
ZGVJbmRleCBvc3JFeGl0SW5kZXgpOworICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoY29uc3Qg
SlNJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZXgpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KLSAgICBUZXJtaW5h
bGl0eSBoYW5kbGVWYXJhcmdzQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9w
LCBDYWxsTW9kZSk7CisgICAgVGVybWluYWxpdHkgaGFuZGxlVmFyYXJnc0NhbGwoY29uc3QgSlNJ
bnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSk7CiAgICAgdm9pZCBlbWl0RnVu
Y3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQsIE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3Rl
ciB0aGlzQXJndW1udCk7CiAgICAgdm9pZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgTm9kZSogZ2V0
QXJndW1lbnRDb3VudCgpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAgTm9kZSog
c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlWYXJpYW50
JiwgTm9kZSogdmFsdWUpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgdm9pZCBw
YXJzZUdldEJ5SWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHBhcnNlR2V0QnlJZChj
b25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgdm9pZCBzaW1wbGlmeUdldEJ5U3RhdHVzKE5vZGUq
IGJhc2UsIEdldEJ5U3RhdHVzJik7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1
cywgQWNjZXNzVHlwZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpOwpAQCAtMTI1NCwxMCAr
MTI1NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBtX3ZhbHVlIHsgbnVsbHB0ciB9Owog
ICAgICAgICBTZXRNb2RlIG1fc2V0TW9kZTsKICAgICB9OwotICAgIAorCiAgICAgVmVjdG9yPERl
bGF5ZWRTZXRMb2NhbCwgMj4gbV9zZXRMb2NhbFF1ZXVlOwogCi0gICAgY29uc3QgSW5zdHJ1Y3Rp
b24qIG1fY3VycmVudEluc3RydWN0aW9uOworICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIG1fY3Vy
cmVudEluc3RydWN0aW9uOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9v
bCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKQEAgLTEzMTAsNyArMTMxMCw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmFkZEp1bXBUbyh1bnNpZ25lZCBieXRlY29kZUluZGV4
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci1CeXRlQ29kZVBhcnNlcjo6VGVybWlu
YWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBO
b2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4
KQorQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8Q2FsbE9wPigpOwogICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoY2FsbGVlRm9yKGJ5dGVj
b2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKQEAgLTEzNjksNyArMTM2OSw3IEBA
IEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgotQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFs
aXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzQ2FsbChjb25zdCBJbnN0cnVjdGlvbiog
cGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKK0J5dGVDb2RlUGFyc2VyOjpUZXJt
aW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwoY29uc3QgSlNJbnN0cnVj
dGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPENhbGxPcD4oKTsKICAgICBpbnQgZmlyc3RGcmVlUmVnID0gYnl0ZWNv
ZGUubV9maXJzdEZyZWUub2Zmc2V0KCk7CkBAIC0xNTM1LDE0ICsxNTM1LDE1IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBDYWxsVmFyaWFudCBjCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggb2xkSW5kZXggPSBtX2N1cnJl
bnRJbmRleDsKICAgICAgICAgYXV0byBvbGRTdGFja1RvcCA9IG1faW5saW5lU3RhY2tUb3A7CiAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AgPSBzdGFja0VudHJ5OwotICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IEJ5dGVjb2RlSW5kZXgob3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl0pOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KE9wY29kZUlEV2lkdGhCeVNpemU8SlNPcGNvZGVUcmFpdHMsIE9wY29kZVNp
emU6OldpZGUzMj46Om9wY29kZUlEU2l6ZSA9PSAxKTsKKyAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBCeXRlY29kZUluZGV4KG9wY29kZUxlbmd0aHNbb3BfZW50ZXJdICsgMSk7CiAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKICAgICAgICAg
bV9jdXJyZW50SW5kZXggPSBvbGRJbmRleDsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcCA9IG9s
ZFN0YWNrVG9wOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOwogCi0gICAgICAgIEJhc2ljQmxv
Y2sqKiBlbnRyeUJsb2NrUHRyID0gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2sqLCBCeXRlY29k
ZUluZGV4PihzdGFja0VudHJ5LT5tX2Jsb2NrTGlua2luZ1RhcmdldHMsIHN0YWNrRW50cnktPm1f
YmxvY2tMaW5raW5nVGFyZ2V0cy5zaXplKCksIEJ5dGVjb2RlSW5kZXgob3Bjb2RlTGVuZ3Roc1tv
cF9lbnRlcl0pLCBnZXRCeXRlY29kZUJlZ2luRm9yQmxvY2spOworICAgICAgICBCYXNpY0Jsb2Nr
KiogZW50cnlCbG9ja1B0ciA9IHRyeUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrKiwgQnl0ZWNvZGVJ
bmRleD4oc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLCBzdGFja0VudHJ5LT5tX2Js
b2NrTGlua2luZ1RhcmdldHMuc2l6ZSgpLCBCeXRlY29kZUluZGV4KG9wY29kZUxlbmd0aHNbb3Bf
ZW50ZXJdICsgMSksIGdldEJ5dGVjb2RlQmVnaW5Gb3JCbG9jayk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVudHJ5QmxvY2tQdHIpOwogICAgICAgICBhZGRKdW1wVG8oKmVudHJ5QmxvY2tQdHIp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2NTQsNyArMTY1NSw3IEBAIHVuc2lnbmVkIEJ5
dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1l
bnRDb3VudEluY2x1CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1
bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBCYXNpY0Jsb2Nr
KiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQog
ewotICAgIGNvbnN0IEluc3RydWN0aW9uKiBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY3Vy
cmVudEluc3RydWN0aW9uOworICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudElu
c3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9u
S2luZEZvcihraW5kKTsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbGVlLmZ1bmN0
aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQp
OwpAQCAtNTM0NSw3ICs1MzQ2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2xlYXJDYWNoZXMo
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
R2V0QnlJZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VHZXRCeUlkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cD4oKTsKICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwpA
QCAtNTQ3MSwxMiArNTQ3MiwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGFkZEp1bXBUbyhtX2N1cnJlbnRJbmRleC5v
ZmZzZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgLy8gU3dpdGNoIG9uIHRoZSBjdXJyZW50IGJ5dGVjb2RlIG9wY29kZS4KLSAgICAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdCht
X2N1cnJlbnRJbmRleCkucHRyKCk7CisgICAgICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChtX2N1cnJlbnRJbmRleCkucHRyKCk7CiAg
ICAgICAgIG1fY3VycmVudEluc3RydWN0aW9uID0gY3VycmVudEluc3RydWN0aW9uOyAvLyBTb21l
IG1ldGhvZHMgd2FudCB0byB1c2UgdGhpcywgYW5kIHdlJ2QgcmF0aGVyIG5vdCB0aHJlYWQgaXQg
dGhyb3VnaCBjYWxscy4KICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgIAorCiAgICAgICAgIFZFUkJPU0VfTE9HKCIgICAg
cGFyc2luZyAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiOiAiLCBvcGNvZGVJRCwgIlxuIik7CiAg
ICAgICAgIAogICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkgewpA
QCAtODgwMCw4ICs4ODAxLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2so
KQogICAgICAgICBkYXRhTG9nTG4oKTsKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNp
b24oKS0+ZHVtcEJ5dGVjb2RlKCk7CiAgICAgfQotICAgIAotICAgIFZlY3RvcjxJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCAzMj4ganVtcFRhcmdldHM7CisKKyAgICBWZWN0b3I8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4ganVtcFRhcmdldHM7CiAgICAgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlQXRERkdUaW1lKCkpKSB7CiAgICAgICAgIGRhdGFM
b2coIkp1bXAgdGFyZ2V0czogIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKaW5kZXggNWUzMmQyZDI0ZjFiM2VkODcwYzMzMGYyZWYyM2Q4NWU0ZWNl
NDgzNy4uNTgyYWFmNWZkMTk2NGE0NDdlMTE0NDIxNGJmODIwZDExZGFkMjE5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTAwLDcgKzEw
MCw3IEBAIGlubGluZSB2b2lkIGRlYnVnRmFpbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIENhcGFiaWxpdHlMZXZlbCByCiAgICAgICAgIGRhdGFMb2coIkRGRyByZWpl
Y3Rpbmcgb3Bjb2RlIGluICIsICpjb2RlQmxvY2ssICIgYmVjYXVzZSBvZiBvcGNvZGUgIiwgb3Bj
b2RlTmFtZXNbb3Bjb2RlSURdLCAiXG4iKTsKIH0KIAotQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uKiBwYykKK0NhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykK
IHsKICAgICBVTlVTRURfUEFSQU0oY29kZUJsb2NrKTsgLy8gVGhpcyBmdW5jdGlvbiBkb2VzIHNv
bWUgYnl0ZWNvZGUgcGFyc2luZy4gT3JkaW5hcmlseSBieXRlY29kZSBwYXJzaW5nIHJlcXVpcmVz
IHRoZSBvd25pbmcgQ29kZUJsb2NrLiBJdCdzIHNvcnQgb2Ygc3RyYW5nZSB0aGF0IHdlIGRvbid0
IHVzZSBpdCBoZXJlIHJpZ2h0IG5vdy4KICAgICBVTlVTRURfUEFSQU0ocGMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKaW5kZXggNGRhODlhYjc0MjNhMGQ4
MDk5ZWQwYzUyOTA0NWFiYjI1YzFiNGRhZS4uOGU1YjEwMzBkNTk0ODQ0ZDZhMThhMWVkZmQ4NTI5
ODNhMDkzZmE0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNsb3N1cmVD
YWxsKENvZGVCbG9jayopOwogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENv
ZGVCbG9jayopOwogYm9vbCBjYW5Vc2VPU1JFeGl0RnV6emluZyhDb2RlQmxvY2sqKTsKIAotaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQsIENvZGVCbG9jayos
IGNvbnN0IEluc3RydWN0aW9uKiBwYyk7CitpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpOwog
CiBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayopOwogI2Vsc2UgLy8g
RU5BQkxFKERGR19KSVQpCkBAIC01OCw3ICs1OCw3IEBAIGlubGluZSBib29sIG1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQogaW5s
aW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKSB7IHJl
dHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoQ29kZUJsb2Nr
KikgeyByZXR1cm4gZmFsc2U7IH0KIAotaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWwoT3Bjb2RlSUQsIENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uKikgeyByZXR1cm4g
Q2Fubm90Q29tcGlsZTsgfQoraW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQsIENvZGVCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKSB7IHJldHVybiBDYW5u
b3RDb21waWxlOyB9CiBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChDb2Rl
QmxvY2sqKSB7IHJldHVybiBDYW5ub3RDb21waWxlOyB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDg5YWU3
M2YyM2RhNTdjNzNlZTEwNTYxNGJjNjc0N2VkMDE5MjU1ZDMuLmIyNDNjNjc0Nzk1MGNlZmQ2YjUy
ZDhkZTUzYTVhYWVhMTQ4YmIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAg
ICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFBy
b2ZpbGU7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGppdC5iYXNlbGluZUNv
ZGVCbG9ja0Zvcihjb2RlT3JpZ2luKTsKICAgICAgICAgICAgIGlmIChBcnJheVByb2ZpbGUqIGFy
cmF5UHJvZmlsZSA9IGNvZGVCbG9jay0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KCkpLnB0cigpOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSku
cHRyKCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNraXBQcm9maWxlOwog
ICAgICAgICAgICAgICAgIGlmIChpbnN0cnVjdGlvbi0+aXM8T3BHZXRCeUlkPigpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJ
ZD4oKS5tZXRhZGF0YShjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDE4MjIyMzk2Y2Y0NWU3
YWU3YzNiMTAzYzRlZmE5NmZhYTc0MThmNzkuLjU4NGZmZDg4NTZiMThjNzc2OGJjYTJkMzc5NWU5
MGU4MzMxZTIxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9j
ayogYmFzZWxpbmVDbwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IGp1bXBUYXJnZXQ7CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvbiYgY2FsbEluc3RydWN0aW9uID0g
KmJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5pbnN0cnVjdGlvbnMoKS5hdChjYWxsQnl0ZWNv
ZGVJbmRleCkucHRyKCk7CisgICAgY29uc3QgYXV0byYgY2FsbEluc3RydWN0aW9uID0gKmJhc2Vs
aW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5pbnN0cnVjdGlvbnMoKS5hdChjYWxsQnl0ZWNvZGVJbmRl
eCkucHRyKCk7CiAgICAgaWYgKGNhbGxlcklzTExJbnQpIHsKICNkZWZpbmUgTExJTlRfUkVUVVJO
X0xPQ0FUSU9OKG5hbWUpIExMSW50OjpyZXR1cm5Mb2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5f
bG9jYXRpb24sIGNhbGxJbnN0cnVjdGlvbi53aWR0aCgpKS5jb2RlKCkKIApAQCAtMzg5LDcgKzM4
OSw3IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgIGJvb2wgZXhpdFRvTExJbnQgPSBPcHRp
b25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrRm9yRXhpdC0+aml0VHlwZSgp
ID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bms7CiAgICAgaWYgKGV4aXRUb0xMSW50KSB7CiAg
ICAgICAgIGF1dG8gYnl0ZWNvZGVJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgoKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICpj
b2RlQmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4KS5wdHIoKTsK
KyAgICAgICAgY29uc3QgYXV0byYgY3VycmVudEluc3RydWN0aW9uID0gKmNvZGVCbG9ja0ZvckV4
aXQtPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CiAgICAgICAgIGlm
IChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0g
TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwpAQCAtMzk4
LDcgKzM5OCw3IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogCiAgICAgICAgIGlmIChleGl0Lmlz
RXhjZXB0aW9uSGFuZGxlcigpKSB7CiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoJmN1cnJlbnRJbnN0cnVjdGlvbiksIEdQUkluZm86OnJlZ1QyKTsKLSAg
ICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMiwgJnZtLnRhcmdldEludGVycHJl
dGVyUENGb3JUaHJvdyk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDIs
ICZzdGQ6OmdldDxjb25zdCBKU0luc3RydWN0aW9uKj4odm0udGFyZ2V0SW50ZXJwcmV0ZXJQQ0Zv
clRocm93KSk7CiAgICAgICAgIH0KIAogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhpdC0+bWV0YWRhdGFUYWJsZSgpKSwgTExJbnQ6OlJl
Z2lzdGVyczo6bWV0YWRhdGFUYWJsZUdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGZjM2E2YzRmZGFlM2RkODk2NzhjNmJiOWE2
NTY5MGI0OGY3ZmFkN2EuLjM2MGUxODE4M2VjYmExZTBjYzA1ZDc2YzcyY2RmMTIxOWVjY2IxNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0yMTAwLDcgKzIxMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9vcEhp
bnQoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKGVtaXRFYXJseVJldHVybikgewogICAgICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVD
b2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4
KCk7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGlu
ZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRy
KCk7CisgICAgICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKIAog
ICAgICAgICAgICAgdWludHB0cl90KiBwdHIgPSB2bSgpLmdldExvb3BIaW50RXhlY3V0aW9uQ291
bnRlcihpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICBtX2ppdC5wdXNoVG9TYXZlKEdQUkluZm86
OnJlZ1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAppbmRleCA5ZTU5OWJmZmVjOGI5MDBmZDcyMzhlZGM2MzljZWI1NjQ5NDNhOWM4Li44YzQ0ZDY0
Yjg5NWU4MjZmY2E0YzM3M2E0YzQ2NmNiMzIxNmFjOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNjI3NCw3ICsxNjI3NCw3IEBAIElH
Tk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX29yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fb3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zm
c2V0KCkpLnB0cigpOworICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIo
KTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7CiAgICAgICAgIHVpbnRwdHJfdCogcHRy
ID0gdm0tPmdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihpbnN0cnVjdGlvbik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCBm
ZTc5Zjc4ZDM3NTBkNjM0ZGUyMzIzY2FkZGIwNmQ0MTdlODgzYmU3Li5hODI0ZjdhNTE5Y2U0NWY0
YTc0MjU1NThlMzQ0ZDJmMjdkNGRkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIHZv
aWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUs
IE9TUkV4aXQmIGV4aXQKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQu
bV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKTsKICAgICAgICAgICAg
IGlmIChBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGNvZGVCbG9jay0+Z2V0QXJyYXlQcm9m
aWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKSkgewotICAgICAgICAgICAgICAgIGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQo
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpLnB0cigpOworICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIHNraXBQcm9maWxlOwogICAgICAgICAgICAgICAgIGlmIChpbnN0cnVjdGlvbi0+aXM8
T3BHZXRCeUlkPigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShjb2RlQmxvY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggMmFiNmE4MDkwODZiY2Iy
NWQwOTE2ZWUxNTc2ZDBlZWM4MTBiYjMwZi4uYjk1ZTc0M2EyNjVkNjczYzQxYzE3Mzk1ZTNmMzdh
ZmFlM2MwMmViYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
Y3BwCkBAIC01NzUsNyArNTc1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk1hdGVyaWFsaXplT2JqZWN0SW5PU1IsIEpTQ2VsbCosIChKU0dsb2JhbE9iamUKICAgICAgICAg
Ly8gRm9yIG5vdywgd2UgdXNlIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsZSBpbiB0aGUgYWN0dWFs
IENvZGVCbG9jay4gSXQgaXMgT0sgc2luY2UgY3VycmVudCBOZXdBcnJheUJ1ZmZlcgogICAgICAg
ICAvLyBhbmQgUGhhbnRvbU5ld0FycmF5QnVmZmVyIGFyZSBhbHdheXMgYm91bmQgdG8gYSBzcGVj
aWZpYyBvcF9uZXdfYXJyYXlfYnVmZmVyLgogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2sobWF0ZXJpYWxp
emF0aW9uLT5vcmlnaW4oKSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+YmFzZWxpbmVBbHRlcm5h
dGl2ZSgpKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5i
eXRlY29kZUluZGV4KCkpLnB0cigpOworICAgICAgICBjb25zdCBhdXRvKiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KG1hdGVyaWFsaXphdGlvbi0+b3Jp
Z2luKCkuYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAgICAgaWYgKCFjdXJyZW50SW5zdHJ1
Y3Rpb24tPmlzPE9wTmV3QXJyYXlCdWZmZXI+KCkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2Fz
ZSBjYW4gaGFwcGVuIGlmIE9iamVjdC5rZXlzLCBhbiBPcENhbGwgaXMgZmlyc3QgY29udmVydGVk
IGludG8gYSBOZXdBcnJheUJ1ZmZlciB3aGljaCBpcyB0aGVuIGNvbnZlcnRlZCBpbnRvIGEgUGhh
bnRvbU5ld0FycmF5QnVmZmVyLgogICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byB1
cGRhdGUgdGhlIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsZSBpbiB0aGF0IGNhc2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0FyZ3VtZW50LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9Bcmd1bWVudC5yYgppbmRleCBkNGQ4YzY2OGY0MzFi
OWZjNjNhMDZjNDZkZjRmYTUyZTEzMzc1NGMzLi4xZjVhZmVkNmNhZDM2ZjFkOGJlZmY2Zjg2ZWQw
NWE0N2ZmYTEwYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9y
L0FyZ3VtZW50LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJndW1l
bnQucmIKQEAgLTcxLDkgKzcxLDkgQEAgY2xhc3MgQXJndW1lbnQKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgogICAgIHZvaWQgc2V0I3tjYXBpdGFsaXplZF9uYW1lfSgje0B0eXBlLnRv
X3N9IHZhbHVlLCBGdW5jdG9yIGZ1bmMpCiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8I3t0
cmFpdHN9PigpKQorICAgICAgICBpZiAoaXNXaWRlMzIoKSkKICAgICAgICAgICAgIHNldCN7Y2Fw
aXRhbGl6ZWRfbmFtZX08T3Bjb2RlU2l6ZTo6V2lkZTMyPih2YWx1ZSwgZnVuYyk7Ci0gICAgICAg
IGVsc2UgaWYgKGlzV2lkZTE2PCN7dHJhaXRzfT4oKSkKKyAgICAgICAgZWxzZSBpZiAoaXNXaWRl
MTYoKSkKICAgICAgICAgICAgIHNldCN7Y2FwaXRhbGl6ZWRfbmFtZX08T3Bjb2RlU2l6ZTo6V2lk
ZTE2Pih2YWx1ZSwgZnVuYyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldCN7Y2FwaXRh
bGl6ZWRfbmFtZX08T3Bjb2RlU2l6ZTo6TmFycm93Pih2YWx1ZSwgZnVuYyk7CkBAIC04NCw3ICs4
NCw3IEBAIGNsYXNzIEFyZ3VtZW50CiAgICAgewogICAgICAgICBpZiAoISN7Rml0czo6Y2hlY2sg
InNpemUiLCAidmFsdWUiLCBAdHlwZX0pCiAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMoKTsKLSAg
ICAgICAgYXV0byogc3RyZWFtID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6
ZT46OnVuc2lnbmVkVHlwZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgI3tA
aW5kZXh9ICogc2l6ZSArIFBhZGRpbmdCeVNpemU8c2l6ZT46OnZhbHVlICsgLyogT3Bjb2RlIHNp
emUgKi8gMSk7CisgICAgICAgIGF1dG8qIHN0cmVhbSA9IGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBU
eXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGUqPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pih0aGlzKSArICN7QGluZGV4fSAqIHNpemUgKyBQYWRkaW5nQnlTaXplPHNpemU+Ojp2YWx1ZSAr
IE9wY29kZUlEV2lkdGhCeVNpemU8I3t0cmFpdHN9LCBzaXplPjo6b3Bjb2RlSURTaXplKTsKICAg
ICAgICAgKnN0cmVhbSA9ICN7Rml0czo6Y29udmVydCAic2l6ZSIsICJ2YWx1ZSIsIEB0eXBlfTsK
ICAgICB9CiBFT0YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggNmYw
YThmMWE4MDNlMTUxNjRlOTk0NDM0N2JhMzM0NDk2NTk4NjA4ZC4uZTkwZjk5NDY2MWE3ZjNlZGVh
YjA3N2JkMDQ1ZGE0Y2FkNDlmYmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9E
U0wucmIKQEAgLTE0OSwxMCArMTQ5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCYXNp
Y0Jsb2NrTG9jYXRpb247CiAKLXZvaWQgZHVtcEJ5dGVjb2RlKEJ5dGVjb2RlRHVtcGVyQmFzZSog
ZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBjb25zdCBJbnN0cnVjdGlvbiopOwor
dm9pZCBkdW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+
KiBkdW1wZXIsIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgSlNJbnN0cnVjdGlv
biopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotdm9pZCBkdW1wV2FzbShCeXRlY29kZUR1
bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKK3ZvaWQgZHVtcFdhc20oQnl0ZWNvZGVEdW1wZXJCYXNlPFdhc21JbnN0cnVjdGlv
blN0cmVhbT4qIGR1bXBlciwgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IFdh
c21JbnN0cnVjdGlvbiopOwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogRU9GCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlLnJiCmluZGV4IDA2MWI3NmE4MTNk
NDcxMTJjYzkwYjk5MzY4ZWJjYmNlZmU4ZTJlNWQuLmVlNjc4N2IxOGU0ZDhkM2FiZmY4OTEwMmJj
NWNjYTc3MDBjMDBkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvT3Bjb2RlLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2Rl
LnJiCkBAIC0xMDgsNiArMTA4LDEwIEBAIGNsYXNzIE9wY29kZQogICAgICAgQHNlY3Rpb24uaXNf
d2FzbT8gPyAiV2FzbU9wY29kZVRyYWl0cyIgOiAiSlNPcGNvZGVUcmFpdHMiCiAgICAgZW5kCiAK
KyAgICBkZWYgdHlwZV9wcmVmaXgKKyAgICAgIEBzZWN0aW9uLmlzX3dhc20/ID8gIldhc20iIDog
IkpTIgorICAgIGVuZAorCiAgICAgZGVmIG1hcF9maWVsZHNfd2l0aF9zaXplKHByZWZpeCwgc2l6
ZSwgJmJsb2NrKQogICAgICAgICBhcmdzID0gW0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNv
ZGVJRFR5cGUsIDApXQogICAgICAgICBhcmdzICs9IEBhcmdzLmR1cCBpZiBAYXJncwpAQCAtMTI4
LDcgKzEzMiw3IEBAIGNsYXNzIE9wY29kZQogCiAgICAgZGVmIHN0cnVjdAogICAgICAgICA8PC1F
T0YKLXN0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGljIEluc3RydWN0aW9uIHsKK3N0
cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGljICN7dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rp
b24gewogICAgICN7b3Bjb2RlSUR9CiAgICAgI3tsZW5ndGhWYWx1ZX0KICAgICAje3RlbXBzfQpA
QCAtMTYyLDcgKzE2Niw3IEBAIEVPRgogICAgIGRlZiBjaGVja3BvaW50U2l6ZUFzc2VydAogICAg
ICAgICByZXR1cm4gaWYgQGNoZWNrcG9pbnRzLm5pbD8KIAotICAgICAgICAic3RhdGljX2Fzc2Vy
dCgje2NhcGl0YWxpemVkX25hbWV9OjpsZW5ndGggPiAje2NhcGl0YWxpemVkX25hbWV9OjpudW1i
ZXJPZkNoZWNrcG9pbnRzLCBcIkZ1bGxCeXRlY29kZUxpdmVzcyByZWxpZXMgb24gdGhlIGxlbmd0
aCBvZiAje2NhcGl0YWxpemVkX25hbWV9IGJlaW5nIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9m
IGNoZWNrcG9pbnRzXCIpOyIKKyAgICAgICAgInN0YXRpY19hc3NlcnQoI3tjYXBpdGFsaXplZF9u
YW1lfTo6bGVuZ3RoICsgMSA+ICN7Y2FwaXRhbGl6ZWRfbmFtZX06Om51bWJlck9mQ2hlY2twb2lu
dHMsIFwiRnVsbEJ5dGVjb2RlTGl2ZXNzIHJlbGllcyBvbiB0aGUgbGVuZ3RoIG9mICN7Y2FwaXRh
bGl6ZWRfbmFtZX0gYmVpbmcgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgY2hlY2twb2ludHNc
Iik7IgogICAgIGVuZAogCiAgICAgZGVmIHRlbXBzCkBAIC0yMzIsNiArMjM2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogICAgICAgICByZXR1cm4gI3tt
YXBfZmllbGRzX3dpdGhfc2l6ZSgiIiwgIl9fc2l6ZSIsICY6Zml0c19jaGVjaykuam9pbiAiXG4g
ICAgICAgICAgICAmJiAifQorICAgICAgICAgICAgJiYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpO
YXJyb3cgPyAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNvZGVJRFR5cGUsIDApLmZpdHNf
Y2hlY2soU2l6ZTo6TmFycm93KX0gOiAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNvZGVJ
RFR5cGUsIDApLmZpdHNfY2hlY2soU2l6ZTo6V2lkZTE2KX0pCiAgICAgICAgICAgICAmJiAoX19z
aXplID09IE9wY29kZVNpemU6OldpZGUxNiA/ICN7b3Bfd2lkZTE2LmZpdHNfY2hlY2soU2l6ZTo6
TmFycm93KX0gOiB0cnVlKQogICAgICAgICAgICAgJiYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpX
aWRlMzIgPyAje29wX3dpZGUzMi5maXRzX2NoZWNrKFNpemU6Ok5hcnJvdyl9IDogdHJ1ZSk7CiAg
ICAgfQpAQCAtMjUxLDcgKzI1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgI3tvcF93
aWRlMTYuZml0c193cml0ZSBTaXplOjpOYXJyb3d9CiAgICAgICAgICAgICBlbHNlIGlmIChfX3Np
emUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQogICAgICAgICAgICAgICAgICN7b3Bfd2lkZTMyLmZp
dHNfd3JpdGUgU2l6ZTo6TmFycm93fQotICAgICAgICAgICAgI3tBcmd1bWVudC5uZXcoIm9wY29k
ZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KKyAgICAgICAg
ICAgICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCkuZml0c193cml0
ZSAiT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywgX19zaXpl
Pjo6b3Bjb2RlSURTaXplIn0KICN7bWFwX29wZXJhbmRzX3dpdGhfc2l6ZSgiICAgICAgICAgICAg
IiwgIl9fc2l6ZSIsICY6Zml0c193cml0ZSkuam9pbiAiXG4ifQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTI2NCw3ICsyNjksNyBAQCBFT0YKIAogICAgIGRlZiBkdW1w
ZXIKICAgICAgICAgPDwtRU9GCi0gICAgdm9pZCBkdW1wKEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVt
cGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGludCBfX3NpemVTaGlm
dEFtb3VudCkKKyAgICB2b2lkIGR1bXAoQnl0ZWNvZGVEdW1wZXJCYXNlPCN7dHlwZV9wcmVmaXh9
SW5zdHJ1Y3Rpb25TdHJlYW0+KiBkdW1wZXIsICN7dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBfX2xvY2F0aW9uLCBpbnQgX19zaXplU2hpZnRBbW91bnQpCiAgICAgewogICAg
ICAgICBkdW1wZXItPnByaW50TG9jYXRpb25BbmRPcChfX2xvY2F0aW9uLCAmIioqI3tAbmFtZX0i
WzIgLSBfX3NpemVTaGlmdEFtb3VudF0pOwogI3twcmludF9hcmdzIHsgfGFyZ3wKQEAgLTI4NCwz
MCArMjg5LDMwIEBAIEVPRgogICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDhfdCog
c3RyZWFtKQogICAgICAgICAje2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6TmFycm93Iil9CiAgICAg
ewotICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzdHJlYW0pWy0xXSA9PSBvcGNvZGVJRCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3Ry
ZWFtLCBzdGF0aWNfY2FzdDwje29wY29kZUlEVHlwZX0+KGJpdHdpc2VfY2FzdDxjb25zdCB0eXBl
bmFtZSBPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNv
ZGVTaXplOjpOYXJyb3c+OjpvcGNvZGVUeXBlKj4oc3RyZWFtKVstMV0pID09IG9wY29kZUlEKTsK
ICAgICB9CiAKICAgICAje2NhcGl0YWxpemVkX25hbWV9KGNvbnN0IHVpbnQxNl90KiBzdHJlYW0p
CiAgICAgICAgICN7aW5pdC5jYWxsKCJPcGNvZGVTaXplOjpXaWRlMTYiKX0KICAgICB7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0
cmVhbSlbLTFdID09IG9wY29kZUlEKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIHN0
YXRpY19jYXN0PCN7b3Bjb2RlSURUeXBlfT4oYml0d2lzZV9jYXN0PGNvbnN0IHR5cGVuYW1lIE9w
Y29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6
OldpZGUxNj46Om9wY29kZVR5cGUqPihzdHJlYW0pWy0xXSkgPT0gb3Bjb2RlSUQpOwogICAgIH0K
IAogCiAgICAgI3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50MzJfdCogc3RyZWFtKQogICAg
ICAgICAje2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lkZTMyIil9CiAgICAgewotICAgICAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJlYW0p
Wy0xXSA9PSBvcGNvZGVJRCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBzdGF0aWNf
Y2FzdDwje29wY29kZUlEVHlwZX0+KGJpdHdpc2VfY2FzdDxjb25zdCB0eXBlbmFtZSBPcGNvZGVJ
RFdpZHRoQnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRl
MzI+OjpvcGNvZGVUeXBlKj4oc3RyZWFtKVstMV0pID09IG9wY29kZUlEKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgI3tjYXBpdGFsaXplZF9uYW1lfSBkZWNvZGUoY29uc3QgdWludDhfdCogc3RyZWFt
KQogICAgIHsKICAgICAgICAgLy8gQSBwb2ludGVyIGlzIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBv
cGVyYW5kIChvcGNvZGUgYW5kIHByZWZpeCBhcmUgbm90IGluY2x1ZGVkKS4KICAgICAgICAgaWYg
KCpzdHJlYW0gPT0gI3t3aWRlMzJ9KQotICAgICAgICAgICAgcmV0dXJuIHsgYml0d2lzZV9jYXN0
PGNvbnN0IHVpbnQzMl90Kj4oc3RyZWFtICsgMikgfTsKKyAgICAgICAgICAgIHJldHVybiB7IGJp
dHdpc2VfY2FzdDxjb25zdCB1aW50MzJfdCo+KHN0cmVhbSArIC8qIHByZWZpeCAqLyAxICsgT3Bj
b2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6
V2lkZTMyPjo6b3Bjb2RlSURTaXplKSB9OwogICAgICAgICBpZiAoKnN0cmVhbSA9PSAje3dpZGUx
Nn0pCi0gICAgICAgICAgICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihz
dHJlYW0gKyAyKSB9OwotICAgICAgICByZXR1cm4geyBzdHJlYW0gKyAxIH07CisgICAgICAgICAg
ICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzdHJlYW0gKyAvKiBwcmVm
aXggKi8gMSArIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMs
IE9wY29kZVNpemU6OldpZGUxNj46Om9wY29kZUlEU2l6ZSkgfTsKKyAgICAgICAgcmV0dXJuIHsg
c3RyZWFtICsgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywg
T3Bjb2RlU2l6ZTo6TmFycm93Pjo6b3Bjb2RlSURTaXplIH07CiAgICAgfQogRU9GCiAgICAgZW5k
CkBAIC0zNjIsMTggKzM2NywxOSBAQCBFT0YKICAgICBlbmQKIAogICAgIGRlZiBsZW5ndGgKLSAg
ICAgICAgMSArIChAYXJncy5uaWw/ID8gMCA6IEBhcmdzLmxlbmd0aCkgKyAoQG1ldGFkYXRhLmVt
cHR5PyA/IDAgOiAxKQorICAgICAgICAoQGFyZ3MubmlsPyA/IDAgOiBAYXJncy5sZW5ndGgpICsg
KEBtZXRhZGF0YS5lbXB0eT8gPyAwIDogMSkKICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmR1bXBf
Ynl0ZWNvZGUobmFtZSwgb3Bjb2RlX3RyYWl0cywgb3Bjb2RlcykKKyAgICAgICAgdHlwZV9wcmVm
aXggPSAob3Bjb2RlX3RyYWl0cyA9PSA6SlNPcGNvZGVUcmFpdHMgPyAiSlMiIDogKG9wY29kZV90
cmFpdHMgPT0gOldhc21PcGNvZGVUcmFpdHMgPyAiV2FzbSIgOiAiRXJyb3Ije29wY29kZV90cmFp
dHN9IikpCiAgICAgICAgIDw8LUVPRi5jaG9tcAotdm9pZCBkdW1wI3tuYW1lfShCeXRlY29kZUR1
bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBfX2xvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiogX19pbnN0cnVjdGlvbikKK3ZvaWQgZHVtcCN7bmFtZX0oQnl0ZWNv
ZGVEdW1wZXJCYXNlPCN7dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rpb25TdHJlYW0+KiBkdW1wZXIsICN7
dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBfX2xvY2F0aW9uLCBjb25zdCAj
e3R5cGVfcHJlZml4fUluc3RydWN0aW9uKiBfX2luc3RydWN0aW9uKQogewotICAgIHN3aXRjaCAo
X19pbnN0cnVjdGlvbi0+b3Bjb2RlSUQ8I3tvcGNvZGVfdHJhaXRzfT4oKSkgeworICAgIHN3aXRj
aCAoX19pbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI3tvcGNvZGVzLm1hcCB7IHxvcHwKICAg
ICAgICAgPDwtRU9GLmNob21wCiAgICAgY2FzZSAje29wLm5hbWV9OgotICAgICAgICBfX2luc3Ry
dWN0aW9uLT5hczwje29wLmNhcGl0YWxpemVkX25hbWV9LCAje29wY29kZV90cmFpdHN9PigpLmR1
bXAoZHVtcGVyLCBfX2xvY2F0aW9uLCBfX2luc3RydWN0aW9uLT5zaXplU2hpZnRBbW91bnQ8I3tv
cGNvZGVfdHJhaXRzfT4oKSk7CisgICAgICAgIF9faW5zdHJ1Y3Rpb24tPmFzPCN7b3AuY2FwaXRh
bGl6ZWRfbmFtZX0+KCkuZHVtcChkdW1wZXIsIF9fbG9jYXRpb24sIF9faW5zdHJ1Y3Rpb24tPnNp
emVTaGlmdEFtb3VudCgpKTsKICAgICAgICAgYnJlYWs7CiBFT0YKICAgICB9LmpvaW4gIlxuIn0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBD
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCmluZGV4
IDc5NWRhNTI0YTYzZjc0OTEyMDg0YjJjZTFhOTk1YTkwNWIxMDRmMGMuLmMzMTljNzg2YThiZTY0
NDIzNzIwZjgwZDRiOTY2NDgxMzA5NDIzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0Fic3RyYWN0UEMuaApAQCAtMzEsNyArMzEsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAK
IGNsYXNzIEFic3RyYWN0UEMgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCA5ZWRmNTliOTY4NmE1YWQ2Y2VhODM4M2Y3
NDMzMzM2MGExOWM2ZDQxLi5hNjE4M2IwZDcyNGY5ZmNkZmU1NDJkNDJlOWYxYWQ2NmM3MWMxODM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNw
cApAQCAtMTA4LDEzICsxMDgsMTMgQEAgU1VQUFJFU1NfQVNBTiBDYWxsU2l0ZUluZGV4IENhbGxG
cmFtZTo6dW5zYWZlQ2FsbFNpdGVJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIENhbGxTaXRlSW5k
ZXg6OmZyb21CaXRzKHVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzKCkpOwogfQogCi1jb25zdCBJbnN0
cnVjdGlvbiogQ2FsbEZyYW1lOjpjdXJyZW50VlBDKCkgY29uc3QKK2NvbnN0IEpTSW5zdHJ1Y3Rp
b24qIENhbGxGcmFtZTo6Y3VycmVudFZQQygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNhbGxTaXRl
Qml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkpOwogICAgIHJldHVybiBjb2RlQmxvY2soKS0+aW5zdHJ1
Y3Rpb25zKCkuYXQoY2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCgpKS5wdHIoKTsKIH0KIAot
dm9pZCBDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZwYykKK3Zv
aWQgQ2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHZwYykKIHsK
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKGNvZGVCbG9jaygpLT5ieXRlY29kZUluZGV4KHZw
YykpOwogICAgIHRoaXNbc3RhdGljX2Nhc3Q8aW50PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyldLnRhZygpID0gY2FsbFNpdGUuYml0cygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IDg4Mjk5ZjQ0ZDZlMGUx
OTM4N2E2YTljZjc3NGY1MDcxMmFiMDAyYjQuLjQxOWVmYjM2YTQwOTVkYmUxYzhhMjA0NjEyNWU4
YzVjNzgyZjMzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmgKQEAgLTQwLDggKzQwLDYgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgIGNsYXNzIFNv
dXJjZU9yaWdpbjsKICAgICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAKLSAgICBzdHJ1Y3QgSW5z
dHJ1Y3Rpb247Ci0KICAgICBjbGFzcyBDYWxsU2l0ZUluZGV4IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIENhbGxTaXRlSW5kZXgoKSA9IGRlZmF1bHQ7CkBAIC0xOTksOSArMTk3LDkgQEAgbmFtZXNw
YWNlIEpTQyAgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb2RlT3JpZ2luIGNvZGVPcmln
aW4oKSBjb25zdDsKIAogICAgICAgICBpbmxpbmUgUmVnaXN0ZXIqIHRvcE9mRnJhbWUoKTsKLSAg
ICAKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdDsgLy8gVGhp
cyBvbmx5IG1ha2VzIHNlbnNlIGluIHRoZSBMTEludCBhbmQgYmFzZWxpbmUuCi0gICAgICAgIHZv
aWQgc2V0Q3VycmVudFZQQyhjb25zdCBJbnN0cnVjdGlvbiopOworCisgICAgICAgIGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdDsgLy8gVGhpcyBvbmx5IG1ha2VzIHNlbnNl
IGluIHRoZSBMTEludCBhbmQgYmFzZWxpbmUuCisgICAgICAgIHZvaWQgc2V0Q3VycmVudFZQQyhj
b25zdCBKU0luc3RydWN0aW9uKik7CiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxs
RnJhbWUqIGZyYW1lKSB7IGNhbGxlckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZSA9IGZyYW1lOyB9
CiAgICAgICAgIGlubGluZSB2b2lkIHNldFNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0LCBK
U1Njb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCAzNjIwMmRjYjVlOTNiZjVhMDVjYmE2NjQ5NDk4YzdjMzM5NjM4M2Nl
Li5lZDY4OTUyZjZkNmVhZWNiNTA5MTIwOTA3Y2Y1ZGEwOTUzMWIxNzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxNyw5
ICs1MTcsOSBAQCBDYXRjaEluZm86OkNhdGNoSW5mbyhjb25zdCBIYW5kbGVySW5mbyogaGFuZGxl
ciwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIC8vIGFuZCBjYW4gY2F1c2UgYW4gb3Zl
cmZsb3cuIE9TUiBleGl0IHByb3Blcmx5IGV4aXRzIHRvIGhhbmRsZXItPnRhcmdldAogICAgICAg
ICAvLyBpbiB0aGUgcHJvcGVyIGZyYW1lLgogICAgICAgICBpZiAoIUpJVENvZGU6OmlzT3B0aW1p
emluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpCi0gICAgICAgICAgICBtX2NhdGNoUENGb3JJ
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+dGFyZ2V0
KS5wdHIoKTsKKyAgICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0geyBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmF0KGhhbmRsZXItPnRhcmdldCkucHRyKCkgfTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBudWxscHRyOworICAg
ICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSB7IHN0YXRpY19jYXN0PEpTSW5zdHJ1
Y3Rpb24qPihudWxscHRyKSB9OwogICAgIH0KIH0KIApAQCAtNTMxLDkgKzUzMSw5IEBAIENhdGNo
SW5mbzo6Q2F0Y2hJbmZvKGNvbnN0IFdhc206OkhhbmRsZXJJbmZvKiBoYW5kbGVyLCBjb25zdCBX
YXNtOjpDYWxsZWUqIGNhbGxlCiAgICAgICAgIG1fdHlwZSA9IEhhbmRsZXJUeXBlOjpDYXRjaDsK
ICAgICAgICAgbV9uYXRpdmVDb2RlID0gaGFuZGxlci0+bV9uYXRpdmVDb2RlOwogICAgICAgICBp
ZiAoY2FsbGVlLT5jb21waWxhdGlvbk1vZGUoKSA9PSBXYXNtOjpDb21waWxhdGlvbk1vZGU6OkxM
SW50TW9kZSkKLSAgICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgV2FzbTo6TExJbnRDYWxsZWUqPihjYWxsZWUpLT5pbnN0cnVjdGlvbnMoKS5hdCho
YW5kbGVyLT5tX3RhcmdldCkucHRyKCk7CisgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnBy
ZXRlciA9IHsgc3RhdGljX2Nhc3Q8Y29uc3QgV2FzbTo6TExJbnRDYWxsZWUqPihjYWxsZWUpLT5p
bnN0cnVjdGlvbnMoKS5hdChoYW5kbGVyLT5tX3RhcmdldCkucHRyKCkgfTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBudWxscHRyOworICAgICAg
ICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSB7IHN0YXRpY19jYXN0PFdhc21JbnN0cnVj
dGlvbio+KG51bGxwdHIpIH07CiAgICAgfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IGU2NDY0NjU2NzlmMjFkMTNk
MzQ0Y2Q2ODgyMzkxNzA3NmZjY2FhMTEuLjYyYmEwMDE5MmU2MjNmMjhlYjZiOGE5MjgzYTk2Mjk5
Zjg5MTI5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNs
dWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgorI2luY2x1ZGUgPHZh
cmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogI2lmIEVOQUJMRShDX0xPT1ApCkBA
IC02OCw3ICs2OSw2IEBAIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBlbnVtIGNsYXNzIEhhbmRs
ZXJUeXBlIDogdWludDhfdDsKICAgICBzdHJ1Y3QgQ2FsbEZyYW1lQ2xvc3VyZTsKICAgICBzdHJ1
Y3QgSGFuZGxlckluZm87Ci0gICAgc3RydWN0IEluc3RydWN0aW9uOwogICAgIHN0cnVjdCBQcm90
b0NhbGxGcmFtZTsKIAogICAgIGVudW0gRGVidWdIb29rVHlwZSB7CkBAIC0xMDIsNyArMTAyLDgg
QEAgc3RydWN0IEhhbmRsZXJJbmZvOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBtX25hdGl2ZUNvZGU7CiAjZW5k
aWYKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyOwor
CisgICAgICAgIHN0ZDo6dmFyaWFudDxjb25zdCBKU0luc3RydWN0aW9uKiwgY29uc3QgV2FzbUlu
c3RydWN0aW9uKj4gbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CiAgICAgfTsKIAogICAgIGNsYXNz
IEludGVycHJldGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1MTViNzk2Yjhh
YjM4OTdmZmFkOTgyMmIwNDI1ZWVjYmIwNTRlMDU0Li5lOWMwZWNjMzBlYWNjNjhjNTU5ZjhhYzQ2
M2UxMDYyMjMxZGRlYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNTIsNyAr
MjUyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogCiAgICAgICAgIGlm
IChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRl
Y29kZU1haW5QYXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7Ci0gICAgICAg
IGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQo
bV9ieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICAgICAgY29uc3QgYXV0byogY3VycmVudEluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgICAg
IEFTU0VSVChjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CiAKICAgICAgICAgbV9wY1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgpLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCkpOwpAQCAtNTUxLDggKzU1MSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAKICAgICAgICAgQnl0ZWNvZGVJbmRleCBmaXJzdFRvID0gbV9ieXRlY29kZUlu
ZGV4OwogCi0gICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBt
X3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0
cigpOwotICAgICAgICAKKyAgICAgICAgY29uc3QgYXV0byogY3VycmVudEluc3RydWN0aW9uID0g
bV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZUluZGV4KS5w
dHIoKTsKKwogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNv
ZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IGMyNjVjY2MwNDc5ODdiZjljNzc0Nzg4MjQxYmUwNzIxYTBhNjVk
MWUuLmI4ZmRhNWQxYjQzMTVlOWY3ZDcwNGM0NmFhYTVhNWIxYmIwMzQ0ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtNjYsNyArNjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgU3RydWN0dXJlQ2hhaW47CiAgICAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLSAgICBz
dHJ1Y3QgSW5zdHJ1Y3Rpb247CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCYXNlSW5z
dHJ1Y3Rpb247CisgICAgc3RydWN0IEpTT3Bjb2RlVHJhaXRzOworICAgIHVzaW5nIEpTSW5zdHJ1
Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OworCiAgICAgc3RydWN0IE9w
ZXJhbmRUeXBlczsKICAgICBzdHJ1Y3QgU2ltcGxlSnVtcFRhYmxlOwogICAgIHN0cnVjdCBTdHJp
bmdKdW1wVGFibGU7CkBAIC0yODksOSArMjkyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdEp1bXBTbG93VG9Ib3QoSnVtcCwgaW50KTsKIAogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOworICAgICAgICB2b2lkIGNvbXBpbGVPcENh
bGwoY29uc3QgSlNJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KTsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbFNs
b3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYsIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KTsKKyAgICAgICAgdm9pZCBjb21waWxlT3BD
YWxsU2xvd0Nhc2UoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CkBAIC0zMDksMTMgKzMx
MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBjb21waWxlVGFpbENhbGwoY29u
c3QgT3AmLCBVbmxpbmtlZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4
KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIGJvb2wgY29tcGlsZUNh
bGxFdmFsKGNvbnN0IE9wJik7Ci0gICAgICAgIHZvaWQgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Cisg
ICAgICAgIHZvaWQgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSlNJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+CiAgICAgICAgIHZvaWQgZW1pdFB1dENhbGxSZXN1bHQoY29uc3QgT3AmKTsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPiB2b2lkIGNv
bXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPiB2b2lkIGNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4gdm9pZCBjb21waWxlT3BTdHJpY3RFcShj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPiB2b2lk
IGNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBKU0luc3RydWN0aW9uKik7CiAjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgICAgICB2b2lkIGNvbXBpbGVPcEVxQ29tbW9uKFZpcnR1YWxSZWdp
c3RlciBzcmMxLCBWaXJ0dWFsUmVnaXN0ZXIgc3JjMik7CiAgICAgICAgIHZvaWQgY29tcGlsZU9w
RXFTbG93Q29tbW9uKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTM3NSwy
NTcgKzM3OCwyNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKEpTVmFsdWVSZWdzLCBWaXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXAo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAgICAgICAgdm9pZCBl
bWl0X2NvbXBhcmVBbmRKdW1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKICAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wSW1wbChWaXJ0dWFsUmVnaXN0
ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxD
b25kaXRpb24pOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBl
bWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRp
b24pOworICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVVbnNp
Z25lZEltcGwoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVh
bFJlZ2lzdGVyIG9wMiwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcChjb25z
dCBJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOworICAgICAgICB2b2lkIGVtaXRf
Y29tcGFyZVVuc2lnbmVkQW5kSnVtcChjb25zdCBKU0luc3RydWN0aW9uKiwgUmVsYXRpb25hbENv
bmRpdGlvbik7CiAgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wSW1wbChW
aXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCB1bnNpZ25lZCB0YXJnZXQs
IFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlw
ZW5hbWUgU2xvd09wZXJhdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dyhjb25zdCBJbnN0cnVjdGlvbiosIERvdWJsZUNvbmRpdGlvbiwgU2xvd09wZXJhdGlvbiwgYm9v
bCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCBKU0luc3RydWN0aW9uKiwgRG91YmxlQ29u
ZGl0aW9uLCBTbG93T3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTbG93T3BlcmF0aW9uPgog
ICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93SW1wbChWaXJ0dWFsUmVnaXN0ZXIg
b3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIHNpemVfdCBpbnN0cnVj
dGlvblNpemUsIERvdWJsZUNvbmRpdGlvbiwgU2xvd09wZXJhdGlvbiwgYm9vbCBpbnZlcnQsIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgCisKICAgICAgICAgdm9p
ZCBhc3NlcnRTdGFja1BvaW50ZXJPZmZzZXQoKTsKIAotICAgICAgICB2b2lkIGVtaXRfb3BfYWRk
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iaXRhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JpdG9yKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iaXR4b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2JpdG5vdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfdGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9jYWxsX2V2YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Nh
bGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdGFp
bF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYXJndW1lbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Fy
Z3VtZW50X2NvdW50KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfcmVzdF9sZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2NoZWNrX3Rkeihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaWRl
bnRpdHlfd2l0aF9wcm9maWxlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2JlbG93KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9iZWxvd2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90cnlf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9p
ZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FkZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9iaXRhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfYml0b3IoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfYml0eG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2JpdG5vdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jYWxs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbChj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsX2V2YWwoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF92YXJhcmdzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF92YXJh
cmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9jYXRjaChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9jb25zdHJ1Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfdG9fdGhpcyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfYXJndW1lbnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfYXJndW1lbnRfY291bnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2NoZWNrX3Rkeihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV92
YWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9lbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VxX251bGwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3coY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3dlcShjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3Zh
bChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3NldF9w
cml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2VtcHR5KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZpbmVk
X29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNf
Ym9vbGVhbihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19u
dW1iZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAg
dm9pZCBlbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogI2Vsc2UKLSAgICAg
ICAgTk9fUkVUVVJOIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIE5PX1JFVFVSTiB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CiAjZW5kaWYKLSAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVjdChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2plcV9udWxsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2ptcChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2pudW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2plcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
amdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pncmVh
dGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pubGVzcyhj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5sZXNzZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2puZ3JlYXRlcihjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9qYmVsb3coY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pi
ZWxvd2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qdHJ1ZShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9oaW50KGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190cmFwcyhjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfbm9wKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2luKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbHNoaWZ0KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfbW92KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9t
dWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25lZ2F0ZShjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmVxKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19nZW5lcmF0
b3JfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Fz
eW5jX2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uc3RyaWN0
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2RlYyhjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaW5jKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVjdChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZmFsc2UoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2puZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfcHRyKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2puZXFfcHRyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2psZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2psZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfamdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfamdyZWF0ZXJlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9qbmxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3Bfam5sZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfam5ncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2plcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pzdHJpY3RlcShjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2piZWxvdyhjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qYmVsb3dlcShjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qdHJ1ZShjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdHJhcHMoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfbm9wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4oY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbHNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9wb3coY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbW92KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X211bChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZWdhdGUo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmVxKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25lcV9udWxsKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheShjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfYXN5bmNfZnVuYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfYXN5bmNfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHAoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25vdChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfZGVjKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2luYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3BhcmVudF9zY29wZShjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiop
OwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcmV0KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3Bfc3dpdGNoX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfdGVhcl9vZmZfYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF90aHJvdyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfdG9fbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90
b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19z
dHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX29iamVj
dChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fcHJpbWl0aXZl
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF91bmV4cGVjdGVkX2xv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Vuc2lnbmVkKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF91cnNoaWZ0KGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9pbnRlcm5hbF9maWVs
ZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbG9nX3NoYWRvd19j
aGlja2VuX3Byb2xvZ3VlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lk
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJf
YnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9z
ZXR0ZXJfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3JldChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yc2hpZnQo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X2Z1bmN0aW9u
X25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc3RyaWN0
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc3ViKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9pbW0oY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX3N0cmluZyhjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVu
dHMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdGhyb3coY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdG9fbnVtYmVyKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWVyaWMoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RvX29iamVjdChjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdW5leHBlY3RlZF9sb2FkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Vyc2hpZnQoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9pbnRlcm5hbF9maWVs
ZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
IAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlPgogICAgICAgICB2b2lkIGdl
bmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogCi0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW51
bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9l
bnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlLCB0eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9u
VHlwZT4KICAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25z
dCBPcGNvZGVUeXBlJiwgU2xvd1BhdGhGdW5jdGlvblR5cGUpOwotICAgICAgICB2b2lkIGVtaXRf
b3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiop
OwotCi0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9lcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfY2FsbGVl
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9o
YXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3df
b3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9qZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZ3JlYXRlcmVxKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2pubGVzcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3Nl
cShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3df
b3Bfam5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9o
aW50KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLQotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRz
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3Bl
cnR5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Fk
ZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF90YWlsX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX2V2YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90
YWlsX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdz
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfY2FsbGVlKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dl
dF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29u
c3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5f
YnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFz
X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVz
c2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9qZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNzKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9q
bmdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXJlcShjb25zdCBKU0lu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9q
bnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tb2Qo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wb3coY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9t
dWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSlNJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9zdWIoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9z
Y29wZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9f
c2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zy
b21fYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF90b19hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CiAKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
aXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVu
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdm9p
ZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSk7CiAgICAgICAg
IHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUpOwogCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSlNJbnN0cnVj
dGlvbiopOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY0V4cHJDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY0V4cHJDb21tb24oY29uc3QgSlNJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCBHUFJSZWcp
OwogICAgICAgICB2b2lkIGVtaXRWYXJSZWFkT25seUNoZWNrKFJlc29sdmVUeXBlLCBHUFJSZWcg
c2NyYXRjaEdQUik7CiAgICAgICAgIHZvaWQgZW1pdE5vdGlmeVdyaXRlV2F0Y2hwb2ludChHUFJS
ZWcgcG9pbnRlclRvU2V0KTsKQEAgLTY0MywxNCArNjQ2LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50Q2hhcihWaXJ0dWFsUmVnaXN0ZXIpOwogCiAg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFt
ZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Qcm9maWxlZEZ1bmN0aW9uPgotICAgICAg
ICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBJ
bnN0cnVjdGlvbiosIFByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24pOworICAg
ICAgICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25z
dCBKU0luc3RydWN0aW9uKiwgUHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbik7
CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBl
bmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Qcm9maWxlZEZ1bmN0aW9uPgotICAg
ICAgICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29u
c3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uKTsK
KyAgICAgICAgdm9pZCBlbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPios
IGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0
aW9uKTsKIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRv
ciwgdHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5cGVuYW1lIFByb2ZpbGVkRnVu
Y3Rpb24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0TWF0aElD
U2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJv
ZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7
CisgICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4q
LCBjb25zdCBKU0luc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVk
RnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBP
cCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwg
dHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9uPgotICAg
ICAgICB2b2lkIGVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25z
dCBJbnN0cnVjdGlvbiosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9u
LCBSZXBhdGNoRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5
TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBKU0luc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBhdGNo
RnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7CiAKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHJldHVybkZyb21CYXNlbGluZUdlbmVyYXRvcihWTSYpOwpAQCAtODMyLDEyICs4MzUsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3I+Ci0gICAgICAgIHZvaWQgZW1pdEJpdEJpbmFy
eU9wRmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmls
aW5nUG9saWN5IHNob3VsZEVtaXRQcm9maWxpbmcgPSBQcm9maWxpbmdQb2xpY3k6Ok5vUHJvZmls
aW5nKTsKKyAgICAgICAgdm9pZCBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBzaG91bGRFbWl0UHJv
ZmlsaW5nID0gUHJvZmlsaW5nUG9saWN5OjpOb1Byb2ZpbGluZyk7CiAKLSAgICAgICAgdm9pZCBl
bWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIE9wY29kZUlEKTsKKyAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQpOwogCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdl
bmVyYXRvcjo6U2hpZnRUeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdEZhc3RQYXRo
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdl
bmVyYXRvcjo6U2hpZnRUeXBlKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZVRvcENhbGxGcmFtZSgp
OwogCkBAIC04NDgsOCArODUxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIExvYWRz
IHRoZSBjaGFyYWN0ZXIgdmFsdWUgb2YgYSBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZyBpbnRvIGRz
dC4KICAgICAgICAgdm9pZCBlbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcyk7CiAKLSAgICAgICAgaW50IGp1bXBU
YXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgdGFyZ2V0KTsKLSAgICAgICAgCisgICAgICAg
IGludCBqdW1wVGFyZ2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBpbnQgdGFyZ2V0KTsKKwogI2lm
IEVOQUJMRShERkdfSklUKQogICAgICAgICB2b2lkIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNr
KCk7CiAjZWxzZQpAQCAtOTQ1LDggKzk0OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQ
Q1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4gbV9wY1RvQ29kZU9yaWdpbk1h
cDsKIAotICAgICAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0aW9uKiwgdm9pZCo+IG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQzsKLSAgICAgICAgSGFzaE1hcDxjb25zdCBJbnN0cnVjdGlvbiosIFVuaXF1
ZVJlZjxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+PiBtX2luc3RydWN0aW9uVG9NYXRoSUNHZW5lcmF0
aW9uU3RhdGU7CisgICAgICAgIEhhc2hNYXA8Y29uc3QgSlNJbnN0cnVjdGlvbiosIHZvaWQqPiBt
X2luc3RydWN0aW9uVG9NYXRoSUM7CisgICAgICAgIEhhc2hNYXA8Y29uc3QgSlNJbnN0cnVjdGlv
biosIFVuaXF1ZVJlZjxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+PiBtX2luc3RydWN0aW9uVG9NYXRo
SUNHZW5lcmF0aW9uU3RhdGU7CiAKICAgICAgICAgYm9vbCBtX2NhbkJlT3B0aW1pemVkOwogICAg
ICAgICBib29sIG1fc2hvdWxkRW1pdFByb2ZpbGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IGY0MjYwNzRmNDViYWY0ZmM2MGM4NTI4NWQwZGZj
YjBjMWE3NTVlYzkuLjA1Mzc3YjgyMDU4MWVhYmZhZTgyOWVmNGY1Y2IwODIwMTkxNWEzMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDQsMTA3
ICs0NCwxMDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX2psZXNz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qbGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
ZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpsZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIExlc3NUaGFu
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3NlcShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxP
cEpsZXNzZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgTGVzc1RoYW5PckVxdWFsKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmdyZWF0ZXI+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRlclRoYW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9qZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmdyZWF0ZXJlcT4oY3VycmVu
dEluc3RydWN0aW9uLCBHcmVhdGVyVGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2pubGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpubGVzcz4oY3VycmVudEluc3RydWN0aW9u
LCBHcmVhdGVyVGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3NlcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
am5sZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9uLCBHcmVh
dGVyVGhhbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZ3JlYXRlcihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBh
cmVBbmRKdW1wPE9wSm5ncmVhdGVyPihjdXJyZW50SW5zdHJ1Y3Rpb24sIExlc3NUaGFuT3JFcXVh
bCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJl
QW5kSnVtcDxPcEpuZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIExlc3NUaGFuKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2psZXNzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVt
aXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSmxlc3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91Ymxl
TGVzc1RoYW5BbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlTGVzcywgZmFsc2UsIGl0ZXIpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2psZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9u
LCBEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlTGVzc0Vx
LCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpncmVhdGVy
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZCwgb3BlcmF0
aW9uQ29tcGFyZUdyZWF0ZXIsIGZhbHNlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2pncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVB
bmRKdW1wU2xvdzxPcEpncmVhdGVyZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlR3JlYXRl
clRoYW5PckVxdWFsQW5kT3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXJFcSwgZmFsc2Us
IGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpubGVzcz4oY3VycmVudEluc3Ry
dWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZCwgb3BlcmF0aW9uQ29t
cGFyZUxlc3MsIHRydWUsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNz
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmxlc3NlcShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BK
bmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVk
LCBvcGVyYXRpb25Db21wYXJlTGVzc0VxLCB0cnVlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2puZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2puZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21w
YXJlQW5kSnVtcFNsb3c8T3BKbmdyZWF0ZXI+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlTGVz
c1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyLCB0cnVlLCBp
dGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSm5ncmVhdGVyZXE+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCwgb3BlcmF0aW9u
Q29tcGFyZUdyZWF0ZXJFcSwgdHJ1ZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2Jl
bG93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9iZWxvdyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgZW1pdF9jb21wYXJlVW5zaWduZWQ8T3BCZWxvdz4oY3VycmVudEluc3RydWN0aW9uLCBCZWxv
dyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JlbG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JlbG93ZXEoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZVVuc2lnbmVk
PE9wQmVsb3dlcT4oY3VycmVudEluc3RydWN0aW9uLCBCZWxvd09yRXF1YWwpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9qYmVsb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2piZWxvdyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wPE9wSmJlbG93
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamJl
bG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2piZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXA8T3BKYmVsb3dlcT4oY3VycmVudElu
c3RydWN0aW9uLCBCZWxvd09yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF91bnNpZ25l
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfdW5zaWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVW5zaWduZWQ+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6
OmVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmRpdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKQEAgLTIxOCw3ICsyMTgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcEltcGwoVmlydHVhbFJlZ2lzdGVyIG9w
MSwgVmlydHVhbFJlZ2lzdGVyIG9wMiwgdW5zaQogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
dm9pZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQordm9pZCBKSVQ6OmVt
aXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AxID0gYnl0ZWNv
ZGUubV9saHM7CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2ln
bmVkQW5kSnVtcEltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lzdGVyIG8KIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRp
dGlvbikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBKU0luc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZVVuc2lnbmVkSW1wbChWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIg
b3AxLCBWaXIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIFNsb3dPcGVyYXRp
b24+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBEb3VibGVDb25kaXRpb24gY29uZGl0aW9uLCBTbG93T3BlcmF0aW9uIG9w
ZXJhdGlvbiwgYm9vbCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29uc3QgSlNJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIERvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24sIFNsb3dPcGVyYXRpb24g
b3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKQEAgLTM5MCw3ICszOTAsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3dJbXBsKFZpcnR1YWxSZWdpc3RlciBv
cDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsCiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVz
dDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2luYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEluYz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjRHN0ID0gYnl0ZWNvZGUubV9z
cmNEc3Q7CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihzcmNEc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZGVjKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWMoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVjPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBzcmNEc3QgPSBieXRlY29kZS5tX3NyY0RzdDsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
I2lmIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE1vZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC00NTEsNyArNDUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihyZXN1bHQsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKQEAgLTQ2MSwxMyArNDYxLDEzIEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpCiAKICNlbHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChj
b25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSlNJbnN0cnVj
dGlvbiopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3Bh
dGhfbW9kKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKIH0KQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQ6IE9QX01PRCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcG93KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wb3co
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUG93PigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGkKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZtX3Vu
bGlua2VkQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wTmVnYXRlPigpLm1fcHJvZmlsZUluZGV4KTsKICAgICBKSVROZWdJQyogbmVnYXRlSUMgPSBt
X21hdGhJQ3MuYWRkSklUTmVnSUMoYXJpdGhQcm9maWxlKTsKQEAgLTUzOSw3ICs1MzksNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdh
dGUpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC01NDksNyArNTQ5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0MKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1l
IFNuaXBwZXRHZW5lcmF0b3I+Ci12b2lkIEpJVDo6ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5IHByb2Zp
bGluZ1BvbGljeSkKK3ZvaWQgSklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBwcm9maWxpbmdQ
b2xpY3kpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNTg5
LDcgKzU4OSw3IEBAIHZvaWQgSklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpCiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcExpc3QoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdG5vdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0
bm90KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEJpdG5vdD4oKTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC02MDgsMjcgKzYwOCwyNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRub3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iaXRhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JpdGFuZChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGg8T3BC
aXRhbmQsIEpJVEJpdEFuZEdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQ
b2xpY3k6OlNob3VsZEVtaXRQcm9maWxpbmcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iaXRv
cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfYml0b3IoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoPE9wQml0b3IsIEpJVEJpdE9yR2VuZXJhdG9yPihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeTo6U2hvdWxkRW1pdFByb2ZpbGluZyk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdHhvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0eG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxPcEJp
dHhvciwgSklUQml0WG9yR2VuZXJhdG9yPihjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1Bv
bGljeTo6U2hvdWxkRW1pdFByb2ZpbGluZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xzaGlm
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbHNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxPcExzaGlmdCwgSklUTGVmdFNoaWZ0R2VuZXJhdG9y
PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRGYXN0
UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCBvcGNv
ZGVJRCkKK3ZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CiAgICAgQVNTRVJU
KG9wY29kZUlEID09IG9wX3JzaGlmdCB8fCBvcGNvZGVJRCA9PSBvcF91cnNoaWZ0KTsKICAgICBz
d2l0Y2ggKG9wY29kZUlEKSB7CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBKSVQ6OmVtaXRSaWdo
dFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bj
b2RlSUQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdFJpZ2h0U2hp
ZnRGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdo
dFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5cGUgc25pcHBldFNoaWZ0VHlwZSkKK3ZvaWQgSklUOjpl
bWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6U2hpZnRUeXBlIHNuaXBwZXRTaGlmdFR5cGUp
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNjgyLDE3ICs2
ODIsMTcgQEAgdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHQKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wTGlzdCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcnNoaWZ0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9yc2hpZnQo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRSaWdo
dFNoaWZ0RmFzdFBhdGgoY3VycmVudEluc3RydWN0aW9uLCBvcF9yc2hpZnQpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BfdXJzaGlmdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2FkZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYWRkKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZtX3VubGlua2VkQ29kZUJsb2NrLT5iaW5hcnlBcml0
aFByb2ZpbGUoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEFkZD4oKS5tX3Byb2ZpbGVJbmRleCk7
CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9tYXRoSUNzLmFkZEpJVEFkZElDKGFyaXRoUHJvZmls
ZSk7CkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFk
ZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQsIG9wZXJh
dGlvblZhbHVlQWRkKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNzA5LDcgKzcwOSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlw
ZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Q
cm9maWxlZEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElD
PEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9u
IG5vblByb2ZpbGVkRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRG
dW5jdGlvbiBub25Qcm9maWxlZEZ1bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBi
eXRlY29kZS5tX2RzdDsKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zh
c3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiog
YwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KLXZvaWQg
SklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHBy
b2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikK
K3ZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0
aElDLCBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVu
Y3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1
bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTgy
Miw3ICs4MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5j
dGlvbiwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9u
Pgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRSZXBh
dGNoRnVuY3Rpb24gcHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJv
ZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uIHJlcGF0Y2hGdW5jdGlvbikKK3ZvaWQgSklU
OjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRSZXBhdGNoRnVuY3Rp
b24gcHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5j
dGlvbiwgUmVwYXRjaEZ1bmN0aW9uIHJlcGF0Y2hGdW5jdGlvbikKIHsKICAgICBNYXRoSUNHZW5l
cmF0aW9uU3RhdGUmIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSA9IG1faW5zdHJ1Y3Rpb25Ub01hdGhJ
Q0dlbmVyYXRpb25TdGF0ZS5maW5kKGN1cnJlbnRJbnN0cnVjdGlvbiktPnZhbHVlLmdldCgpOwog
ICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKQEAgLTg2
NSw3ICs4NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2Vu
ZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogYwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVu
Y3Rpb24sIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlv
bj4KLXZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiog
bWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZFJl
cGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBw
cm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVwYXRjaEZ1bmN0aW9uKQordm9pZCBK
SVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRSZXBhdGNoRnVu
Y3Rpb24gcHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRG
dW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uIHJlcGF0Y2hGdW5jdGlvbikKIHsKICAgICBNYXRoSUNH
ZW5lcmF0aW9uU3RhdGUmIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSA9IG1faW5zdHJ1Y3Rpb25Ub01h
dGhJQ0dlbmVyYXRpb25TdGF0ZS5maW5kKGN1cnJlbnRJbnN0cnVjdGlvbiktPnZhbHVlLmdldCgp
OwogICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKQEAg
LTkyNSw3ICs5MjUsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElD
PEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgfSk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cERpdj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBA
IC05ODMsNyArOTgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9tdWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X211bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmbV91bmxpbmtlZENvZGVCbG9jay0+Ymlu
YXJ5QXJpdGhQcm9maWxlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubV9wcm9maWxl
SW5kZXgpOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1fbWF0aElDcy5hZGRKSVRNdWxJQyhhcml0
aFByb2ZpbGUpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX211bChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRNYXRoSUNGYXN0PE9w
TXVsPihtdWxJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
LCBvcGVyYXRpb25WYWx1ZU11bCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTk5OSw3ICs5
OTksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIGVtaXRNYXRoSUNTbG93PE9wTXVs
PihtdWxJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0
aW1pemUsIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1p
emUpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3N1Yihjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSAmbV91bmxpbmtlZENvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlKGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BTdWI+KCkubV9wcm9maWxlSW5kZXgpOwogICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1fbWF0aElDcy5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwpAQCAtMTAwNyw3ICsx
MDA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3N1Yihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
aW5kZXggYzY4ZTQ3ZWU5Yzg4YjE2ZTgxNjE0ZmRjOGRjYTBjNjBjNDJjMjg5Ny4uODk5ODA4NzJk
MmI3Mjc3NGM2OTU2YjM5MTE5MmU4NzE4MWIzN2U5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lk
IEpJVDo6ZW1pdF9vcF9yZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX3JldChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIGNh
bGxGcmFtZVJlZ2lzdGVyKSk7CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIEpJVDo6Y29tcGls
ZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2YWwmIGJ5dGVjb2RlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBib29sIEpJVDo6Y29t
cGlsZVRhaWxDYWxsKGNvbnN0IE9wVGFpbENhbGwmIGJ5dGVjb2RlLCBVbmxpbmtlZENhbGxMaW5r
SW5mbyosIHVucwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxl
T3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJ
bmZvSW5kZXgpCit2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcD4oKTsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nh
c2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCB1bnNpZ25lZCkKK3ZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nh
c2UoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVkKQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0g
T3A6Om9wY29kZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7
CkBAIC0zMjUsODcgKzMyNSw4NyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIH0KIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbDxPcENhbGw+KGN1cnJlbnRJbnN0
cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
dGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF90YWlsX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BUYWlsQ2FsbD4oY3VycmVudEluc3RydWN0aW9u
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX2V2
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgY29tcGlsZU9wQ2FsbDxPcENhbGxFdmFsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2Fs
bExpbmtJbmZvSW5kZXgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Nh
bGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgY29tcGlsZU9wQ2FsbDxPcENhbGxWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2Fs
bExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJh
cmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbDxPcFRhaWxDYWxsVmFyYXJncz4oY3VycmVudElu
c3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGls
ZU9wQ2FsbDxPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cz4oY3VycmVudEluc3RydWN0aW9uLCBt
X2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3Rf
dmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2NvbnN0cnVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wQ29uc3RydWN0PihjdXJyZW50SW5z
dHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2Fs
bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9w
Q2FsbD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbD4oY3VycmVudEluc3RydWN0
aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY2FsbF9ldmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxlQ2FsbEV2
YWxTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21w
aWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVy
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFp
bF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGls
ZU9wQ2FsbFNsb3dDYXNlPE9wVGFpbENhbGxWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0
ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcFRhaWxDYWxsRm9yd2FyZEFy
Z3VtZW50cz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4Kysp
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3Ry
dWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRv
ck9wZW4+KCk7CiAgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CkBAIC00NTks
NyArNDU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgZmFzdENhc2UubGluayh0aGlzKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKIApAQCAtNTA3LDcgKzUw
Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcEl0ZXJhdG9yTmV4dD4oKTsKICAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgp
IHsKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAppbmRleCBiODZlOWE0
MTAzYzg1MDZjM2ZkYmJhYzU0ZDdlOTRlNjY2MGFhZDk5Li4wNDczOTJlMTJiYTFiNTY2ZTcyNjhi
YTU2NmY1YzliZTcyODhmZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEV4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhj
ZXB0aW9ucy5jcHAKQEAgLTU3LDE4ICs1NywyMCBAQCB2b2lkIGdlbmVyaWNVbndpbmQoVk0mIHZt
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBDYXRjaEluZm8gaGFuZGxlciA9IHZtLmludGVy
cHJldGVyLT51bndpbmQodm0sIGNhbGxGcmFtZSwgZXhjZXB0aW9uKTsgLy8gVGhpcyBtYXkgdXBk
YXRlIGNhbGxGcmFtZS4KIAogICAgIHZvaWQqIGNhdGNoUm91dGluZTsKLSAgICBjb25zdCBJbnN0
cnVjdGlvbiogY2F0Y2hQQ0ZvckludGVycHJldGVyID0gbnVsbHB0cjsKKyAgICBKU09yV2FzbUlu
c3RydWN0aW9uIGNhdGNoUENGb3JJbnRlcnByZXRlciA9IHsgc3RhdGljX2Nhc3Q8SlNJbnN0cnVj
dGlvbio+KG51bGxwdHIpIH07CiAgICAgaWYgKGhhbmRsZXIubV92YWxpZCkgewogICAgICAgICBj
YXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBoYW5kbGVyLm1fY2F0Y2hQQ0ZvckludGVycHJldGVyOwog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIGNhdGNoUm91dGluZSA9IGhhbmRsZXIubV9uYXRpdmVD
b2RlLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAjZWxzZQotICAgICAgICBpZiAoY2F0Y2hQQ0Zvcklu
dGVycHJldGVyLT5pc1dpZGUzMigpKQotICAgICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6
OmdldFdpZGUzMkNvZGVQdHIoY2F0Y2hQQ0ZvckludGVycHJldGVyLT5vcGNvZGVJRCgpKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2F0Y2hQQ0ZvckludGVycHJldGVyLT5pc1dpZGUxNigpKQotICAgICAg
ICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHIoY2F0Y2hQQ0Zvcklu
dGVycHJldGVyLT5vcGNvZGVJRCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2F0Y2hS
b3V0aW5lID0gTExJbnQ6OmdldENvZGVQdHIoY2F0Y2hQQ0ZvckludGVycHJldGVyLT5vcGNvZGVJ
RCgpKTsKKyAgICAgICAgc3RkOjp2aXNpdChbJl0oYXV0byogcGMpIHsKKyAgICAgICAgICAgIGlm
IChwYy0+aXNXaWRlMzIoKSkKKyAgICAgICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6
Z2V0V2lkZTMyQ29kZVB0cihwYy0+b3Bjb2RlSUQoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChw
Yy0+aXNXaWRlMTYoKSkKKyAgICAgICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0
V2lkZTE2Q29kZVB0cihwYy0+b3Bjb2RlSUQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6OmdldENvZGVQdHIocGMtPm9wY29kZUlEKCkp
OworICAgICAgICB9LCBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIpOwogI2VuZGlmCiAgICAgfSBlbHNl
CiAgICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpoYW5kbGVVbmNhdWdodEV4Y2VwdGlvbih2
bSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCmluZGV4IDAyZTJmOGFlYTNjOTM3OTdiNGU1ZDEyZjNiZGEyYWI1YjM0MGY2Y2Qu
LmJmZmIyZjRjMzAzMGVlZWUxNGY4OTBlZjgxY2EwZTNlODE5ODdjZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0yMjAsNyArMjIwLDcgQEAgaW5saW5lIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBKSVQ6OmZhc3RQYXRoUmVzdW1lUG9pbnQoKSBjb25zdAogICAgIGlm
IChpdGVyICE9IG1fZmFzdFBhdGhSZXN1bWVMYWJlbHMuZW5kKCkpCiAgICAgICAgIHJldHVybiBp
dGVyLT52YWx1ZTsKICAgICAvLyBOZXh0IGluc3RydWN0aW9uIGluIHNlcXVlbmNlCi0gICAgY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgY29uc3QgYXV0
byogY3VycmVudEluc3RydWN0aW9uID0gbV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYXQobV9ieXRlY29kZUluZGV4KS5wdHIoKTsKICAgICByZXR1cm4gbV9sYWJlbHNbbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCldOwogfQogCkBA
IC00MzIsNyArNDMyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKEpTVmFsdWVSZWdzIGpzUmVnLCBWaXJ0dWFsUmUKICAgICAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKGpzUmVnKTsKIH0KIAotQUxXQVlTX0lOTElORSBpbnQgSklU
OjpqdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgaW50IHRhcmdldCkK
K0FMV0FZU19JTkxJTkUgaW50IEpJVDo6anVtcFRhcmdldChjb25zdCBKU0luc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgaW50IHRhcmdldCkKIHsKICAgICBpZiAodGFyZ2V0KQogICAgICAgICByZXR1
cm4gdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
NTZkZmI4NzM2NTIzYTc1YzNjYTUxMmM4ZmMxOGMzMTMyNDYwMWQ2OC4uNWI4NWM3YWM1MTdhNzAy
ZGNmZDdhNjJlZGYwOTIxMWEzZDVkMzMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lk
IEpJVDo6ZW1pdF9vcF9tb3YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX21vdihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BN
b3Y+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNjYs
NyArNjYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBzdG9yZVZhbHVlKGpzUmVnVDEwLCBhZGRyZXNzRm9yKGRzdCkp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VuZChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BFbmQ+KCk7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFs
dWVKU1IsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2VuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHJl
dCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2ptcChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BKbXA+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChj
dXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtODQsNyArODQs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIH0KIAogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld09iamVjdD4oKTsKIApAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8UwogfQogCiAKLXZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19o
YXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklUOjplbWl0
X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIH0KIAogCi12b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2Y+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTkyLDEwICsxOTIsMTAgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0gICAgCisKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2Y+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKICAgICAKQEAgLTIyMiw3ICsy
MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfZW1w
dHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2lzX2VtcHR5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzRW1wdHk+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjM5LDcgKzIz
OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2VtcHR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEw
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdHlwZW9mX2lzX3VuZGVmaW5lZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdHlwZW9mX2lz
X3VuZGVmaW5lZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUeXBlb2ZJc1VuZGVm
aW5lZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0y
NjgsNyArMjY4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHlwZW9mX2lzX3VuZGVmaW5lZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5l
ZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BJc1VuZGVmaW5lZE9yTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0g
Ynl0ZWNvZGUubV9kc3Q7CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNf
dW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IH0KIAogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQm9vbGVhbj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcElzTnVtYmVyPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogI2lmIFVTRShCSUdJTlQz
MikKLXZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCaWdJbnQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRz
dCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMzQ2LDE0ICszNDYsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAjZWxzZSAvLyBpZiAh
VVNFKEJJR0lOVDMyKQotTk9fUkVUVVJOIHZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29u
c3QgSW5zdHJ1Y3Rpb24qKQorTk9fUkVUVVJOIHZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQo
Y29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgLy8gSWYgd2Ugb25seSBoYXZlIEhlYXBCaWdJ
bnRzLCB0aGVuIHdlIGVtaXQgaXNDZWxsV2l0aFR5cGUgaW5zdGVhZCBvZiBpc0JpZ0ludC4KICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogI2VuZGlmCiAKLXZvaWQgSklUOjpl
bWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BJc09iamVjdD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfb2Jq
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9f
cHJpbWl0aXZlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VG9QcmltaXRpdmU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19wcm9w
ZXJ0eV9rZXkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX3RvX3Byb3BlcnR5X2tleShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BUb1Byb3BlcnR5S2V5PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcm9wZXJ0eV9r
ZXkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
c2V0X2Z1bmN0aW9uX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFNldEZ1bmN0aW9uTmFtZT4oKTsKIApAQCAtNDM2LDcgKzQzNiw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRGdW5jdGlvbk5h
bWUsIGdsb2JhbE9iamVjdEdQUiwgZnVuY3Rpb25HUFIsIG5hbWVKU1IpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9ub3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX25vdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOb3Q+
KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX29wZXJhbmQsIGpzUmVn
VDEwKTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9ub3QoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pmYWxz
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfamZhbHNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXRMYWJlbCk7CkBAIC00ODksNyArNDg5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mIHZtKQog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiB2YWx1ZUlzRmFsc2V5Iik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2plcV9udWxs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXFOdWxsPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTE0LDcgKzUx
NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24ubGlu
ayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcU51bGw+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgd2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX2p1bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfanVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEp1bmRlZmluZWRPck51bGw+KCk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBhZGRKdW1wKGJyYW5jaElmTnVsbChqc1JlZ1QxMCksIHRhcmdldCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pudW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pudW5kZWZpbmVk
X29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm51bmRlZmluZWRPck51
bGw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAg
LTU3MCw3ICs1NzAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2hJ
Zk5vdE51bGwoanNSZWdUMTApLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZXFf
cHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9qZXFfcHRyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEplcVB0cj4oKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTU4OCw3ICs1
ODgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2puZXFfcHRyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC02MTEsNyArNjEx
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0X29w
X2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFcT4oKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fbGhzLCByZWdUMCk7CkBAIC02MjIsNyArNjIy
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1Jl
Z1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEplcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC02MzQsNyAr
NjM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAKICNlbmRpZgogCi12b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfanRydWUo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnRydWU+KCk7CiAgICAgdW5zaWduZWQg
dGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0
TGFiZWwpOwpAQCAtNjc4LDcgKzY3OCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjp2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKIAogI2lmIFVTRShK
U1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE5lcT4oKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fbGhzLCByZWdUMCk7CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9qbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXE+
KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24s
IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogI2Vu
ZGlmCiAKLXZvaWQgSklUOjplbWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90aHJvdyhjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BUaHJvdz4oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKQEAgLTc1MCw3ICs3NTAsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcihW
TSYgdm0pCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lk
IEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtODI1LDE4ICs4MjUsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX3N0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BTdHJpY3RFcTxPcFN0cmljdGVxPihjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25zdHJpY3Rl
cShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGls
ZU9wU3RyaWN0RXE8T3BOc3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmlj
dEVxSnVtcChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgaW50IHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKQEAgLTkwNSwxNyArOTA1LDE3IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1
bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wU3RyaWN0RXFKdW1wPE9wSnN0
cmljdGVxPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbnN0
cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBjb21waWxlT3BTdHJpY3RFcUp1bXA8T3BKbnN0cmljdGVxPihjdXJyZW50SW5z
dHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC05MjYsNyAr
OTI2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBlbWl0SnVtcFNsb3dUb0hvdChi
cmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTkzOSw3ICs5MzksNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogCiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90
b19udW1iZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9OdW1iZXI+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTk1NCw3ICs5
NTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3RWUmVn
LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RvX251bWVy
aWMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9OdW1lcmljPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3RWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05NzUsNyArOTc1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdFZSZWcsIGpz
UmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b19zdHJpbmcoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9TdHJpbmc+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTk5MCw3ICs5OTAsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b19zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3RWUmVnLCBqc1JlZ1QxMCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFRvT2JqZWN0PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3RWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF90b19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3RWUmVnLCBqc1JlZ1QxMCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BDYXRjaD4oKTsKIApAQCAtMTA1MiwxMiArMTA1MiwxMiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9jYXRjaChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pZGVudGl0eV93aXRo
X3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfaWRlbnRpdHlf
d2l0aF9wcm9maWxlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIC8vIFdlIGRvbid0IG5l
ZWQgdG8gZG8gYW55dGhpbmcgaGVyZS4uLgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcGFy
ZW50X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldFBhcmVudFNjb3BlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBjdXJyZW50U2NvcGUg
PSBieXRlY29kZS5tX3Njb3BlOwpAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3BhcmVudF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTd2l0Y2hJbW0+KCk7CiAgICAgc2l6ZV90IHRhYmxlSW5k
ZXggPSBieXRlY29kZS5tX3RhYmxlSW5kZXg7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2
ZSBhIGZhc3QgcGF0aC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI0NTIxCkBAIC0xMTE5LDcgKzExMTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0
Y2hfY2hhcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGZhckp1
bXAocmV0dXJuVmFsdWVHUFIsIEpTU3dpdGNoUHRyVGFnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3Bfc3dpdGNoX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BTd2l0Y2hTdHJpbmc+KCk7CiAgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBieXRlY29k
ZS5tX3RhYmxlSW5kZXg7CkBAIC0xMTQyLDcgKzExNDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9z
d2l0Y2hfc3RyaW5nKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVxTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBA
IC0xMTc0LDcgKzExNzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25lcV9udWxs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lcU51bGw+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTIwNiw3ICsxMjA2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1p
dF9vcF9lbnRlcihjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICAvLyBFdmVuIHRob3VnaCBD
VEkgZG9lc24ndCB1c2UgdGhlbSwgd2UgaW5pdGlhbGl6ZSBvdXIgY29uc3RhbnQKICAgICAvLyBy
ZWdpc3RlcnMgdG8gemFwIHN0YWxlIHBvaW50ZXJzLCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHBy
b2xvbmdpbmcKQEAgLTEzMzUsNyArMTMzNSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2dldF9zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRTY29wZT4oKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xMzQ1LDcgKzEz
NDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdU
MTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Jj
RHN0ID0gYnl0ZWNvZGUubV9zcmNEc3Q7CkBAIC0xMzU5LDcgKzEzNTksNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MoanNSZWdUMTAucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlVGhpcz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVl
ID0gYnl0ZWNvZGUubV9jYWxsZWU7CkBAIC0xMzk0LDcgKzEzOTQsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tUZHo+KCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTE0
MDksNyArMTQwOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3Rkeihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAvLyBTbG93IGNhc2VzCiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIHJldHVyblZhbHVlR1BSKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTQzMiw3ICsxNDMyLDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2UKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCByZXR1
cm5WYWx1ZUdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qZXEoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE0NDMsNyArMTQ0Myw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVz
dDMyKE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOwogCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5lcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogCiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2RlYnVn
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlYnVnPigpOwogICAgIGxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7CkBAIC0xNDY2LDcg
KzE0NjYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIG5vRGVidWdnZXJSZXF1ZXN0cy5saW5rKHRoaXMpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQogewogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXR1cm5FYXJseUZyb21J
bmZpbml0ZUxvb3BzRm9yRnV6emluZygpICYmIG1fdW5saW5rZWRDb2RlQmxvY2stPmxvb3BIaW50
c0FyZUVsaWdpYmxlRm9yRnV6emluZ0Vhcmx5UmV0dXJuKCkpKSB7CiAgICAgICAgIHVpbnRwdHJf
dCogcHRyID0gdm0oKS5nZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24pOwpA
QCAtMTQ5NCw3ICsxNDk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9s
b29wX2hpbnQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogI2lmIEVOQUJMRShERkdfSklUKQog
ICAgIC8vIEVtaXQgdGhlIHNsb3cgcGF0aCBmb3IgdGhlIEpJVCBvcHRpbWl6YXRpb24gY2hlY2s6
CkBAIC0xNTIxLDI2ICsxNTIxLDI2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAjZW5kaWYK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qKQor
dm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdHJhcHMoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDMyKE5vblplcm8sIEFic29sdXRlQWRkcmVzcyhtX3Zt
LT50cmFwcygpLnRyYXBCaXRzQWRkcmVzcygpKSwgVHJ1c3RlZEltbTMyKFZNVHJhcHM6OkFzeW5j
RXZlbnRzKSkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9ub3AoY29uc3QgSW5zdHJ1Y3Rpb24q
KQordm9pZCBKSVQ6OmVtaXRfb3Bfbm9wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2luKGNvbnN0IEluc3RydWN0aW9uKikK
K3ZvaWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4oY29uc3QgSlNJbnN0cnVjdGlv
biopCiB7CiAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoYml0d2lz
ZV9jYXN0PHZvaWQqPigmZ19zdXBlclNhbXBsZXJDb3VudCkpKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVt
aXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgc3Vi
MzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZvaWQqPigm
Z19zdXBlclNhbXBsZXJDb3VudCkpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNr
X3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBKU0luc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xNTgxLDcgKzE1ODEsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdl
bmVyYXRvcihWTSYgdgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX25ld19yZWdleHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wTmV3UmVnZXhwPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25l
d19yZWdleHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1v
bihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTYxNiwyOCArMTYxNiwyOCBAQCB2b2lkIEpJ
VDo6ZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmND
b21tb248T3BOZXdGdW5jPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNDb21tb248T3BO
ZXdHZW5lcmF0b3JGdW5jPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuYyhj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1
bmNDb21tb248T3BOZXdBc3luY0dlbmVyYXRvckZ1bmM+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmND
b21tb248T3BOZXdBc3luY0Z1bmM+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9Ci0gICAgCisKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXROZXdGdW5j
RXhwckNvbW1vbihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTY1OSwyNyArMTY1OSwyNyBA
QCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19l
eHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX25ld19mdW5jX2V4cChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uPE9wTmV3RnVuY0V4cD4oY3VycmVudEluc3Ry
dWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uPE9wTmV3R2VuZXJhdG9yRnVuY0V4
cD4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5j
X2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5ld0FzeW5jRnVu
Y0V4cD4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLSAgICAKLXZvaWQgSklUOjplbWl0X29wX25l
d19hc3luY19nZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4
cChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5l
d0Z1bmNFeHByQ29tbW9uPE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jRXhwPihjdXJyZW50SW5zdHJ1
Y3Rpb24pOwogfQotICAgIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19hcnJh
eShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheT4oKTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNjkxLDcgKzE2OTEsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUs
IGRzdCwgYXJndW1lbnRHUFIwLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMiwgc2l6ZSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hcnJheV93aXRoX3NpemUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19hcnJheV93aXRo
X3NpemUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRoU2l6ZT4o
KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNzA4LDcg
KzE3MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZSwgZHN0LCBnbG9iYWxPYmplY3RHUFIsIHByb2Zp
bGVHUFIsIHNpemVKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3By
b2ZpbGVfdHlwZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgbV9pc1NoYXJlYWJsZSA9IGZhbHNlOwogCkBAIC0xNzc0LDcgKzE3NzQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBqdW1wVG9FbmQubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtKCkuc2hhZG93Q2hpY2tlbigpKTsKICAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsK
QEAgLTE3ODgsNyArMTc4OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tl
bl9wcm9sb2d1ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0CiAgICAgbG9nU2hh
ZG93Q2hpY2tlblByb2xvZ3VlUGFja2V0KHNoYWRvd1BhY2tldFJlZywgc2NyYXRjaDFSZWcsIHJl
Z1QzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2xv
Z19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLnNoYWRvd0NoaWNrZW4oKSk7CiAgICAg
dXBkYXRlVG9wQ2FsbEZyYW1lKCk7CkBAIC0xODA3LDcgKzE4MDcsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGxvZ1NoYWRvd0NoaWNrZW5UYWlsUGFja2V0KHNoYWRvd1BhY2tldFJl
ZywganNSZWdUMzIsIHJlZ1Q0LCByZWdUMSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVf
Y29udHJvbF9mbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBtX2lzU2hhcmVhYmxlID0gZmFsc2U7CiAKQEAgLTE4MjEsNyArMTgyMSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYXJndW1lbnRf
Y291bnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2FyZ3VtZW50X2NvdW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEFy
Z3VtZW50Q291bnQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtMTgzMiw3ICsxODMyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYXJndW1lbnRfY291bnQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgcmVzdWx0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3Rf
bGVuZ3RoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0UmVzdExlbmd0aD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9k
c3Q7CkBAIC0xODUyLDcgKzE4NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5n
dGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YXJndW1lbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRBcmd1bWVudD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0xODcxLDcgKzE4NzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvdG90
eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldFByb3RvdHlwZU9mPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKaW5kZXggNDQyOTQ4NTM2ZTczMWViZTA2YThhZTcwZjgzNjQzZWIyMzYy
ZjQwMi4uODE5OTc4MGM5NTY3MDhlZGFiNmI1OTkzNjQ4NTgyYjVkNWJkMWFhMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtNzUsNyArNzUs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wRXFTbG93Q29tbW9uKFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXE+KCk7CiAK
QEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmVxKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lcT4oKTsKIApAQCAtOTcsNyArOTcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEplcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0xMDcsNyArMTA3LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2gzMihFcXVhbCwganNSZWdUMTAucGF5bG9hZEdQUigp
LCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9qbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXE+KCk7CiAg
ICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVj
b2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRKdW1w
KGJyYW5jaDMyKE5vdEVxdWFsLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIGpzUmVnVDMyLnBheWxv
YWRHUFIoKSksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9lcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVx
PigpOwogCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCByZXR1cm5WYWx1ZUpTUik7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxPigpOwogCkBAIC0xMzgsNyAr
MTM4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fZHN0LCByZXR1cm5WYWx1ZUpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9q
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJn
ZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTE0OCw3
ICsxNDgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIGVtaXRKdW1wU2xvd1RvSG90
KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwogICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFDb21t
b24oVmlydHVhbFJlZ2lzdGVyIHNyYzEsICBWaXJ0dWFsUmVnaXN0ZXIgc3JjMikKICAgICBmaXJz
dElzT2JqZWN0LmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N0cmljdGVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9z
dHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdHJpY3RlcT4oKTsKICAg
ICBjb21waWxlT3BTdHJpY3RFcUNvbW1vbihieXRlY29kZS5tX2xocywgYnl0ZWNvZGUubV9yaHMp
OwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uc3Ry
aWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX25zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOc3RyaWN0
ZXE+KCk7CiAgICAgY29tcGlsZU9wU3RyaWN0RXFDb21tb24oYnl0ZWNvZGUubV9saHMsIGJ5dGVj
b2RlLm1fcmhzKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEpzdHJpY3RlcT4oKTsKICAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5z
dHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoMzIoRXF1YWwsIGpzUmVnVDEwLnBheWxvYWRHUFIo
KSwganNSZWdUMzIucGF5bG9hZEdQUigpKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3Bfam5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BKbnN0cmljdGVxPigpOwogICAgIGludCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoMzIoTm90RXF1YWwsIGpzUmVnVDEwLnBheWxvYWRH
UFIoKSwganNSZWdUMzIucGF5bG9hZEdQUigpKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2pzdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsCiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJldHVyblZh
bHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puc3RyaWN0ZXEo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBjMGNiNzJm
YjYwZDkzNTM1MzllOTQxN2FjYmY4NGU1MTA4ZDM4NTAyLi5lZmM5YTBlOGJiMDJlMjI1ODExODQ2
MjNkMTA2MGE4OTM1Y2RmMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTI4MjUsNyArMjgyNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNHbG9i
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7CiB9CiAKLUpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cnVj
dGlvbiogcGMpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVTY29w
ZUZvckJhc2VsaW5lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMjg3Nyw3ICsyODc3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblJlc29sdmVTY29wZUZvckJhc2VsaW5lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2wKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc29sdmVkU2NvcGUpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEluc3RydWN0aW9uKiBwYykpCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjkxOSw3ICsyOTE5LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2RlZEpTVmFs
dWUsIChKU0dsb2JhbE9iamVjdCoKICAgICB9KSkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEluc3RydWN0aW9uKiBwYykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBkNWU5ZjVj
NzA1YTU4OTM5MDcxMWJhZjczNzBiMDA0YjI2MWZkYjg0Li4yYTU5ZjY0ZTg4NWFkNWEyNWUxODY3
MmY5NmMzZGQ1YmI4NjViZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtNjgsNyArNjgsMTAgQEAgY2xhc3MgV2F0Y2hwb2ludFNldDsKIAogc3RydWN0
IEVDTUFNb2RlOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsK
KwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCYXNlSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgSlNP
cGNvZGVUcmFpdHM7Cit1c2luZyBKU0luc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPEpTT3Bj
b2RlVHJhaXRzPjsKIAogdHlwZWRlZiBjaGFyKiBVbnVzZWRQdHI7CiAKQEAgLTI5NCw5ICsyOTcs
OSBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJ
ZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSgogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCwgaW50MzJfdCBtaW4p
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25v
d25LZXlUeXBlLCBjaGFyKiwgKFZNKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJ
bmRleCwgaW50MzJfdCBtaW4pKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
U3dpdGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkpOwotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSwgRW5jb2RlZEpTVmFs
dWUsIChKU0dsb2JhbE9iamVjdCosIGNvbnN0IEluc3RydWN0aW9uKiBieXRlY29kZVBDKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIGNvbnN0IEluc3RydWN0aW9uKiBieXRlY29kZVBDKSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFRvU2NvcGUsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCosIGNvbnN0IEluc3RydWN0aW9uKiBieXRlY29kZVBDKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckJhc2VsaW5lLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNJbnN0cnVjdGlvbiogYnl0ZWNv
ZGVQQykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0luc3RydWN0aW9uKiBi
eXRlY29kZVBDKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFRvU2Nv
cGUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGJ5dGVjb2Rl
UEMpKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZWFsbG9jYXRlQnV0
dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eSwgY2hhciosIChW
TSosIEpTT2JqZWN0KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZWFs
bG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlLCBjaGFyKiwgKFZNKiwgSlNPYmpl
Y3QqLCBzaXplX3QgbmV3U2l6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA4ZWIyMTM4YTExYzljYjk2OTlmYzNmYTI5ZGFhMjJl
NTUyYjE5YzgxLi5jOGI4YjBiZjNkZTFmM2NmYjdiZGQ5YjAxYzI3YTQ3Njc5OTkzN2Y4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
NDYsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRC
eVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0x
MjIsNyArMTIyLDcgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBP
cGNvZGVUeXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZ2VuZXJhdGVHZXRC
eVZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKSwgaXRlcik7
CiB9CkBAIC0xNjUsNyArMTY1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblQKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25h
bWUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjAxLDcgKzIwMSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVz
dWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgQVNTRVJU
KGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1l
X2NhbGxTbG93T3BlcgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFNldFByaXZhdGVCcmFuZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9z
ZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKIApAQCAtMzE4
LDcgKzMxOCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWCiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcENoZWNrUHJpdmF0ZUJyYW5kPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTM3MCw3ICszNzAs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
LXZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOwpAQCAtNDE3LDE0ICs0MTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0
ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXRlbXBsYXRlIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbD4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKK3Rl
bXBsYXRlIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbD4oY29uc3QgSlNJ
bnN0cnVjdGlvbiopOwogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbF9kaXJlY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1
Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9m
ZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTQ4Myw3ICs0ODMsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRf
YnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV92YWxfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC01ODQsNyArNTg0LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9jYWxsU2xvd09wZXIKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyUGF5bG9hZChieXRlY29kZS5tX2Jhc2UsIHJlZ1QwKTsKQEAgLTU5NCw3ICs1OTQsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJCeUlk
LCByZWdUMiwgcmVnVDAsIG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkuaW1wbCgpLCBvcHRpb25zLCByZWdUMSk7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0U2V0dGVyQnlJZD4oKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyUGF5bG9hZChieXRlY29kZS5tX2Jhc2UsIHJlZ1QwKTsKQEAgLTYwNCw3ICs2MDQsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRTZXR0ZXJCeUlk
LCByZWdUMiwgcmVnVDAsIG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkuaW1wbCgpLCBvcHRpb25zLCByZWdUMSk7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJTZXR0ZXJCeUlkPigpOwogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGJ5dGVjb2RlLm1fYmFzZSwgcmVnVDApOwpA
QCAtNjE1LDcgKzYxNSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIsIHJlZ1QzLCByZWdUMCwgbV91bmxpbmtlZENv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCksIGF0dHJpYnV0
ZSwgcmVnVDEsIHJlZ1QyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX3B1dF9nZXR0ZXJfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1
dEdldHRlckJ5VmFsPigpOwogCkBAIC02MzQsNyArNjM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlckJ5VmFsLCBnbG9iYWxPYmplY3RH
UlAsIGJhc2VHUFIsIHByb3BlcnR5SlNSLCBhdHRyaWJ1dGVzLCBzZXR0ZXJHUFIpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0U2V0dGVyQnlWYWw+KCk7CiAKQEAgLTY1
Myw3ICs2NTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUHV0U2V0dGVyQnlWYWwsIGdsb2JhbE9iamVjdEdSUCwgYmFzZUdQUiwgcHJvcGVydHlKU1Is
IGF0dHJpYnV0ZXMsIHNldHRlckdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNjkyLDcgKzY5
Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVy
QmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92
YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtODA0LDcgKzgwNCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwpAQCAtODc0LDcgKzg3NCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UCiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZS
ZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTkwOCw3ICs5MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvCiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTk2Nyw3ICs5NjcsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVn
LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVj
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9k
aXJlY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtOTkzLDcgKzk5Myw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xMDM4LDcg
KzEwMzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZS
ZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zm
c2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxT
bG93T3BlcmF0aW9uVGgKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
X3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZS
ZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTExMzgsNyArMTEzOCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93TwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0QnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5t
X2Jhc2U7CkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJy
aWVyKGJhc2VWUmVnLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNv
ZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0xMzEwLDcgKzEz
MTAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaAogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSW5CeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUu
bV9kc3Q7CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5fYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMTM3MCw3ICsxMzcw
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2luX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTQwNiw3ICsx
NDA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3Vs
dEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOwpAQCAtMTQ4NiwzMSArMTQ4NiwzMSBAQCB2b2lkIEpJVDo6ZW1pdEhh
c1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUgdHlwZSkKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2hhc19wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSGFzUHJpdmF0ZU5hbWU+KCk7CiAgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3Qs
IGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJp
dmF0ZU5hbWUpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogICAgIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpI
YXNQcml2YXRlTmFtZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQ
cml2YXRlQnJhbmQ+KCk7CiAgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVj
b2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5k
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogICAgIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2
YXRlQnJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZl
X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFJlc29sdmVTY29wZT4oKTsK
ICAgICBSZXNvbHZlVHlwZSBwcm9maWxlZFJlc29sdmVUeXBlID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9wcm9maWxlZENvZGVCbG9jaykubV9yZXNvbHZlVHlwZTsKQEAgLTE3NDEsNyArMTc0MSw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3Jlc29s
dmVfc2NvcGVHZW5lcmF0b3IoVk0mIHZtCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcmVzb2x2ZV9zY29wZSIp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbVNjb3BlPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE5NzQsNyArMTk3NCw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9m
cm9tX3Njb3BlR2VuZXJhdG9yKFZNJiB2CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUi
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0VG9TY29wZT4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgc2NvcGUgPSBieXRlY29kZS5tX3Njb3BlOwpAQCAtMjExMyw3ICsyMTEzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Nj
b3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCkBAIC0yMTczLDcgKzIxNzMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX3B1dF90b19zY29wZSIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJv
bV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRGcm9tQXJndW1lbnRzPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKQEAgLTIxODYsNyArMjE4Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0VG9Bcmd1bWVudHM+KCk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIGFyZ3VtZW50cyA9IGJ5dGVjb2RlLm1fYXJndW1lbnRzOwpAQCAtMjIwMSw3ICsyMjAxLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYXJndW1lbnRzLCB2YWx1
ZSwgU2hvdWxkRmlsdGVyVmFsdWUpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJu
YWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BHZXRJbnRlcm5hbEZpZWxkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKQEAgLTIyMTUsNyArMjIxNSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9p
bnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dEludGVybmFsRmllbGQ+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0yMjMxLDcgKzIyMzEsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0X29w
X2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcm9wZXJ0eUVudW1lcmF0b3I+KCk7CiAKQEAg
LTIyNjUsNyArMjI2NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJh
dG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZG9uZUNhc2Vz
LmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JO
ZXh0PigpOwogCkBAIC0yMzI4LDcgKzIzMjgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBkb25l
LmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JHZXRCeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC0yNDE2LDcgKzI0MTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JHZXRCeVZhbD4oKSwgaXRlcik7CiB9CkBAIC0yNDU4
LDQ4ICsyNDU4LDQ4IEBAIHZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1w
bChjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIFNsb3dQYXRoRnVuCiAgICAgZG9uZS5saW5rKHRo
aXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVy
YXRvcl9pbl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZhbD4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlf
dmFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3df
cGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogfQogCiAjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25z
dCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cihjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25z
dCBKU0luc3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3Qg
SlNJbnN0cnVjdGlvbiopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBzbG93X3BhdGhfZW51bWVyYXRvcl9nZXRfYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKIHsKICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9p
bl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOwogICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFz
X293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBkMGIzNzM4OTIxYTRmMDAxNTEyZTdkZWUz
YTg0NDNjNTE5M2JkMjZjLi42NzA3NzU3YmM1YzRhMjZjZTM5ZWMyYTg1YzRhYWU2ODczOTU3NWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIGluaXRpYWxpemUoKQogCiAgICAgc3RhdGljX2Fzc2VydChsbGludF90aHJv
d19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lIDwgVUlOVDhfTUFYKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHdhc21fdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSA8IFVJTlQ4X01BWCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkgewor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhCeXRlY29kZVN0cnVjdExlbmd0aCArIDE7
ICsraSkgewogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNlcHRpb25JbnN0cnVjdGlvbnNb
aV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgICAgICBnX2pz
Y0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldID0gd2FzbV90aHJvd19m
cm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAppbmRleCAzN2MxYWZlNmRlNzZjODkzNWFjNzQ2ZDYwZmI0OTdkMzFlNmU3
Y2E5Li5jMDMzM2QzNDJiMDliMDMwNDAxMGY0NDYyODQzZmMwODk0ODI5ZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZnJpZW5kIHZvaWQgaW5pdGlhbGl6ZSgpOwogCi0gICAgZnJpZW5kIElu
c3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKLSAgICBmcmllbmQgSW5zdHJ1Y3Rp
b24qIHdhc21FeGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICBmcmllbmQgSlNJbnN0cnVjdGlv
biogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CisgICAgZnJpZW5kIFdhc21JbnN0cnVjdGlvbiog
d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwogICAgIGZyaWVuZCBPcGNvZGUqIG9wY29kZU1h
cCgpOwogICAgIGZyaWVuZCBPcGNvZGUqIG9wY29kZU1hcFdpZGUxNigpOwogICAgIGZyaWVuZCBP
cGNvZGUqIG9wY29kZU1hcFdpZGUzMigpOwpAQCAtNzQsMTQgKzc0LDE0IEBAIHByaXZhdGU6CiAK
IHZvaWQgaW5pdGlhbGl6ZSgpOwogCi1pbmxpbmUgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3Ry
dWN0aW9ucygpCitpbmxpbmUgSlNJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkK
IHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbio+KGdfanNjQ29uZmln
LmxsaW50LmV4Y2VwdGlvbkluc3RydWN0aW9ucyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8SlNJbnN0cnVjdGlvbio+KGdfanNjQ29uZmlnLmxsaW50LmV4Y2VwdGlvbkluc3RydWN0aW9u
cyk7CiB9Ci0gICAgCi1pbmxpbmUgSW5zdHJ1Y3Rpb24qIHdhc21FeGNlcHRpb25JbnN0cnVjdGlv
bnMoKQorCitpbmxpbmUgV2FzbUluc3RydWN0aW9uKiB3YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
KCkKIHsKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oZ19qc2NDb25maWcu
bGxpbnQud2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucyk7CisgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxXYXNtSW5zdHJ1Y3Rpb24qPihnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKTsKIH0KIAogaW5saW5lIE9wY29kZSogb3Bjb2RlTWFwKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKaW5kZXggZTg4MzE1MzI4Y2Ni
OGY4NWIzZjVkZjcxNTU4YTBjYmNjYjM1ODU2Yy4uZDIxYzFhMjEwMjg0OGYwZjM5NzViOTJkMzMw
MWEzY2JlN2ZmYjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RXhjZXB0aW9ucy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CiAKLUluc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KFZNJiB2bSkKK0pTSW5z
dHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mIHZtKQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7
CiAjaWYgTExJTlRfVFJBQ0lORwpAQCAtNTAsNyArNTAsNyBAQCBJbnN0cnVjdGlvbiogcmV0dXJu
VG9UaHJvdyhWTSYgdm0pCiAgICAgcmV0dXJuIExMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMo
KTsKIH0KIAotSW5zdHJ1Y3Rpb24qIHdhc21SZXR1cm5Ub1Rocm93KFZNJiB2bSkKK1dhc21JbnN0
cnVjdGlvbiogd2FzbVJldHVyblRvVGhyb3coVk0mIHZtKQogewogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAjaWYgTExJTlRfVFJBQ0lORwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCmluZGV4IGU1ZjkwMjFmYWRiOGVmY2IyNTg3YzBjYTYwMTc2ZWJmMWRj
YmFjNGEuLmZkYTM1MzJkY2MwYTg4NWM0MThlNjY3NmEyMjkyZGM0MzNiNTM3ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKQEAgLTMzLDE2ICsz
MywxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07Ci1z
dHJ1Y3QgSW5zdHJ1Y3Rpb247CiB0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjsKIAordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCYXNlSW5zdHJ1Y3Rpb247Citz
dHJ1Y3QgSlNPcGNvZGVUcmFpdHM7Cit1c2luZyBKU0luc3RydWN0aW9uID0gQmFzZUluc3RydWN0
aW9uPEpTT3Bjb2RlVHJhaXRzPjsKKwogbmFtZXNwYWNlIExMSW50IHsKIAogLy8gR2l2ZXMgeW91
IGEgUEMgdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3
aGVuIGFkdmFuY2VkCiAvLyBiZXR3ZWVuIDEgYW5kIDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAi
aW5zdHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0aGUKIC8vIGludGVycHJldGVyJ3MgZXhjZXB0
aW9uIGhhbmRsZXIuCi1JbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhWTSYpOwotSW5zdHJ1Y3Rp
b24qIHdhc21SZXR1cm5Ub1Rocm93KFZNJik7CitKU0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93
KFZNJik7CitXYXNtSW5zdHJ1Y3Rpb24qIHdhc21SZXR1cm5Ub1Rocm93KFZNJik7CiAKIC8vIFVz
ZSB0aGlzIHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJvdyhWTSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggN2Ew
ZTdkZmU2NTZiZjQzNDA0Y2U4Y2U2ZmE1M2U5OGRlMTFmZDllOC4uMGM1YmY5ZTFkNjIxZTZiYmI3
YzFhOTYwNjkwMDhjM2Y1MzhjMTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIEpTVmFsdWUg
Z2V0T3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQp
IHsgcmV0dXIKICAgICAoKHRhcmdldE9mZnNldCkgPyAodGFyZ2V0T2Zmc2V0KSA6IGNvZGVCbG9j
ay0+b3V0T2ZMaW5lSnVtcE9mZnNldChwYykpCiAKICNkZWZpbmUgSlVNUF9UTyh0YXJnZXQpIGRv
IHsgXAotICAgICAgICBwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyAodGFyZ2V0KSk7IFwKKyAgICAg
ICAgcGMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyAodGFyZ2V0KSk7IFwKICAgICB9IHdoaWxlIChm
YWxzZSkKIAogI2RlZmluZSBMTElOVF9CUkFOQ0goY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAg
ICAgICAgXApAQCAtMjIwLDcgKzIyMCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPiB2
b2lkIHNsb3dQYXRoTG9nRihjb25zdCBjaGFyKiwgY29uc3QgVHlwZXMmLi4uKSB7IH0KIAogI2Vu
ZGlmIC8vIExMSU5UX1RSQUNJTkcKIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxp
bnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBpZiAo
IU9wdGlvbnM6OnRyYWNlTExJbnRFeGVjdXRpb24oKSkKICAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbgogICAgIExMSU5U
X0VORCgpOwogfQogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92
YWx1ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJv
bVdoZXJlLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0lu
c3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiB7
CiAgICAgaWYgKCFPcHRpb25zOjp0cmFjZUxMSW50RXhlY3V0aW9uKCkpCiAgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2Vs
bCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CitzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3Ry
dWN0aW9uKiBwYywgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNl
bGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKIApAQCAtODA0
LDcgKzgwNCw3IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kCiAgICAgdm0ud3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1M
TEludEdldEJ5SUQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIwMDYsNyArMjAwNiw3IEBAIGVudW0gY2xhc3MgU2V0
QXJndW1lbnRzV2l0aCB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgU2V0QXJndW1lbnRz
V2l0aCBzZXQ+Ci1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZhcmFyZ3NTZXR1cChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKQoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2YXJhcmdzU2V0dXAoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogCkBAIC0yMDU2LDcgKzIwNTYsNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAg
cmV0dXJuIHZhcmFyZ3NTZXR1cDxPcENvbnN0cnVjdFZhcmFyZ3MsIFNldEFyZ3VtZW50c1dpdGg6
Ok9iamVjdD4oY2FsbEZyYW1lLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKLWlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IHJldHVyblBvaW50KQoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKIHsKICAgICBMTElOVF9CRUdJ
Tl9OT19TRVRfUEMoKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ2FsbEV2YWw+KCk7
CkBAIC0yMzc2LDEzICsyMzc2LDEzIEBAIHN0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yTmV4dENo
ZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPCiAgICAgICAg
IHZhbHVlUmVnaXN0ZXIgPSBpdGVyYXRvclJlc3VsdE9iamVjdC5nZXQoZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSk7CiB9CiAKLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
ZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQoVGhyb3dTY29wZSYgc2NvcGUsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIHBjKQoraW5saW5lIFNs
b3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRjaFRvTmV4dEluc3RydWN0aW9uRHVyaW5nRXhpdChUaHJv
d1Njb3BlJiBzY29wZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiBwYykKIHsKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQocmV0dXJuVG9UaHJvdyhzY29wZS52bSgpKSwgbnVsbHB0cik7CiAKICAgICBp
ZiAoT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGNvZGVCbG9jay0+aml0VHlwZSgp
ID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmspIHsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rp
b24qIG5leHRQQyA9IHBjLm5leHQoKS5wdHIoKTsKKyAgICAgICAgY29uc3QgSlNJbnN0cnVjdGlv
biogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQobmV4dFBDLCBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVU
aHVuaygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDdlYzgwMTVlZThjNWFlYzRj
NTI5ZDZkYzUyODJhMzQzYzc0YTRiZWIuLjdiZDEwN2I5NTVlNWU4YzU1OTUyNTBlNTFiY2ZmN2M3
NmI4NGM5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCkBAIC0yNiwyNCArMjYsMjQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29tbW9u
U2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxsRnJhbWU7Ci1zdHJ1
Y3QgSW5zdHJ1Y3Rpb247CiBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBMTElu
dCB7CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQo
Q2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFu
ZCkgUkVGRVJFTkNFRF9GUk9NX0FTTTsKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxs
aW50X3RyYWNlX3ZhbHVlKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IGZyb21X
aGVyZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIFJFRkVSRU5DRURfRlJPTV9BU007CitleHRl
cm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSos
IGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkgUkVGRVJF
TkNFRF9GUk9NX0FTTTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNl
X3ZhbHVlKENhbGxGcmFtZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgUkVGRVJFTkNFRF9GUk9NX0FTTTsKIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X2xpbmtfY2FsbChDYWxsRnJhbWUqLCBKU0NlbGwqLCBD
YWxsTGlua0luZm8qKSBSRUZFUkVOQ0VEX0ZST01fQVNNOwogZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgbGxpbnRfdmlydHVhbF9jYWxsKENhbGxGcmFtZSosIEpTQ2VsbCosIENhbGxMaW5r
SW5mbyopIFJFRkVSRU5DRURfRlJPTV9BU007CiBleHRlcm4gIkMiIHZvaWQgbGxpbnRfd3JpdGVf
YmFycmllcl9zbG93KENhbGxGcmFtZSosIEpTQ2VsbCopIFJFRkVSRU5DRURfRlJPTV9BU00gV1RG
X0lOVEVSTkFMOwogCiAjZGVmaW5lIExMSU5UX1NMT1dfUEFUSF9ERUNMKG5hbWUpIFwKLSAgICBl
eHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF8jI25hbWUoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykKKyAgICBleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBsbGludF8jI25hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIHBjKQogCiAjZGVmaW5lIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChuYW1lKSBc
CiAgICAgTExJTlRfU0xPV19QQVRIX0RFQ0wobmFtZSkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZf
SU5URVJOQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQppbmRleCA0ZmE0ZmIzZDc5MWIzMzQ3ODBkOGQ4ODA2YWIwMmQ4ZWJjZjcw
NThhLi5kMDNjNjZlZTQxOWE3MTNlYjM1ZmVjYWNhNzQ0YWVkZTg0MWJhOGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBA
IC0zMjAsOCArMzIwLDEwIEBAIGVuZAogCiAjIE9wY29kZSBvZmZzZXRzCiBjb25zdCBPcGNvZGVJ
RE5hcnJvd1NpemUgPSAxICMgT3Bjb2RlSUQKLWNvbnN0IE9wY29kZUlEV2lkZTE2U2l6ZSA9IDIg
IyBXaWRlMTYgUHJlZml4ICsgT3Bjb2RlSUQKLWNvbnN0IE9wY29kZUlEV2lkZTMyU2l6ZSA9IDIg
IyBXaWRlMzIgUHJlZml4ICsgT3Bjb2RlSUQKK2NvbnN0IE9wY29kZUlEV2lkZTE2U2l6ZUpTID0g
MiAjIFdpZGUxNiBQcmVmaXggKyBPcGNvZGVJRAorY29uc3QgT3Bjb2RlSURXaWRlMzJTaXplSlMg
PSAyICMgV2lkZTMyIFByZWZpeCArIE9wY29kZUlECitjb25zdCBPcGNvZGVJRFdpZGUxNlNpemVX
YXNtID0gMyAjIFdpZGUxNiBQcmVmaXggKyBPcGNvZGVJRCgxIGJ5dGUpICMgRklYTUU6IGNoYW5n
ZSB0aGlzIGJhY2sgb25jZSBFV1MgcGFzc2VzLgorY29uc3QgT3Bjb2RlSURXaWRlMzJTaXplV2Fz
bSA9IDMgIyBXaWRlMzIgUHJlZml4ICsgT3Bjb2RlSUQoMSBieXRlKSAjIEZJWE1FOiBjaGFuZ2Ug
dGhpcyBiYWNrIG9uY2UgRVdTIHBhc3Nlcy4KIAogaWYgWDg2XzY0X1dJTiBvciBDX0xPT1BfV0lO
CiAgICAgY29uc3QgR2lnYWNhZ2VDb25maWcgPSBfZ19naWdhY2FnZUNvbmZpZwpAQCAtMzU4LDM1
ICszNjAsNTEgQEAgbWFjcm8gZGlzcGF0Y2hJbmRpcmVjdChvZmZzZXRSZWcpCiAgICAgZGlzcGF0
Y2gob2Zmc2V0UmVnKQogZW5kCiAKLW1hY3JvIGdlbmVyaWNEaXNwYXRjaE9wKGRpc3BhdGNoLCBz
aXplLCBvcGNvZGVOYW1lKQorbWFjcm8gZ2VuZXJpY0Rpc3BhdGNoT3BKUyhkaXNwYXRjaCwgc2l6
ZSwgb3Bjb2RlTmFtZSkKICAgICBtYWNybyBkaXNwYXRjaE5hcnJvdygpCi0gICAgICAgIGRpc3Bh
dGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCAtIDEpICogMSArIE9wY29kZUlETmFy
cm93U2l6ZSkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3Ro
KSAqIDEgKyBPcGNvZGVJRE5hcnJvd1NpemUpCiAgICAgZW5kCiAKICAgICBtYWNybyBkaXNwYXRj
aFdpZGUxNigpCi0gICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0
aCAtIDEpICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZSkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0
ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoKSAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVKUykKICAg
ICBlbmQKIAogICAgIG1hY3JvIGRpc3BhdGNoV2lkZTMyKCkKLSAgICAgICAgZGlzcGF0Y2goKGNv
bnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoIC0gMSkgKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXpl
KQorICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogNCAr
IE9wY29kZUlEV2lkZTMyU2l6ZUpTKQorICAgIGVuZAorCisgICAgc2l6ZShkaXNwYXRjaE5hcnJv
dywgZGlzcGF0Y2hXaWRlMTYsIGRpc3BhdGNoV2lkZTMyLCBtYWNybyAoZGlzcGF0Y2gpIGRpc3Bh
dGNoKCkgZW5kKQorZW5kCisKK21hY3JvIGdlbmVyaWNEaXNwYXRjaE9wV2FzbShkaXNwYXRjaCwg
c2l6ZSwgb3Bjb2RlTmFtZSkKKyAgICBtYWNybyBkaXNwYXRjaE5hcnJvdygpCisgICAgICAgIGRp
c3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCkgKiAxICsgT3Bjb2RlSUROYXJy
b3dTaXplKQorICAgIGVuZAorCisgICAgbWFjcm8gZGlzcGF0Y2hXaWRlMTYoKQorICAgICAgICBk
aXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogMiArIE9wY29kZUlEV2lk
ZTE2U2l6ZVdhc20pCisgICAgZW5kCisKKyAgICBtYWNybyBkaXNwYXRjaFdpZGUzMigpCisgICAg
ICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCkgKiA0ICsgT3Bjb2Rl
SURXaWRlMzJTaXplV2FzbSkKICAgICBlbmQKIAogICAgIHNpemUoZGlzcGF0Y2hOYXJyb3csIGRp
c3BhdGNoV2lkZTE2LCBkaXNwYXRjaFdpZGUzMiwgbWFjcm8gKGRpc3BhdGNoKSBkaXNwYXRjaCgp
IGVuZCkKIGVuZAogCiBtYWNybyBkaXNwYXRjaE9wKHNpemUsIG9wY29kZU5hbWUpCi0gICAgZ2Vu
ZXJpY0Rpc3BhdGNoT3AoZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCisgICAgZ2VuZXJpY0Rp
c3BhdGNoT3BKUyhkaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkKIGVuZAogCiAKIG1hY3JvIGdl
dHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAgICBzaXplKGdldHVPcGVy
YW5kTmFycm93LCBnZXR1T3BlcmFuZFdpZGUxNiwgZ2V0dU9wZXJhbmRXaWRlMzIsIG1hY3JvIChn
ZXR1KQorICAgIHNpemUoZ2V0dU9wZXJhbmROYXJyb3csIGdldHVPcGVyYW5kV2lkZTE2SlMsIGdl
dHVPcGVyYW5kV2lkZTMySlMsIG1hY3JvIChnZXR1KQogICAgICAgICBnZXR1KG9wY29kZVN0cnVj
dCwgZmllbGROYW1lLCBkc3QpCiAgICAgZW5kKQogZW5kCiAKIG1hY3JvIGdldChzaXplLCBvcGNv
ZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIHNpemUoZ2V0T3BlcmFuZE5hcnJvdywgZ2V0
T3BlcmFuZFdpZGUxNiwgZ2V0T3BlcmFuZFdpZGUzMiwgbWFjcm8gKGdldCkKKyAgICBzaXplKGdl
dE9wZXJhbmROYXJyb3csIGdldE9wZXJhbmRXaWRlMTZKUywgZ2V0T3BlcmFuZFdpZGUzMkpTLCBt
YWNybyAoZ2V0KQogICAgICAgICBnZXQob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAg
ICBlbmQpCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcAppbmRleCA5ODc2ZWY2ZWY3NDJhY2VlZGFlMjY5YTJhYjQ1NGM1YjYy
Y2Q1MTZiLi5lN2E0ZDE5ODg4YWIzOTEyYmRkNzc3YWJhZDAwYTgwZjQ4OTlkODEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgT3Bjb2RlIG9w
Y29kZSgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxPcGNvZGU+KG1fdmFsdWUpOyB9CiAK
ICAgICBvcGVyYXRvciBDYWxsRnJhbWUqKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PENhbGxGcmFt
ZSo+KG1fdmFsdWUpOyB9Ci0gICAgb3BlcmF0b3IgY29uc3QgSW5zdHJ1Y3Rpb24qKCkgeyByZXR1
cm4gYml0d2lzZV9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4obV92YWx1ZSk7IH0KKyAgICBvcGVy
YXRvciBjb25zdCBKU0luc3RydWN0aW9uKigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBK
U0luc3RydWN0aW9uKj4obV92YWx1ZSk7IH0KICAgICBvcGVyYXRvciBKU0NlbGwqKCkgeyByZXR1
cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KG1fdmFsdWUpOyB9CiAgICAgb3BlcmF0b3IgUHJvdG9D
YWxsRnJhbWUqKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PFByb3RvQ2FsbEZyYW1lKj4obV92YWx1
ZSk7IH0KICAgICBvcGVyYXRvciBSZWdpc3RlciooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UmVn
aXN0ZXIqPihtX3ZhbHVlKTsgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIEpTVmFsdWUgQ0xvb3A6OmV4
ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGNvZGVJRCwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MsIFZN
KiB2bSwKICAgICAgICAgLy8gaW5pdGlhbGl6ZWQgdGhlIG9wY29kZU1hcCBhYm92ZS4gVGhpcyBp
cyBiZWNhdXNlIGdldENvZGVQdHIoKQogICAgICAgICAvLyBjYW4gZGVwZW5kIG9uIHRoZSBvcGNv
ZGVNYXAuCiAgICAgICAgIHVpbnQ4X3QqIGV4Y2VwdGlvbkluc3RydWN0aW9ucyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KExMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMoKSk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhCeXRlY29kZVN0cnVjdExlbmd0aCAr
IDE7ICsraSkKICAgICAgICAgICAgIGV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXSA9IGxsaW50X3Ro
cm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7CiAKICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMjI3MTZmODFiYmQ5MDc4Yzk2ZmVlMTFkZDhjNDEwZTJh
NTlhZDRmMi4uYWNlODcxMTY3MmU3MDIxNmQzOWE0OGRmMTVmZDY2ZDZiNTdjNDExZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTM0LDIwICszNCwyMCBAQCBtYWNybyBnZXRPcGVyYW5kTmFycm93KG9w
Y29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgbG9hZGJzaSBjb25zdGV4cHIgJW9wY29k
ZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKyBPcGNvZGVJRE5hcnJvd1NpemVbUEIsIFBDLCAx
XSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMTYob3Bjb2RlU3RydWN0LCBmaWVs
ZE5hbWUsIGRzdCkKLSAgICBsb2FkaCBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFt
ZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8g
Z2V0dU9wZXJhbmRXaWRlMTZKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxv
YWRoIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNv
ZGVJRFdpZGUxNlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXRPcGVyYW5k
V2lkZTE2KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGhzaSBjb25zdGV4
cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZT
aXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0T3BlcmFuZFdpZGUxNkpTKG9wY29kZVN0cnVj
dCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGhzaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVf
JWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplSlNbUEIsIFBDLCAxXSwg
ZHN0CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKLSAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVf
aW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0
dU9wZXJhbmRXaWRlMzJKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRp
IGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJ
RFdpZGUzMlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXRPcGVyYW5kV2lk
ZTMyKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGlzIGNvbnN0ZXhwciAl
b3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVb
UEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXRPcGVyYW5kV2lkZTMySlMob3Bjb2RlU3RydWN0LCBm
aWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaXMgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVs
ZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAog
ZW5kCiAKIG1hY3JvIG1ha2VSZXR1cm4oZ2V0LCBkaXNwYXRjaCwgZm4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IGM0NTMzNTFkNDkyNmNmNzRlOGQ2ZWY4NTg1OTg3NGE0NWJhZDU5ZmEuLjVkZTdiY2M3ZmQwZDRm
MDQwZjJkZjk0YmQ0NzM0NWQ4MzU4Njk0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0zOSwyMCArMzksMzYg
QEAgbWFjcm8gZ2V0T3BlcmFuZE5hcnJvdyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQog
ICAgIGxvYWRic3EgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICsg
T3Bjb2RlSUROYXJyb3dTaXplW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1hY3JvIGdldHVPcGVy
YW5kV2lkZTE2KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGggY29uc3Rl
eHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2
U2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldHVPcGVyYW5kV2lkZTE2SlMob3Bjb2RlU3Ry
dWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaCBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVf
JWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplSlNbUEIsIFBDLCAxXSwg
ZHN0CiBlbmQKIAotbWFjcm8gZ2V0T3BlcmFuZFdpZGUxNihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFt
ZSwgZHN0KQotICAgIGxvYWRoc3EgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUl
X2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdl
dHVPcGVyYW5kV2lkZTE2V2FzbShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxv
YWRoIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNv
ZGVJRFdpZGUxNlNpemVXYXNtW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1hY3JvIGdldHVPcGVy
YW5kV2lkZTMyKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGkgY29uc3Rl
eHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMy
U2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldE9wZXJhbmRXaWRlMTZKUyhvcGNvZGVTdHJ1
Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRoc3EgY29uc3RleHByICVvcGNvZGVTdHJ1Y3Ql
XyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZUpTW1BCLCBQQywgMV0s
IGRzdAogZW5kCiAKLW1hY3JvIGdldE9wZXJhbmRXaWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKLSAgICBsb2FkaXMgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUl
X2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdl
dE9wZXJhbmRXaWRlMTZXYXNtKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9h
ZGhzcSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bj
b2RlSURXaWRlMTZTaXplV2FzbVtQQiwgUEMsIDFdLCBkc3QKK2VuZAorCittYWNybyBnZXR1T3Bl
cmFuZFdpZGUzMkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGkgY29u
c3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lk
ZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAorZW5kCisKK21hY3JvIGdldHVPcGVyYW5kV2lkZTMy
V2FzbShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpIGNvbnN0ZXhwciAl
b3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVX
YXNtW1BCLCBQQywgMV0sIGRzdAorZW5kCisKK21hY3JvIGdldE9wZXJhbmRXaWRlMzJKUyhvcGNv
ZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpcyBjb25zdGV4cHIgJW9wY29kZVN0
cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplSlNbUEIsIFBD
LCAxXSwgZHN0CitlbmQKKworbWFjcm8gZ2V0T3BlcmFuZFdpZGUzMldhc20ob3Bjb2RlU3RydWN0
LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaXMgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVm
aWVsZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZVdhc21bUEIsIFBDLCAxXSwg
ZHN0CiBlbmQKIAogbWFjcm8gbWFrZVJldHVybihnZXQsIGRpc3BhdGNoLCBmbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDNlNTM3OTA1MjI3MTlk
NjYwZGRhZjIyZDNlZjNlY2ZmM2U1NjY1ZmYuLmZiYWUyYjRkZmFiZGVlYzFhMDI4MTQ2ZTczNDc0
NWQyZjk0NWFkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJB
c3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5
LmFzbQpAQCAtMTAwLDEzICsxMDAsMTMgQEAgbWFjcm8gd2FzbU5leHRJbnN0cnVjdGlvbigpCiBl
bmQKIAogbWFjcm8gd2FzbU5leHRJbnN0cnVjdGlvbldpZGUxNigpCi0gICAgbG9hZGIgT3Bjb2Rl
SUROYXJyb3dTaXplW1BCLCBQQywgMV0sIHQwCisgICAgbG9hZGggT3Bjb2RlSUROYXJyb3dTaXpl
W1BCLCBQQywgMV0sIHQwICMgRklYTUU6IGNoYW5nZSB0aGlzIGJhY2sgb25jZSBFV1MgcGFzc2Vz
LgogICAgIGxlYXAgX2dfb3Bjb2RlTWFwV2lkZTE2LCB0MQogICAgIGptcCBOdW1iZXJPZkpTT3Bj
b2RlSURzICogUHRyU2l6ZVt0MSwgdDAsIFB0clNpemVdLCBCeXRlY29kZVB0clRhZywgQWRkcmVz
c0RpdmVyc2lmaWVkCiBlbmQKIAogbWFjcm8gd2FzbU5leHRJbnN0cnVjdGlvbldpZGUzMigpCi0g
ICAgbG9hZGIgT3Bjb2RlSUROYXJyb3dTaXplW1BCLCBQQywgMV0sIHQwCisgICAgbG9hZGggT3Bj
b2RlSUROYXJyb3dTaXplW1BCLCBQQywgMV0sIHQwICMgRklYTUU6IGNoYW5nZSB0aGlzIGJhY2sg
b25jZSBFV1MgcGFzc2VzLgogICAgIGxlYXAgX2dfb3Bjb2RlTWFwV2lkZTMyLCB0MQogICAgIGpt
cCBOdW1iZXJPZkpTT3Bjb2RlSURzICogUHRyU2l6ZVt0MSwgdDAsIFB0clNpemVdLCBCeXRlY29k
ZVB0clRhZywgQWRkcmVzc0RpdmVyc2lmaWVkCiBlbmQKQEAgLTQ2MCw3ICs0NjAsNyBAQCBlbmQK
ICMgV2FzbSB3cmFwcGVyIG9mIGdldC9nZXR1IHRoYXQgb3BlcmF0ZSBvbiBjdHgKIG1hY3JvIHdn
ZXRzKGN0eCwgZmllbGQsIGRzdCkKICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBzaXplKQotICAgICAgICBzaXplKGdldE9wZXJhbmROYXJyb3csIGdldE9wZXJhbmRXaWRl
MTYsIGdldE9wZXJhbmRXaWRlMzIsIG1hY3JvIChnZXQpCisgICAgICAgIHNpemUoZ2V0T3BlcmFu
ZE5hcnJvdywgZ2V0T3BlcmFuZFdpZGUxNldhc20sIGdldE9wZXJhbmRXaWRlMzJXYXNtLCBtYWNy
byAoZ2V0KQogICAgICAgICAgICAgZ2V0KG9wY29kZVN0cnVjdCwgZmllbGQsIGRzdCkKICAgICAg
ICAgZW5kKQogICAgIGVuZCkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBlbmQKIAogbWFjcm8gd2dldHUo
Y3R4LCBmaWVsZCwgZHN0KQogICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IHNpemUpCi0gICAgICAgIHNpemUoZ2V0dU9wZXJhbmROYXJyb3csIGdldHVPcGVyYW5kV2lkZTE2
LCBnZXR1T3BlcmFuZFdpZGUzMiwgbWFjcm8gKGdldHUpCisgICAgICAgIHNpemUoZ2V0dU9wZXJh
bmROYXJyb3csIGdldHVPcGVyYW5kV2lkZTE2V2FzbSwgZ2V0dU9wZXJhbmRXaWRlMzJXYXNtLCBt
YWNybyAoZ2V0dSkKICAgICAgICAgICAgIGdldHUob3Bjb2RlU3RydWN0LCBmaWVsZCwgZHN0KQog
ICAgICAgICBlbmQpCiAgICAgZW5kKQpAQCAtNDc4LDcgKzQ3OCw3IEBAIGVuZAogCiBtYWNybyBk
aXNwYXRjaChjdHgpCiAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6
ZSkKLSAgICAgICAgZ2VuZXJpY0Rpc3BhdGNoT3Aod2FzbURpc3BhdGNoLCBzaXplLCBvcGNvZGVO
YW1lKQorICAgICAgICBnZW5lcmljRGlzcGF0Y2hPcFdhc20od2FzbURpc3BhdGNoLCBzaXplLCBv
cGNvZGVOYW1lKQogICAgIGVuZCkKIGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggY2EyNGU3NTQwYWI0ZGRlNTExYTU5NjZhMTcxZDY5
ODkzNjUzZTE1Yi4uMTZhMjMyZmNhYzMyNmRjM2M2ZTFjMmQxZWM3ODEwMWI5ZWFlNGQ5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtOTgz
LDcgKzk4Myw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFN0cmluZ0p1bXBU
YWJsZT4gbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAgICAgQ2FjaGVkVmVjdG9y
PEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9z
aXRpb25zOwogICAgIENhY2hlZEhhc2hNYXA8dW5zaWduZWQsIFVubGlua2VkQ29kZUJsb2NrOjpS
YXJlRGF0YTo6VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9N
YXA7Ci0gICAgQ2FjaGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9m
aWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CisgICAgQ2FjaGVkVmVjdG9yPHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0czsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQml0VmVjdG9yPiBtX2JpdFZlY3Rv
cnM7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVu
aXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+PiBtX2NvbnN0YW50SWRlbnRpZmll
clNldHM7CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CkBA
IC0xNDM5LDE4ICsxNDM5LDE4IEBAIHByaXZhdGU6CiAgICAgRW5jb2RlZFR5cGUgbV90eXBlOwog
fTsKIAotY2xhc3MgQ2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW0gOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PEluc3RydWN0aW9uU3RyZWFtPiB7CitjbGFzcyBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbSA6IHB1
YmxpYyBDYWNoZWRPYmplY3Q8SlNJbnN0cnVjdGlvblN0cmVhbT4gewogcHVibGljOgotICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBzdHJl
YW0pCisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSlNJbnN0cnVjdGlv
blN0cmVhbSYgc3RyZWFtKQogICAgIHsKICAgICAgICAgbV9pbnN0cnVjdGlvbnMuZW5jb2RlKGVu
Y29kZXIsIHN0cmVhbS5tX2luc3RydWN0aW9ucyk7CiAgICAgfQogCi0gICAgSW5zdHJ1Y3Rpb25T
dHJlYW0qIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAorICAgIEpTSW5zdHJ1Y3Rpb25T
dHJlYW0qIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3QsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93LCAxNiwgSW5zdHJ1Y3Rpb25TdHJl
YW1NYWxsb2M+IGluc3RydWN0aW9uc1ZlY3RvcjsKICAgICAgICAgbV9pbnN0cnVjdGlvbnMuZGVj
b2RlKGRlY29kZXIsIGluc3RydWN0aW9uc1ZlY3Rvcik7Ci0gICAgICAgIHJldHVybiBuZXcgSW5z
dHJ1Y3Rpb25TdHJlYW0oV1RGTW92ZShpbnN0cnVjdGlvbnNWZWN0b3IpKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBKU0luc3RydWN0aW9uU3RyZWFtKFdURk1vdmUoaW5zdHJ1Y3Rpb25zVmVjdG9yKSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTg3OSw3ICsxODc5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayYpOwogICAgIHZvaWQg
ZGVjb2RlKERlY29kZXImLCBVbmxpbmtlZENvZGVCbG9jayYpIGNvbnN0OwogCi0gICAgSW5zdHJ1
Y3Rpb25TdHJlYW0qIGluc3RydWN0aW9ucyhEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVy
biBtX2luc3RydWN0aW9ucy5kZWNvZGUoZGVjb2Rlcik7IH0KKyAgICBKU0luc3RydWN0aW9uU3Ry
ZWFtKiBpbnN0cnVjdGlvbnMoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9pbnN0
cnVjdGlvbnMuZGVjb2RlKGRlY29kZXIpOyB9CiAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1Jl
Z2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV90aGlzUmVnaXN0ZXI7IH0KICAgICBWaXJ0dWFsUmVn
aXN0ZXIgc2NvcGVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQpA
QCAtMTk2NiwxMSArMTk2NiwxMSBAQCBwcml2YXRlOgogICAgIENhY2hlZFJlZlB0cjxDYWNoZWRT
dHJpbmdJbXBsPiBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7CiAKICAgICBDYWNoZWRQdHI8
Q2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwotICAgIENhY2hlZFZlY3Rv
cjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOworICAgIENhY2hlZFZl
Y3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7
CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZEpTVmFsdWU+IG1fY29uc3RhbnRSZWdpc3RlcnM7CiAg
ICAgQ2FjaGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb247CiAgICAgQ2FjaGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUlu
Zm8+IG1fZXhwcmVzc2lvbkluZm87Ci0gICAgQ2FjaGVkSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCBpbnQ+IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CisgICAgQ2FjaGVkSGFzaE1h
cDx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD4gbV9vdXRPZkxpbmVK
dW1wVGFyZ2V0czsKIAogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRJZGVudGlmaWVyPiBtX2lkZW50
aWZpZXJzOwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRXcml0ZUJhcnJpZXI8Q2FjaGVkRnVuY3Rp
b25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkRlY2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggOGNmMTBkMjY0NmJlM2NkZjFh
M2EyMzcxYzU1MTg2MWJhNjQyZGMxYS4uMWVlZWUyY2I5ZTQ2YzQ0ZjE5YzhkNGYwMmI2NTEwN2Iz
M2Q0YTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCkBAIC0xMTIsMTAgKzExMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgaWYgKGJDb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgICAgIHBjID0gYnl0ZWNvZGUubV90YXJnZXRMYWJlbCBcCi0gICAg
ICAgICAgICAgICAgPyByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCkg
XAorICAgICAgICAgICAgICAgID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0aW9u
Kj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgYnl0ZWNvZGUubV90YXJn
ZXRMYWJlbCkgXAogICAgICAgICAgICAgICAgIDogY29kZUJsb2NrLT5vdXRPZkxpbmVKdW1wVGFy
Z2V0KHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGVsc2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICBwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyBwYy0+c2l6ZSgpKTsgXAorICAgICAgICAg
ICAgcGMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyBwYy0+c2l6ZSgpKTsgXAogICAgICAgICBFTkRf
SU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0g
d2hpbGUgKGZhbHNlKQogCkBAIC01NTIsNyArNTUyLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF9uZWdhdGUpCiB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLXN0YXRp
YyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIHJl
c3VsdCwgSlNWYWx1ZSBsZWZ0LCBKU1ZhbHVlIHJpZ2h0KQorc3RhdGljIHZvaWQgdXBkYXRlQXJp
dGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUg
bGVmdCwgSlNWYWx1ZSByaWdodCkKIHsKICAgICBCaW5hcnlBcml0aFByb2ZpbGUmIHByb2ZpbGUg
PSAqY29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAKQEAgLTU4Niw3ICs1
ODYsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBjb2RlQgogICAgICAgICBwcm9maWxlLnNldE9ic2Vy
dmVkTm9uTnVtZXJpYygpOwogfQogI2Vsc2UKLXN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBjb25zdCBJbnN0
cnVjdGlvbiosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpIHsgfQorc3RhdGljIHZvaWQgdXBk
YXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0K
ICNlbmRpZgogCiBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3RvX251bWJl
cikKQEAgLTg0Niw3ICs4NDYsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX2lzX2NvbnN0cnVjdG9yKQogfQogCiB0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgotQUxX
QVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JPcGVuVHJ5RmFzdEltcGwoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykKK0FMV0FZU19JTkxJ
TkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yT3Blbiwgd2lkdGg+KCk7CiAgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwpAQCAtODkyLDcgKzg5
Miw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChpdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUzMikKIH0KIAogdGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KLUFMV0FZU19JTkxJTkUg
U2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yTmV4dFRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBjb25zdCBJbnN0cnVjdGlvbiogcGMp
CitBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBpdGVyYXRvck5leHRUcnlGYXN0SW1w
bChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgY29uc3Qg
SlNJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lk
dGg8T3BJdGVyYXRvck5leHQsIHdpZHRoPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggOWIyNDdiN2U1Njk2MzEyZmNmYzQ2Zjk4YWFmMTc1
NDZmZDg0OTZiYS4uZGM2YThkMTA5MzE3M2NiMTA2MDkzMWEwMDA1Njg5NzJhNmMwY2QxNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAg
LTI0OCwxMyArMjQ4LDEyIEBAIGlubGluZSBKU0FycmF5KiBhbGxvY2F0ZU5ld0FycmF5QnVmZmVy
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTSW1tdXRhYmxlCiB9IC8vIG5hbWVzcGFj
ZSBDb21tb25TbG93UGF0aHMKIAogY2xhc3MgQ2FsbEZyYW1lOwotc3RydWN0IEluc3RydWN0aW9u
OwogCiAjZGVmaW5lIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgobmFtZSkgXAotICAgIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04obmFtZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZy
YW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qKSkKKyAgICBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG5hbWUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSosIGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKSkKIAogI2RlZmluZSBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgobmFtZSkgXAotICAg
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihuYW1lLCBTbG93UGF0aFJldHVyblR5cGUsIChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSkKKyAgICBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04obmFtZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKSkKIAogSlNDX0RFQ0xBUkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9T
TE9XX1BBVEgoc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2Uu
Y3BwCmluZGV4IDE3MGYxYTYwZGFiYjI1NjcxYzBlZDZjZDM3NWMwYjliMTI4ZDE2NjUuLjI2OTg4
NmJmYzIxMjdkMzRlZTE0NjBkNzc4NzFhY2EzODVmODg0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNw
cApAQCAtNzUsOCArNzUsOCBAQCBTcGVjdWxhdGVkVHlwZSBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJh
c2U6OmdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbgogICAgIFZlY3RvcjxT
dHJpbmc+IHVybFBhcnRzID0gc291cmNlVVJMLnNwbGl0KCcvJyk7CiAgICAgcHJlZGljdGlvblRh
cmdldC5zb3VyY2VGaWxlbmFtZSA9IHVybFBhcnRzLmlzRW1wdHkoKSA/IHNvdXJjZVVSTCA6IHVy
bFBhcnRzLmxhc3QoKTsKIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBh
bkluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOworICAg
IGNvbnN0IGF1dG8mIGluc3RydWN0aW9ucyA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgY29uc3QgYXV0byogYW5JbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZUlu
ZGV4KS5wdHIoKTsKICAgICBwcmVkaWN0aW9uVGFyZ2V0Lm9wY29kZUlkID0gYW5JbnN0cnVjdGlv
bi0+b3Bjb2RlSUQoKTsKIAogICAgIGludCBzdGFydExvY2F0aW9uID0gcHJlZGljdGlvblRhcmdl
dC5kaXZvdCAtIHByZWRpY3Rpb25UYXJnZXQuc3RhcnRPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCmluZGV4IDliNjkxM2Y5NDBjYzI5MGJlZTJjMjZkNGU1
YWRjNzhiOWJjMWJjYWMuLjU1YjdhMGY4YzIyYTk5ZGU1YjVhYzkyYjgxYjJlZjgxM2ExZGQyNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCkBAIC0xMDEsOCAr
MTAxLDggQEAgc3RydWN0IENvbmZpZyB7CiAgICAgdm9pZCAoKnNoZWxsVGltZW91dENoZWNrQ2Fs
bGJhY2spKFZNJik7CiAKICAgICBzdHJ1Y3QgewotICAgICAgICB1aW50OF90IGV4Y2VwdGlvbklu
c3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKLSAgICAgICAgdWludDhfdCB3YXNtRXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zW21heE9wY29kZUxlbmd0aCArIDFdOworICAgICAgICB1aW50OF90
IGV4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhCeXRlY29kZVN0cnVjdExlbmd0aCArIDFdOworICAg
ICAgICB1aW50OF90IHdhc21FeGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4Qnl0ZWNvZGVTdHJ1Y3RM
ZW5ndGggKyAxXTsKICAgICAgICAgY29uc3Qgdm9pZCogZ2F0ZU1hcFtudW1iZXJPZkdhdGVzXTsK
ICAgICB9IGxsaW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKaW5kZXggZThhNGU3YTYyMzM5ZDM2YmVhMGY3MjU3YjQxNzM1ZWM4MjQzZWY1Ny4uMjk0OWQw
OTI1ZmMwNDQ3NGE2ZGQyODA3NzVlNGEzNThmNGMwYWViNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNzMsNyArNzMsNiBAQCBjbGFzcyBDTG9vcDsK
IAogc3RydWN0IENsYXNzSW5mbzsKIHN0cnVjdCBEdW1wQ29udGV4dDsKLXN0cnVjdCBJbnN0cnVj
dGlvbjsKIHN0cnVjdCBNZXRob2RUYWJsZTsKIGVudW0gY2xhc3MgVW5rbm93biB7IH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaAppbmRl
eCBiZmMzOGM2NTA5ZDE1ODE1Y2RjNTQxNzA0NWNjNzI4N2ZkYzE5NjcyLi4zMjY3ZWE5NDhmOGQ4
YjM5MjM2NTE3ODMwMjUzMmUzZThhMjJkMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5oCkBAIC0zMCw4ICszMCwxMCBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOworc3RydWN0IEpTT3Bjb2RlVHJh
aXRzOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRyYWl0
cz47CiAKLXVzaW5nIFNsb3dQYXRoRnVuY3Rpb24gPSBTbG93UGF0aFJldHVyblR5cGUoSklUX09Q
RVJBVElPTl9BVFRSSUJVVEVTKikoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKK3Vz
aW5nIFNsb3dQYXRoRnVuY3Rpb24gPSBTbG93UGF0aFJldHVyblR5cGUoSklUX09QRVJBVElPTl9B
VFRSSUJVVEVTKikoQ2FsbEZyYW1lKiwgY29uc3QgSlNJbnN0cnVjdGlvbiopOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBmNjZkYWFi
OGM3MTE1MDFlM2ZlOWQxZjM3ZjIzNjEyZDNhYTQxMDY1Li5lMzJkY2IwYWQzNGIyM2JjZGEyNDcx
YTAzZWU5MmNiNTIzMzM4MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBA
IC0xNDQ0LDcgKzE0NDQsNyBAQCB2b2lkIFZNOjpzZXRDcmFzaE9uVk1DcmVhdGlvbihib29sIHNo
b3VsZENyYXNoKQogICAgIHZtQ3JlYXRpb25TaG91bGRDcmFzaCA9IHNob3VsZENyYXNoOwogfQog
Ci12b2lkIFZNOjphZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQordm9pZCBWTTo6YWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
b3BIaW50RXhlY3V0aW9uQ291bnRMb2NrIH07CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvb3BI
aW50RXhlY3V0aW9uQ291bnRzLmFkZChpbnN0cnVjdGlvbiwgc3RkOjpwYWlyPHVuc2lnbmVkLCBz
dGQ6OnVuaXF1ZV9wdHI8dWludHB0cl90Pj4oMCwgbnVsbHB0cikpOwpAQCAtMTQ1NiwxNCArMTQ1
NiwxNCBAQCB2b2lkIFZNOjphZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICsrYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJz
dDsKIH0KIAotdWludHB0cl90KiBWTTo6Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3VpbnRwdHJfdCogVk06OmdldExvb3BIaW50RXhl
Y3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb29wSGludEV4ZWN1dGlvbkNvdW50TG9jayB9OwogICAgIGF1dG8g
aXRlciA9IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHMuZmluZChpbnN0cnVjdGlvbik7CiAgICAg
cmV0dXJuIGl0ZXItPnZhbHVlLnNlY29uZC5nZXQoKTsKIH0KIAotdm9pZCBWTTo6cmVtb3ZlTG9v
cEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3Zv
aWQgVk06OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb29wSGludEV4ZWN1dGlv
bkNvdW50TG9jayB9OwogICAgIGF1dG8gaXRlciA9IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHMu
ZmluZChpbnN0cnVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA3ODZj
ZDYwM2Y0YzNhMjc5ZDhiYTg1ZGMxMzJhNDczY2E2OGMwMGZlLi5kYzY4MzYzY2Q0NjkzNjg0YTlj
ODY1ZmZmZWViYmQ3ZTg4OTZkODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIlZN
VHJhcHMuaCIKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgorI2luY2x1ZGUgPHZhcmlhbnQ+CiAj
aW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xNjEsNyArMTYyLDE0
IEBAIGNsYXNzIFNpZ25hdHVyZTsKIH0KIAogc3RydWN0IEVudHJ5RnJhbWU7Ci1zdHJ1Y3QgSW5z
dHJ1Y3Rpb247CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOwor
c3RydWN0IEpTT3Bjb2RlVHJhaXRzOworc3RydWN0IFdhc21PcGNvZGVUcmFpdHM7Cit1c2luZyBK
U0luc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPEpTT3Bjb2RlVHJhaXRzPjsKK3VzaW5nIFdh
c21JbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2RlVHJhaXRzPjsKKwordXNp
bmcgSlNPcldhc21JbnN0cnVjdGlvbiA9IHN0ZDo6dmFyaWFudDxjb25zdCBKU0luc3RydWN0aW9u
KiwgY29uc3QgV2FzbUluc3RydWN0aW9uKj47CiAKIGNsYXNzIFF1ZXVlZFRhc2sgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFF1ZXVlZFRhc2spOwpAQCAtNjY5LDcgKzY3Nyw3IEBAIHB1Ymxp
YzoKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZUZvckNhdGNoOwogICAgIENhbGxlZUJpdHMgY2Fs
bGVlRm9yV2FzbUNhdGNoOwogICAgIHZvaWQqIHRhcmdldE1hY2hpbmVQQ0ZvclRocm93OwotICAg
IGNvbnN0IEluc3RydWN0aW9uKiB0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3c7CisgICAgSlNP
cldhc21JbnN0cnVjdGlvbiB0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3c7CiAgICAgdWludDMy
X3Qgb3NyRXhpdEluZGV4OwogICAgIHZvaWQqIG9zckV4aXRKdW1wRGVzdGluYXRpb247CiAgICAg
UmVnRXhwKiBtX2V4ZWN1dGluZ1JlZ0V4cCB7IG51bGxwdHIgfTsKQEAgLTg1NSw5ICs4NjMsOSBA
QCBwdWJsaWM6CiAgICAgICAgIFNldEZvclNjb3BlPEV4Y2VwdGlvbio+IG1fc2F2ZWRMYXN0RXhj
ZXB0aW9uOwogICAgIH07CiAKLSAgICB2b2lkIGFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgIHVpbnRwdHJfdCogZ2V0TG9vcEhpbnRFeGVjdXRpb25D
b3VudGVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgdm9pZCByZW1vdmVMb29wSGludEV4ZWN1
dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIGFkZExvb3BIaW50RXhl
Y3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgdWludHB0cl90KiBnZXRM
b29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgIHZvaWQg
cmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tKSB7
IGhlYXAud3JpdGVCYXJyaWVyKGZyb20pOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHdyaXRl
QmFycmllcihjb25zdCBKU0NlbGwqIGZyb20sIEpTVmFsdWUgdG8pIHsgaGVhcC53cml0ZUJhcnJp
ZXIoZnJvbSwgdG8pOyB9CkBAIC0xMDAwLDcgKzEwMDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9leGVjdXRpb25Gb3JiaWRkZW5PblRlcm1pbmF0aW9uIHsgZmFsc2UgfTsKIAogICAgIExvY2sg
bV9sb29wSGludEV4ZWN1dGlvbkNvdW50TG9jazsKLSAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0
aW9uKiwgc3RkOjpwYWlyPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8dWludHB0cl90Pj4+IG1f
bG9vcEhpbnRFeGVjdXRpb25Db3VudHM7CisgICAgSGFzaE1hcDxjb25zdCBKU0luc3RydWN0aW9u
Kiwgc3RkOjpwYWlyPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8dWludHB0cl90Pj4+IG1fbG9v
cEhpbnRFeGVjdXRpb25Db3VudHM7CiAKICNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElP
TikKICAgICBEb2VzR0NDaGVjayBtX2RvZXNHQzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNhbGxlZS5jcHAKaW5kZXggNjQzMjdlOTljMTU0MGU2ZWJkNjIxYTY0ZDFjMWI5ZTk0YmM3
YjQ0ZS4uYTMyMWM1MmYxNWVjYTUyMjEzZWNkNmVlOTIxNzI3MTk4MTFiMzI1YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKKyNpbmNsdWRlICJy
dW50aW1lL1ZNLmgiCiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKQEAgLTEwMCw5ICsxMDEs
OSBAQCBMTEludENhbGxlZTo6TExJbnRDYWxsZWUoRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3Im
IGdlbmVyYXRvciwgc2l6ZV90IGluZGV4LCBzdAogICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rp
b24gPSAqbV9pbnN0cnVjdGlvbnMtPmF0KHVubGlua2VkSGFuZGxlci5tX3RhcmdldCkucHRyKCk7
CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiB0
YXJnZXQ7CiAgICAgICAgICAgICBpZiAodW5saW5rZWRIYW5kbGVyLm1fdHlwZSA9PSBIYW5kbGVy
VHlwZTo6Q2F0Y2gpCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmhhbmRsZVdhc21DYXRjaChpbnN0cnVjdGlv
bi53aWR0aDxXYXNtT3Bjb2RlVHJhaXRzPigpKS5jb2RlKCkpOworICAgICAgICAgICAgICAgIHRh
cmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50Ojpo
YW5kbGVXYXNtQ2F0Y2goaW5zdHJ1Y3Rpb24ud2lkdGgoKSkuY29kZSgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRp
b25IYW5kbGVyUHRyVGFnPihMTEludDo6aGFuZGxlV2FzbUNhdGNoQWxsKGluc3RydWN0aW9uLndp
ZHRoPFdhc21PcGNvZGVUcmFpdHM+KCkpLmNvZGUoKSk7CisgICAgICAgICAgICAgICAgdGFyZ2V0
ID0gQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmhhbmRs
ZVdhc21DYXRjaEFsbChpbnN0cnVjdGlvbi53aWR0aCgpKS5jb2RlKCkpOwogCiAgICAgICAgICAg
ICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5rZWRIYW5kbGVyLCB0YXJnZXQpOwogICAgICAgICB9
CkBAIC0xNDQsMTMgKzE0NSwxMyBAQCBzdGQ6OnR1cGxlPHZvaWQqLCB2b2lkKj4gTExJbnRDYWxs
ZWU6OnJhbmdlKCkgY29uc3QKICAgICByZXR1cm4geyBudWxscHRyLCBudWxscHRyIH07CiB9CiAK
LUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgTExJbnRDYWxsZWU6Om91dE9mTGluZUp1bXBPZmZz
ZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK1dhc21JbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IExMSW50Q2FsbGVlOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KFdhc21J
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIEFTU0VSVCht
X291dE9mTGluZUp1bXBUYXJnZXRzLmNvbnRhaW5zKGJ5dGVjb2RlT2Zmc2V0KSk7CiAgICAgcmV0
dXJuIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAotY29u
c3QgSW5zdHJ1Y3Rpb24qIExMSW50Q2FsbGVlOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IElu
c3RydWN0aW9uKiBwYykKK2NvbnN0IFdhc21JbnN0cnVjdGlvbiogTExJbnRDYWxsZWU6Om91dE9m
TGluZUp1bXBUYXJnZXQoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYykKIHsKICAgICBpbnQgb2Zm
c2V0ID0gYnl0ZWNvZGVPZmZzZXQocGMpOwogICAgIGludCB0YXJnZXQgPSBvdXRPZkxpbmVKdW1w
T2Zmc2V0KG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKaW5k
ZXggYjE4NGM3OWIwMDk4MGY3MDliODQwZmIwYzgxOTIzNjg0NGY2MDczMS4uMWQzNzFiNDNmMGEw
NTY3YTRiNDhjYmZmOTBjZWFmZDEwYzFhZWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21DYWxsZWUuaApAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBu
dW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUFyZ3VtZW50czsgfQogICAgIGNvbnN0
IEZpeGVkVmVjdG9yPFR5cGU+JiBjb25zdGFudFR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9jb25z
dGFudFR5cGVzOyB9CiAgICAgY29uc3QgRml4ZWRWZWN0b3I8dWludDY0X3Q+JiBjb25zdGFudHMo
KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50czsgfQotICAgIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KKyAg
ICBjb25zdCBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0
dXJuICptX2luc3RydWN0aW9uczsgfQogCiAgICAgQUxXQVlTX0lOTElORSB1aW50NjRfdCBnZXRD
b25zdGFudChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50c1ty
ZWcudG9Db25zdGFudEluZGV4KCldOyB9CiAgICAgQUxXQVlTX0lOTElORSBUeXBlIGdldENvbnN0
YW50VHlwZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25zdApAQCAtMjQ1LDIwICsyNDUsMjAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9jb25zdGFudFR5cGVzW3JlZy50b0NvbnN0YW50SW5k
ZXgoKV07CiAgICAgfQogCi0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBudW1iZXJPZkp1
bXBUYXJnZXRzKCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5zaXplKCk7IH0KLSAgICBJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGxhc3RKdW1wVGFyZ2V0KCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0
cy5sYXN0KCk7IH0KKyAgICB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBu
dW1iZXJPZkp1bXBUYXJnZXRzKCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5zaXplKCk7IH0KKyAg
ICB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBsYXN0SnVtcFRhcmdldCgp
IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlv
biogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgIEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0KTsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZz
ZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgY29uc3Qg
V2FzbUluc3RydWN0aW9uKiBvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IFdhc21JbnN0cnVjdGlv
biopOworICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGlu
ZUp1bXBPZmZzZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOworICAg
IHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZz
ZXQoY29uc3QgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9u
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24u
b2Zmc2V0KCkpOwogICAgIH0KIAotICAgIGlubGluZSBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlu
bGluZSB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNl
dChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgewogICAgICAgICBj
b25zdCBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdCgwKS5wdHIo
KTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVj
dGlvbnNCZWdpbikgKyBtX2luc3RydWN0aW9ucy0+c2l6ZSgpKTsKKyAgICAgICAgY29uc3QgYXV0
byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXYXNtSW5zdHJ1Y3Rp
b24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgbV9p
bnN0cnVjdGlvbnMtPnNpemUoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJldHVybkFkZHJl
c3MgPj0gaW5zdHJ1Y3Rpb25zQmVnaW4gJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9uc0Vu
ZCk7CiAgICAgICAgIHJldHVybiByZXR1cm5BZGRyZXNzIC0gaW5zdHJ1Y3Rpb25zQmVnaW47CiAg
ICAgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIHVz
aW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0LCBpbnQ+OworICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDx0eXBl
bmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKIAogcHJpdmF0ZToKICAg
ICBMTEludENhbGxlZShGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciYsIHNpemVfdCBpbmRleCwg
c3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmKTsKQEAgLTMwMSw5
ICszMDEsOSBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fbnVtQXJndW1lbnRzIHsgMCB9Owog
ICAgIEZpeGVkVmVjdG9yPFR5cGU+IG1fY29uc3RhbnRUeXBlczsKICAgICBGaXhlZFZlY3Rvcjx1
aW50NjRfdD4gbV9jb25zdGFudHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3Ry
ZWFtPiBtX2luc3RydWN0aW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3RydWN0aW9u
U3RyZWFtPiBtX2luc3RydWN0aW9uczsKICAgICBjb25zdCB2b2lkKiBtX2luc3RydWN0aW9uc1Jh
d1BvaW50ZXIgeyBudWxscHRyIH07Ci0gICAgRml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBXYXNtSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBGaXhlZFZlY3Rvcjxj
b25zdCBTaWduYXR1cmUqPiBtX3NpZ25hdHVyZXM7CiAgICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMg
bV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKICAgICBMTEludFRpZXJVcENvdW50ZXIgbV90aWVyVXBD
b3VudGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAKaW5kZXggNDE3NDkxM2Q2OGNiNjVjODFl
NjgxMjc3OTVkMzAyYTBhODc2YmIzNy4uOWMzMjZkNjIxNjE5MTdkNzgxMjI5ZmRkMTFhOTMwNTM4
NTNkY2NmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCkBAIC0zMywxOSArMzMsMTkgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAotdm9pZCBGdW5jdGlvbkNvZGVC
bG9ja0dlbmVyYXRvcjo6c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlv
blN0cmVhbT4gaW5zdHJ1Y3Rpb25zKQordm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6
c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+IGlu
c3RydWN0aW9ucykKIHsKICAgICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25z
KTsKICAgICBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIgPSBtX2luc3RydWN0aW9ucy0+cmF3UG9p
bnRlcigpOwogfQogCi12b2lkIEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRPZkxp
bmVKdW1wVGFyZ2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQsIGlu
dCB0YXJnZXQpCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRPZkxpbmVK
dW1wVGFyZ2V0KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2Rl
T2Zmc2V0LCBpbnQgdGFyZ2V0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldCk7CiAgICAg
bV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5zZXQoYnl0ZWNvZGVPZmZzZXQsIHRhcmdldCk7CiB9CiAK
LUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6Om91
dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNl
dCkKK3R5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IEZ1bmN0aW9uQ29kZUJs
b2NrR2VuZXJhdG9yOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIEFTU0VSVChtX291dE9mTGlu
ZUp1bXBUYXJnZXRzLmNvbnRhaW5zKGJ5dGVjb2RlT2Zmc2V0KSk7CiAgICAgcmV0dXJuIG1fb3V0
T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9y
LmgKaW5kZXggN2U0YTQwYmY0NTA4NmRmNzc4YTMzMzEwOTUyMWFiYTdmNzNmYzc5ZS4uODU1OGIw
ZTc2Y2JlOTk0ODE0MzU3M2EwYzFkMzA1OTE3MzBiYjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9y
LmgKQEAgLTgxLDcgKzgxLDggQEAgcHVibGljOgogICAgIHVpbnQzMl90IG51bUFyZ3VtZW50cygp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtQXJndW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPFR5cGU+
JiBjb25zdGFudFR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFR5cGVzOyB9CiAgICAg
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY29uc3RhbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25z
dGFudHM7IH0KLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29u
c3QgeyByZXR1cm4gKm1faW5zdHJ1Y3Rpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgY29uc3RhbnRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50czsgfQorICAg
IGNvbnN0IFdhc21JbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gKm1faW5zdHJ1Y3Rpb25zOyB9CiAKICAgICB2b2lkIHNldE51bVZhcnModW5zaWduZWQgbnVt
VmFycykgeyBtX251bVZhcnMgPSBudW1WYXJzOyB9CiAgICAgdm9pZCBzZXROdW1DYWxsZWVMb2Nh
bHModW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKSB7IG1fbnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2Fs
bGVlTG9jYWxzOyB9CkBAIC05MywyNyArOTQsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9jb25zdGFudFR5cGVzW3JlZy50b0NvbnN0YW50SW5kZXgoKV07CiAgICAgfQogCi0gICAgdm9p
ZCBzZXRJbnN0cnVjdGlvbnMoc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPik7Ci0g
ICAgdm9pZCBhZGRKdW1wVGFyZ2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQganVtcFRhcmdl
dCkgeyBtX2p1bXBUYXJnZXRzLmFwcGVuZChqdW1wVGFyZ2V0KTsgfQotICAgIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIHsgcmV0dXJuIG1fanVtcFRhcmdl
dHMuc2l6ZSgpOyB9Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBsYXN0SnVtcFRhcmdl
dCgpIHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CisgICAgdm9pZCBzZXRJbnN0cnVj
dGlvbnMoc3RkOjp1bmlxdWVfcHRyPFdhc21JbnN0cnVjdGlvblN0cmVhbT4pOworICAgIHZvaWQg
YWRkSnVtcFRhcmdldCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBqdW1w
VGFyZ2V0KSB7IG1fanVtcFRhcmdldHMuYXBwZW5kKGp1bXBUYXJnZXQpOyB9CisgICAgdHlwZW5h
bWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIHsg
cmV0dXJuIG1fanVtcFRhcmdldHMuc2l6ZSgpOyB9CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBUYXJnZXQoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRz
Lmxhc3QoKTsgfQogCi0gICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIGludCB0YXJnZXQpOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKLSAgICBJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1w
VGFyZ2V0KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQgdGFyZ2V0
KTsKKyAgICB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICB0
eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0
KGNvbnN0IHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBvdXRPZkxpbmVKdW1wT2Zmc2V0KGluc3RydWN0aW9uLm9m
ZnNldCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBi
eXRlY29kZU9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKKyAgICBpbmxp
bmUgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQo
Y29uc3QgV2FzbUluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgIHsKICAgICAgICAgY29u
c3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2luc3RydWN0aW9ucy0+YXQoMCkucHRyKCk7
Ci0gICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rp
b25zQmVnaW4pICsgbV9pbnN0cnVjdGlvbnMtPnNpemUoKSk7CisgICAgICAgIGNvbnN0IGF1dG8q
IGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2FzbUluc3RydWN0aW9u
Kj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIG1faW5z
dHJ1Y3Rpb25zLT5zaXplKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXR1cm5BZGRyZXNz
ID49IGluc3RydWN0aW9uc0JlZ2luICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnNFbmQp
OwogICAgICAgICByZXR1cm4gcmV0dXJuQWRkcmVzcyAtIGluc3RydWN0aW9uc0JlZ2luOwogICAg
IH0KIAotICAgIEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgTExJbnRUaWVyVXBD
b3VudGVyOjpPU1JFbnRyeURhdGE+JiB0aWVyVXBDb3VudGVyKCkgeyByZXR1cm4gbV90aWVyVXBD
b3VudGVyOyB9CisgICAgSGFzaE1hcDx0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgTExJbnRUaWVyVXBDb3VudGVyOjpPU1JFbnRyeURhdGE+JiB0aWVyVXBDb3VudGVyKCkg
eyByZXR1cm4gbV90aWVyVXBDb3VudGVyOyB9CiAKICAgICB1bnNpZ25lZCBhZGRTaWduYXR1cmUo
Y29uc3QgU2lnbmF0dXJlJik7CiAKQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGRFeGNlcHRpb25IYW5kbGVyKGNvbnN0IFVubGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIp
IHsgbV9leGNlcHRpb25IYW5kbGVycy5hcHBlbmQoaGFuZGxlcik7IH0KIAogcHJpdmF0ZToKLSAg
ICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgaW50PjsKKyAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8
dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CiAKICAgICB1aW50
MzJfdCBtX2Z1bmN0aW9uSW5kZXg7CiAKQEAgLTEzNiwxMiArMTM3LDEyIEBAIHByaXZhdGU6CiAg
ICAgdWludDMyX3QgbV9udW1Bcmd1bWVudHMgeyAwIH07CiAgICAgVmVjdG9yPFR5cGU+IG1fY29u
c3RhbnRUeXBlczsKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fY29uc3RhbnRzOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdhc21JbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAgICAgY29u
c3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwotICAgIFZlY3Rv
cjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOworICAgIFZlY3Rvcjx0
eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAg
ICBWZWN0b3I8Y29uc3QgU2lnbmF0dXJlKj4gbV9zaWduYXR1cmVzOwogICAgIE91dE9mTGluZUp1
bXBUYXJnZXRzIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7Ci0gICAgSGFzaE1hcDxJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCBMTEludFRpZXJVcENvdW50ZXI6Ok9TUkVudHJ5RGF0YT4gbV90aWVy
VXBDb3VudGVyOworICAgIEhhc2hNYXA8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiBtX3RpZXJVcENvdW50ZXI7
CiAgICAgVmVjdG9yPEp1bXBUYWJsZT4gbV9qdW1wVGFibGVzOwogICAgIFZlY3RvcjxVbmxpbmtl
ZEhhbmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaAppbmRleCA2YTg4YmI0ZDBiOGE3
YWZmODFkOTgwNzBkYTYyN2E1Mzk2ODZlZDAxLi43MDgyM2M4MTY5MzQ3NTU1MjljMDhhNjZjOTc4
NjhmMjIxYjJjMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
R2VuZXJhdG9yVHJhaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdl
bmVyYXRvclRyYWl0cy5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBHZW5lcmF0b3JUcmFpdHMg
ewogICAgIHVzaW5nIE9wY29kZUlEID0gV2FzbU9wY29kZUlEOwogICAgIHVzaW5nIE9wTm9wID0g
V2FzbU5vcDsKICAgICB1c2luZyBDb2RlQmxvY2sgPSBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25D
b2RlQmxvY2tHZW5lcmF0b3I+OworICAgIHVzaW5nIEluc3RydWN0aW9uVHlwZSA9IFdhc21JbnN0
cnVjdGlvbjsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG9wY29kZUZvckRpc2FibGlu
Z09wdGltaXphdGlvbnMgPSB3YXNtX3VucmVhY2hhYmxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggYjQwZTcyMWY5
NzUzNGUxMjRhNThkMjI0ZDZkYTVhMjNkY2E3MTU0ZS4uZTM5OGM2ZTQwNGUzYmU5NzQyMTdmOTk3
MThjNjkxYzAyZjlmOGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC00NzQsNyArNDc0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZpbmFsaXplUHJldmlvdXNCbG9ja0ZvckNhdGNoKENvbnRyb2xUeXBlJiwgU3RhY2smKTsK
IAogICAgIHN0cnVjdCBTd2l0Y2hFbnRyeSB7Ci0gICAgICAgIEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgb2Zmc2V0OworICAgICAgICBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZz
ZXQ7CiAgICAgICAgIGludCoganVtcFRhcmdldDsKICAgICB9OwogCkBAIC01MTAsNyArNTEwLDcg
QEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPiwg
U3RyaW5nPiBwYXJzZUFuZENvbXBpbGVCeXQKIH0KIAogCi11c2luZyBCdWZmZXIgPSBJbnN0cnVj
dGlvblN0cmVhbTo6SW5zdHJ1Y3Rpb25CdWZmZXI7Cit1c2luZyBCdWZmZXIgPSB0eXBlbmFtZSBX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uQnVmZmVyOwogc3RhdGljIFRocmVhZFNw
ZWNpZmljPEJ1ZmZlcj4qIHRocmVhZFNwZWNpZmljQnVmZmVyUHRyOwogCiBzdGF0aWMgVGhyZWFk
U3BlY2lmaWM8QnVmZmVyPiYgdGhyZWFkU3BlY2lmaWNCdWZmZXIoKQpAQCAtMTIyOCw3ICsxMjI4
LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU3dpdGNoKEV4cHJlc3Npb25UeXBlIGNvbmRp
dGlvbiwgY29uc3QgVmVjdG9yPENvbnRyb2xUeXAKICAgICBXYXNtU3dpdGNoOjplbWl0KHRoaXMs
IGNvbmRpdGlvbiwgdGFibGVJbmRleCk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAg
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQgPSBtX2xhc3RJbnN0cnVjdGlvbi5vZmZz
ZXQoKTsKKyAgICBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQgPSBtX2xhc3RJ
bnN0cnVjdGlvbi5vZmZzZXQoKTsKIAogICAgIGF1dG8gYWRkVGFyZ2V0ID0gWyZdKENvbnRyb2xU
eXBlJiB0YXJnZXQpIHsKICAgICAgICAgUmVmUHRyPExhYmVsPiB0YXJnZXRMYWJlbCA9IHRhcmdl
dC50YXJnZXRMYWJlbEZvckJyYW5jaCgpOwpAQCAtMTg1MCwxMyArMTg1MCwxMyBAQCB2b2lkIEdl
bmVyaWNMYWJlbDxXYXNtOjpHZW5lcmF0b3JUcmFpdHM+OjpzZXRMb2NhdGlvbihCeXRlY29kZUdl
bmVyYXRvckJhc2U8V2FzbQogCiAjZGVmaW5lIENBU0UoX19vcCkgXAogICAgIGNhc2UgX19vcDo6
b3Bjb2RlSUQ6ICBcCi0gICAgICAgIGluc3RydWN0aW9uLT5jYXN0PF9fb3AsIFdhc21PcGNvZGVU
cmFpdHM+KCktPnNldFRhcmdldExhYmVsKEJvdW5kTGFiZWwodGFyZ2V0KSwgWyZdKCkgeyBcCisg
ICAgICAgIGluc3RydWN0aW9uLT5jYXN0PF9fb3A+KCktPnNldFRhcmdldExhYmVsKEJvdW5kTGFi
ZWwodGFyZ2V0KSwgWyZdKCkgeyBcCiAgICAgICAgICAgICBnZW5lcmF0b3IubV9jb2RlQmxvY2st
PmFkZE91dE9mTGluZUp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCksIHRhcmdldCk7IFwK
ICAgICAgICAgICAgIHJldHVybiBCb3VuZExhYmVsKCk7IFwKICAgICAgICAgfSk7IFwKICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQ8V2FzbU9w
Y29kZVRyYWl0cz4oKSkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgp
KSB7CiAgICAgICAgIENBU0UoV2FzbUptcCkKICAgICAgICAgQ0FTRShXYXNtSnRydWUpCiAgICAg
ICAgIENBU0UoV2FzbUpmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50VGllclVwQ291bnRlci5jcHAKaW5kZXggMDc1YzlhYWJjZjhjMWI5NmY5Y2Uz
ODA5Y2NiMzYzNzNjMDI1YjBkYi4uNmFjOWQ1ZDdlYmIyYmJkOGNlN2NjZGQxZGI0NWMzOWY4NjU5
N2RkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50VGll
clVwQ291bnRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50
VGllclVwQ291bnRlci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20gewogCi12b2lkIExMSW50VGllclVwQ291bnRlcjo6YWRkT1NSRW50cnlE
YXRhRm9yTG9vcChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCwgT1NSRW50cnlEYXRh
JiYgZGF0YSkKK3ZvaWQgTExJbnRUaWVyVXBDb3VudGVyOjphZGRPU1JFbnRyeURhdGFGb3JMb29w
KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCwgT1NSRW50cnlE
YXRhJiYgZGF0YSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3NyRW50cnlEYXRhLmFkZChv
ZmZzZXQsIFdURk1vdmUoZGF0YSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLWF1dG8gTExJbnRUaWVyVXBDb3VudGVyOjpvc3JFbnRy
eURhdGFGb3JMb29wKEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdCAtPiBj
b25zdCBPU1JFbnRyeURhdGEmCithdXRvIExMSW50VGllclVwQ291bnRlcjo6b3NyRW50cnlEYXRh
Rm9yTG9vcCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpIGNv
bnN0IC0+IGNvbnN0IE9TUkVudHJ5RGF0YSYKIHsKICAgICBhdXRvIGVudHJ5ID0gbV9vc3JFbnRy
eURhdGEuZmluZChvZmZzZXQpOwogICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5ICE9IG1fb3NyRW50
cnlEYXRhLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludFRpZXJVcENvdW50ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludFRpZXJVcENvdW50ZXIuaAppbmRleCAxNDBhODJjOGU0YTMxODc5M2NjZmI4MzIxYzAyNTAx
OTZjODM0ZWZiLi4wMjhhYjc4MTRjODEwMjRjYjQ2MmE1NDI2MjFkZjhmMzc4NTJmNDRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50VGllclVwQ291bnRl
ci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdp
c3Rlcj4gdmFsdWVzOwogICAgIH07CiAKLSAgICBMTEludFRpZXJVcENvdW50ZXIoSGFzaE1hcDxJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBPU1JFbnRyeURhdGE+JiYgb3NyRW50cnlEYXRhKQor
ICAgIExMSW50VGllclVwQ291bnRlcihIYXNoTWFwPHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0LCBPU1JFbnRyeURhdGE+JiYgb3NyRW50cnlEYXRhKQogICAgICAgICA6IG1f
b3NyRW50cnlEYXRhKFdURk1vdmUob3NyRW50cnlEYXRhKSkKICAgICB7CiAgICAgICAgIG9wdGlt
aXplQWZ0ZXJXYXJtVXAoKTsKQEAgLTc2LDE0ICs3NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBzZXROZXdUaHJlc2hvbGQoT3B0aW9uczo6dGhyZXNob2xkRm9yT01HT3B0aW1pemVTb29uKCkp
OwogICAgIH0KIAotICAgIHZvaWQgYWRkT1NSRW50cnlEYXRhRm9yTG9vcChJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0LCBPU1JFbnRyeURhdGEmJik7CisgICAgdm9pZCBhZGRPU1JFbnRyeURhdGFG
b3JMb29wKHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBPU1JFbnRyeURh
dGEmJik7CiAKLSAgICBjb25zdCBPU1JFbnRyeURhdGEmIG9zckVudHJ5RGF0YUZvckxvb3AoSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Q7CisgICAgY29uc3QgT1NSRW50cnlEYXRhJiBv
c3JFbnRyeURhdGFGb3JMb29wKHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
KSBjb25zdDsKIAogICAgIExvY2sgbV9sb2NrOwogICAgIENvbXBpbGF0aW9uU3RhdHVzIG1fY29t
cGlsYXRpb25TdGF0dXMgeyBDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQgfTsKICAgICBD
b21waWxhdGlvblN0YXR1cyBtX2xvb3BDb21waWxhdGlvblN0YXR1cyB7IENvbXBpbGF0aW9uU3Rh
dHVzOjpOb3RDb21waWxlZCB9OwotICAgIEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCwgT1NSRW50cnlEYXRhPiBtX29zckVudHJ5RGF0YTsKKyAgICBIYXNoTWFwPHR5cGVuYW1lIFdh
c21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBPU1JFbnRyeURhdGE+IG1fb3NyRW50cnlEYXRh
OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXggY2YyN2ZlYTMyOTBkMzA4MGMwMmY0MmJh
NTk2ZWMyOGIyZjg5NTRkYi4uMmE4NjdkNmM3M2ZkZWYzZTkxODcwNmEzZjA3MmMwZDU4Mjk5M2Nk
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAg
LTI4OSwxMyArMjg5LDEzIEBAIFdBU01fU0xPV19QQVRIX0RFQ0wodHJhY2UpCiAgICAgaWYgKCFP
cHRpb25zOjp0cmFjZUxMSW50RXhlY3V0aW9uKCkpCiAgICAgICAgIFdBU01fRU5EX0lNUEwoKTsK
IAotICAgIFdhc21PcGNvZGVJRCBvcGNvZGVJRCA9IHBjLT5vcGNvZGVJRDxXYXNtT3Bjb2RlVHJh
aXRzPigpOworICAgIFdhc21PcGNvZGVJRCBvcGNvZGVJRCA9IHBjLT5vcGNvZGVJRCgpOwogICAg
IGRhdGFMb2dGKCI8JXA+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4i
LAogICAgICAgICAmVGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAgIENBTExFRSgpLAogICAgICAg
ICBjYWxsRnJhbWUsCiAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihDQUxMRUUoKS0+Ynl0
ZWNvZGVPZmZzZXQocGMpKSwKLSAgICAgICAgcGMtPm5hbWU8V2FzbU9wY29kZVRyYWl0cz4oKSwK
KyAgICAgICAgcGMtPm5hbWUoKSwKICAgICAgICAgcGMpOwogICAgIGlmIChvcGNvZGVJRCA9PSB3
YXNtX2VudGVyKSB7CiAgICAgICAgIGRhdGFMb2dGKCJGcmFtZSB3aWxsIGV2ZW50dWFsbHkgcmV0
dXJuIHRvICVwXG4iLCBjYWxsRnJhbWUtPnJldHVyblBDKCkudmFsdWUoKSk7CkBAIC0zMTgsMTMg
KzMxOCwxMyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKG91dF9vZl9saW5lX2p1bXBfdGFyZ2V0KQog
CiBXQVNNX1NMT1dfUEFUSF9ERUNMKHJlZl9mdW5jKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbVJlZkZ1bmMsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0
cnVjdGlvbiA9IHBjLT5hczxXYXNtUmVmRnVuYz4oKTsKICAgICBXQVNNX1JFVFVSTihXYXNtOjpv
cGVyYXRpb25XYXNtUmVmRnVuYyhpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4
KSk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfZ2V0KQogewotICAgIGF1dG8gaW5z
dHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlR2V0LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlR2V0PigpOwogICAgIGludDMyX3Qg
aW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1faW5kZXgpLnVuYm94ZWRJbnQzMigpOwogICAgIEVu
Y29kZWRKU1ZhbHVlIHJlc3VsdCA9IFdhc206Om9wZXJhdGlvbkdldFdhc21UYWJsZUVsZW1lbnQo
aW5zdGFuY2UsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5kZXgpOwogICAgIGlmICghcmVz
dWx0KQpAQCAtMzM0LDcgKzMzNCw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfZ2V0KQog
CiBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX3NldCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9u
ID0gcGMtPmFzPFdhc21UYWJsZVNldCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGlu
c3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZVNldD4oKTsKICAgICB1aW50MzJfdCBpbmRleCA9
IFJFQUQoaW5zdHJ1Y3Rpb24ubV9pbmRleCkudW5ib3hlZFVJbnQzMigpOwogICAgIEVuY29kZWRK
U1ZhbHVlIHZhbHVlID0gUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVlKS5lbmNvZGVkSlNWYWx1ZSgp
OwogICAgIGlmICghV2FzbTo6b3BlcmF0aW9uU2V0V2FzbVRhYmxlRWxlbWVudChpbnN0YW5jZSwg
aW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbmRleCwgdmFsdWUpKQpAQCAtMzQ0LDcgKzM0NCw3
IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfc2V0KQogCiBXQVNNX1NMT1dfUEFUSF9ERUNM
KHRhYmxlX2luaXQpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVJ
bml0LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbVRhYmxlSW5pdD4oKTsKICAgICB1aW50MzJfdCBkc3RPZmZzZXQgPSBSRUFEKGluc3RydWN0
aW9uLm1fZHN0T2Zmc2V0KS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3Qgc3JjT2Zmc2V0
ID0gUkVBRChpbnN0cnVjdGlvbi5tX3NyY09mZnNldCkudW5ib3hlZFVJbnQzMigpOwogICAgIHVp
bnQzMl90IGxlbmd0aCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9sZW5ndGgpLnVuYm94ZWRVSW50MzIo
KTsKQEAgLTM1NywyMCArMzU3LDIwIEBAIFdBU01fU0xPV19QQVRIX0RFQ0woZWxlbV9kcm9wKQog
ewogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtRWxlbURyb3AsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0
cnVjdGlvbiA9IHBjLT5hczxXYXNtRWxlbURyb3A+KCk7CiAgICAgV2FzbTo6b3BlcmF0aW9uV2Fz
bUVsZW1Ecm9wKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2VsZW1lbnRJbmRleCk7CiAgICAgV0FT
TV9FTkQoKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9zaXplKQogewotICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlU2l6ZSwgV2FzbU9wY29kZVRyYWl0cz4o
KTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZVNpemU+KCk7CiAgICAg
V0FTTV9SRVRVUk4oV2FzbTo6b3BlcmF0aW9uR2V0V2FzbVRhYmxlU2l6ZShpbnN0YW5jZSwgaW5z
dHJ1Y3Rpb24ubV90YWJsZUluZGV4KSk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVf
ZmlsbCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUZpbGwsIFdh
c21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFi
bGVGaWxsPigpOwogICAgIHVpbnQzMl90IG9mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9vZmZz
ZXQpLnVuYm94ZWRVSW50MzIoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBmaWxsID0gUkVBRChpbnN0
cnVjdGlvbi5tX2ZpbGwpLmVuY29kZWRKU1ZhbHVlKCk7CiAgICAgdWludDMyX3Qgc2l6ZSA9IFJF
QUQoaW5zdHJ1Y3Rpb24ubV9zaXplKS51bmJveGVkVUludDMyKCk7CkBAIC0zODEsNyArMzgxLDcg
QEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9maWxsKQogCiBXQVNNX1NMT1dfUEFUSF9ERUNM
KHRhYmxlX2NvcHkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVD
b3B5LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbVRhYmxlQ29weT4oKTsKICAgICBpbnQzMl90IGRzdE9mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rp
b24ubV9kc3RPZmZzZXQpLnVuYm94ZWRJbnQzMigpOwogICAgIGludDMyX3Qgc3JjT2Zmc2V0ID0g
UkVBRChpbnN0cnVjdGlvbi5tX3NyY09mZnNldCkudW5ib3hlZEludDMyKCk7CiAgICAgaW50MzJf
dCBsZW5ndGggPSBSRUFEKGluc3RydWN0aW9uLm1fbGVuZ3RoKS51bmJveGVkSW50MzIoKTsKQEAg
LTM5Miw3ICszOTIsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2NvcHkpCiAKIFdBU01f
U0xPV19QQVRIX0RFQ0wodGFibGVfZ3JvdykKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21UYWJsZUdyb3csIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVj
dGlvbiA9IHBjLT5hczxXYXNtVGFibGVHcm93PigpOwogICAgIEVuY29kZWRKU1ZhbHVlIGZpbGwg
PSBSRUFEKGluc3RydWN0aW9uLm1fZmlsbCkuZW5jb2RlZEpTVmFsdWUoKTsKICAgICB1aW50MzJf
dCBzaXplID0gUkVBRChpbnN0cnVjdGlvbi5tX3NpemUpLnVuYm94ZWRVSW50MzIoKTsKICAgICBX
QVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25XYXNtVGFibGVHcm93KGluc3RhbmNlLCBpbnN0cnVj
dGlvbi5tX3RhYmxlSW5kZXgsIGZpbGwsIHNpemUpKTsKQEAgLTQwMCwxNCArNDAwLDE0IEBAIFdB
U01fU0xPV19QQVRIX0RFQ0wodGFibGVfZ3JvdykKIAogV0FTTV9TTE9XX1BBVEhfREVDTChncm93
X21lbW9yeSkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21Hcm93TWVtb3J5
LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2Fz
bUdyb3dNZW1vcnk+KCk7CiAgICAgaW50MzJfdCBkZWx0YSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9k
ZWx0YSkudW5ib3hlZEludDMyKCk7CiAgICAgV0FTTV9SRVRVUk4oV2FzbTo6b3BlcmF0aW9uR3Jv
d01lbW9yeShjYWxsRnJhbWUsIGluc3RhbmNlLCBkZWx0YSkpOwogfQogCiBXQVNNX1NMT1dfUEFU
SF9ERUNMKG1lbW9yeV9maWxsKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2Fz
bU1lbW9yeUZpbGwsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtTWVtb3J5RmlsbD4oKTsKICAgICB1aW50MzJfdCBkc3RBZGRyZXNzID0gUkVB
RChpbnN0cnVjdGlvbi5tX2RzdEFkZHJlc3MpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJf
dCB0YXJnZXRWYWx1ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV90YXJnZXRWYWx1ZSkudW5ib3hlZFVJ
bnQzMigpOwogICAgIHVpbnQzMl90IGNvdW50ID0gUkVBRChpbnN0cnVjdGlvbi5tX2NvdW50KS51
bmJveGVkVUludDMyKCk7CkBAIC00MTgsNyArNDE4LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTCht
ZW1vcnlfZmlsbCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfY29weSkKIHsKLSAgICBh
dXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlDb3B5LCBXYXNtT3Bjb2RlVHJhaXRz
PigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUNvcHk+KCk7CiAg
ICAgdWludDMyX3QgZHN0QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9kc3RBZGRyZXNzKS51
bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3Qgc3JjQWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rp
b24ubV9zcmNBZGRyZXNzKS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3QgY291bnQgPSBS
RUFEKGluc3RydWN0aW9uLm1fY291bnQpLnVuYm94ZWRVSW50MzIoKTsKQEAgLTQyOSw3ICs0Mjks
NyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9jb3B5KQogCiBXQVNNX1NMT1dfUEFUSF9E
RUNMKG1lbW9yeV9pbml0KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1l
bW9yeUluaXQsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBj
LT5hczxXYXNtTWVtb3J5SW5pdD4oKTsKICAgICB1aW50MzJfdCBkc3RBZGRyZXNzID0gUkVBRChp
bnN0cnVjdGlvbi5tX2RzdEFkZHJlc3MpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBz
cmNBZGRyZXNzID0gUkVBRChpbnN0cnVjdGlvbi5tX3NyY0FkZHJlc3MpLnVuYm94ZWRVSW50MzIo
KTsKICAgICB1aW50MzJfdCBsZW5ndGggPSBSRUFEKGluc3RydWN0aW9uLm1fbGVuZ3RoKS51bmJv
eGVkVUludDMyKCk7CkBAIC00NDIsNyArNDQyLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChkYXRh
X2Ryb3ApCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21EYXRhRHJvcCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBh
dXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21EYXRhRHJvcD4oKTsKICAgICBXYXNtOjpvcGVy
YXRpb25XYXNtRGF0YURyb3AoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fZGF0YVNlZ21lbnRJbmRl
eCk7CiAgICAgV0FTTV9FTkQoKTsKIH0KQEAgLTQ3NCw3ICs0NzQsNyBAQCBXQVNNX1NMT1dfUEFU
SF9ERUNMKGNhbGwpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAKLSAgICBhdXRv
IGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGw+KCk7CiAgICAgcmV0dXJuIGRvV2Fz
bUNhbGwoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCk7CiB9CiAKQEAgLTQ4
Miw3ICs0ODIsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfbm9fdGxzKQogewogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtQ2FsbE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbUNhbGxOb1Rscz4oKTsKICAgICByZXR1cm4gZG9XYXNtQ2FsbChpbnN0YW5j
ZSwgaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KTsKIH0KIApAQCAtNTExLDE0ICs1MTEsMTQg
QEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkb1dhc21DYWxsSW5kaXJlY3QoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIFdhc206Okluc3RhbmMKIAogV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX2lu
ZGlyZWN0KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxJbmRpcmVj
dCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21DYWxsSW5kaXJlY3Q+KCk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IFJFQUQoaW5z
dHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KS51bmJveGVkSW50MzIoKTsKICAgICByZXR1cm4gZG9X
YXNtQ2FsbEluZGlyZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGZ1bmN0aW9uSW5kZXgsIGluc3Ry
dWN0aW9uLm1fdGFibGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7CiB9CiAK
IFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9pbmRpcmVjdF9ub190bHMpCiB7Ci0gICAgYXV0byBp
bnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbEluZGlyZWN0Tm9UbHMsIFdhc21PcGNvZGVUcmFp
dHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbEluZGlyZWN0Tm9U
bHM+KCk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9m
dW5jdGlvbkluZGV4KS51bmJveGVkSW50MzIoKTsKICAgICByZXR1cm4gZG9XYXNtQ2FsbEluZGly
ZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGZ1bmN0aW9uSW5kZXgsIGluc3RydWN0aW9uLm1fdGFi
bGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7CiB9CkBAIC01NDgsMzUgKzU0
OCwzNSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRvV2FzbUNhbGxSZWYoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIFdhc206Okluc3RhbmNlKiBjYQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKGNh
bGxfcmVmKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWYsIFdh
c21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2Fs
bFJlZj4oKTsKICAgICBKU1ZhbHVlIHJlZmVyZW5jZSA9IEpTVmFsdWU6OmRlY29kZShSRUFEKGlu
c3RydWN0aW9uLm1fZnVuY3Rpb25SZWZlcmVuY2UpLmVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJl
dHVybiBkb1dhc21DYWxsUmVmKGNhbGxGcmFtZSwgaW5zdGFuY2UsIHJlZmVyZW5jZSwgaW5zdHJ1
Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9y
ZWZfbm9fdGxzKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWZO
b1RscywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFz
PFdhc21DYWxsUmVmTm9UbHM+KCk7CiAgICAgSlNWYWx1ZSByZWZlcmVuY2UgPSBKU1ZhbHVlOjpk
ZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uUmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihjYWxsRnJhbWUsIGluc3RhbmNlLCByZWZl
cmVuY2UsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOwogfQogCiBXQVNNX1NMT1dfUEFU
SF9ERUNMKHNldF9nbG9iYWxfcmVmKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbVNldEdsb2JhbFJlZiwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWY+KCk7CiAgICAgaW5zdGFuY2UtPnNldEdsb2Jh
bChpbnN0cnVjdGlvbi5tX2dsb2JhbEluZGV4LCBSRUFEKGluc3RydWN0aW9uLm1fdmFsdWUpLmpz
VmFsdWUoKSk7CiAgICAgV0FTTV9FTkRfSU1QTCgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNM
KHNldF9nbG9iYWxfcmVmX3BvcnRhYmxlX2JpbmRpbmcpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtU2V0R2xvYmFsUmVmUG9ydGFibGVCaW5kaW5nLCBXYXNtT3Bjb2RlVHJh
aXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVNldEdsb2JhbFJlZlBv
cnRhYmxlQmluZGluZz4oKTsKICAgICBpbnN0YW5jZS0+c2V0R2xvYmFsKGluc3RydWN0aW9uLm1f
Z2xvYmFsSW5kZXgsIFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1ZSkuanNWYWx1ZSgpKTsKICAgICBX
QVNNX0VORF9JTVBMKCk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2F0b21pY193
YWl0MzIpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5QXRvbWlj
V2FpdDMyLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbU1lbW9yeUF0b21pY1dhaXQzMj4oKTsKICAgICB1bnNpZ25lZCBiYXNlID0gUkVBRChp
bnN0cnVjdGlvbi5tX3BvaW50ZXIpLnVuYm94ZWRJbnQzMigpOwogICAgIHVuc2lnbmVkIG9mZnNl
dCA9IGluc3RydWN0aW9uLm1fb2Zmc2V0OwogICAgIHVpbnQzMl90IHZhbHVlID0gUkVBRChpbnN0
cnVjdGlvbi5tX3ZhbHVlKS51bmJveGVkSW50MzIoKTsKQEAgLTU4OSw3ICs1ODksNyBAQCBXQVNN
X1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9hdG9taWNfd2FpdDMyKQogCiBXQVNNX1NMT1dfUEFUSF9E
RUNMKG1lbW9yeV9hdG9taWNfd2FpdDY0KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbU1lbW9yeUF0b21pY1dhaXQ2NCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRv
IGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlBdG9taWNXYWl0NjQ+KCk7CiAgICAgdW5z
aWduZWQgYmFzZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9wb2ludGVyKS51bmJveGVkSW50MzIoKTsK
ICAgICB1bnNpZ25lZCBvZmZzZXQgPSBpbnN0cnVjdGlvbi5tX29mZnNldDsKICAgICB1aW50NjRf
dCB2YWx1ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1ZSkudW5ib3hlZEludDY0KCk7CkBAIC02
MDIsNyArNjAyLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfYXRvbWljX3dhaXQ2NCkK
IAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfYXRvbWljX25vdGlmeSkKIHsKLSAgICBhdXRv
IGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlBdG9taWNOb3RpZnksIFdhc21PcGNvZGVU
cmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5QXRvbWlj
Tm90aWZ5PigpOwogICAgIHVuc2lnbmVkIGJhc2UgPSBSRUFEKGluc3RydWN0aW9uLm1fcG9pbnRl
cikudW5ib3hlZEludDMyKCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gaW5zdHJ1Y3Rpb24ubV9v
ZmZzZXQ7CiAgICAgaW50MzJfdCBjb3VudCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9jb3VudCkudW5i
b3hlZEludDMyKCk7CkBAIC02MjEsNyArNjIxLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0aHJv
dykKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21UaHJvdywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9u
ID0gcGMtPmFzPFdhc21UaHJvdz4oKTsKICAgICBjb25zdCBXYXNtOjpUYWcmIHRhZyA9IGluc3Rh
bmNlLT50YWcoaW5zdHJ1Y3Rpb24ubV9leGNlcHRpb25JbmRleCk7CiAKICAgICBGaXhlZFZlY3Rv
cjx1aW50NjRfdD4gdmFsdWVzKHRhZy5wYXJhbWV0ZXJDb3VudCgpKTsKQEAgLTY1NSw3ICs2NTUs
NyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHJldGhyb3cpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0aHJvdywgV2FzbU9wY29k
ZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZXRocm93Pigp
OwogICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gUkVBRChpbnN0cnVjdGlvbi5tX2V4Y2VwdGlvbiku
anNWYWx1ZSgpOwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
ZXhjZXB0aW9uKTsKIApAQCAtNjk5LDE0ICs2OTksMTQgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChy
ZXRyaWV2ZV9hbmRfY2xlYXJfZXhjZXB0aW9uKQogICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoaW5zdHJ1Y3Rpb24ubV9leGNlcHRpb24pID0gdGhyb3duVmFsdWU7CiAgICAgfTsKIAotICAg
IGlmIChwYy0+aXM8V2FzbUNhdGNoLCBXYXNtT3Bjb2RlVHJhaXRzPigpKQotICAgICAgICBoYW5k
bGVDYXRjaChwYy0+YXM8V2FzbUNhdGNoLCBXYXNtT3Bjb2RlVHJhaXRzPigpKTsKLSAgICBlbHNl
IGlmIChwYy0+aXM8V2FzbUNhdGNoQWxsLCBXYXNtT3Bjb2RlVHJhaXRzPigpKQotICAgICAgICBo
YW5kbGVDYXRjaEFsbChwYy0+YXM8V2FzbUNhdGNoQWxsLCBXYXNtT3Bjb2RlVHJhaXRzPigpKTsK
LSAgICBlbHNlIGlmIChwYy0+aXM8V2FzbUNhdGNoTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCkp
Ci0gICAgICAgIGhhbmRsZUNhdGNoKHBjLT5hczxXYXNtQ2F0Y2hOb1RscywgV2FzbU9wY29kZVRy
YWl0cz4oKSk7Ci0gICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaEFsbE5vVGxzLCBXYXNtT3Bj
b2RlVHJhaXRzPigpKQotICAgICAgICBoYW5kbGVDYXRjaEFsbChwYy0+YXM8V2FzbUNhdGNoQWxs
Tm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCkpOworICAgIGlmIChwYy0+aXM8V2FzbUNhdGNoPigp
KQorICAgICAgICBoYW5kbGVDYXRjaChwYy0+YXM8V2FzbUNhdGNoPigpKTsKKyAgICBlbHNlIGlm
IChwYy0+aXM8V2FzbUNhdGNoQWxsPigpKQorICAgICAgICBoYW5kbGVDYXRjaEFsbChwYy0+YXM8
V2FzbUNhdGNoQWxsPigpKTsKKyAgICBlbHNlIGlmIChwYy0+aXM8V2FzbUNhdGNoTm9UbHM+KCkp
CisgICAgICAgIGhhbmRsZUNhdGNoKHBjLT5hczxXYXNtQ2F0Y2hOb1Rscz4oKSk7CisgICAgZWxz
ZSBpZiAocGMtPmlzPFdhc21DYXRjaEFsbE5vVGxzPigpKQorICAgICAgICBoYW5kbGVDYXRjaEFs
bChwYy0+YXM8V2FzbUNhdGNoQWxsTm9UbHM+KCkpOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtNzE3LDE5ICs3MTcsMTkgQEAgV0FTTV9TTE9X
X1BBVEhfREVDTChyZXRyaWV2ZV9hbmRfY2xlYXJfZXhjZXB0aW9uKQogICAgIFdBU01fUkVUVVJO
X1RXTyhwYywgcGF5bG9hZCk7CiB9CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNs
b3dfcGF0aF93YXNtX3Rocm93X2V4Y2VwdGlvbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIFdhc206OkV4Y2VwdGlv
blR5cGUgZXhjZXB0aW9uVHlwZSkKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3df
cGF0aF93YXNtX3Rocm93X2V4Y2VwdGlvbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgV2Fz
bUluc3RydWN0aW9uKiBwYywgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBXYXNtOjpFeGNlcHRp
b25UeXBlIGV4Y2VwdGlvblR5cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBjKTsKICAgICBXQVNN
X1JFVFVSTl9UV08ob3BlcmF0aW9uV2FzbVRvSlNFeGNlcHRpb24oY2FsbEZyYW1lLCBleGNlcHRp
b25UeXBlLCBpbnN0YW5jZSksIG51bGxwdHIpOwogfQogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3VudChjb25zdCBJbnN0cnVjdGlvbiogcGMsIHVp
bnQzMl90IHgpCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV9w
b3Bjb3VudChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCB1aW50MzJfdCB4KQogewogICAgIHZv
aWQqIHJlc3VsdCA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9f
YnVpbHRpbl9wb3Bjb3VudCh4KSkpOwogICAgIFdBU01fUkVUVVJOX1RXTyhwYywgcmVzdWx0KTsK
IH0KIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291
bnRsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIHVpbnQ2NF90IHgpCitleHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3VudGxsKGNvbnN0IFdhc21JbnN0cnVj
dGlvbiogcGMsIHVpbnQ2NF90IHgpCiB7CiAgICAgdm9pZCogcmVzdWx0ID0gYml0d2lzZV9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oX19idWlsdGluX3BvcGNvdW50bGwoeCkpKTsK
ICAgICBXQVNNX1JFVFVSTl9UV08ocGMsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2xvd1BhdGhzLmgKaW5kZXggYjY0Y2U3Y2RlNDFhYWEwNjg5N2U4ZmZmZWQ4MmE4
ZDA2NDMyZGZkMC4uNDYwOWUzNmIwMzkyNGQxMGVhMDI3NDU2MTBmMGYyZmU0ZTgzMWYyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaApAQCAtMzQsOSArMzQs
MTIgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxsRnJhbWU7Ci1zdHJ1Y3QgSW5zdHJ1
Y3Rpb247CiBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgQmFzZUluc3RydWN0aW9uOworc3RydWN0IFdhc21PcGNvZGVUcmFpdHM7Cit1c2luZyBXYXNt
SW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZVRyYWl0cz47CisKIG5hbWVz
cGFjZSBXYXNtIHsKIGNsYXNzIEluc3RhbmNlOwogfQpAQCAtNDQsNyArNDcsNyBAQCBjbGFzcyBJ
bnN0YW5jZTsKIG5hbWVzcGFjZSBMTEludCB7CiAKICNkZWZpbmUgV0FTTV9TTE9XX1BBVEhfREVD
TChuYW1lKSBcCi0gICAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dh
c21fIyNuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIFdh
c206Okluc3RhbmNlKiBpbnN0YW5jZSkKKyAgICBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBzbG93X3BhdGhfd2FzbV8jI25hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IFdhc21J
bnN0cnVjdGlvbiogcGMsIFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSkKIAogI2RlZmluZSBXQVNN
X1NMT1dfUEFUSF9ISURERU5fREVDTChuYW1lKSBcCiAgICAgV0FTTV9TTE9XX1BBVEhfREVDTChu
YW1lKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTApAQCAtODcsOSArOTAsOSBAQCBX
QVNNX1NMT1dfUEFUSF9ISURERU5fREVDTCh0aHJvdyk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5f
REVDTChyZXRocm93KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHJldHJpZXZlX2FuZF9j
bGVhcl9leGNlcHRpb24pOwogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3Bh
dGhfd2FzbV90aHJvd19leGNlcHRpb24oQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBX
YXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUpIFJFRkVSRU5DRURf
RlJPTV9BU00gV1RGX0lOVEVSTkFMOwotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xv
d19wYXRoX3dhc21fcG9wY291bnQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50MzJfdCkgUkVG
RVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7Ci1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJu
VHlwZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3VudGxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgdWlu
dDY0X3QpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOworZXh0ZXJuICJDIiBTbG93
UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKENhbGxGcmFtZSos
IGNvbnN0IFdhc21JbnN0cnVjdGlvbiosIFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6
RXhjZXB0aW9uVHlwZSkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CitleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3VudChjb25zdCBXYXNt
SW5zdHJ1Y3Rpb24qIHBjLCB1aW50MzJfdCkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJO
QUw7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3Vu
dGxsKGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMsIHVpbnQ2NF90KSBSRUZFUkVOQ0VEX0ZST01f
QVNNIFdURl9JTlRFUk5BTDsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CiAK
</data>
<flag name="commit-queue"
          id="480965"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453554</attachid>
            <date>2022-03-01 17:03:15 -0800</date>
            <delta_ts>2022-03-01 21:57:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237347-20220301170314.patch</filename>
            <type>text/plain</type>
            <size>374956</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDBlZmU2YjYzNDkzM2Q3NzkxM2Y3MzU5MmNmNWY5MjJiY2NhYWJkLi44MDYzY2ZmNTdhMzE3ODRm
YjAyM2M3MDBiOGJhZDhjNzMwNzM3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NjIgQEAKKzIwMjItMDMtMDEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE9wY29kZVRyYWl0cyB0byBzdXBwb3J0IHRo
ZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgMi1ieXRlIFdBU00gb3Bjb2RlIGlkcyBpbiBieXRlY29k
ZSBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzczNDcKKworICAgICAgICBUaGUgbnVtYmVyIG9mIFdBU00gb3Bjb2RlcyB3aWxsIGluY3Jl
YXNlIGJleW9uZCAyNTUgd2hlbiBXQVNNIFNJTUQgaXMgaW1wbGVtZW50ZWQsIGFuZCBzbyB0aGlz
IHBhdGNoCisgICAgICAgIGNoYW5nZXMgT3Bjb2RlVHJhaXRzIHRvIGFsbG93IGZvciB0aGUgcG9z
c2liaWxpdHkgb2YgaGF2aW5nIHR3by1ieXRlIFdBU00gb3Bjb2RlcyB3aXRob3V0IHJlZ3Jlc3Np
bmcKKyAgICAgICAgSlMuIFdlIGhhdmUgdG8gdGhyZWFkIHRoZXNlIE9wY29kZVRyYWl0cyBldmVy
eXdoZXJlIHRoYXQgdGhleSBhcmUgdXNlZCBzbyB0aGF0IGNvZGUgY2FuIHJlYWQgdGhlCisgICAg
ICAgIGNvcnJlY3QgdmFsdWUgd2hlbiBkZWNvZGluZyBhbiBpbnN0cnVjdGlvbiBzdHJlYW0uIFRo
aXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIHRoZSBzaXplIG9mIFdBU00gb3Bjb2RlcworICAgICAg
ICB5ZXQsIGFsdGhvdWdoIEkgaGF2ZSB0ZXN0ZWQgdGhhdCB0aGUgdGVzdCBzdWl0ZSBzdGlsbCBw
YXNzZXMgaWYgd2UgZG8gaW5jcmVhc2UgdGhlIG9wY29kZSBzaXplLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OkJ5dGVjb2RlQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjphZGRMZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2lj
QmxvY2s8T3Bjb2RlVHJhaXRzPjo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjppc0p1bXBU
YXJnZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6
Y29tcHV0ZUltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVU
cmFpdHM+Ojpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRl
Y29kZUJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmFkZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25B
bmRPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVh
bVR5cGU+OjpkdW1wVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
Om91dE9mTGluZUp1bXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAg
IChKU0M6Oldhc206OkJ5dGVjb2RlRHVtcGVyOjpyZWdpc3Rlck5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCBjb25zdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppbnN0cnVjdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4p
OgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3Jb
XSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmR1bXApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBoKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRl
TG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEluc3Ry
dWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5M
aXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjpyZXBsYWNlQnl0ZWNvZGVXaXRoRnJhZ21lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjphZGp1c3RBYnNvbHV0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdEp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFu
ZENvbHVtbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdV
cGRhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5h
cnlBcml0aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0
aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlv
bkF0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAo
SlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om9wY29kZUlEIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
Ojppc1dpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aXNXaWRl
MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNNZXRhZGF0YSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om51bWJlck9mQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OnNpemVTaGlmdEFtb3VudCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURXaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURCeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0
cnVjdGlvbjo6aXMgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmNhc3QpOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OmNhc3QgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rp
b246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHA6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5CeXRlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaDoKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6Om9wZXJhdG9yLT4gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6QmFzZVJlZjo6cHRyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6OnVud3JhcCBjb25zdCk6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6cHRyKToK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6OnB0ciBjb25zdCk6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjp1bndyYXApOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6dW53cmFwIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Oml0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVy
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OnN3YXApOgorICAgICAgICAoSlND
OjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNPcGNvZGVTaGFwZSk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlU2l6ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6Cisg
ICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6anVtcFRh
cmdldEZvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6ZXh0cmFjdFN0b3JlZEp1bXBUYXJn
ZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjp1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0
c0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OmR1bXBMaW5lQ29sdW1uRW50cnkpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
bnN0cnVjdGlvbkF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6
b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6d2l0aFdyaXRlcik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjpyZWNvcmRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRlT3Bjb2RlMTYp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRl
T3Bjb2RlMzIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
Lmg6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMpOgorICAgICAgICAo
SlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVW
YXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJl
Y3Vyc2l2ZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0
eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJl
dHVyblBDKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
b21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToK
KyAgICAgICAgKiBnZW5lcmF0b3IvQXJndW1lbnQucmI6CisgICAgICAgICogZ2VuZXJhdG9yL0RT
TC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvT3Bjb2RlLnJiOgorICAgICAgICAqIGludGVycHJl
dGVyL0Fic3RyYWN0UEMuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmN1cnJlbnRWUEMgY29uc3QpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2F0Y2hJbmZvOjpDYXRjaEluZm8pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGht
ZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbGVzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pn
cmVhdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pncmVhdGVyZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5sZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2pubGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZ3JlYXRlcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3Bfamxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2psZXNz
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9qbmxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pubGVz
c2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2JlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JlbG93ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamJlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2piZWxvd2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Bvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcG93KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0
aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRub3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdHhvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Vyc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9z
dWIpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jYWxsX2V2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2FsbF92
YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1bWVQb2ludCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpJVDo6anVtcFRhcmdldCk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW92KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbXApOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfZW1wdHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191
bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X2NlbGxfd2l0aF90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3NldF9mdW5jdGlvbl9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2plcV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5l
cV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9z
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5zdHJpY3Rl
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmlj
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zd2l0Y2hfY2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5n
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRl
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVidWcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19yZWdleHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Fz
eW5jX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhf
c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1l
bnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2plcSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9zdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pz
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcSk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
dHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGly
ZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRl
X2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpMTEludDo6d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgor
ICAgICAgICAoSlNDOjpMTEludDo6d2FzbVJldHVyblRvVGhyb3cpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50
R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTEludDo6ZGlzcGF0
Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkNMb29w
UmVnaXN0ZXI6Om9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKToKKyAgICAgICAgKEpTQzo6
Q0xvb3A6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpDTG9vcFJlZ2lzdGVyOjpvcGVyYXRvciBj
b25zdCBJbnN0cnVjdGlvbiopOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZEluc3RydWN0aW9uU3RyZWFt
OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFz
dEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6Cisg
ICAgICAgIChKU0M6OlZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAo
SlNDOjpWTTo6cmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRDYWxsZWU6OkxMSW50Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRDYWxsZWU6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTElu
dENhbGxlZTo6b3V0T2ZMaW5lSnVtcFRhcmdldCk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVl
Lmg6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6c2V0SW5zdHJ1
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6
OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogd2FzbS9X
YXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVu
Y3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OmNvbnN0YW50UmVnaXN0ZXJzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6Omluc3RydWN0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjph
ZGRKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5l
cmF0b3I6Om51bWJlck9mSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlv
bkNvZGVCbG9ja0dlbmVyYXRvcjo6bGFzdEp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNt
OjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpieXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjp0aWVy
VXBDb3VudGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50R2VuZXJhdG9yOjphZGRTd2l0Y2gpOgorICAgICAgICAoSlNDOjpHZW5lcmljTGFiZWw8V2Fz
bTo6R2VuZXJhdG9yVHJhaXRzPjo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIHdhc20vV2FzbUxM
SW50VGllclVwQ291bnRlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50VGllclVwQ291
bnRlcjo6YWRkT1NSRW50cnlEYXRhRm9yTG9vcCk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50
VGllclVwQ291bnRlcjo6b3NyRW50cnlEYXRhRm9yTG9vcCBjb25zdCBjb25zdCk6CisgICAgICAg
ICogd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmg6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50VGllclVwQ291bnRlcjo6TExJbnRUaWVyVXBDb3VudGVyKToKKyAgICAgICAgKiB3YXNtL1dh
c21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6V0FTTV9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24p
OgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fcG9wY291bnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fcG9wY291bnRsbCk6CisgICAgICAgICogd2Fz
bS9XYXNtU2xvd1BhdGhzLmg6CisKIDIwMjItMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQXBwbGVXaW5dIFN0YXJ0IHVzaW5nIFZp
c3VhbCBTdHVkaW8gMjAyMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3NWE0N2JjZTVjMTA0ZWQ3OWQ2NzM5ZTk4
ZGVhNDhhZGI0ZWQxNjIxLi5iODIyYmI0ZWY4ZjE2ZjNhZDdhOWJmNGI3ZTk2Y2MxODdmNzcxMjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcApAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5F
X0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihCeXRlY29kZUJhc2ljQmxvY2spOwogCi1C
eXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayhjb25zdCBJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgYmxvY2tJbmRleCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK0J5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpC
eXRlY29kZUJhc2ljQmxvY2soY29uc3QgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpS
ZWYmIGluc3RydWN0aW9uLCB1bnNpZ25lZCBibG9ja0luZGV4KQogICAgIDogbV9sZWFkZXJPZmZz
ZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpCiAgICAgLCBtX3RvdGFsTGVuZ3RoKDApCiAgICAgLCBt
X2luZGV4KGJsb2NrSW5kZXgpCkBAIC00MiwyNiArNDMsMzAgQEAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjpCeXRlY29kZUJhc2ljQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1
Y3Rpb24KICAgICBhZGRMZW5ndGgoaW5zdHJ1Y3Rpb24tPnNpemUoKSk7CiB9CiAKLUJ5dGVjb2Rl
QmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jazo6U3BlY2lh
bEJsb2NrVHlwZSBibG9ja1R5cGUsIHVuc2lnbmVkIGJsb2NrSW5kZXgpCi0gICAgOiBtX2xlYWRl
ck9mZnNldChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6
IFVJTlRfTUFYKQotICAgICwgbV90b3RhbExlbmd0aChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6IFVJTlRfTUFYKQordGVtcGxhdGU8dHlwZW5hbWUgT3Bj
b2RlVHJhaXRzPgorQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkJ5dGVjb2RlQmFz
aWNCbG9jayh0eXBlbmFtZSBCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6U3BlY2lh
bEJsb2NrVHlwZSBibG9ja1R5cGUsIHVuc2lnbmVkIGJsb2NrSW5kZXgpCisgICAgOiBtX2xlYWRl
ck9mZnNldChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVu
dHJ5QmxvY2sgPyAwIDogVUlOVF9NQVgpCisgICAgLCBtX3RvdGFsTGVuZ3RoKGJsb2NrVHlwZSA9
PSBCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jayA/IDAgOiBVSU5U
X01BWCkKICAgICAsIG1faW5kZXgoYmxvY2tJbmRleCkKIHsKIH0KIAotdm9pZCBCeXRlY29kZUJh
c2ljQmxvY2s6OmFkZExlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OmFkZExlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkKIHsKICAgICBtX2RlbHRhLmFw
cGVuZChieXRlY29kZUxlbmd0aCk7CiAgICAgbV90b3RhbExlbmd0aCArPSBieXRlY29kZUxlbmd0
aDsKIH0KIAotdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkKK3RlbXBsYXRl
PHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz46OnNocmlua1RvRml0KCkKIHsKICAgICBtX2RlbHRhLnNocmlua1RvRml0KCk7CiAgICAg
bV9zdWNjZXNzb3JzLnNocmlua1RvRml0KCk7CiB9CiAKLXN0YXRpYyBib29sIGlzSnVtcFRhcmdl
dChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordGVtcGxhdGU8
dHlwZW5hbWUgT3Bjb2RlVHJhaXRzPgorc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KHR5cGVuYW1l
IE9wY29kZVRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3Rvcjx0eXBlbmFtZSBC
eXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpP
ZmZzZXQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9jYXRjaCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02OSwx
NCArNzQsMTUgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnMKICAgICByZXR1cm4gc3RkOjpiaW5h
cnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29k
ZU9mZnNldCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KIHRlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrPgotYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+
IEJhc2ljQmxvY2tWZWN0b3IKK2F1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46
OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlw
ZSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCiB7CiAgICAgQmFzaWNCbG9ja1Zl
Y3RvciBiYXNpY0Jsb2NrczsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
MzI+IGp1bXBUYXJnZXRzOworICAgIFZlY3Rvcjx0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5
cGU6Ok9mZnNldCwgMzI+IGp1bXBUYXJnZXRzOwogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGp1bXBUYXJnZXRzKTsKIAotICAgIGF1dG8gbGlu
a0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBmcm9tLCBCeXRlY29kZUJhc2ljQmxv
Y2smIHRvKSB7CisgICAgYXV0byBsaW5rQmxvY2tzID0gWyZdIChCeXRlY29kZUJhc2ljQmxvY2s8
T3Bjb2RlVHJhaXRzPiYgZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz4mIHRv
KSB7CiAgICAgICAgIGZyb20uYWRkU3VjY2Vzc29yKHRvKTsKICAgICB9OwogCkBAIC04NSwyNSAr
OTEsMjUgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBiYXNpY0Jsb2Nrcy5yZXNl
cnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIC8vIEVudHJ5IGJsb2NrLgotICAgICAgICAgICAgYmFzaWNCbG9ja3MuY29uc3RydWN0QW5k
QXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgp
KTsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChCeXRlY29kZUJh
c2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgpKTsK
ICAgICAgICAgICAgIC8vIEZpcnN0IGJsb2NrLgotICAgICAgICAgICAgYmFzaWNCbG9ja3MuY29u
c3RydWN0QW5kQXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jaywgYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChC
eXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Mu
c2l6ZSgpKTsKICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmFzaWNCbG9ja3NbMF0sIGJhc2ljQmxv
Y2tzWzFdKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVu
dCA9ICZiYXNpY0Jsb2Nrcy5sYXN0KCk7Ci0gICAgICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0g
KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKSAtPiBCeXRlY29kZUJh
c2ljQmxvY2sqIHsKKyAgICAgICAgYXV0byogY3VycmVudCA9ICZiYXNpY0Jsb2Nrcy5sYXN0KCk7
CisgICAgICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKGNvbnN0IHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6UmVmJiBpbnN0cnVjdGlvbikgLT4gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9w
Y29kZVRyYWl0cz4qIHsKICAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVu
ZChpbnN0cnVjdGlvbiwgYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAm
YmFzaWNCbG9ja3MubGFzdCgpOwogICAgICAgICB9OwogICAgICAgICBib29sIG5leHRJbnN0cnVj
dGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rp
b24gOiBpbnN0cnVjdGlvbnMpIHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVPZmZzZXQgPSBp
bnN0cnVjdGlvbi5vZmZzZXQoKTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCk7CisgICAgICAgICAgICBhdXRvIG9wY29kZUlEID0gaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAKICAgICAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFs
c2U7CiAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGp1bXAgdGFy
Z2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgotICAgICAg
ICAgICAgaWYgKG5leHRJbnN0cnVjdGlvbklzTGVhZGVyIHx8IGlzSnVtcFRhcmdldChvcGNvZGVJ
RCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgaWYgKG5leHRJ
bnN0cnVjdGlvbklzTGVhZGVyIHx8IGlzSnVtcFRhcmdldDxPcGNvZGVUcmFpdHM+KG9wY29kZUlE
LCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgY3VycmVu
dCA9IGFwcGVuZEJsb2NrKGluc3RydWN0aW9uKTsKICAgICAgICAgICAgICAgICBjcmVhdGVkQmxv
Y2sgPSB0cnVlOwogICAgICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFs
c2U7CkBAIC0xMjAsNyArMTI2LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICAg
ICAgY3VycmVudC0+YWRkTGVuZ3RoKGluc3RydWN0aW9uLT5zaXplKCkpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIEV4aXQgYmxvY2suCi0gICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFw
cGVuZChCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgpKTsK
KyAgICAgICAgYmFzaWNCbG9ja3MuY29uc3RydWN0QW5kQXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjpFeGl0QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAg
IGJhc2ljQmxvY2tzLnNocmlua1RvRml0KCk7CiAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2Nrcy5s
YXN0KCkuaXNFeGl0QmxvY2soKSk7CiAgICAgfQpAQCAtMTI4LDE1ICsxMzQsMTUgQEAgYXV0byBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJgogCiAgICAgLy8gTGluayBiYXNpYyBibG9ja3MgdG9nZXRoZXIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXTsKKyAgICAg
ICAgYXV0byYgYmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXTsKIAogICAgICAgICBpZiAoYmxvY2suaXNF
bnRyeUJsb2NrKCkgfHwgYmxvY2suaXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCB2aXNpdGVkTGVuZ3RoID0gMDsgdmlzaXRlZExlbmd0aCA8IGJsb2NrLnRvdGFsTGVuZ3Ro
KCk7KSB7Ci0gICAgICAgICAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGluc3RydWN0aW9uID0g
aW5zdHJ1Y3Rpb25zLmF0KGJsb2NrLmxlYWRlck9mZnNldCgpICsgdmlzaXRlZExlbmd0aCk7Ci0g
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwor
ICAgICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChibG9jay5sZWFk
ZXJPZmZzZXQoKSArIHZpc2l0ZWRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBvcGNvZGVJRCA9
IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCiAgICAgICAgICAgICB2aXNpdGVkTGVuZ3RoICs9
IGluc3RydWN0aW9uLT5zaXplKCk7CiAKQEAgLTE3MSw3ICsxNzcsNyBAQCBhdXRvIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mCiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGJyYW5jaCwgbGluayB0byB0
aGUgYmxvY2socykgdGhhdCB3ZSBqdW1wIHRvLgogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9w
Y29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbi5vZmZzZXQoKSAr
IGluc3RydWN0aW9uLT5zaXplKCkgPT0gYmxvY2subGVhZGVyT2Zmc2V0KCkgKyBibG9jay50b3Rh
bExlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87CisgICAgICAgICAgICAgICAgVmVjdG9y
PHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0LCAxPiBieXRlY29kZU9mZnNl
dHNKdW1wZWRUbzsKICAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlv
bihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAg
ICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyT2ZKdW1wVGFyZ2V0cyA9IGJ5dGVjb2RlT2Zmc2V0
c0p1bXBlZFRvLnNpemUoKTsKQEAgLTIwMCw3ICsyMDYsNyBAQCBhdXRvIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mCiAgICAgICAgIC8vIElmIHdlIGZhbGwgdGhyb3VnaCB0aGVuIGxpbmsgdG8gdGhlIG5leHQg
YmxvY2sgaW4gcHJvZ3JhbSBvcmRlci4KICAgICAgICAgaWYgKGZhbGxzVGhyb3VnaCkgewogICAg
ICAgICAgICAgQVNTRVJUKGkgKyAxIDwgYmFzaWNCbG9ja3Muc2l6ZSgpKTsKLSAgICAgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayYgbmV4dEJsb2NrID0gYmFzaWNCbG9ja3NbaSArIDFdOworICAg
ICAgICAgICAgYXV0byYgbmV4dEJsb2NrID0gYmFzaWNCbG9ja3NbaSArIDFdOwogICAgICAgICAg
ICAgbGlua0Jsb2NrcyhibG9jaywgbmV4dEJsb2NrKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIx
NCwxMiArMjIwLDE0IEBAIGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICByZXR1cm4gYmFzaWNC
bG9ja3M7CiB9CiAKLWF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNp
Y0Jsb2NrVmVjdG9yCit0ZW1wbGF0ZTw+CithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29k
ZVRyYWl0cz46OmNvbXB1dGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucykgLT4gQmFzaWNCbG9ja1ZlY3RvcgogewogICAgIHJldHVy
biBjb21wdXRlSW1wbChjb2RlQmxvY2ssIGluc3RydWN0aW9ucyk7CiB9CiAKLWF1dG8gQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxv
Y2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tW
ZWN0b3IKK3RlbXBsYXRlPD4KK2F1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrPEpTT3Bjb2RlVHJhaXRz
Pjo6Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCBK
U0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tWZWN0b3IKIHsK
ICAgICByZXR1cm4gY29tcHV0ZUltcGwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5o
CmluZGV4IGQwYTg4MmQ1NDYzMjI5MTFjMzdlZWFiZGMwYWZkMzBmNWFlZjczNGEuLmQ3NjQzZDE5
ZjgyY2Q0YzYyZGIzNmY4YzZjMTUyNGVkYWJiMDY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTM3LDIxICszNywy
NCBAQCBjbGFzcyBCeXRlY29kZUdyYXBoOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKLXN0cnVjdCBJ
bnN0cnVjdGlvbjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIERF
Q0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEJ5dGVjb2RlQmFzaWNCbG9jayk7
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KIGNsYXNzIEJ5dGVjb2RlQmFzaWNC
bG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUJhc2ljQmxvY2spOwogICAgIGZyaWVu
ZCBjbGFzcyBCeXRlY29kZUdyYXBoOwogcHVibGljOgogICAgIHVzaW5nIEJhc2ljQmxvY2tWZWN0
b3IgPSBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywg
MTYsIEJ5dGVjb2RlQmFzaWNCbG9ja01hbGxvYz47Ci0gICAgc3RhdGljX2Fzc2VydChtYXhPcGNv
ZGVMZW5ndGggPD0gVUlOVDhfTUFYKTsKKyAgICB1c2luZyBJbnN0cnVjdGlvblR5cGUgPSBCYXNl
SW5zdHJ1Y3Rpb248T3Bjb2RlVHJhaXRzPjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVR5
cGUgPSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OworICAgIHN0YXRpY19hc3Nl
cnQobWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPD0gVUlOVDhfTUFYKTsKICAgICBlbnVtIFNwZWNp
YWxCbG9ja1R5cGUgeyBFbnRyeUJsb2NrLCBFeGl0QmxvY2sgfTsKLSAgICBpbmxpbmUgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmLCB1bnNpZ25lZCBibG9j
a0luZGV4KTsKKyAgICBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrKGNvbnN0IHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZTo6UmVmJiwgdW5zaWduZWQgYmxvY2tJbmRleCk7CiAgICAgaW5s
aW5lIEJ5dGVjb2RlQmFzaWNCbG9jayhTcGVjaWFsQmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0lu
ZGV4KTsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrJiYpID0gZGVm
YXVsdDsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz4mJikgPSBkZWZhdWx0OwogCiAKICAgICBib29sIGlzRW50cnlCbG9jaygpIHsgcmV0dXJu
ICFtX2xlYWRlck9mZnNldCAmJiAhbV90b3RhbExlbmd0aDsgfQpAQCAtNzIsMTIgKzc1LDEyIEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBPbmx5IGNhbGxlZCBmcm9tIEJ5dGVjb2RlR3Jh
cGguCi0gICAgc3RhdGljIEJhc2ljQmxvY2tWZWN0b3IgY29tcHV0ZShDb2RlQmxvY2sqLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKTsKLSAgICBzdGF0aWMgQmFzaWNCbG9j
a1ZlY3RvciBjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+
IHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpOworICAgIHN0YXRpYyBCYXNpY0Js
b2NrVmVjdG9yIGNvbXB1dGUoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
JiBpbnN0cnVjdGlvbnMpOworICAgIHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGUoVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGlu
c3RydWN0aW9ucyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+IHN0YXRpYyBCYXNpY0Js
b2NrVmVjdG9yIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtVHlwZSYgaW5zdHJ1Y3Rpb25zKTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKLSAg
ICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrKQorICAgIHZvaWQg
YWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiBibG9jaykKICAg
ICB7CiAgICAgICAgIGlmICghbV9zdWNjZXNzb3JzLmNvbnRhaW5zKGJsb2NrLmluZGV4KCkpKQog
ICAgICAgICAgICAgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jay5pbmRleCgpKTsKQEAgLTg1LDcg
Kzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSB2b2lkIGFkZExlbmd0aCh1bnNpZ25lZCk7
CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OworICAgIHR5
cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OwogICAg
IHVuc2lnbmVkIG1fdG90YWxMZW5ndGg7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKIApAQCAtOTYs
NCArOTksNyBAQCBwcml2YXRlOgogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCit1c2lu
ZyBKU0J5dGVjb2RlQmFzaWNCbG9jayA9IEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29kZVRyYWl0
cz47Cit1c2luZyBXYXNtQnl0ZWNvZGVCYXNpY0Jsb2NrID0gQnl0ZWNvZGVCYXNpY0Jsb2NrPFdh
c21PcGNvZGVUcmFpdHM+OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDViZjY3YjYxYjYy
YmMxMmUwNGMyZmE3Y2E5MzQzYzBjN2FkZTY3MDAuLjA2MWQ3YmQxNDJkYjQ5ZWYwM2M5ZjMwNTY4
NGVmNzE2OTQ0MjVlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtNDEsMzEgKzQxLDM0IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi12b2lkIEJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKQordGVtcGxhdGU8dHlw
ZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgordm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SW5z
dHJ1Y3Rpb25TdHJlYW1UeXBlPjo6cHJpbnRMb2NhdGlvbkFuZE9wKHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBt
X2N1cnJlbnRMb2NhdGlvbiA9IGxvY2F0aW9uOwogICAgIG1fb3V0LnByaW50ZigiWyU0dV0gJS0x
OHMgIiwgbG9jYXRpb24sIG9wKTsKIH0KIAotdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OmR1bXBW
YWx1ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25T
dHJlYW1UeXBlPgordm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
Pjo6ZHVtcFZhbHVlKFZpcnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgbV9vdXQucHJpbnRmKCIl
cyIsIHJlZ2lzdGVyTmFtZShyZWcpLmRhdGEoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZT4KIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgQnl0
ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8VHJhaXRzPiBsYWJl
bCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OmR1bXBW
YWx1ZShHZW5lcmljQm91bmRMYWJlbDxUcmFpdHM+IGxhYmVsKQogewogICAgIGludCB0YXJnZXQg
PSBsYWJlbC50YXJnZXQoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgdGFyZ2V0ID0gb3V0
T2ZMaW5lSnVtcE9mZnNldChtX2N1cnJlbnRMb2NhdGlvbik7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCB0YXJnZXRPZmZzZXQgPSB0YXJnZXQgKyBtX2N1cnJlbnRMb2NhdGlvbjsKKyAg
ICBhdXRvIHRhcmdldE9mZnNldCA9IHRhcmdldCArIG1fY3VycmVudExvY2F0aW9uOwogICAgIG1f
b3V0LnByaW50KHRhcmdldCwgIigtPiIsIHRhcmdldE9mZnNldCwgIikiKTsKIH0KIAotdGVtcGxh
dGUgdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxK
U0dlbmVyYXRvclRyYWl0cz4pOwordGVtcGxhdGUgdm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SlNJ
bnN0cnVjdGlvblN0cmVhbT46OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxKU0dlbmVyYXRv
clRyYWl0cz4pOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotdGVtcGxhdGUgdm9pZCBCeXRl
Y29kZUR1bXBlckJhc2U6OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxXYXNtOjpHZW5lcmF0
b3JUcmFpdHM+KTsKK3RlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPFdhc21JbnN0cnVj
dGlvblN0cmVhbT46OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxXYXNtOjpHZW5lcmF0b3JU
cmFpdHM+KTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKIHRlbXBsYXRlPGNsYXNz
IEJsb2NrPgpAQCAtNzgsNyArODEsNyBAQCBDU3RyaW5nIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdpc3RlciByKSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgQmxvY2s+Ci1pbnQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAoraW50IEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAogewogICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxp
bmVKdW1wT2Zmc2V0KG9mZnNldCk7CiB9CkBAIC05MSwxNCArOTQsMTQgQEAgQ1N0cmluZyBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElD
U3RhdHVzTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoY29u
c3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNN
YXAmKQogewogICAgIDo6SlNDOjpkdW1wQnl0ZWNvZGUodGhpcywgaXQub2Zmc2V0KCksIGl0LnB0
cigpKTsKICAgICB0aGlzLT5tX291dC5wcmludCgiXG4iKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBi
bG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlw
ZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0
YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIG91dCk7CiAgICAg
ZHVtcGVyLmR1bXBCeXRlY29kZShpdCwgc3RhdHVzTWFwKTsKQEAgLTIxMCw3ICsyMTMsNyBAQCB2
b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN0cmluZ1N3aXRjaEp1bXBU
YWJsZXMoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmxvY2s+Ci1zdGF0aWMgdm9pZCBkdW1w
SGVhZGVyKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgUHJpbnRTdHJlYW0mIG91dCkKK3N0YXRpYyB2b2lkIGR1bXBIZWFkZXIoQmxvY2sqIGJsb2Nr
LCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFByaW50U3RyZWFtJiBv
dXQpCiB7CiAgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwogICAgIHNpemVfdCB3aWRl
MTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKQEAgLTI1Miw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBk
dW1wRm9vdGVyKER1bXBlciYgZHVtcGVyKQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZv
aWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQordm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAm
IHN0YXR1c01hcCkKIHsKICAgICBkdW1wSGVhZGVyKGJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7
CiAKQEAgLTI2Niw3ICsyNjksNyBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJsb2NrKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rp
b25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0
dXNNYXAmIGljU3RhdHVzTWFwKQordm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBHcmFwaChCbG9jayogYmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElD
U3RhdHVzTWFwJiBpY1N0YXR1c01hcCkKIHsKICAgICBkdW1wSGVhZGVyKGJsb2NrLCBpbnN0cnVj
dGlvbnMsIG91dCk7CiAKQEAgLTI4NSw3ICsyODgsNyBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25T
dAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2Nr
IDogZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogZ3JhcGgpIHsKICAgICAgICAgaWYg
KGJsb2NrLmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApAQCAtMzE3LDYgKzMyMCw4IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0
CiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIAordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1w
ZXJCYXNlPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+OwordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1w
ZXJCYXNlPFdhc21JbnN0cnVjdGlvblN0cmVhbT47CiB0ZW1wbGF0ZSBjbGFzcyBCeXRlY29kZUR1
bXBlcjxDb2RlQmxvY2s+OwogdGVtcGxhdGUgY2xhc3MgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+OwogdGVtcGxhdGUgY2xhc3MgQ29kZUJsb2NrQnl0
ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjsKQEAgLTMzMSw3ICszMzYsNyBAQCB2b2lkIEJ5dGVjb2Rl
RHVtcGVyOjpkdW1wQmxvY2soRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBjb25z
dCBNb2R1bGVJbgogICAgIHNpemVfdCB3aWRlMTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKICAgICBz
aXplX3Qgd2lkZTMySW5zdHJ1Y3Rpb25Db3VudCA9IDA7CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBi
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgaXQgIT0gYmxvY2stPmluc3RydWN0aW9ucygp
LmVuZCgpOyBpdCArPSBpdC0+c2l6ZTxXYXNtT3Bjb2RlVHJhaXRzPigpKSB7CisgICAgZm9yIChh
dXRvIGl0ID0gYmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5lbmQoKTsgaXQgKz0gaXQtPnNpemUoKSkgewogICAgICAgICBpZiAoaXQtPmlz
V2lkZTE2KCkpCiAgICAgICAgICAgICArK3dpZGUxNkluc3RydWN0aW9uQ291bnQ7CiAgICAgICAg
IGVsc2UgaWYgKGl0LT5pc1dpZGUzMigpKQpAQCAtMzU5LDcgKzM2NCw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI6OmR1bXBCbG9jayhGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2ssIGNv
bnN0IE1vZHVsZUluCiAgICAgICAgIGJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSk7CiAKICAgICBC
eXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIG91dCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gYmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5l
bmQoKTsgaXQgKz0gaXQtPnNpemU8V2FzbU9wY29kZVRyYWl0cz4oKSkgeworICAgIGZvciAoYXV0
byBpdCA9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1
Y3Rpb25zKCkuZW5kKCk7IGl0ICs9IGl0LT5zaXplKCkpIHsKICAgICAgICAgZHVtcFdhc20oJmR1
bXBlciwgaXQub2Zmc2V0KCksIGl0LnB0cigpKTsKICAgICAgICAgb3V0LnByaW50KCJcbiIpOwog
ICAgIH0KQEAgLTQxNiw2ICs0MjEsMTkgQEAgQ1N0cmluZyBCeXRlY29kZUR1bXBlcjo6Zm9ybWF0
Q29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRfdCBjb25zdGFudCkgY29uc3QKICAgICB9CiB9CiAK
K0NTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6OnJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIgcikg
Y29uc3QKK3sKKyAgICBpZiAoci5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBjb25zdGFu
dE5hbWUocik7CisKKyAgICByZXR1cm4gdG9DU3RyaW5nKHIpOworfQorCitpbnQgQnl0ZWNvZGVE
dW1wZXI6Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgb2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxpbmVK
dW1wT2Zmc2V0KG9mZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdhc20KIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmgKaW5kZXggMjE2ZTZlNjdlYTBkMmRjN2Q5M2FhNDUxMjhlOWEwNjJk
M2Q2M2I5Yi4uNWRlMTVlOGNjYTIyNGQyNjAyOWYwYmE0ZGE3ZmVjNWEwYmY5YzEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTI2
LDkgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Js
b2NrLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCkBAIC0zNywxNSArMzksMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlR3JhcGg7CiAKLXN0cnVjdCBJbnN0cnVj
dGlvbjsKLQordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgogY2xhc3Mg
Qnl0ZWNvZGVEdW1wZXJCYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CeXRlY29kZUR1bXBl
ckJhc2UoKQogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHByaW50TG9jYXRpb25BbmRPcChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CisgICAgdm9p
ZCBwcmludExvY2F0aW9uQW5kT3AodHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZz
ZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgdm9pZCBkdW1wT3BlcmFuZChjb25zdCBjaGFyKiBvcGVyYW5kTmFtZSwgVCBvcGVyYW5k
LCBib29sIGlzRmlyc3QgPSBmYWxzZSkKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBDU3RyaW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0KSBjb25zdCA9
IDA7CiAKICAgICBCeXRlY29kZUR1bXBlckJhc2UoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAg
OiBtX291dChvdXQpCkBAIC03NSwxMyArNzYsMTMgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAg
IFByaW50U3RyZWFtJiBtX291dDsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fY3Vy
cmVudExvY2F0aW9uIHsgMCB9OworICAgIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6
T2Zmc2V0IG1fY3VycmVudExvY2F0aW9uIHsgMCB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgQmxv
Y2s+Ci1jbGFzcyBCeXRlY29kZUR1bXBlciA6IHB1YmxpYyBCeXRlY29kZUR1bXBlckJhc2Ugewor
Y2xhc3MgQnl0ZWNvZGVEdW1wZXIgOiBwdWJsaWMgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1
Y3Rpb25TdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxv
Y2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVt
cEJ5dGVjb2RlKEJsb2NrKiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAKICAg
ICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAg
IDogQnl0ZWNvZGVEdW1wZXJCYXNlKG91dCkKQEAgLTk0LDEwICs5NSwxMCBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgQmxvY2sqIGJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jazsgfQog
Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSlNJbnN0
cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKIAogICAgIENTdHJp
bmcgcmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdpc3RlcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50
IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpIGNv
bnN0IG92ZXJyaWRlOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBD
U3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIpIGNvbnN0OwpAQCAtMTA4LDggKzEw
OSw4IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIGNsYXNzIENvZGVCbG9ja0J5
dGVjb2RlRHVtcGVyIGZpbmFsIDogcHVibGljIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW0mLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01h
cCgpKTsKLSAgICBzdGF0aWMgdm9pZCBkdW1wR3JhcGgoQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmls
ZSgpLCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGlj
IHZvaWQgZHVtcEdyYXBoKEJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVj
b2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpLCBjb25zdCBJQ1N0
YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKIAogICAgIHZvaWQgZHVtcElkZW50aWZpZXJzKCk7
CiAgICAgdm9pZCBkdW1wQ29uc3RhbnRzKCk7CkBAIC0xMzIsMTYgKzEzMywyOSBAQCBuYW1lc3Bh
Y2UgV2FzbSB7CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjsKIHN0cnVjdCBNb2R1
bGVJbmZvcm1hdGlvbjsKIAotY2xhc3MgQnl0ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpCeXRlY29kZUR1bXBlcjxGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcj4geworY2xhc3MgQnl0
ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpCeXRlY29kZUR1bXBlckJhc2U8V2FzbUlu
c3RydWN0aW9uU3RyZWFtPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEZ1
bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBQcmlu
dFN0cmVhbSYgb3V0KTsKIAotcHJpdmF0ZToKLSAgICB1c2luZyBKU0M6OkJ5dGVjb2RlRHVtcGVy
PEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPjo6Qnl0ZWNvZGVEdW1wZXI7CisgICAgQnl0ZWNv
ZGVEdW1wZXIoRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBQcmludFN0cmVhbSYg
b3V0KQorICAgICAgICA6IEJ5dGVjb2RlRHVtcGVyQmFzZShvdXQpCisgICAgICAgICwgbV9ibG9j
ayhibG9jaykKKyAgICB7CisgICAgfQogCisgICAgfkJ5dGVjb2RlRHVtcGVyKCkgb3ZlcnJpZGUg
eyB9CisKKyAgICBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2soKSBjb25zdCB7IHJl
dHVybiBtX2Jsb2NrOyB9CisKKyAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0
ZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CiAgICAgdm9p
ZCBkdW1wQ29uc3RhbnRzKCk7Ci0gICAgQ1N0cmluZyBjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lz
dGVyIGluZGV4KSBjb25zdCBmaW5hbDsKKyAgICBDU3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFs
UmVnaXN0ZXIgaW5kZXgpIGNvbnN0OwogICAgIENTdHJpbmcgZm9ybWF0Q29uc3RhbnQoVHlwZSwg
dWludDY0X3QpIGNvbnN0OworCisgICAgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIG1fYmxv
Y2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApp
bmRleCBmNjAzNmIxYjgyZGEyZWZkOGNkYzczYzgwZjkxNTYwNTU4Y2Y5YzZjLi4wMTI1NDk2OTQz
MzQwMThkZTM1NTUxYzcyYmRjMjkwNWZmZWQ5ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgWWllbGREYXRh
IHsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IHBvaW50IHsgMCB9OworICAgIHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBwb2ludCB7IDAgfTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYXJndW1lbnQgeyAwIH07CiAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKIH07
CkBAIC01MiwxNCArNTIsMTQgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0
YT4gWWllbGRzOwogCiAgICAgc3RydWN0IEdlbmVyYXRvckZyYW1lRGF0YSB7Ci0gICAgICAgIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbV9wb2ludDsKKyAgICAgICAgdHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fcG9pbnQ7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBt
X2RzdDsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGU7CiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBtX3N5bWJvbFRhYmxlOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9pbml0aWFs
VmFsdWU7CiAgICAgfTsKIAotICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucywgU3ltYm9s
VGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5l
cmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29k
ZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KQogICAgICAgICA6IG1fYnl0ZWNvZGVHZW5lcmF0b3IoYnl0ZWNvZGVHZW5lcmF0
b3IpCiAgICAgICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICAgICAsIG1faW5zdHJ1
Y3Rpb25zKGluc3RydWN0aW9ucykKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3lpZWxkczsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGVu
dGVyUG9pbnQoKSBjb25zdAorICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBl
bnRlclBvaW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5h
dChtX2VudGVyUG9pbnQpOwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2dlbmVyYXRvckZyYW1lRGF0YTsKICAgICB9CiAKLSAgICBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QKKyAgICBjb25zdCBKU0luc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW5zdHJ1Y3Rpb25zOwogICAgIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHByaXZhdGU6CiAgICAg
fQogCiAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7Ci0gICAgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2VudGVyUG9pbnQ7CisgICAgdHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fZW50ZXJQb2ludDsKICAgICBzdGQ6Om9wdGlvbmFsPEdl
bmVyYXRvckZyYW1lRGF0YT4gbV9nZW5lcmF0b3JGcmFtZURhdGE7CiAgICAgVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IqIG1fY29kZUJsb2NrOwotICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVy
JiBtX2luc3RydWN0aW9uczsKKyAgICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX2luc3Ry
dWN0aW9uczsKICAgICBCeXRlY29kZUdyYXBoIG1fZ3JhcGg7CiAgICAgVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CiAgICAgWWllbGRzIG1feWllbGRzOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBydW4oVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIm
IGluc3RydWN0aW9ucykKKyAgICB2b2lkIHJ1bihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciog
Y29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMpCiAgICAg
ewogICAgICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVy
bWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4KICAgICAgICAg
Ly8gVGhpcyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBxdWVzdGlv
biwgIndoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4KQEAgLTI4
Niw3ICsyODYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAg
IHJld3JpdGVyLmV4ZWN1dGUoKTsKIH0KIAotdm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9u
KEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9u
cywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgpCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0
ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvciogY29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMs
IFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4KQogewogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0
ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9uKCkpKSB7CiAgICAgICAgIGRhdGFMb2dMbigi
Qnl0ZWNvZGVzIGJlZm9yZSBnZW5lcmF0b3JpZmljYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKaW5kZXggODMwMWQ0MDU3YTMzZDIxYmEzOGMzOGM5YzkyMGY1NDkzNGRiYmI4NS4uYzlmMWE5
ZTUxNjViNDEwNGZmODkwNzI0ODYxMzZiYTRmOTkxMjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKQEAgLTI5LDExICsyOSwxNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2Rl
R2VuZXJhdG9yOwotY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CiBjbGFzcyBTeW1ib2xU
YWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOwogY2xhc3MgU3ltYm9sVGFi
bGU7CiAKLXZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRvciYs
IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImLCBT
eW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCk7CitzdHJ1Y3QgSlNPcGNvZGVUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1
Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciA9
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyPEpTSW5zdHJ1Y3Rpb24+OworCit2b2lkIHBlcmZvcm1H
ZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3ImLCBVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvciosIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKaW5kZXggYzhkNGE1MTYxOGM3OGM4NGEzM2IxYWEzYmZjMjlhYWY0
OTgyYTllMC4uZDI4M2NiNjVlZjAwN2FiODE3ZWQ2YWMyNjY4ZjA3MGU0MzczZTBjNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0zNCwz
MSArMzQsMzEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9j
azsKLQogY2xhc3MgQnl0ZWNvZGVHcmFwaCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVHcmFwaCk7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgQmFzaWNCbG9ja3NWZWN0b3IgPSBCeXRlY29kZUJhc2ljQmxvY2s6OkJhc2ljQmxvY2tW
ZWN0b3I7CisgICAgdXNpbmcgQmFzaWNCbG9ja1R5cGUgPSBKU0J5dGVjb2RlQmFzaWNCbG9jazsK
KyAgICB1c2luZyBCYXNpY0Jsb2Nrc1ZlY3RvciA9IHR5cGVuYW1lIEJhc2ljQmxvY2tUeXBlOjpC
YXNpY0Jsb2NrVmVjdG9yOworICAgIHVzaW5nIEluc3RydWN0aW9uU3RyZWFtVHlwZSA9IHR5cGVu
YW1lIEJhc2ljQmxvY2tUeXBlOjpJbnN0cnVjdGlvblN0cmVhbVR5cGU7CiAKICAgICB0eXBlZGVm
IFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3JhcGg+IGl0ZXJhdG9yOwog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci0gICAgaW5saW5lIEJ5dGVj
b2RlR3JhcGgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJik7CisgICAg
aW5saW5lIEJ5dGVjb2RlR3JhcGgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtVHlwZSYpOwogCiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpy
ZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCks
IG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBibG9ja0Nv
bnRhaW5zQnl0ZWNvZGVPZmZzZXQoY29uc3QgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaywgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBzdGF0aWMgYm9vbCBi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoY29uc3QgQmFzaWNCbG9ja1R5cGUmIGJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBieXRlY29kZU9mZnNldCkKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLmxlYWRlck9mZnNldCgp
OwogICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVj
b2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2sudG90YWxMZW5ndGgoKTsKICAgICB9CiAK
LSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBCYXNpY0Jsb2Nr
VHlwZSogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU6Ok9mZnNldCBieXRlY29kZU9mZnNldCkKICAgICB7CiAgICAgICAgIC8qCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7
IGkrKykgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgKi8KIAotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2sgPSBh
cHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxCeXRlY29kZUJhc2ljQmxvY2ssIHVuc2lnbmVkPihtX2Jh
c2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChCeXRl
Y29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2spIHsgcmV0dXJuIGJhc2ljQmxvY2stPmxlYWRlck9m
ZnNldCgpOyB9KTsKKyAgICAgICAgQmFzaWNCbG9ja1R5cGUqIGJhc2ljQmxvY2sgPSBhcHByb3hp
bWF0ZUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrVHlwZSwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3Ms
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKEJhc2ljQmxvY2tUeXBl
KiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsgfSk7CiAg
ICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgogICAgICAg
ICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCpiYXNpY0Jsb2NrLCBieXRlY29kZU9m
ZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9jazsKQEAgLTg2LDIzICs4NiwyMyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmYmFzaWNCbG9ja1sxXTsKICAgICB9CiAKLSAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKKyAgICBCYXNpY0Jsb2NrVHlwZSogZmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlw
ZTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0cnlCaW5hcnlT
ZWFyY2g8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNp
Y0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKEJ5dGVjb2RlQmFzaWNCbG9jayogYmFz
aWNCbG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0KCk7IH0pOworICAgICAg
ICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2tUeXBlLCB1bnNpZ25lZD4obV9iYXNp
Y0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKEJhc2ljQmxv
Y2tUeXBlKiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsg
fSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNC
bG9ja3Muc2l6ZSgpOyB9Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBhdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxCeXRlY29kZUdyYXBoKj4odGhpcyktPm1fYmFz
aWNCbG9ja3NbaW5kZXhdOyB9Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKyAgICBCYXNpY0Jsb2Nr
VHlwZSYgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Qnl0ZWNv
ZGVHcmFwaCo+KHRoaXMpLT5tX2Jhc2ljQmxvY2tzW2luZGV4XTsgfQorICAgIEJhc2ljQmxvY2tU
eXBlJiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7
IH0KIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9
CiAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0K
LSAgICBCeXRlY29kZUJhc2ljQmxvY2smIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KLSAgICBC
eXRlY29kZUJhc2ljQmxvY2smIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorICAg
IEJhc2ljQmxvY2tUeXBlJiBmaXJzdCgpIHsgcmV0dXJuIGF0KDApOyB9CisgICAgQmFzaWNCbG9j
a1R5cGUmIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQogCiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLSAgICB2b2lkIGR1bXAoQ29kZUJsb2NrVHlwZSog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxPcGVyYW5kczxTcGVjdWxhdGVkVHlwZT4+PiBzcGVjdWxhdGlvbkF0SGVh
ZCwgUHJpbnRTdHJlYW0mIHByaW50ZXIgPSBXVEY6OmRhdGFGaWxlKCkpCisgICAgdm9pZCBkdW1w
KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlJiBp
bnN0cnVjdGlvbnMsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE9wZXJhbmRzPFNwZWN1bGF0ZWRUeXBl
Pj4+IHNwZWN1bGF0aW9uQXRIZWFkLCBQcmludFN0cmVhbSYgcHJpbnRlciA9IFdURjo6ZGF0YUZp
bGUoKSkKICAgICB7CiAgICAgICAgIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPENvZGVCbG9ja1R5
cGU+OjpkdW1wR3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsICp0aGlzLCBzcGVjdWxhdGlv
bkF0SGVhZCwgcHJpbnRlcik7CiAgICAgfQpAQCAtMTEzLDggKzExMyw4IEBAIHByaXZhdGU6CiAK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLUJ5dGVjb2RlR3JhcGg6OkJ5dGVj
b2RlR3JhcGgoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVh
bSYgaW5zdHJ1Y3Rpb25zKQotICAgIDogbV9iYXNpY0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGUoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpKQorQnl0ZWNvZGVHcmFwaDo6Qnl0ZWNv
ZGVHcmFwaChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
VHlwZSYgaW5zdHJ1Y3Rpb25zKQorICAgIDogbV9iYXNpY0Jsb2NrcyhCYXNpY0Jsb2NrVHlwZTo6
Y29tcHV0ZShjb2RlQmxvY2ssIGluc3RydWN0aW9ucykpCiB7CiAgICAgQVNTRVJUKG1fYmFzaWNC
bG9ja3Muc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggZTg2Y2UxODc3MTA3
NThmNjgzYTEyN2M4OWQxNjJiNjVmYjQ0NWNlZS4uMjA3ZTQ2MjczNjc4YjkxMjNmYmI4MDY3Y2Y4
MjI1MWEwYjYwMmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTUwLDEwICs1MCwxMCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbgogICAgIHNpemVfdCBzaXplID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEZ1bGxC
eXRlY29kZUxpdmVuZXNzPihzaXplKTsKIAotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBi
bG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgZm9yIChh
dXRvJiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAg
ICAgIGlmIChibG9jay5pc0VudHJ5QmxvY2soKSB8fCBibG9jay5pc0V4aXRCbG9jaygpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIG91dCA9IGJsb2NrLm91dCgp
OwogCiAgICAgICAgIGF1dG8gdXNlID0gWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewpAQCAtOTYs
OSArOTYsOSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkJsb2NrcyA9IG1fZ3Jh
cGguc2l6ZSgpOwogICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBwcmVkZWNlc3NvcnMobnVtYmVy
T2ZCbG9ja3MpOwotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgp
CisgICAgZm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpCiAgICAgICAgIHByZWRlY2Vzc29yc1ti
bG9jay5pbmRleCgpXS5yZXNpemUobnVtYmVyT2ZCbG9ja3MpOwotICAgIGZvciAoQnl0ZWNvZGVC
YXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogbV9n
cmFwaCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHN1Y2Nlc3NvckluZGV4IDogYmxvY2suc3Vj
Y2Vzc29ycygpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBibG9ja0luZGV4ID0gYmxvY2suaW5k
ZXgoKTsKICAgICAgICAgICAgIHByZWRlY2Vzc29yc1tzdWNjZXNzb3JJbmRleF1bYmxvY2tJbmRl
eF0gPSB0cnVlOwpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpkdW1wUmVzdWx0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgfQogICAgIH07
CiAKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBtX2dyYXBoKSB7CisgICAg
Zm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpIHsKICAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNv
ZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCAm
YmxvY2ssIGJsb2NrLmxlYWRlck9mZnNldCgpLCBibG9jay50b3RhbExlbmd0aCgpKTsKIAogICAg
ICAgICBkYXRhTG9nRigiUHJlZGVjZXNzb3JzOiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGU1
MDk0NzVhOTliMWVkZTk0YWE5MjI4YTk1NTc4NjNhN2ZhYTUyMmQuLjgxNjkyYWUzNDc4ZjE3MzNk
YWNmNDRhYjMwZGFkYWM3YTVkOTk2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTUxLDIzICs1
MSwyMyBAQCBlbnVtIGNsYXNzIExpdmVuZXNzQ2FsY3VsYXRpb25Qb2ludCA6IHVpbnQ4X3Qgewog
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgotICAgIHN0YXRp
YyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5z
dHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNl
RnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2Rl
QmxvY2tUeXBlKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVw
T3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSosIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNv
bnN0IFVzZUZ1bmN0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhV
c2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIERlZkZ1bmN0
b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5
cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUlu
ZGV4LCBjb25zdCBEZWZGdW5jdG9yJik7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29k
ZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgQnl0
ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IERlZkZ1bmN0b3ImKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVu
YW1lIERlZkZ1bmN0b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4KENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOworICAg
IHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiwgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25z
dCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZT4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiBvdXQpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0m
LCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9u
cz4KLSAgICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVCYXNpY0Jsb2NrJiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KTsKKyAg
ICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGVCbG9j
a1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgSlNCeXRlY29kZUJh
c2ljQmxvY2smLCBCeXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgot
ICAgIHN0YXRpYyBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlw
ZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxv
Y2smKTsKKyAgICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVC
bG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgSlNCeXRlY29k
ZUJhc2ljQmxvY2smKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5
cGVuYW1lIEluc3RydWN0aW9ucz4KICAgICBzdGF0aWMgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVz
c0luZm9BdEluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBC
eXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAppbmRleCA2NDhjNGI1ZTk2MzA4NTFkODk4MTcxZDFkMDc3NTY2MjRlYTY1NTVjLi41Njc2
NGNlNjFlZjBkNDg0YzhiM2E1NWM0NmFmYTRmZmIxYzI4MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNJbmxpbmVzLmgKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lz
dGVyRm9yTGl2ZW5lc3MoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IERl
ZkZ1bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6
c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgYXV0
byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAg
ICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KApAQCAtNzEsNyArNzEsNyBAQCBpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERl
ZihDb2RlQmxvY2tUeXBlKgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0
eXBlbmFtZSBVc2VGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UpCitpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVz
ZShDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
Y29uc3QgVXNlRnVuY3RvciYgdXNlKQogewogICAgIGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1
Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVJbmRleCgKQEAgLTgzLDEyICs4MywxMiBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgot
aW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKK2lubGluZSB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRp
b25IYW5kbGVyKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKIHsKLSAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlv
biBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8g
SWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJp
YWJsZXMgb2YgdGhlCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVk
ZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIEJ5dGVjb2RlSW5kZXguCiAgICAg
aWYgKGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZUluZGV4KGJ5
dGVjb2RlSW5kZXgpKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2Nr
ID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7
CisgICAgICAgIGF1dG8qIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOwogICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2Nr
KTsKICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKICAgICB9
CkBAIC05Nyw3ICs5Nyw3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kCiAvLyBTaW1wbGlmaWVk
IGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmly
c3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4g
dGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VG
dW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQ
cm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhl
Y3V0ZXMgdGhlIEJ5dGVjb2RlSW5kZXggaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxs
eSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRo
aXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2Ug
YW5kIGRlZiB0aGUgc2FtZQpAQCAtMTIwLDcgKzEyMCw3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUq
IGNvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci1pbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2Nr
VHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBGYXN0Qml0
VmVjdG9yJiBvdXQpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBKU0luc3Ry
dWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsKICAgICBhdXRvIG51
bWJlck9mQ2hlY2twb2ludHMgPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCktPm51bWJl
ck9mQ2hlY2twb2ludHMoKTsKICAgICBmb3IgKENoZWNrcG9pbnQgY2hlY2twb2ludCA9IG51bWJl
ck9mQ2hlY2twb2ludHM7IGNoZWNrcG9pbnQtLTspIHsKQEAgLTEzOCw3ICsxMzgsNyBAQCBpbmxp
bmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrVHlwZSogY29kZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlw
ZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVH
cmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2ssIEJ5dGVjb2RlSW5kZXggdGFy
Z2V0SW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK2lubGluZSBib29sIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgSlNCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBCeXRlY29k
ZUluZGV4IHRhcmdldEluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFibG9jay5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLmlzRW50cnlCbG9jaygp
KTsKQEAgLTE1OSw3ICsxNTksNyBAQCBpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFn
YXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxp
bmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2soQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxv
Y2spCitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEpTQnl0ZWNvZGVCYXNp
Y0Jsb2NrJiBibG9jaykKIHsKICAgICBpZiAoYmxvY2suaXNFeGl0QmxvY2soKSB8fCBibG9jay5p
c0VudHJ5QmxvY2soKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcwLDcgKzE3MCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4K
IGlubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Z2V0TGl2
ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWJ5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpLCAiZ2V0TGl2ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbiBjYW4ndCBi
ZSB1c2VkIHRvIGFzayBxdWVzdGlvbnMgYWJvdXQgY2hlY2twb2ludHMiKTsKLSAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsKKyAgICBhdXRvKiBibG9jayA9IGdyYXBoLmZpbmRC
YXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSk7CiAgICAg
QVNTRVJUKGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAg
QVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgogaW5saW5l
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5MaXZlbmVzc0ZpeHBvaW50KENv
ZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMs
IEJ5dGVjb2RlR3JhcGgmIGdyYXBoKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVz
ID0gY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKTsKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayYgYmxvY2sgOiBncmFwaCkgeworICAgIGZvciAoYXV0byYgYmxvY2sgOiBncmFwaCkgewog
ICAgICAgICBibG9jay5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJs
b2NrLm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLmluKCku
Y2xlYXJBbGwoKTsKQEAgLTE5MiwxNyArMTkyLDE3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjo6cnVuTGl2ZW5lc3NGaXhwb2ludChDb2RlQmxvY2tUeXBlKiBjb2Rl
CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgbGFz
dEJsb2NrID0gZ3JhcGgubGFzdCgpOworICAgIGF1dG8mIGxhc3RCbG9jayA9IGdyYXBoLmxhc3Qo
KTsKICAgICBsYXN0QmxvY2suaW4oKS5jbGVhckFsbCgpOwogICAgIGxhc3RCbG9jay5vdXQoKS5j
bGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwogICAgIG5ld091dC5yZXNpemUo
bGFzdEJsb2NrLm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0g
ZmFsc2U7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IGdyYXBoLmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGJsb2NrIDog
Z3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAgICBuZXdPdXQu
Y2xlYXJBbGwoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2tJbmRleCA6IGJsb2Nr
LnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgc3Vj
Y2Vzc29yID0gZ3JhcGhbYmxvY2tJbmRleF07CisgICAgICAgICAgICAgICAgYXV0byYgc3VjY2Vz
c29yID0gZ3JhcGhbYmxvY2tJbmRleF07CiAgICAgICAgICAgICAgICAgbmV3T3V0IHw9IHN1Y2Nl
c3Nvci5pbigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYmxvY2sub3V0KCkgPSBuZXdP
dXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVS
ZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdy
aXRlci5jcHAKaW5kZXggODEwMjZhYjNjNzg0ZjFhYzNlMTQ0NDAwMWYzNzJiODJkNGNhYmY3ZS4u
NGFkMDYyY2JiNzY5Mjg4ODI2YjdmYWJlZWM5MTJiMmE0NzQxY2Q4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5GcmFn
bWVudCh1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aQogICAgIH0KIH0KIAotdm9pZCBCeXRl
Y29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGluc2VydGlvblBvaW50LCBJ
bmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiYgd3Jp
dGVyKQordm9pZCBCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGlu
c2VydGlvblBvaW50LCBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIEpTSW5zdHJ1Y3Rpb25T
dHJlYW1Xcml0ZXImJiB3cml0ZXIpCiB7CiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50LnBvc2l0
aW9uID09IFBvc2l0aW9uOjpCZWZvcmUgfHwgaW5zZXJ0aW9uUG9pbnQucG9zaXRpb24gPT0gUG9z
aXRpb246OkFmdGVyKTsKICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbiB7CkBAIC0x
MTQsMTEgKzExNCwxMSBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRz
KCkKICAgICBhdXRvIG91dE9mTGluZUp1bXBUYXJnZXRzID0gbV9jb2RlQmxvY2stPnJlcGxhY2VP
dXRPZkxpbmVKdW1wVGFyZ2V0cygpOwogCiAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgZm9yIChJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwgbV93cml0ZXIuc2l6ZSgpOykgewor
ICAgIGZvciAodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwg
bV93cml0ZXIuc2l6ZSgpOykgewogICAgICAgICBpbnQgYmVmb3JlID0gMDsKICAgICAgICAgaW50
IGFmdGVyID0gMDsKICAgICAgICAgaW50IHJlbW92ZSA9IDA7Ci0gICAgICAgIHdoaWxlIChjdXJy
ZW50SW5zZXJ0aW9uICE9IG1faW5zZXJ0aW9ucy5lbmQoKSAmJiBzdGF0aWNfY2FzdDxJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0PihjdXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNl
dCkgPT0gaSkgeworICAgICAgICB3aGlsZSAoY3VycmVudEluc2VydGlvbiAhPSBtX2luc2VydGlv
bnMuZW5kKCkgJiYgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0PihjdXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNldCkgPT0gaSkgewogICAg
ICAgICAgICAgYXV0byBzaXplID0gY3VycmVudEluc2VydGlvbi0+bGVuZ3RoKCk7CiAgICAgICAg
ICAgICBpZiAoY3VycmVudEluc2VydGlvbi0+dHlwZSA9PSBJbnNlcnRpb246OlR5cGU6OlJlbW92
ZSkKICAgICAgICAgICAgICAgICByZW1vdmUgKz0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCmluZGV4IDBkY2ViZTc5MzkwYjRm
ZjBiNWQ4YmIwMmI1NTJmOGZlMjQ2YTJlNWEuLjViZGY3N2QwNzM0YWU4MjgyZGJlNjI2NjRkNWUy
YWU4YThkYzBlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVJld3JpdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlUmV3cml0ZXIuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDMy
X3QgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOwogCi0gICAgICAg
IEluc2VydGlvblBvaW50KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBQb3NpdGlv
biBwb3MpCisgICAgICAgIEluc2VydGlvblBvaW50KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBvZmZzZXQsIFBvc2l0aW9uIHBvcykKICAgICAgICAgICAgIDogYnl0ZWNvZGVP
ZmZzZXQob2Zmc2V0KQogICAgICAgICAgICAgLCBwb3NpdGlvbihwb3MpCiAgICAgICAgIHsKQEAg
LTEzMiwxNCArMTMyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFR5cGUgdHlwZTsKICAgICAgICAg
SW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoOwogICAgICAgICBzaXplX3QgcmVtb3ZlTGVuZ3Ro
OwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBpbnN0cnVjdGlvbnM7CisgICAgICAg
IEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgaW5zdHJ1Y3Rpb25zOwogICAgIH07CiAKIHB1Ymxp
YzoKICAgICBjbGFzcyBGcmFnbWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhZ21l
bnQpOwogICAgIHB1YmxpYzoKLSAgICAgICAgRnJhZ21lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5
dGVjb2RlR2VuZXJhdG9yLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgd3JpdGVyLCBJbmNsdWRl
QnJhbmNoJiBpbmNsdWRlQnJhbmNoKQorICAgICAgICBGcmFnbWVudChCeXRlY29kZUdlbmVyYXRv
ciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlciwg
SW5jbHVkZUJyYW5jaCYgaW5jbHVkZUJyYW5jaCkKICAgICAgICAgICAgIDogbV9ieXRlY29kZUdl
bmVyYXRvcihieXRlY29kZUdlbmVyYXRvcikKICAgICAgICAgICAgICwgbV93cml0ZXIod3JpdGVy
KQogICAgICAgICAgICAgLCBtX2luY2x1ZGVCcmFuY2goaW5jbHVkZUJyYW5jaCkKQEAgLTE3MSwx
MSArMTcxLDExIEBAIHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBtX2J5dGVjb2RlR2VuZXJhdG9yOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciYgbV93cml0ZXI7CisgICAgICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1fd3Jp
dGVyOwogICAgICAgICBJbmNsdWRlQnJhbmNoJiBtX2luY2x1ZGVCcmFuY2g7CiAgICAgfTsKIAot
ICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9y
LCBCeXRlY29kZUdyYXBoJiBncmFwaCwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlcikKKyAgICBCeXRlY29kZVJld3Jp
dGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgQnl0ZWNvZGVHcmFwaCYg
Z3JhcGgsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIEpTSW5zdHJ1Y3Rp
b25TdHJlYW1Xcml0ZXImIHdyaXRlcikKICAgICAgICAgOiBtX2J5dGVjb2RlR2VuZXJhdG9yKGJ5
dGVjb2RlR2VuZXJhdG9yKQogICAgICAgICAsIG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9j
b2RlQmxvY2soY29kZUJsb2NrKQpAQCAtMTg0LDEwICsxODQsMTAgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRC
ZWZvcmUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9u
IGZ1bmN0aW9uKQorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRCZWZvcmUoY29uc3QgdHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24p
CiAgICAgewogICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2ggPSBJbmNsdWRlQnJh
bmNoOjpObzsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgd3JpdGVyOworICAgICAg
ICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyIHdyaXRlcjsKICAgICAgICAgRnJhZ21lbnQgZnJh
Z21lbnQobV9ieXRlY29kZUdlbmVyYXRvciwgd3JpdGVyLCBpbmNsdWRlQnJhbmNoKTsKICAgICAg
ICAgZnVuY3Rpb24oZnJhZ21lbnQpOwogICAgICAgICBmcmFnbWVudC5hbGlnbigpOwpAQCAtMTk1
LDEwICsxOTUsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0
aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcihjb25zdCBJbnN0cnVjdGlvblN0cmVh
bTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24sIHNpemVfdCBhbGlnbkNvbmdy
dWVudCA9IDApCisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKGNvbnN0IHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uLCBz
aXplX3QgYWxpZ25Db25ncnVlbnQgPSAwKQogICAgIHsKICAgICAgICAgSW5jbHVkZUJyYW5jaCBp
bmNsdWRlQnJhbmNoID0gSW5jbHVkZUJyYW5jaDo6Tm87Ci0gICAgICAgIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyIHdyaXRlcjsKKyAgICAgICAgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciB3cml0
ZXI7CiAgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1fYnl0ZWNvZGVHZW5lcmF0b3IsIHdyaXRl
ciwgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKICAgICAgICAg
ZnJhZ21lbnQuYWxpZ24oYWxpZ25Db25ncnVlbnQpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAgICB2b2lkIHJlcGxh
Y2VCeXRlY29kZVdpdGhGcmFnbWVudChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0
cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgdm9pZCByZXBsYWNlQnl0ZWNvZGVXaXRo
RnJhZ21lbnQoY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVj
dGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCiAgICAgewogICAgICAgICAvLyBOb3RlOiBUaGlzIGZ1
bmN0aW9uIHByZXNlcnZlcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBzdWJzZXF1ZW50IGJ5dGVjb2Rl
IChvbiB0YXJnZXRzIHdoZXJlIHRoaXMgbWF0dGVycykKICAgICAgICAgbV9pbnNlcnRpb25zLmFw
cGVuZChJbnNlcnRpb24geyBJbnNlcnRpb25Qb2ludChpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9z
aXRpb246Ok9yaWdpbmFsQnl0ZWNvZGVQb2ludCksIEluc2VydGlvbjo6VHlwZTo6UmVtb3ZlLCBJ
bmNsdWRlQnJhbmNoOjpObywgaW5zdHJ1Y3Rpb24tPnNpemUoKSwgeyB9IH0pOwpAQCAtMjE3LDEy
ICsyMTcsMTIgQEAgcHVibGljOgogCiAgICAgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgoKSB7IHJldHVy
biBtX2dyYXBoOyB9CiAKLSAgICBpbnQzMl90IGFkanVzdEFic29sdXRlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYWJzb2x1dGVPZmZzZXQpCisgICAgaW50MzJfdCBhZGp1c3RBYnNv
bHV0ZU9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYWJzb2x1dGVP
ZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Q
b2ludCgwLCBQb3NpdGlvbjo6RW50cnlQb2ludCksIEluc2VydGlvblBvaW50KGFic29sdXRlT2Zm
c2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCkpOwogICAgIH0KIAotICAgIGludDMyX3QgYWRqdXN0
SnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9yaWdpbmFsQnl0ZWNvZGVPZmZz
ZXQsIGludDMyX3Qgb3JpZ2luYWxKdW1wVGFyZ2V0KQorICAgIGludDMyX3QgYWRqdXN0SnVtcFRh
cmdldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29k
ZU9mZnNldCwgaW50MzJfdCBvcmlnaW5hbEp1bXBUYXJnZXQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludChvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0
LCBQb3NpdGlvbjo6TGFiZWxQb2ludCksIEluc2VydGlvblBvaW50KG9yaWdpbmFsSnVtcFRhcmdl
dCwgUG9zaXRpb246OkxhYmVsUG9pbnQpKTsKICAgICB9CkBAIC0yMzAsNyArMjMwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRqdXN0SnVtcFRhcmdldHMoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2gsIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyJiYgZnJhZ21lbnQpOworICAgIHZvaWQgaW5zZXJ0SW1wbChJbnNlcnRpb25Qb2lu
dCwgSW5jbHVkZUJyYW5jaCwgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYmIGZyYWdtZW50KTsK
IAogICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKICAgICB2b2lk
IGFwcGx5TW9kaWZpY2F0aW9uKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICBC
eXRlY29kZUdlbmVyYXRvciYgbV9ieXRlY29kZUdlbmVyYXRvcjsKICAgICBCeXRlY29kZUdyYXBo
JiBtX2dyYXBoOwogICAgIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBtX2NvZGVCbG9jazsK
LSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgbV93cml0ZXI7CisgICAgSlNJbnN0cnVjdGlv
blN0cmVhbVdyaXRlciYgbV93cml0ZXI7CiAgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKaW5kZXggZmI1NmQ0Y2JiNWM5ZTg3MmE5NzRmNTI1NGU2MWFiMGYwZTk3
ZmRmYi4uZDljNzJiMThkOWE3ZTdmYzM4YzMxYWYxMzljZmRhNTJjOGQzNGEzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBVU0VTIFVTRVNfT1JfREVGUwog
I2RlZmluZSBERUZTIFVTRVNfT1JfREVGUwogCi12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJ
bmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSlNJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgU2NvcGVk
TGFtYmRhPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lk
KFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1
YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQogewogCiAgICAgYXV0byBkZWZBdCA9IFsmXSAoQ2hlY2tw
b2ludCB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDdiNTJhMzkwZWNjNTM4
ZmNiNmI2MWI3NTRjMDdiZDEzODNlNzRiZmYuLjk4OGU2YzMwNjg5OGYxOGE3NTM2ZWMyYWEyMjc0
OWE2YTg5NWIxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIsIGNvbnN0
IEluc3RydWN0aW9uKiwgQ2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmlydHVh
bFJlZ2lzdGVyKT4mKTsKLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNp
Z25lZCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBDaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYpOwordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciwgY29uc3QgSlNJbnN0cnVjdGlvbiosIENoZWNrcG9pbnQs
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rlcik+Jik7Cit2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBDaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYp
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2lu
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
c3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiAo
Y29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgY29kZUJsb2Nr
LT51c2VzQ2FsbEV2YWwoKSkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgp
KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKIHsKICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKGNv
ZGVCbG9jay0+bnVtVmFycygpLCBpbnN0cnVjdGlvbiwgY2hlY2twb2ludCwgc2NvcGVkTGFtYmRh
PHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4oZnVuY3RvcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwZTU3OWY5MjkwM2I4YzhlYTc3NTU2
MTM2ZDZlNTE2YTFlNGNhNmYyLi5iMzc5Yzk3YzlkZTk3ZDcwZmY0ZjA5MTdkNzIxMDY4NmZiZDRi
ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCkKICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wR3Jh
cGgodGhpcywgaW5zdHJ1Y3Rpb25zKCksIGdyYXBoLCBvdXQsIHN0YXR1c01hcCk7CiB9CiAKLXZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAg
ICAgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJ5dGVjb2RlKHRoaXMsIG91dCwgaXQs
IHN0YXR1c01hcCk7CiB9CkBAIC00NzQsMTAgKzQ3NCwxMSBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICBicmVhazsgXAogICAgIH0KIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1dG8m
IGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9uU3RyZWFtKSB7CiAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgIG1fYnl0ZWNvZGVDb3N0
ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOworICAgICAgICBzdGF0aWNfYXNzZXJ0KE9wY29k
ZUlEV2lkdGhCeVNpemU8SlNPcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29k
ZUlEU2l6ZSA9PSAxKTsKKyAgICAgICAgbV9ieXRlY29kZUNvc3QgKz0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gKyAxOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgICAgIExJTkso
T3BHZXRCeVZhbCwgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdldFByaXZhdGVOYW1lLCBwcm9m
aWxlKQpAQCAtMjA4MCw3ICsyMDgxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5n
ZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBpbnQKIAogYm9v
bCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbikKIHsKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKKyAgICBjb25zdCBhdXRv
JiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOwogICAgIGZvciAoY29uc3QgYXV0
byYgaXQgOiBpbnN0cnVjdGlvblN0cmVhbSkgewogICAgICAgICBpZiAoaXQtPmlzPE9wRGVidWc+
KCkpIHsKICAgICAgICAgICAgIGludCB1bnVzZWQ7CkBAIC0zMDcyLDcgKzMwNzMsNyBAQCB2b2lk
IENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKQogICAgICAgICByZXR1cm4g
c3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKTsKICAgICB9OwogCi0gICAgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAg
c3dpdGNoIChvcGNvZGVJRCkgewpAQCAtMzI2Miw4ICszMjYzLDggQEAgdm9pZCBDb2RlQmxvY2s6
OnZhbGlkYXRlKCkKICAgICAgICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
blN0cmVhbSA9IGluc3RydWN0aW9ucygpOworCisgICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25T
dHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9u
IDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIGlmICghIWJhc2VsaW5lQWx0ZXJuYXRpdmUoKS0+
aGFuZGxlckZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleChpbnN0cnVjdGlvbi5vZmZzZXQo
KSkpKSB7CkBAIC0zMzExLDEzICszMzEyLDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRTdGVwcGlu
Z01vZGUoQ29kZUJsb2NrOjpTdGVwcGluZ01vZGUgbW9kZSkKICAgICAgICAgamV0dGlzb24oUHJv
ZmlsZXI6OkpldHRpc29uRHVlVG9EZWJ1Z2dlclN0ZXBwaW5nKTsKIH0KIAotaW50IENvZGVCbG9j
azo6b3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCitpbnQgQ29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAg
IGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChwYyk7CiAgICAgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9u
KiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQor
Y29uc3QgSlNJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChw
Yyk7CiAgICAgaW50IHRhcmdldCA9IG1fdW5saW5rZWRDb2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0
KG9mZnNldCk7CkBAIC0zMzM0LDcgKzMzMzUsNyBAQCBVbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJs
b2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieQog
ICAgIHJldHVybiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKIH0KIAotQmluYXJ5QXJpdGhQcm9maWxlKiBDb2Rl
QmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK0Jp
bmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7CiAg
ICAgY2FzZSBvcF9hZGQ6CkBAIC0zMzUyLDcgKzMzNTMsNyBAQCBCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1VbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2Nr
Ojp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJp
dGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewogICAgIGNhc2Ug
b3BfbmVnYXRlOgpAQCAtMzM5MSw5ICszMzkyLDkgQEAgdm9pZCBDb2RlQmxvY2s6Omluc2VydEJh
c2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAgICAgaWYgKCF1
bmxpbmtlZENvZGVCbG9jaygpLT5oYXNPcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
cygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgRml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9w
UHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CisgICAgY29uc3QgRml4ZWRWZWN0
b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgYnl0ZWNvZGVPZmZzZXRzID0gdW5saW5r
ZWRDb2RlQmxvY2soKS0+b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgb2Zmc2V0c0xlbmd0aCA9IGJ5dGVjb2RlT2Zmc2V0cy5zaXpl
KCk7IGkgPCBvZmZzZXRzTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgLy8gQmVjYXVzZSBvcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgYmFz
aWMgYmxvY2ssIGZpbmRpbmcgCisgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBm
aW5kaW5nCiAgICAgICAgIC8vIHRoZSBuZXh0IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93IHdpbGwg
Z2l2ZSB1cyB0aGUgdGV4dCByYW5nZSBvZiBhIHNpbmdsZSBiYXNpYyBibG9jay4KICAgICAgICAg
c2l6ZV90IHN0YXJ0SWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2ldOwogICAgICAgICBhdXRvIGluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoc3RhcnRJZHgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDQ5MWJiOGVlMDViMTU5NzNkNTlkZDM2M2E4
NDA1NjQ1YjZjMmMxZGQuLmNjN2UyY2RkMGI2MzQ4NzBmZDVjZDI2MzRhOWU1N2IwNDVkY2I1NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIxNSwx
MiArMjE1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKCk7CiAgICAgdm9p
ZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9
IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRT
dHJlYW0mKTsKLSAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgdm9pZCBwcmludFN0cnVjdHVyZShQcmludFN0cmVhbSYsIGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOworICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwgY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IHZvaWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBKU0luc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOwogCiAgICAgdm9pZCBkdW1wTWF0aElDU3Rh
dHMoKTsKIApAQCAtMjg4LDMyICsyODgsMzIgQEAgcHVibGljOgogICAgIHZvaWQgbGlua0luY29t
aW5nUG9seW1vcnBoaWNDYWxsKENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIFBvbHltb3JwaGljQ2Fs
bE5vZGUqKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKTsKLSAgICBpbnQgb3V0
T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKKyAgICBj
b25zdCBKU0luc3RydWN0aW9uKiBvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIHBjKTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5v
dXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiAgICAgfQotICAgIGludCBvdXRPZkxpbmVKdW1w
T2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYyk7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZz
ZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpOworICAgIGludCBvdXRP
ZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rp
b24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlv
bi5wdHIoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNv
bnN0IEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChjb25zdCBKU0luc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgIHsKICAg
ICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5hdCgw
KS5wdHIoKTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihp
bnN0cnVjdGlvbnNCZWdpbikgKyBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICBjb25z
dCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuQWRk
cmVzcyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25z
RW5kKTsKICAgICAgICAgcmV0dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KGNvbnN0IElu
c3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXgoY29uc3QgSlNJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAg
ICAgIHJldHVybiBCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KHJldHVybkFkZHJlc3MpKTsK
ICAgICB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmluc3RydWN0aW9ucygpOyB9Ci0gICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9CisgICAgY29uc3QgSlNJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmluc3RydWN0aW9ucygpOyB9CisgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25BdChCeXRlY29kZUluZGV4IGluZGV4KSBjb25zdCB7IHJldHVybiBpbnN0cnVjdGlvbnMoKS5h
dChpbmRleCkucHRyKCk7IH0KIAogICAgIHNpemVfdCBwcmVkaWN0ZWRNYWNoaW5lQ29kZVNpemUo
KTsKIApAQCAtNDI4LDggKzQyOCw4IEBAIHB1YmxpYzoKIAogICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKICAg
ICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5
dGVjb2RlSW5kZXgpOwotICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmgKaW5kZXggNTFmMWQwMmUxODI1NThjOWMyOTEyZDg0MGM1ODgxMDQ4
Y2E4MDFkOS4uNTBkNzJhNDQxZTMxYThjYTYxZTAzMzA0NDQ3ZDY3N2MzNThmMDFhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTQwLDYgKzQw
LDcgQEAgc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gOjpKU0M6Om9wY29kZUxlbmd0aHM7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCogb3Bjb2RlTmFtZXMgPSA6OkpTQzo6b3Bj
b2RlTmFtZXM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNoZWNrcG9pbnRDb3VudFRhYmxl
ID0gYnl0ZWNvZGVDaGVja3BvaW50Q291bnRUYWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9w
Y29kZVNpemUgbWF4T3Bjb2RlSURXaWR0aCA9IG1heEpTT3Bjb2RlSURXaWR0aDsKIH07CiAKIHN0
cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKQEAgLTUyLDEyICs1MywxMiBAQCBzdHJ1Y3QgV2FzbU9w
Y29kZVRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2Rl
TGVuZ3RocyA9IHdhc21PcGNvZGVMZW5ndGhzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
Y2hhciogY29uc3QqIG9wY29kZU5hbWVzID0gd2FzbU9wY29kZU5hbWVzOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjaGVja3BvaW50Q291bnRUYWJsZSA9IHdhc21DaGVja3BvaW50Q291bnRU
YWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgbWF4T3Bjb2RlSURXaWR0aCA9
IG1heFdhc21PcGNvZGVJRFdpZHRoOwogfTsKIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGU+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uIHsKLQog
ICAgIHN0cnVjdCBNZXRhZGF0YSB7IH07CiAKIHByb3RlY3RlZDoKQEAgLTY4LDEyMSArNjksMTI0
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBXaWR0aD4KICAgICBjbGFzcyBJ
bXBsIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgICAgICB0eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEIG9wY29kZUlE
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRD4o
bV9vcGNvZGUpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBUeXBlQnlTaXpl
PE9wY29kZVNpemU6Ok5hcnJvdz46OnVuc2lnbmVkVHlwZSBtX29wY29kZTsKKyAgICAgICAgdHlw
ZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIFdpZHRoPjo6b3Bjb2RlVHlwZSBtX29w
Y29kZTsKICAgICB9OwogCiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0g
SlNPcGNvZGVUcmFpdHM+CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBvcGNvZGVJRCgp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRzPigpKQotICAgICAgICAg
ICAgcmV0dXJuIHdpZGUzMjxUcmFpdHM+KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKTsK
LSAgICAgICAgaWYgKGlzV2lkZTE2PFRyYWl0cz4oKSkKLSAgICAgICAgICAgIHJldHVybiB3aWRl
MTY8VHJhaXRzPigpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCk7Ci0gICAgICAgIHJldHVy
biBuYXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpOworICAgICAgICBpZiAoaXNX
aWRlMzIoKSkKKyAgICAgICAgICAgIHJldHVybiB3aWRlMzIoKS0+b3Bjb2RlSUQoKTsKKyAgICAg
ICAgaWYgKGlzV2lkZTE2KCkpCisgICAgICAgICAgICByZXR1cm4gd2lkZTE2KCktPm9wY29kZUlE
KCk7CisgICAgICAgIHJldHVybiBuYXJyb3coKS0+b3Bjb2RlSUQoKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBUcmFpdHM6Om9wY29kZU5hbWVz
W29wY29kZUlEPFRyYWl0cz4oKV07CisgICAgICAgIHJldHVybiBUcmFpdHM6Om9wY29kZU5hbWVz
W29wY29kZUlEKCldOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaXNXaWRlMTYoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3
aWRlMTY7CisgICAgICAgIHJldHVybiBuYXJyb3coKS0+b3Bjb2RlSUQoKSA9PSBUcmFpdHM6Ondp
ZGUxNjsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGlzV2lkZTMyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBu
YXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRyYWl0czo6d2lkZTMyOwor
ICAgICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAg
ICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8
VHJhaXRzPigpKQorICAgICAgICBpZiAoaXNXaWRlMzIoKSkKICAgICAgICAgICAgIHJldHVybiBP
cGNvZGVTaXplOjpXaWRlMzI7Ci0gICAgICAgIHJldHVybiBpc1dpZGUxNjxUcmFpdHM+KCkgPyBP
cGNvZGVTaXplOjpXaWRlMTYgOiBPcGNvZGVTaXplOjpOYXJyb3c7CisgICAgICAgIHJldHVybiBp
c1dpZGUxNigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93OwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAg
IGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wY29kZUlE
PFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CisgICAg
ICAgIHJldHVybiBvcGNvZGVJRCgpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRh
ZGF0YTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aENo
ZWNrcG9pbnRzOworICAgICAgICByZXR1cm4gb3Bjb2RlSUQoKSA8IFRyYWl0czo6bnVtYmVyT2ZC
eXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGVja3BvaW50
cygpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0NoZWNrcG9pbnRzPFRyYWl0cz4oKSkK
KyAgICAgICAgaWYgKCFoYXNDaGVja3BvaW50cygpKQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRhYmxlW29wY29kZUlEPFRyYWl0
cz4oKV07CisgICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRhYmxlW29wY29k
ZUlEKCldOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2Rl
VHJhaXRzPgogICAgIGludCBzaXplU2hpZnRBbW91bnQoKSBjb25zdAogICAgIHsKLSAgICAgICAg
aWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMjsKLSAgICAgICAgaWYgKGlzV2lkZTE2PFRyYWl0cz4oKSkKKyAgICAgICAg
aWYgKGlzV2lkZTE2KCkpCiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+
CisgICAgT3Bjb2RlU2l6ZSBvcGNvZGVJRFdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChpc1dpZGUzMigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJh
aXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemU7CisgICAgICAgIGlmIChpc1dp
ZGUxNigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBP
cGNvZGVTaXplOjpXaWRlMTY+OjpvcGNvZGVJRFNpemU7CisgICAgICAgIHJldHVybiBPcGNvZGVJ
RFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6b3Bjb2RlSURTaXplOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIG9wY29kZUlEQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICh1bnNpZ25lZCkgb3Bjb2RlSURXaWR0aCgpOworICAgIH0KKwogICAgIHNpemVf
dCBzaXplKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gc2l6ZVNoaWZ0QW1vdW50ID0gdGhp
cy0+c2l6ZVNoaWZ0QW1vdW50PFRyYWl0cz4oKTsKKyAgICAgICAgYXV0byBzaXplU2hpZnRBbW91
bnQgPSB0aGlzLT5zaXplU2hpZnRBbW91bnQoKTsKICAgICAgICAgc2l6ZV90IHByZWZpeFNpemUg
PSBzaXplU2hpZnRBbW91bnQgPyAxIDogMDsKICAgICAgICAgc2l6ZV90IG9wZXJhbmRTaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBzaXplU2hpZnRBbW91bnQ7Ci0gICAgICAgIHNpemVf
dCBzaXplT2ZCeXRlY29kZSA9IDE7Ci0gICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIChU
cmFpdHM6Om9wY29kZUxlbmd0aHNbb3Bjb2RlSUQ8VHJhaXRzPigpXSAtIDEpICogb3BlcmFuZFNp
emUgKyBwcmVmaXhTaXplOworICAgICAgICBzaXplX3Qgc2l6ZU9mQnl0ZWNvZGUgPSBvcGNvZGVJ
REJ5dGVzKCk7CisgICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIFRyYWl0czo6b3Bjb2Rl
TGVuZ3Roc1tvcGNvZGVJRCgpXSAqIG9wZXJhbmRTaXplICsgcHJlZml4U2l6ZTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4K
KyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIGJvb2wgaXMoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUOjpvcGNvZGVJRDsKKyAgICAgICAgcmV0
dXJuIG9wY29kZUlEKCkgPT0gVDo6b3Bjb2RlSUQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xh
c3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8Y2xh
c3MgVD4KICAgICBUIGFzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoaXM8VCwgVHJh
aXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAgICByZXR1cm4gVDo6
ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRoLCB0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRo
PgogICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoaXM8
VCwgVHJhaXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAgICByZXR1
cm4gVChyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB0eXBlbmFtZSBUeXBlQnlTaXplPHdpZHRo
Pjo6dW5zaWduZWRUeXBlKj4odGhpcyArICh3aWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cgPyAx
IDogMikpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFQqIGNhc3QoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgQVNTRVJU
KChpczxUPigpKSk7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KHRoaXMpOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJh
aXRzPgorICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgY29uc3QgVCogY2FzdCgpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAgICAgICBBU1NFUlQo
KGlzPFQ+KCkpKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHRo
aXMpOwogICAgIH0KIApAQCAtMTkxLDI5ICsxOTUsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6Ok5hcnJvdz4qPih0aGlz
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0
cz4KICAgICBjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qIHdpZGUxNigpIGNvbnN0CiAg
ICAgewotCi0gICAgICAgIEFTU0VSVChpc1dpZGUxNjxUcmFpdHM+KCkpOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZigqdGhpcykgPT0gMSwgIlBvaW50ZXIgbWF0aCIpOworICAgICAgICBB
U1NFUlQoaXNXaWRlMTYoKSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBjb25zdCBJbXBsPE9w
Y29kZVNpemU6OldpZGUzMj4qIHdpZGUzMigpIGNvbnN0CiAgICAgewotCi0gICAgICAgIEFTU0VS
VChpc1dpZGUzMjxUcmFpdHM+KCkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZigqdGhp
cykgPT0gMSwgIlBvaW50ZXIgbWF0aCIpOworICAgICAgICBBU1NFUlQoaXNXaWRlMzIoKSk7CiAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lk
ZTMyPio+KHRoaXMgKyAxKTsKICAgICB9CiB9OwogCi1zdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJs
aWMgQmFzZUluc3RydWN0aW9uPE9wY29kZUlEPiB7Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2Yo
SW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBt
YXRoIik7Ci0KLXN0cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdh
c21PcGNvZGVJRD4gewotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0g
MSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKK3VzaW5nIEpT
SW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgV2Fz
bUluc3RydWN0aW9uICA9IEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2RlVHJhaXRzPjsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKEpTSW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMg
dGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAKaW5k
ZXggMzhjYWY5NWZkOWUwNjEwNTNlMTM1YTU5ZmUxYTNjNzVmODVhODVkMy4uNTM1NDI5N2NkZmE2
Yjc5ZDA2NmFhMTM3MWZlODA2OGRiMTQ1ZTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBAIC0zMCwyMCArMzAsNCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihJbnN0cnVjdGlvblN0cmVhbSk7CiAKLUluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0
cmVhbShJbnN0cnVjdGlvbkJ1ZmZlciYmIGluc3RydWN0aW9ucykKLSAgICA6IG1faW5zdHJ1Y3Rp
b25zKFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSkKLXsgfQotCi1zaXplX3QgSW5zdHJ1Y3Rpb25TdHJl
YW06OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6
ZSgpOwotfQotCi1ib29sIEluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyhJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pIGNvbnN0Ci17Ci0KLSAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gYml0
d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnN0cnVjdGlvbik7Ci0gICAgcmV0dXJuIHBvaW50
ZXIgPj0gbV9pbnN0cnVjdGlvbnMuZGF0YSgpICYmIHBvaW50ZXIgPCAobV9pbnN0cnVjdGlvbnMu
ZGF0YSgpICsgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAppbmRleCAzZTk3OGQz
MzJkNThkNzBhNTI5ZDI4ZjA1MjY2NDQ4Y2ZmNzZlYjEwLi5jZTY3ZGNmMmQwNWQwMThhN2UxNDlk
OWVlMGY3MTk2YTM2YWMwM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaApAQCAtMzQsMTUgKzM0LDE5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihJbnN0cnVjdGlv
blN0cmVhbSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KIGNsYXNzIElu
c3RydWN0aW9uU3RyZWFtIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGZy
aWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwogICAgIGZyaWVuZCBjbGFz
cyBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTsKIHB1YmxpYzoKICAgICB1c2luZyBJbnN0cnVjdGlv
bkJ1ZmZlciA9IFZlY3Rvcjx1aW50OF90LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYsIElu
c3RydWN0aW9uU3RyZWFtTWFsbG9jPjsKIAotICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
OworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9pbnN0cnVjdGlvbnMuc2l6ZSgpOworICAgIH0KIAogICAgIHVzaW5nIE9mZnNldCA9IHVuc2ln
bmVkOwogCkBAIC01MSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgQmFzZVJlZiB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFz
cyBJbnN0cnVjdGlvblN0cmVhbTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgQmFzZVJlZihjb25z
dCBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiYgb3RoZXIpCkBAIC02NSw4ICs2OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX2luZGV4ID0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQog
Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIHVud3JhcCgpOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogcHRy
KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IEluc3Ry
dWN0aW9uVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAg
ICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHB0cigpIGNvbnN0IHsgcmV0dXJuIHVu
d3JhcCgpOyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJhc2VSZWY8SW5zdHJ1
Y3Rpb25CdWZmZXI+JiBvdGhlcikgY29uc3QKICAgICAgICAgewpAQCAtODcsNyArOTEsNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlu
bGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5k
ZXhdKTsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBCYXNlUmVmKEluc3RydWN0aW9uQnVm
ZmVyJiBpbnN0cnVjdGlvbnMsIHNpemVfdCBpbmRleCkKQEAgLTEwMywzMyArMTA3LDM2IEBAIHB1
YmxpYzoKICAgICB1c2luZyBSZWYgPSBCYXNlUmVmPGNvbnN0IEluc3RydWN0aW9uQnVmZmVyPjsK
IAogICAgIGNsYXNzIE11dGFibGVSZWYgOiBwdWJsaWMgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZl
cj4gewotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0
ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVzaW5nIEJhc2VSZWY8SW5zdHJ1Y3Rpb25C
dWZmZXI+OjpCYXNlUmVmOworICAgICAgICB1c2luZyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVy
Pjo6bV9pbmRleDsKKyAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj46Om1f
aW5zdHJ1Y3Rpb25zOwogCiAgICAgcHVibGljOgogICAgICAgICBSZWYgZnJlZXplKCkgY29uc3Qg
IHsgcmV0dXJuIFJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX2luZGV4IH07IH0KLSAgICAgICAgaW5s
aW5lIEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gdW53cmFwKCk7IH0KLSAgICAg
ICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
dW53cmFwKCk7IH0KLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiBwdHIoKSB7IHJldHVybiB1
bndyYXAoKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHB0cigpIGNvbnN0
IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlubGluZSBJbnN0cnVjdGlvblR5cGUqIG9w
ZXJhdG9yLT4oKSB7IHJldHVybiB1bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgY29uc3QgSW5z
dHJ1Y3Rpb25UeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAg
ICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlwZSogcHRyKCkgeyByZXR1cm4gdW53cmFwKCk7IH0K
KyAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uVHlwZSogcHRyKCkgY29uc3QgeyByZXR1
cm4gdW53cmFwKCk7IH0KICAgICAgICAgaW5saW5lIG9wZXJhdG9yIFJlZigpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBSZWYgeyBtX2luc3RydWN0aW9ucywgbV9pbmRleCB9OwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIHVud3Jh
cCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlv
bnNbbV9pbmRleF0pOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogdW53cmFw
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KCZt
X2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0KKyAgICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlw
ZSogdW53cmFwKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvblR5cGUqPigm
bV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVj
dGlvblR5cGUqIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
SW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5kZXhdKTsgfQogICAgIH07CiAK
IHByaXZhdGU6CiAgICAgY2xhc3MgaXRlcmF0b3IgOiBwdWJsaWMgUmVmIHsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4g
ZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOwogCiAgICAgcHVibGljOgogICAgICAgICB1
c2luZyBSZWY6OlJlZjsKKyAgICAgICAgdXNpbmcgUmVmOjptX2luZGV4OwogCiAgICAgICAgIFJl
ZiYgb3BlcmF0b3IqKCkKICAgICAgICAgewpAQCAtMTQ0LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpcyAr
PSB0aGlzLT5wdHIoKS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMTc2LDE5ICsx
ODMsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuZGF0YSgpOwog
ICAgIH0KIAotICAgIGJvb2wgY29udGFpbnMoSW5zdHJ1Y3Rpb24qKSBjb25zdDsKKyAgICBib29s
IGNvbnRhaW5zKEluc3RydWN0aW9uVHlwZSogaW5zdHJ1Y3Rpb24pIGNvbnN0CisgICAgeworICAg
ICAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBwb2ludGVyID49IG1faW5zdHJ1Y3Rpb25z
LmRhdGEoKSAmJiBwb2ludGVyIDwgKG1faW5zdHJ1Y3Rpb25zLmRhdGEoKSArIG1faW5zdHJ1Y3Rp
b25zLnNpemUoKSk7CisgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSW5zdHJ1Y3Rp
b25TdHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJik7CisgICAgZXhwbGljaXQgSW5zdHJ1Y3Rpb25T
dHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJiBpbnN0cnVjdGlvbnMpCisgICAgICAgIDogbV9pbnN0
cnVjdGlvbnMoV1RGTW92ZShpbnN0cnVjdGlvbnMpKQorICAgIHsgfQogCiAgICAgSW5zdHJ1Y3Rp
b25CdWZmZXIgbV9pbnN0cnVjdGlvbnM7CiB9OwogCi1jbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciA6IHB1YmxpYyBJbnN0cnVjdGlvblN0cmVhbSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0
cnVjdGlvblR5cGU+CitjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciA6IHB1YmxpYyBJbnN0
cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+IHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNv
ZGVSZXdyaXRlcjsKIHB1YmxpYzoKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVj
dGlvblR5cGU+OjpJbnN0cnVjdGlvblN0cmVhbTsKKyAgICB1c2luZyB0eXBlbmFtZSBJbnN0cnVj
dGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpJbnN0cnVjdGlvbkJ1ZmZlcjsKKyAgICB1c2lu
ZyB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpNdXRhYmxlUmVm
OworICAgIHVzaW5nIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46
Ok9mZnNldDsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+Ojpt
X2luc3RydWN0aW9uczsKKwogICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyKCkKLSAgICAgICAg
OiBJbnN0cnVjdGlvblN0cmVhbSh7IH0pCisgICAgICAgIDogSW5zdHJ1Y3Rpb25TdHJlYW08SW5z
dHJ1Y3Rpb25UeXBlPih7IH0pCiAgICAgeyB9CiAKICAgICB2b2lkIHNldEluc3RydWN0aW9uQnVm
ZmVyKEluc3RydWN0aW9uQnVmZmVyJiYgYnVmZmVyKQpAQCAtMjYxLDE0ICsyODEsMTQgQEAgcHVi
bGljOgogICAgICAgICBtX3Bvc2l0aW9uID0gcmVmLm9mZnNldCgpOwogICAgIH0KIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gZmluYWxpemUoKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiBmaW5hbGl6ZSgpCiAg
ICAgewogICAgICAgICBtX2ZpbmFsaXplZCA9IHRydWU7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25z
LnNocmlua1RvRml0KCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rp
b25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtKFdURk1vdmUobV9pbnN0cnVjdGlvbnMp
KSB9OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPElu
c3RydWN0aW9uVHlwZT4+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT4o
V1RGTW92ZShtX2luc3RydWN0aW9ucykpIH07CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEluc3RydWN0aW9uU3RyZWFtPiBmaW5hbGl6ZShJbnN0cnVjdGlvbkJ1ZmZlciYgdXNlZEJ1ZmZl
cikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBl
Pj4gZmluYWxpemUoSW5zdHJ1Y3Rpb25CdWZmZXImIHVzZWRCdWZmZXIpCiAgICAgewogICAgICAg
ICBtX2ZpbmFsaXplZCA9IHRydWU7CiAKQEAgLTI3OCw3ICsyOTgsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgdXNlZEJ1ZmZlciA9IFdURk1vdmUobV9pbnN0cnVjdGlvbnMpOwogCi0gICAgICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9u
U3RyZWFtKFdURk1vdmUocmVzdWx0QnVmZmVyKSkgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiB7IG5ldyBJbnN0cnVj
dGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+KFdURk1vdmUocmVzdWx0QnVmZmVyKSkgfTsKICAg
ICB9CiAKICAgICBNdXRhYmxlUmVmIHJlZigpCkBAIC0yODYsNyArMzA2LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gTXV0YWJsZVJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX3Bvc2l0aW9uIH07
CiAgICAgfQogCi0gICAgdm9pZCBzd2FwKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBvdGhlcikK
KyAgICB2b2lkIHN3YXAoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI8SW5zdHJ1Y3Rpb25UeXBlPiYg
b3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9maW5hbGl6ZWQsIG90aGVyLm1fZmlu
YWxpemVkKTsKICAgICAgICAgc3RkOjpzd2FwKG1fcG9zaXRpb24sIG90aGVyLm1fcG9zaXRpb24p
OwpAQCAtMjk1LDEwICszMTUsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNsYXNzIGl0
ZXJhdG9yIDogcHVibGljIE11dGFibGVSZWYgewotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXI7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xh
c3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVz
aW5nIE11dGFibGVSZWY6Ok11dGFibGVSZWY7CisgICAgICAgIHVzaW5nIE11dGFibGVSZWY6Om1f
aW5kZXg7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIE11dGFibGVSZWYmIG9wZXJhdG9yKigpCkBA
IC0zMTQsNyArMzM1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3Ir
KygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpcyArPSBwdHIoKS0+c2l6ZSgp
OworICAgICAgICAgICAgcmV0dXJuICp0aGlzICs9IHRoaXMtPnB0cigpLT5zaXplKCk7CiAgICAg
ICAgIH0KICAgICB9OwogCkBAIC0zMzQsNSArMzU1LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
ZmluYWxpemVkIHsgZmFsc2UgfTsKIH07CiAKK3VzaW5nIEpTSW5zdHJ1Y3Rpb25TdHJlYW0gPSBJ
bnN0cnVjdGlvblN0cmVhbTxKU0luc3RydWN0aW9uPjsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb25TdHJl
YW1Xcml0ZXIgPSBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjxKU0luc3RydWN0aW9uPjsKK3VzaW5n
IFdhc21JbnN0cnVjdGlvblN0cmVhbSA9IEluc3RydWN0aW9uU3RyZWFtPFdhc21JbnN0cnVjdGlv
bj47CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCmluZGV4IDZjMDczY2Y2NzZhYmQ2ODBiZjNjM2Y3NGMxZTFmMTA0NDg4OWQ3N2EuLjQz
NDhjZTdhODM3MTA2MWU2ZjVkY2ZkYjNkNWJjZWMxMTM2Zjc1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJ5
dGVjb2Rlcy5oIgogI2luY2x1ZGUgIkxMSW50T3Bjb2RlLmgiCisjaW5jbHVkZSAiT3Bjb2RlU2l6
ZS5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtODgs
MTAgKzg5LDE0IEBAIGV4dGVybiBjb25zdCB1bnNpZ25lZCB3YXNtT3Bjb2RlTGVuZ3Roc1tdOwog
ICAgIEZPUl9FQUNIX1dBU01fSUQoT1BDT0RFX0lEX0xFTkdUSFMpOwogI3VuZGVmIE9QQ09ERV9J
RF9MRU5HVEhTCiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4SlNPcGNvZGVMZW5ndGgg
PSAvKiBPcGNvZGUgKi8gMSArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8qIE9wZXJhbmRzICov
IChNQVhfTEVOR1RIX09GX0JZVEVDT0RFX0lEUyAtIDEpICogNDsKLXN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4V2FzbU9wY29kZUxlbmd0aCA9IC8qIE9wY29kZSAqLyAxICsgLyogV2lkZTMy
IE9wY29kZSAqLyAxICsgLyogT3BlcmFuZHMgKi8gKE1BWF9MRU5HVEhfT0ZfV0FTTV9JRFMgLSAx
KSAqIDQ7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE9wY29kZUxlbmd0aCA9IHN0ZDo6
bWF4KG1heEpTT3Bjb2RlTGVuZ3RoLCBtYXhXYXNtT3Bjb2RlTGVuZ3RoKTsKLXN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6OmdldE1TQlNl
dENvbnN0ZXhwcihtYXhPcGNvZGVMZW5ndGgpICsgMTsKK3N0YXRpY19hc3NlcnQoTlVNQkVSX09G
X0JZVEVDT0RFX0lEUyA8IDI1NSk7CitzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgbWF4SlNP
cGNvZGVJRFdpZHRoID0gT3Bjb2RlU2l6ZTo6TmFycm93Oworc3RhdGljX2Fzc2VydChOVU1CRVJf
T0ZfV0FTTV9JRFMgPCAyNTUpOworc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG1heFdhc21P
cGNvZGVJRFdpZHRoID0gT3Bjb2RlU2l6ZTo6V2lkZTE2OyAvLyBGSVhNRTogY2hhbmdlIHRoaXMg
YmFjayBvbmNlIEVXUyBwYXNzZXMuCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEpTQnl0
ZWNvZGVTdHJ1Y3RMZW5ndGggPSAvKiBPcGNvZGUgKi8gbWF4SlNPcGNvZGVJRFdpZHRoICsgLyog
V2lkZTMyIE9wY29kZSAqLyAxICsgLyogT3BlcmFuZHMgKi8gTUFYX0xFTkdUSF9PRl9CWVRFQ09E
RV9JRFMgKiA0Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhXYXNtQnl0ZWNvZGVTdHJ1
Y3RMZW5ndGggPSAvKiBPcGNvZGUgKi8gbWF4V2FzbU9wY29kZUlEV2lkdGggKyAvKiBXaWRlMzIg
T3Bjb2RlICovIDEgKyAvKiBPcGVyYW5kcyAqLyBNQVhfTEVOR1RIX09GX1dBU01fSURTICogNDsK
K3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPSBzdGQ6
Om1heChtYXhKU0J5dGVjb2RlU3RydWN0TGVuZ3RoLCBtYXhXYXNtQnl0ZWNvZGVTdHJ1Y3RMZW5n
dGgpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aEZvck1heEJ5dGVjb2RlU3Ry
dWN0TGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIobWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5n
dGgpICsgMTsKIAogI2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKG1h
Y3JvKSBcCiAgICAgbWFjcm8oT3BDYWxsVmFyYXJncykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmgKaW5kZXggNGEyYWY2YTEwNmE0Nzk0NmM4OGMw
OWRlOGM1YzFkMDE5MWVmNjFlNy4uOGI3YzYzZjVkYTcyYTEyZTk3ZWJkNmNkN2I1Zjk3NjNkYTBk
YjRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlSW5saW5l
cy5oCkBAIC01NCw3ICs1NCw3IEBAIGlubGluZSBib29sIGlzT3Bjb2RlU2hhcGUoT3Bjb2RlSUQg
b3Bjb2RlSUQpCiB9CiAKIHRlbXBsYXRlPE9wY29kZVNoYXBlIHNoYXBlLCB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c2hhcGUgIT0gQW55T3Bjb2RlU2hhcGU+PgotaW5saW5lIGJvb2wgaXNP
cGNvZGVTaGFwZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCitpbmxpbmUgYm9vbCBp
c09wY29kZVNoYXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIHJl
dHVybiBpc09wY29kZVNoYXBlPHNoYXBlPihpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaAppbmRleCAyNGIxNjJi
OTNmNzllODRhMGQxODY0MjMxYWNkYmQ3M2U1OWFhMDYzLi5hNjUzYTk2Yjg3ODJmYmVlYjRjMWZk
YzRjN2UyOGE2YmVlOGQzNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlU2l6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGVTaXplLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gT3Bjb2RlU2l6ZSB7CkBA
IC03Miw0ICs3NCwyNSBAQCBzdHJ1Y3QgUGFkZGluZ0J5U2l6ZTxPcGNvZGVTaXplOjpXaWRlMzI+
IHsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsdWUgPSAxOwogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgVHJhaXRzLCBPcGNvZGVTaXplPgorc3RydWN0IE9wY29kZUlEV2lkdGhCeVNp
emU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KK3N0cnVjdCBPcGNvZGVJRFdpZHRoQnlT
aXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6TmFycm93PiB7CisgICAgdXNpbmcgb3Bjb2RlVHlwZSA9
IHVpbnQ4X3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG9wY29kZUlEU2l6ZSA9
IE9wY29kZVNpemU6Ok5hcnJvdzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KK3N0
cnVjdCBPcGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTE2PiB7Cisg
ICAgdXNpbmcgb3Bjb2RlVHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8VHJhaXRzOjpt
YXhPcGNvZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdywgdWludDhfdCwgdWludDE2X3Q+
Ojp0eXBlOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBvcGNvZGVJRFNpemUgPSBz
dGF0aWNfY2FzdDxPcGNvZGVTaXplPihzaXplb2Yob3Bjb2RlVHlwZSkpOworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVHJhaXRzPgorc3RydWN0IE9wY29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBP
cGNvZGVTaXplOjpXaWRlMzI+IHsKKyAgICB1c2luZyBvcGNvZGVUeXBlID0gdHlwZW5hbWUgc3Rk
Ojpjb25kaXRpb25hbDxUcmFpdHM6Om1heE9wY29kZUlEV2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFy
cm93LCB1aW50OF90LCB1aW50MTZfdD46OnR5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNv
ZGVTaXplIG9wY29kZUlEU2l6ZSA9IHN0YXRpY19jYXN0PE9wY29kZVNpemU+KHNpemVvZihvcGNv
ZGVUeXBlKSk7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZDJlODUw
NmM0YzQyNmJiYjdhYjU0NTg0N2M5MjM0MDMzNDRkOWIxNi4uZDhhNzYxMGY3M2UzN2NmNzM4NDcz
NmIwYWY3OTMwNjExMjNkYjZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2Nr
Pgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCitzdGF0aWMgdm9pZCBn
ZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3Rvcjx0eXBlbmFt
ZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAg
ZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgWyZdKGludDMyX3QgcmVsYXRpdmVPZmZzZXQpIHsKICAgICAgICAgb3V0LmFwcGVuZChp
bnN0cnVjdGlvbi5vZmZzZXQoKSArIHJlbGF0aXZlT2Zmc2V0KTsKQEAgLTU0LDcgKzU0LDcgQEAg
ZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSB7CiB9OwogCiB0ZW1wbGF0
ZTxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSBNb2RlLCB0eXBlbmFtZSBCbG9jaywgc2l6
ZV90IHZlY3RvclNpemU+Ci12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChC
bG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBW
ZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgdmVjdG9yU2l6ZT4mIG91dCkKK3ZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHR5cGVuYW1lIEpTSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQo
b3V0LmlzRW1wdHkoKSk7CiAKQEAgLTg4LDMyICs4OCwzMiBAQCB2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbQogICAgIG91dC5zaHJpbmtDYXBhY2l0eSh0b0luZGV4KTsKIH0KIAotdm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQogewogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJ
bnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xh
aW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSwgb3V0KTsKIH0KIAotdm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgMzI+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywg
VmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpCiB7
CiAgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlv
bnMsIG91dCk7CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5z
dHJ1Y3Rpb25zLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iq
IGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0
b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCkKIHsKICAg
ICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywg
b3V0KTsKIH0KIAotdm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvdXQpCit2b2lkIHJl
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29k
ZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvdXQpCiB7CiAgICAgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2Rl
OjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogfQogCi12b2lk
IGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCAxPiYgb3V0KQogewogICAgIGdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24o
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3V0KTsKIH0KIAotdm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JJbnN0cnVjdGlvbihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3Rvcjx0eXBlbmFtZSBK
U0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpCiB7CiAgICAgZ2V0SnVtcFRhcmdl
dHNGb3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvdXQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmlu
ZGV4IGYxNzVlMmNjYTdkYTEyOGVhNDViMmIxMzdhM2I5YjgwNjY1MTYyYjAuLmQ4ZWEwZmRjNGU5
NGYzNzE5N2YwNjc5ZjI1ZjBiMGFjOWZhNzZlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMyLDEzICszMiwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogCiAvLyBSZXR1cm4g
YSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24g
b2YgYSBqdW1wLgotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZl
Y3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Ci12b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KTsK
LXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ciosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91
dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgY29uc3QgSlNJ
bnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBKU0luc3RydWN0aW9uU3Ry
ZWFtJiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBv
dXQpOwogCi12b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvciosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQ+JiBvdXQpOwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwg
VmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIG91dCk7CiAKLXZv
aWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYg
b3V0KTsKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgVmVjdG9yPEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFt
OjpSZWYmLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYg
b3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IqLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmLCBW
ZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAppbmRleCAwYmQ0MDM5ODQ1MmQ5
Y2VmNjUwYzg0OWVhN2UyZTNkYzczNjY0ZGM1Li5mN2VmYWJiZDk0MzhkMDhmYjA2NDMzMzg5MzQ0
ZjRhYWM5MmEyN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKQEAgLTkwLDcgKzkwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+Ci1pbmxpbmUgaW50IGp1
bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgdGFyZ2V0KQoraW5saW5lIGludCBq
dW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgdGFyZ2V0KQog
ewogICAgIGlmICh0YXJnZXQpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CkBAIC05OCw3ICs5OCw3
IEBAIGlubGluZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hN
YXA+Ci1pbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihIYXNoTWFwJiBvdXRPZkxp
bmVKdW1wVGFyZ2V0cywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24s
IHVuc2lnbmVkIHRhcmdldCkKK2lubGluZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEhh
c2hNYXAmIG91dE9mTGluZUp1bXBUYXJnZXRzLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCB1bnNpZ25lZCB0YXJnZXQpCiB7CiAgICAgaWYgKHRh
cmdldCkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKQEAgLTEwNywxNCArMTA3LDE0IEBAIGlubGlu
ZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEhhc2hNYXAmIG91dE9mTGluZUp1bXBUYXJn
ZXRzLCBjb25zdCBJbnN0cnVjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBC
bG9jaz4KLWlubGluZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKK2lubGluZSBp
bnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2NrLCBjb25zdCB0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgcmV0dXJuIGp1bXBUYXJnZXRG
b3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0aW9uPgot
aW5saW5lIHZvaWQgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2sm
JiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBj
b25zdCBGdW5jdGlvbiYgZnVuY3Rpb24pCitpbmxpbmUgdm9pZCBleHRyYWN0U3RvcmVkSnVtcFRh
cmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJ
bnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0
aW9uKQogewogI2RlZmluZSBDQVNFX09QKF9fb3ApIFwKICAgICBjYXNlIF9fb3A6Om9wY29kZUlE
OiBcCkBAIC0xMzUsNyArMTM1LDcgQEAgU1dJVENIX0pNUChDQVNFX09QLCBTV0lUQ0hfQ0FTRSwg
U1dJVENIX0RFRkFVTFRfT0ZGU0VUKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlw
ZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIENvZGVCbG9ja09ySGFzaE1hcD4KLWlubGluZSB2b2lk
IHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0
cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0aW9uLCBDb2RlQmxvY2tPckhhc2hNYXAmIGNv
ZGVCbG9ja09ySGFzaE1hcCkKK2lubGluZSB2b2lkIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9y
SW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCB0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uLCBjb25zdCBG
dW5jdGlvbiYgZnVuY3Rpb24sIENvZGVCbG9ja09ySGFzaE1hcCYgY29kZUJsb2NrT3JIYXNoTWFw
KQogewogI2RlZmluZSBDQVNFX09QKF9fb3ApIFwKICAgICBjYXNlIF9fb3A6Om9wY29kZUlEOiB7
IFwKQEAgLTE3MSw3ICsxNzEsNyBAQCBTV0lUQ0hfSk1QKENBU0VfT1AsIFNXSVRDSF9DQVNFLCBT
V0lUQ0hfREVGQVVMVF9PRkZTRVQpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBl
bmFtZSBGdW5jdGlvbj4KLWlubGluZSB2b2lkIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5z
dHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgZmluYWxPZmZzZXQsIEluc3RydWN0
aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbikKK2lu
bGluZSB2b2lkIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNv
ZGVCbG9jaywgdW5zaWduZWQgZmluYWxPZmZzZXQsIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIHVw
ZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBmaW5hbE9mZnNl
dCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0aW9uLCBjb2RlQmxvY2spOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYWM1
NzEyN2JjZjg5MDcyYmUwMzg0MTZkYTEzOWI0MWYxNjRhZTYxNC4uYTlhZjdjZjQzMWZkNGMzZjUw
NWNlODBjMGZmNWEyNDMyNDIxNTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgaW5s
aW5lIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmdldExpbmVBbmRDb2x1bW4oY29uc3QgRXhwcmVz
c2lvblJhbmdlSW5mbyYgaW5mbywKIH0KIAogI2lmbmRlZiBOREVCVUcKLXN0YXRpYyB2b2lkIGR1
bXBMaW5lQ29sdW1uRW50cnkoc2l6ZV90IGluZGV4LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYg
aW5zdHJ1Y3Rpb25TdHJlYW0sIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBs
aW5lLCB1bnNpZ25lZCBjb2x1bW4pCitzdGF0aWMgdm9pZCBkdW1wTGluZUNvbHVtbkVudHJ5KHNp
emVfdCBpbmRleCwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0s
IHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1
bW4pCiB7CiAgICAgY29uc3QgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uU3RyZWFtLmF0
KGluc3RydWN0aW9uT2Zmc2V0KTsKICAgICBjb25zdCBjaGFyKiBldmVudCA9ICIiOwpAQCAtMjk0
LDcgKzI5NCw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjp+VW5saW5rZWRDb2RlQmxvY2soKQogICAg
IH0KIH0KIAotY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0
cnVjdGlvbnMoKSBjb25zdAorY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2Rl
QmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faW5zdHJ1Y3Rpb25z
LmdldCgpKTsKICAgICByZXR1cm4gKm1faW5zdHJ1Y3Rpb25zOwpAQCAtMzMyLDcgKzMzMiw3IEBA
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgVW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KENvZGVCbG9jayogY29kCiAgICAgcmV0dXJuICptX2xpdmVuZXNzOwogfQogCi1p
bnQgVW5saW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK2ludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZM
aW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNv
ZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMo
Ynl0ZWNvZGVPZmZzZXQpKTsKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQo
Ynl0ZWNvZGVPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAxYzU5MDQyZTBkMGMzODExYjNjOWJlMjE1OGNkYzU0
YzAxZGJiODFjLi45NDFiZjNhOWJmZDIyYzY5Y2Q2ZWJmZTg2ZjhkMjlkZGU1MWY3ZWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aApAQCAtMjExLDEyICsyMTEsMTIgQEAgcHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJC
aW5kaW5nKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNQYXJzZXJTY3JpcHRNb2RlPihtX3NjcmlwdE1vZGUpOyB9CiAK
LSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3Q7Ci0gICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29u
c3QgeyByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9Ci0gICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQorICAgIGNv
bnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OworICAgIGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9CisgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgewog
ICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGluc3RydWN0aW9ucygpLmF0
KDApLnB0cigpOwotICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGluc3RydWN0aW9uc0JlZ2luKSArIGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGNv
bnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJbnN0
cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikg
KyBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnN0cnVj
dGlvbiA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiBpbnN0cnVjdGlvbiA8IGluc3RydWN0aW9uc0Vu
ZCk7CiAgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbiAtIGluc3RydWN0aW9uc0JlZ2luOwogICAg
IH0KQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQogCi0gICAgY29uc3QgRml4ZWRWZWN0
b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIG9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNv
ZGVPZmZzZXRzKCkgY29uc3QKKyAgICBjb25zdCBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBKU0luc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
cygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CiAgICAgICAgIHJl
dHVybiBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOwpA
QCAtNDM4LDkgKzQzOCw5IEBAIHByaXZhdGU6CiAgICAgUGFja2VkUmVmUHRyPFN0cmluZ0ltcGw+
IG1fc291cmNlVVJMRGlyZWN0aXZlOwogICAgIFBhY2tlZFJlZlB0cjxTdHJpbmdJbXBsPiBtX3Nv
dXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7CiAKLSAgICBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOworICAgIEZpeGVkVmVjdG9yPHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBSZWY8VW5saW5r
ZWRNZXRhZGF0YVRhYmxlPiBtX21ldGFkYXRhOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVj
dGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEpTSW5zdHJ1
Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM+IG1fbGl2ZW5lc3M7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTQ3NCw3ICs0NzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB1bnNpZ25lZCBtX2VuZERpdm90
OwogICAgICAgICB9OwogICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKLSAgICAgICAgRml4ZWRWZWN0b3I8
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2Rl
T2Zmc2V0czsKKyAgICAgICAgRml4ZWRWZWN0b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOwogICAgICAgICBGaXhlZFZl
Y3RvcjxCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICAgICAgRml4ZWRWZWN0b3I8SWRlbnRp
ZmllclNldD4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogCkBAIC00ODIsMTIgKzQ4MiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAx
OwogICAgIH07CiAKLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0KTsKLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlv
blN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldCh0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOworICAgIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1
Y3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVj
dGlvbi5vZmZzZXQoKSk7CiAgICAgfQotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0
IEluc3RydWN0aW9uKiBwYykKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBKU0lu
c3RydWN0aW9uKiBwYykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
dGhpcy0+Ynl0ZWNvZGVPZmZzZXQocGMpOwogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9m
ZnNldChieXRlY29kZU9mZnNldCk7CkBAIC00OTksNyArNDk5LDcgQEAgcHVibGljOgogICAgIEJh
c2VsaW5lRXhlY3V0aW9uQ291bnRlciYgbGxpbnRFeGVjdXRlQ291bnRlcigpIHsgcmV0dXJuIG1f
bGxpbnRFeGVjdXRlQ291bnRlcjsgfQogCiBwcml2YXRlOgotICAgIHVzaW5nIE91dE9mTGluZUp1
bXBUYXJnZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OworICAg
IHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDx0eXBlbmFtZSBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CiAKICAgICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBtX291
dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJl
RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4IDZkN2JlYTFmMzk0MGMzNzYzYjk4
NDhhMWU2ODJmMjQxOTIwYTRjODkuLjlkYWQ3OGI2ZjdmNjRlNGQ5OTZmYWNiOGUwYmY1NWMwY2Uz
YTYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZv
aWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZFR5cGVQcm9maWxlckV4cHJlc3Npb25J
bmZvKHVuc2lnbmVkIGluc3RydWN0CiAgICAgbV90eXBlUHJvZmlsZXJJbmZvTWFwLnNldChpbnN0
cnVjdGlvbk9mZnNldCwgcmFuZ2UpOwogfQogCi12b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGluc3RydWN0
aW9ucykKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKHN0ZDo6dW5p
cXVlX3B0cjxKU0luc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCiB7CiAgICAgQVNTRVJU
KGluc3RydWN0aW9ucyk7CiAgICAgewpAQCAtMTcwLDcgKzE3MCw3IEBAIFVubGlua2VkSGFuZGxl
ckluZm8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpoYW5kbGVyRm9ySW5kZXgodW5zaWdu
ZWQgaW5kZXgsCiAgICAgcmV0dXJuIFVubGlua2VkSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRl
eDxVbmxpbmtlZEhhbmRsZXJJbmZvPihtX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWly
ZWRIYW5kbGVyKTsKIH0KIAotdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YXBwbHlN
b2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYgcmV3cml0ZXIsIEluc3RydWN0aW9uU3RyZWFt
V3JpdGVyJiBpbnN0cnVjdGlvbnMpCit2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjph
cHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiByZXdyaXRlciwgSlNJbnN0cnVjdGlv
blN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zKQogewogICAgIC8vIEJlZm9yZSBhcHBseWluZyB0
aGUgY2hhbmdlcywgd2UgYWRqdXN0IHRoZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0
ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCiAgICAgLy8g
dGhlIGluc2VydGlvbiBpbmZvcm1hdGlvbi4KQEAgLTIwNSwxMyArMjA1LDEzIEBAIHZvaWQgVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0
ZXImIHJld3JpdGVyLCBJCiAgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRoaXMsIGlu
c3RydWN0aW9ucywgbV9qdW1wVGFyZ2V0cyk7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBieXRlY29kZU9mZnNldCwgaW50IHRhcmdldCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0LCBpbnQgdGFyZ2V0KQogewogICAgIFJFTEVBU0VfQVNT
RVJUKHRhcmdldCk7CiAgICAgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5zZXQoYnl0ZWNvZGVPZmZz
ZXQsIHRhcmdldCk7CiB9CiAKLWludCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZM
aW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQor
aW50IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAgICBB
U1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5jb250YWlucyhieXRlY29kZU9mZnNldCkpOwog
ICAgIHJldHVybiBtX291dE9mTGluZUp1bXBUYXJnZXRzLmdldChieXRlY29kZU9mZnNldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDYwYTM1NDFkZGQyMjIxZTlmZTc4YjFiYTliZjU2ODU3
M2NlZTk3NDQuLmIzZDUwYjhmOTZmNmNlY2U5ZTliMGVlYjZhZjNhNWI3ODNlMjJmMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBVbmxpbmtl
ZE1ldGFkYXRhVGFibGUmIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPm1ldGFkYXRh
KCk7IH0KICAgICB2b2lkIGFkZEV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zm
c2V0LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQg
bGluZSwgdW5zaWduZWQgY29sdW1uKTsKICAgICB2b2lkIGFkZFR5cGVQcm9maWxlckV4cHJlc3Np
b25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERpdm90LCB1
bnNpZ25lZCBlbmREaXZvdCk7Ci0gICAgdm9pZCBhZGRPcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KQorICAgIHZvaWQgYWRk
T3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgbV9vcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0cy5hcHBlbmQob2Zmc2V0KTsKICAgICB9CkBAIC0xNzYsMTAgKzE3
NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcihpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcnNbaW5kZXhdOyB9CiAgICAgdm9pZCBhZGRJ
ZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGkpIHsgcmV0dXJuIG1faWRlbnRpZmllcnMuYXBw
ZW5kKGkpOyB9CiAKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKLSAgICB2b2lkIGFkZE91dE9mTGluZUp1bXBU
YXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7Ci0gICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0gICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rp
b24pCisgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAgICB2b2lkIGFkZE91dE9mTGluZUp1
bXBUYXJnZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQgdGFyZ2V0
KTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQpOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewogICAgICAgICBy
ZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQpA
QCAtMTk0LDkgKzE5NCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TGluZUFuZENvbHVtbihj
b25zdCBFeHByZXNzaW9uUmFuZ2VJbmZvJiwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1
bW4pIGNvbnN0OwogCi0gICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVy
JiwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImKTsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9u
KEJ5dGVjb2RlUmV3cml0ZXImLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJik7CiAKLSAgICB2
b2lkIGZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4pOworICAgIHZv
aWQgZmluYWxpemUoc3RkOjp1bmlxdWVfcHRyPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+KTsKIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCkBAIC0yMDcsNyArMjA3LDcgQEAgcHJp
dmF0ZToKICAgICBWTSYgbV92bTsKICAgICBTdHJvbmc8VW5saW5rZWRDb2RlQmxvY2s+IG1fY29k
ZUJsb2NrOwogICAgIC8vIEluIG5vbi1SYXJlRGF0YS4KLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwogICAgIFZlY3RvcjxJZGVudGlm
aWVyPiBtX2lkZW50aWZpZXJzOwogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1f
Y29uc3RhbnRSZWdpc3RlcnM7CiAgICAgVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4g
bV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247CkBAIC0yMjEsNyArMjIxLDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fdW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAgIFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpG
YXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICBIYXNoTWFwPHVu
c2lnbmVkLCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Np
b25SYW5nZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwotICAgIFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOworICAg
IFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxl
Q29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CiAgICAgVmVjdG9yPEJpdFZlY3Rvcj4gbV9iaXRW
ZWN0b3JzOwogICAgIFZlY3RvcjxJZGVudGlmaWVyU2V0PiBtX2NvbnN0YW50SWRlbnRpZmllclNl
dHM7CiAgICAgdW5zaWduZWQgbV9udW1CaW5hcnlBcml0aFByb2ZpbGVzIHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IDlkZGZkMzRiZjc5ZDhmNGIxOWZkZGU1NmIyYTQxMWIzYmNiMTYwODAuLjVkYjlh
YmE5ODkwY2EwNzA5MGEyOTlmNmNjNDk2OThhZGRjYmE5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMz
NCw2ICszMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdXNpbmcgT3Bjb2RlSUQgPSA6
OkpTQzo6T3Bjb2RlSUQ7CiAgICAgICAgIHVzaW5nIE9wTm9wID0gOjpKU0M6Ok9wTm9wOwogICAg
ICAgICB1c2luZyBDb2RlQmxvY2sgPSBzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I+OworICAgICAgICB1c2luZyBJbnN0cnVjdGlvblR5cGUgPSBKU0luc3RydWN0aW9u
OwogICAgICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG9wY29kZUZvckRpc2FibGluZ09w
dGltaXphdGlvbnMgPSBvcF9lbmQ7CiAgICAgfTsKIApAQCAtMTA5MCw3ICsxMDkxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKIAogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wT3A+Ci0gICAgICAgIHZvaWQgc2V0VGFyZ2V0Rm9y
SnVtcEluc3RydWN0aW9uKEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiwgaW50IHRhcmdl
dCk7CisgICAgICAgIHZvaWQgc2V0VGFyZ2V0Rm9ySnVtcEluc3RydWN0aW9uKHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmLCBpbnQgdGFyZ2V0KTsKIAogICAgICAgICB1
c2luZyBCaWdJbnRNYXBFbnRyeSA9IHN0ZDo6dHVwbGU8VW5pcXVlZFN0cmluZ0ltcGwqLCB1aW50
OF90LCBib29sPjsKIApAQCAtMTE4OCw3ICsxMTg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpTVmFsdWUgYWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4X3Qg
cmFkaXgsIGJvb2wgc2lnbik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRlT2JqZWN0
Q29uc3RhbnQoUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJiwgaW50KTsKIAotICAgICAg
ICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
bV93cml0ZXI7IH0KKyAgICAgICAgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5z
dHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIAogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogCkBAIC0xMjA0LDcg
KzEyMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZXN0b3JlVERaU3RhY2so
Y29uc3QgUHJlc2VydmVkVERaU3RhY2smKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgotICAgICAgICB2b2lkIHdpdGhXcml0ZXIoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdy
aXRlciwgY29uc3QgRnVuYyYgZm4pCisgICAgICAgIHZvaWQgd2l0aFdyaXRlcihKU0luc3RydWN0
aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIsIGNvbnN0IEZ1bmMmIGZuKQogICAgICAgICB7CiAgICAg
ICAgICAgICBhdXRvIHByZXZMYXN0T3Bjb2RlSUQgPSBtX2xhc3RPcGNvZGVJRDsKICAgICAgICAg
ICAgIGF1dG8gcHJldkxhc3RJbnN0cnVjdGlvbiA9IG1fbGFzdEluc3RydWN0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ckJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3JCYXNlLmgKaW5kZXggMGY5MTk5MzdiNWU0NmU3OGU2MTE3NjI0MGRiZWExMzc4ZjdlZTU4
Yy4uMThkODYyM2ZkYmM5NGM4N2ZlN2ExZWQ5OTllNmI3YmQ4OWRlZWM1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yQmFzZS5oCkBAIC00Niw2ICs0Niw5IEBAIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZSB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+CiAgICAgZnJpZW5kIGNs
YXNzIEdlbmVyaWNMYWJlbDsKIAorICAgIHVzaW5nIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyVHlw
ZSA9IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyPHR5cGVuYW1lIFRyYWl0czo6SW5zdHJ1Y3Rpb25U
eXBlPjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVR5cGUgPSBJbnN0cnVjdGlvblN0cmVh
bTx0eXBlbmFtZSBUcmFpdHM6Okluc3RydWN0aW9uVHlwZT47CisKIHB1YmxpYzoKICAgICBCeXRl
Y29kZUdlbmVyYXRvckJhc2UodHlwZW5hbWUgVHJhaXRzOjpDb2RlQmxvY2ssIHVpbnQzMl90IHZp
cnR1YWxSZWdpc3RlckNvdW50Rm9yQ2FsbGVlU2F2ZXMpOwogCkBAIC03NywxMiArODAsMTIgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgcmVjbGFpbUZyZWVSZWdpc3RlcnMoKTsKIAot
ICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyIG1fd3JpdGVyOworICAgIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyVHlwZSBtX3dyaXRlcjsKICAgICB0eXBlbmFtZSBUcmFpdHM6OkNvZGVCbG9jayBt
X2NvZGVCbG9jazsKIAogICAgIGJvb2wgbV9vdXRPZk1lbW9yeUR1cmluZ0NvbnN0cnVjdGlvbiB7
IGZhbHNlIH07CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBtX2xhc3RPcGNvZGVJRCA9
IFRyYWl0czo6b3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9uczsKLSAgICBJbnN0cnVjdGlv
blN0cmVhbTo6TXV0YWJsZVJlZiBtX2xhc3RJbnN0cnVjdGlvbiB7IG1fd3JpdGVyLnJlZigpIH07
CisgICAgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpNdXRhYmxlUmVmIG1fbGFzdElu
c3RydWN0aW9uIHsgbV93cml0ZXIucmVmKCkgfTsKIAogICAgIFNlZ21lbnRlZFZlY3RvcjxHZW5l
cmljTGFiZWw8VHJhaXRzPiwgMzI+IG1fbGFiZWxzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdp
c3RlcklELCAzMj4gbV9jYWxsZWVMb2NhbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlSW5saW5l
cy5oCmluZGV4IGJkNzg5MGQ1ZmFiOWUxNWU3YmU1ZTNiMDdmZDgxOGQ0MjI1MGI2YTcuLjhkYzYy
YmI2MjAzOTU0ZTJlY2Q5MmJkODY5ODE3YjEyOTk2MzllNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3JCYXNlSW5saW5lcy5oCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlPFRyYWl0cz46OmVtaXRMYWJlbChHZW5lcmljTGFiZWw8VHJhaXRzPiYgbGFiZWwpCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHM+CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+
OjpyZWNvcmRPcGNvZGUodHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBvcGNvZGVJRCkKIHsKLSAg
ICBBU1NFUlQobV9sYXN0T3Bjb2RlSUQgPT0gVHJhaXRzOjpvcGNvZGVGb3JEaXNhYmxpbmdPcHRp
bWl6YXRpb25zIHx8IChtX2xhc3RPcGNvZGVJRCA9PSBtX2xhc3RJbnN0cnVjdGlvbi0+b3Bjb2Rl
SUQ8dHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVUcmFpdHM+KCkgJiYgbV93cml0ZXIucG9zaXRpb24o
KSA9PSBtX2xhc3RJbnN0cnVjdGlvbi5vZmZzZXQoKSArIG1fbGFzdEluc3RydWN0aW9uLT5zaXpl
PHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlVHJhaXRzPigpKSk7CisgICAgQVNTRVJUKG1fbGFzdE9w
Y29kZUlEID09IFRyYWl0czo6b3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9ucyB8fCAobV9s
YXN0T3Bjb2RlSUQgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgJiYgbV93cml0ZXIu
cG9zaXRpb24oKSA9PSBtX2xhc3RJbnN0cnVjdGlvbi5vZmZzZXQoKSArIG1fbGFzdEluc3RydWN0
aW9uLT5zaXplKCkpKTsKICAgICBtX2xhc3RJbnN0cnVjdGlvbiA9IG1fd3JpdGVyLnJlZigpOwog
ICAgIG1fbGFzdE9wY29kZUlEID0gb3Bjb2RlSUQ7CiB9CkBAIC0xMDIsNiArMTAyLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVHJhaXRzPgogdm9pZCBCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRz
Pjo6YWxpZ25XaWRlT3Bjb2RlMTYoKQogewogI2lmIENQVShORUVEU19BTElHTkVEX0FDQ0VTUykK
KyAgICBzdGF0aWNfYXNzZXJ0KFRyYWl0czo6T3Bjb2RlVHJhaXRzOjptYXhPcGNvZGVJRFdpZHRo
ID09IE9wY29kZVNpemU6Ok5hcnJvdyk7CiAgICAgc2l6ZV90IG9wY29kZVNpemUgPSAxOwogICAg
IHNpemVfdCBwcmVmaXhBbmRPcGNvZGVTaXplID0gb3Bjb2RlU2l6ZSArIFBhZGRpbmdCeVNpemU8
T3Bjb2RlU2l6ZTo6V2lkZTE2Pjo6dmFsdWU7CiAgICAgd2hpbGUgKChtX3dyaXRlci5wb3NpdGlv
bigpICsgcHJlZml4QW5kT3Bjb2RlU2l6ZSkgJSBPcGNvZGVTaXplOjpXaWRlMTYpCkBAIC0xMTMs
NiArMTE0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgogdm9pZCBCeXRlY29kZUdlbmVy
YXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRlT3Bjb2RlMzIoKQogewogI2lmIENQVShORUVEU19B
TElHTkVEX0FDQ0VTUykKKyAgICBzdGF0aWNfYXNzZXJ0KFRyYWl0czo6T3Bjb2RlVHJhaXRzOjpt
YXhPcGNvZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdyk7CiAgICAgc2l6ZV90IG9wY29k
ZVNpemUgPSAxOwogICAgIHNpemVfdCBwcmVmaXhBbmRPcGNvZGVTaXplID0gb3Bjb2RlU2l6ZSAr
IFBhZGRpbmdCeVNpemU8T3Bjb2RlU2l6ZTo6V2lkZTMyPjo6dmFsdWU7CiAgICAgd2hpbGUgKCht
X3dyaXRlci5wb3NpdGlvbigpICsgcHJlZml4QW5kT3Bjb2RlU2l6ZSkgJSBPcGNvZGVTaXplOjpX
aWRlMzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5oCmluZGV4IDg3NTdkM2EwZDU0ZmM4OWZiMGQ5N2Fj
OGI5OWU4NmEzNDFlYjZkNzQuLjM3NTUwNGUxZjExMjI3NTJkOGMyYzE3ZTdiODdkMzVlNDk0YjEx
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGlj
UHJvcGVydHlBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5oCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBK
U0MgewogLy8gUmVmZXJlbmNlIGNvdW50IGluZGljYXRlcyBudW1iZXIgb2YgbGl2ZSByZWdpc3Rl
cnMgdGhhdCBhbGlhcyB0aGlzIG9iamVjdC4KIGNsYXNzIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMg
OiBwdWJsaWMgUmVmQ291bnRlZDxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiBjcmVhdGUoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok11dGFibGVSZWYmJiBpbnN0cnVjdGlvblJlZikKKyAgICBzdGF0aWMgUmVmPFN0YXRp
Y1Byb3BlcnR5QW5hbHlzaXM+IGNyZWF0ZSh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpN
dXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKSk7
IAorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKFdU
Rk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGRQcm9wZXJ0eUlu
ZGV4KHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpIHsgbV9wcm9wZXJ0eUluZGV4ZXMuYWRkKHByb3Bl
cnR5SW5kZXgpOyB9CkBAIC00NSwxMiArNDUsMTIgQEAgcHVibGljOgogICAgIGludCBwcm9wZXJ0
eUluZGV4Q291bnQoKSB7IHJldHVybiBtX3Byb3BlcnR5SW5kZXhlcy5zaXplKCk7IH0KIAogcHJp
dmF0ZToKLSAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKEluc3RydWN0aW9uU3RyZWFtOjpNdXRh
YmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCisgICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyh0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCiAg
ICAgICAgIDogbV9pbnN0cnVjdGlvblJlZihXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkKICAgICB7
CiAgICAgfQogCi0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgbV9pbnN0cnVjdGlv
blJlZjsKKyAgICB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIG1faW5z
dHJ1Y3Rpb25SZWY7CiAgICAgdHlwZWRlZiBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8
dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4g
UHJvcGVydHlJbmRleFNldDsKICAgICBQcm9wZXJ0eUluZGV4U2V0IG1fcHJvcGVydHlJbmRleGVz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKaW5kZXggNWY5ZTczODYyYTRhY2QzMDdiMTAxYmQx
Y2Q2ZjIzZmM1MTc1MmQzYi4uYWU0OWIwMjc3M2M2NzIwZTNjZjMzMTUxYzE2OWExZWJmMmUwODE2
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAvLyBpcyB1bmRlcnN0b29kIHRvIGJlIGxvc3N5LCBhbmQgaXQncyBPSyBpZiBpdCB0dXJu
cyBvdXQgdG8gYmUgd3Jvbmcgc29tZXRpbWVzLgogY2xhc3MgU3RhdGljUHJvcGVydHlBbmFseXpl
ciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBjcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1
Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpOwotICAgIHZvaWQgbmV3T2Jq
ZWN0KFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1
Y3Rpb25SZWYpOworICAgIHZvaWQgY3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QsIHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpOworICAgIHZv
aWQgbmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7CiAgICAgdm9pZCBwdXRCeUlkKFJlZ2lzdGVy
SUQqIGRzdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCk7IC8vIHByb3BlcnR5SW5kZXggaXMgYW4g
aW5kZXggaW50byBhIHVuaXF1ZWQgc2V0IG9mIHN0cmluZ3MuCiAgICAgdm9pZCBtb3YoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCkBAIC01MCwxNCArNTAsMTQgQEAgcHJpdmF0
ZToKICAgICBBbmFseXNpc01hcCBtX2FuYWx5c2VzOwogfTsKIAotaW5saW5lIHZvaWQgU3RhdGlj
UHJvcGVydHlBbmFseXplcjo6Y3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9u
U3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKQoraW5saW5lIHZvaWQgU3RhdGljUHJv
cGVydHlBbmFseXplcjo6Y3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QsIHR5cGVuYW1lIEpTSW5z
dHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpCiB7CiAgICAgQW5hbHlz
aXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFkZCgKICAgICAgICAgZHN0
LT5pbmRleCgpLCBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUoV1RGTW92ZShpbnN0cnVj
dGlvblJlZikpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOyAvLyBDYW4ndCBoYXZlIHR3byAndGhpcycgaW4gdGhlIHNhbWUgY29uc3RydWN0b3Iu
CiB9CiAKLWlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChSZWdp
c3RlcklEKiBkc3QsIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVm
KQoraW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bmV3T2JqZWN0KFJlZ2lzdGVy
SUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVj
dGlvblJlZikKIHsKICAgICBhdXRvIGFuYWx5c2lzID0gU3RhdGljUHJvcGVydHlBbmFseXNpczo6
Y3JlYXRlKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKTsKICAgICBBbmFseXNpc01hcDo6QWRkUmVz
dWx0IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKGRzdC0+aW5kZXgoKSwgYW5hbHlzaXMuY29w
eVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggZWFjYmMwY2UyNzJmNjdiZTgyYzc5MzcyYWE3ZjcyODg4YjZmMjE1Zi4uMDU3
OGU0ZmNjNzg3YWMzOTI5OTQzMDkwMjFkZGNhMDU5N2M2YWFkMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTE4Miw5ICsxODIsOSBA
QCBwcml2YXRlOgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMsCiAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIEVDTUFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgp
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci0gICAgVGVybWluYWxpdHkgaGFuZGxl
Q2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSwgQnl0ZWNv
ZGVJbmRleCBvc3JFeGl0SW5kZXgpOworICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoY29uc3Qg
SlNJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZXgpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KLSAgICBUZXJtaW5h
bGl0eSBoYW5kbGVWYXJhcmdzQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9w
LCBDYWxsTW9kZSk7CisgICAgVGVybWluYWxpdHkgaGFuZGxlVmFyYXJnc0NhbGwoY29uc3QgSlNJ
bnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSk7CiAgICAgdm9pZCBlbWl0RnVu
Y3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQsIE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3Rl
ciB0aGlzQXJndW1udCk7CiAgICAgdm9pZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgTm9kZSogZ2V0
QXJndW1lbnRDb3VudCgpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAgTm9kZSog
c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlWYXJpYW50
JiwgTm9kZSogdmFsdWUpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgdm9pZCBw
YXJzZUdldEJ5SWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHBhcnNlR2V0QnlJZChj
b25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgdm9pZCBzaW1wbGlmeUdldEJ5U3RhdHVzKE5vZGUq
IGJhc2UsIEdldEJ5U3RhdHVzJik7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1
cywgQWNjZXNzVHlwZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpOwpAQCAtMTI1NCwxMCAr
MTI1NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBtX3ZhbHVlIHsgbnVsbHB0ciB9Owog
ICAgICAgICBTZXRNb2RlIG1fc2V0TW9kZTsKICAgICB9OwotICAgIAorCiAgICAgVmVjdG9yPERl
bGF5ZWRTZXRMb2NhbCwgMj4gbV9zZXRMb2NhbFF1ZXVlOwogCi0gICAgY29uc3QgSW5zdHJ1Y3Rp
b24qIG1fY3VycmVudEluc3RydWN0aW9uOworICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIG1fY3Vy
cmVudEluc3RydWN0aW9uOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9v
bCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKQEAgLTEzMTAsNyArMTMxMCw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmFkZEp1bXBUbyh1bnNpZ25lZCBieXRlY29kZUluZGV4
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci1CeXRlQ29kZVBhcnNlcjo6VGVybWlu
YWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBO
b2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4
KQorQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8Q2FsbE9wPigpOwogICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoY2FsbGVlRm9yKGJ5dGVj
b2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKQEAgLTEzNjksNyArMTM2OSw3IEBA
IEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgotQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFs
aXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzQ2FsbChjb25zdCBJbnN0cnVjdGlvbiog
cGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKK0J5dGVDb2RlUGFyc2VyOjpUZXJt
aW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwoY29uc3QgSlNJbnN0cnVj
dGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPENhbGxPcD4oKTsKICAgICBpbnQgZmlyc3RGcmVlUmVnID0gYnl0ZWNv
ZGUubV9maXJzdEZyZWUub2Zmc2V0KCk7CkBAIC0xNTM1LDE0ICsxNTM1LDE1IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBDYWxsVmFyaWFudCBjCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggb2xkSW5kZXggPSBtX2N1cnJl
bnRJbmRleDsKICAgICAgICAgYXV0byBvbGRTdGFja1RvcCA9IG1faW5saW5lU3RhY2tUb3A7CiAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AgPSBzdGFja0VudHJ5OwotICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IEJ5dGVjb2RlSW5kZXgob3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl0pOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KE9wY29kZUlEV2lkdGhCeVNpemU8SlNPcGNvZGVUcmFpdHMsIE9wY29kZVNp
emU6OldpZGUzMj46Om9wY29kZUlEU2l6ZSA9PSAxKTsKKyAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBCeXRlY29kZUluZGV4KG9wY29kZUxlbmd0aHNbb3BfZW50ZXJdICsgMSk7CiAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKICAgICAgICAg
bV9jdXJyZW50SW5kZXggPSBvbGRJbmRleDsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcCA9IG9s
ZFN0YWNrVG9wOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOwogCi0gICAgICAgIEJhc2ljQmxv
Y2sqKiBlbnRyeUJsb2NrUHRyID0gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2sqLCBCeXRlY29k
ZUluZGV4PihzdGFja0VudHJ5LT5tX2Jsb2NrTGlua2luZ1RhcmdldHMsIHN0YWNrRW50cnktPm1f
YmxvY2tMaW5raW5nVGFyZ2V0cy5zaXplKCksIEJ5dGVjb2RlSW5kZXgob3Bjb2RlTGVuZ3Roc1tv
cF9lbnRlcl0pLCBnZXRCeXRlY29kZUJlZ2luRm9yQmxvY2spOworICAgICAgICBCYXNpY0Jsb2Nr
KiogZW50cnlCbG9ja1B0ciA9IHRyeUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrKiwgQnl0ZWNvZGVJ
bmRleD4oc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLCBzdGFja0VudHJ5LT5tX2Js
b2NrTGlua2luZ1RhcmdldHMuc2l6ZSgpLCBCeXRlY29kZUluZGV4KG9wY29kZUxlbmd0aHNbb3Bf
ZW50ZXJdICsgMSksIGdldEJ5dGVjb2RlQmVnaW5Gb3JCbG9jayk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVudHJ5QmxvY2tQdHIpOwogICAgICAgICBhZGRKdW1wVG8oKmVudHJ5QmxvY2tQdHIp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2NTQsNyArMTY1NSw3IEBAIHVuc2lnbmVkIEJ5
dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1l
bnRDb3VudEluY2x1CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1
bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBCYXNpY0Jsb2Nr
KiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQog
ewotICAgIGNvbnN0IEluc3RydWN0aW9uKiBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY3Vy
cmVudEluc3RydWN0aW9uOworICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudElu
c3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9u
S2luZEZvcihraW5kKTsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbGVlLmZ1bmN0
aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQp
OwpAQCAtNTM0NSw3ICs1MzQ2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2xlYXJDYWNoZXMo
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
R2V0QnlJZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VHZXRCeUlkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cD4oKTsKICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwpA
QCAtNTQ3MSwxMiArNTQ3MiwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGFkZEp1bXBUbyhtX2N1cnJlbnRJbmRleC5v
ZmZzZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgLy8gU3dpdGNoIG9uIHRoZSBjdXJyZW50IGJ5dGVjb2RlIG9wY29kZS4KLSAgICAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdCht
X2N1cnJlbnRJbmRleCkucHRyKCk7CisgICAgICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChtX2N1cnJlbnRJbmRleCkucHRyKCk7CiAg
ICAgICAgIG1fY3VycmVudEluc3RydWN0aW9uID0gY3VycmVudEluc3RydWN0aW9uOyAvLyBTb21l
IG1ldGhvZHMgd2FudCB0byB1c2UgdGhpcywgYW5kIHdlJ2QgcmF0aGVyIG5vdCB0aHJlYWQgaXQg
dGhyb3VnaCBjYWxscy4KICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgIAorCiAgICAgICAgIFZFUkJPU0VfTE9HKCIgICAg
cGFyc2luZyAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiOiAiLCBvcGNvZGVJRCwgIlxuIik7CiAg
ICAgICAgIAogICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkgewpA
QCAtODgwMCw4ICs4ODAxLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2so
KQogICAgICAgICBkYXRhTG9nTG4oKTsKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNp
b24oKS0+ZHVtcEJ5dGVjb2RlKCk7CiAgICAgfQotICAgIAotICAgIFZlY3RvcjxJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCAzMj4ganVtcFRhcmdldHM7CisKKyAgICBWZWN0b3I8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4ganVtcFRhcmdldHM7CiAgICAgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlQXRERkdUaW1lKCkpKSB7CiAgICAgICAgIGRhdGFM
b2coIkp1bXAgdGFyZ2V0czogIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKaW5kZXggNWUzMmQyZDI0ZjFiM2VkODcwYzMzMGYyZWYyM2Q4NWU0ZWNl
NDgzNy4uNTgyYWFmNWZkMTk2NGE0NDdlMTE0NDIxNGJmODIwZDExZGFkMjE5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTAwLDcgKzEw
MCw3IEBAIGlubGluZSB2b2lkIGRlYnVnRmFpbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIENhcGFiaWxpdHlMZXZlbCByCiAgICAgICAgIGRhdGFMb2coIkRGRyByZWpl
Y3Rpbmcgb3Bjb2RlIGluICIsICpjb2RlQmxvY2ssICIgYmVjYXVzZSBvZiBvcGNvZGUgIiwgb3Bj
b2RlTmFtZXNbb3Bjb2RlSURdLCAiXG4iKTsKIH0KIAotQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uKiBwYykKK0NhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykK
IHsKICAgICBVTlVTRURfUEFSQU0oY29kZUJsb2NrKTsgLy8gVGhpcyBmdW5jdGlvbiBkb2VzIHNv
bWUgYnl0ZWNvZGUgcGFyc2luZy4gT3JkaW5hcmlseSBieXRlY29kZSBwYXJzaW5nIHJlcXVpcmVz
IHRoZSBvd25pbmcgQ29kZUJsb2NrLiBJdCdzIHNvcnQgb2Ygc3RyYW5nZSB0aGF0IHdlIGRvbid0
IHVzZSBpdCBoZXJlIHJpZ2h0IG5vdy4KICAgICBVTlVTRURfUEFSQU0ocGMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKaW5kZXggNGRhODlhYjc0MjNhMGQ4
MDk5ZWQwYzUyOTA0NWFiYjI1YzFiNGRhZS4uOGU1YjEwMzBkNTk0ODQ0ZDZhMThhMWVkZmQ4NTI5
ODNhMDkzZmE0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNsb3N1cmVD
YWxsKENvZGVCbG9jayopOwogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENv
ZGVCbG9jayopOwogYm9vbCBjYW5Vc2VPU1JFeGl0RnV6emluZyhDb2RlQmxvY2sqKTsKIAotaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQsIENvZGVCbG9jayos
IGNvbnN0IEluc3RydWN0aW9uKiBwYyk7CitpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpOwog
CiBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayopOwogI2Vsc2UgLy8g
RU5BQkxFKERGR19KSVQpCkBAIC01OCw3ICs1OCw3IEBAIGlubGluZSBib29sIG1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQogaW5s
aW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKSB7IHJl
dHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoQ29kZUJsb2Nr
KikgeyByZXR1cm4gZmFsc2U7IH0KIAotaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWwoT3Bjb2RlSUQsIENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uKikgeyByZXR1cm4g
Q2Fubm90Q29tcGlsZTsgfQoraW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQsIENvZGVCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKSB7IHJldHVybiBDYW5u
b3RDb21waWxlOyB9CiBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChDb2Rl
QmxvY2sqKSB7IHJldHVybiBDYW5ub3RDb21waWxlOyB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDg5YWU3
M2YyM2RhNTdjNzNlZTEwNTYxNGJjNjc0N2VkMDE5MjU1ZDMuLmIyNDNjNjc0Nzk1MGNlZmQ2YjUy
ZDhkZTUzYTVhYWVhMTQ4YmIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAg
ICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFBy
b2ZpbGU7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGppdC5iYXNlbGluZUNv
ZGVCbG9ja0Zvcihjb2RlT3JpZ2luKTsKICAgICAgICAgICAgIGlmIChBcnJheVByb2ZpbGUqIGFy
cmF5UHJvZmlsZSA9IGNvZGVCbG9jay0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KCkpLnB0cigpOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSku
cHRyKCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNraXBQcm9maWxlOwog
ICAgICAgICAgICAgICAgIGlmIChpbnN0cnVjdGlvbi0+aXM8T3BHZXRCeUlkPigpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJ
ZD4oKS5tZXRhZGF0YShjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDE4MjIyMzk2Y2Y0NWU3
YWU3YzNiMTAzYzRlZmE5NmZhYTc0MThmNzkuLjU4NGZmZDg4NTZiMThjNzc2OGJjYTJkMzc5NWU5
MGU4MzMxZTIxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9j
ayogYmFzZWxpbmVDbwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IGp1bXBUYXJnZXQ7CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvbiYgY2FsbEluc3RydWN0aW9uID0g
KmJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5pbnN0cnVjdGlvbnMoKS5hdChjYWxsQnl0ZWNv
ZGVJbmRleCkucHRyKCk7CisgICAgY29uc3QgYXV0byYgY2FsbEluc3RydWN0aW9uID0gKmJhc2Vs
aW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5pbnN0cnVjdGlvbnMoKS5hdChjYWxsQnl0ZWNvZGVJbmRl
eCkucHRyKCk7CiAgICAgaWYgKGNhbGxlcklzTExJbnQpIHsKICNkZWZpbmUgTExJTlRfUkVUVVJO
X0xPQ0FUSU9OKG5hbWUpIExMSW50OjpyZXR1cm5Mb2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5f
bG9jYXRpb24sIGNhbGxJbnN0cnVjdGlvbi53aWR0aCgpKS5jb2RlKCkKIApAQCAtMzg5LDcgKzM4
OSw3IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgIGJvb2wgZXhpdFRvTExJbnQgPSBPcHRp
b25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrRm9yRXhpdC0+aml0VHlwZSgp
ID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bms7CiAgICAgaWYgKGV4aXRUb0xMSW50KSB7CiAg
ICAgICAgIGF1dG8gYnl0ZWNvZGVJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgoKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICpj
b2RlQmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4KS5wdHIoKTsK
KyAgICAgICAgY29uc3QgYXV0byYgY3VycmVudEluc3RydWN0aW9uID0gKmNvZGVCbG9ja0ZvckV4
aXQtPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CiAgICAgICAgIGlm
IChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0g
TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwpAQCAtMzk4
LDcgKzM5OCw3IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogCiAgICAgICAgIGlmIChleGl0Lmlz
RXhjZXB0aW9uSGFuZGxlcigpKSB7CiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoJmN1cnJlbnRJbnN0cnVjdGlvbiksIEdQUkluZm86OnJlZ1QyKTsKLSAg
ICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMiwgJnZtLnRhcmdldEludGVycHJl
dGVyUENGb3JUaHJvdyk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDIs
ICZzdGQ6OmdldDxjb25zdCBKU0luc3RydWN0aW9uKj4odm0udGFyZ2V0SW50ZXJwcmV0ZXJQQ0Zv
clRocm93KSk7CiAgICAgICAgIH0KIAogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhpdC0+bWV0YWRhdGFUYWJsZSgpKSwgTExJbnQ6OlJl
Z2lzdGVyczo6bWV0YWRhdGFUYWJsZUdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGZjM2E2YzRmZGFlM2RkODk2NzhjNmJiOWE2
NTY5MGI0OGY3ZmFkN2EuLjM2MGUxODE4M2VjYmExZTBjYzA1ZDc2YzcyY2RmMTIxOWVjY2IxNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0yMTAwLDcgKzIxMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9vcEhp
bnQoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKGVtaXRFYXJseVJldHVybikgewogICAgICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVD
b2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4
KCk7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGlu
ZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRy
KCk7CisgICAgICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKIAog
ICAgICAgICAgICAgdWludHB0cl90KiBwdHIgPSB2bSgpLmdldExvb3BIaW50RXhlY3V0aW9uQ291
bnRlcihpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICBtX2ppdC5wdXNoVG9TYXZlKEdQUkluZm86
OnJlZ1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAppbmRleCA5ZTU5OWJmZmVjOGI5MDBmZDcyMzhlZGM2MzljZWI1NjQ5NDNhOWM4Li44YzQ0ZDY0
Yjg5NWU4MjZmY2E0YzM3M2E0YzQ2NmNiMzIxNmFjOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNjI3NCw3ICsxNjI3NCw3IEBAIElH
Tk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX29yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fb3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zm
c2V0KCkpLnB0cigpOworICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIo
KTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7CiAgICAgICAgIHVpbnRwdHJfdCogcHRy
ID0gdm0tPmdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihpbnN0cnVjdGlvbik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCBm
ZTc5Zjc4ZDM3NTBkNjM0ZGUyMzIzY2FkZGIwNmQ0MTdlODgzYmU3Li5hODI0ZjdhNTE5Y2U0NWY0
YTc0MjU1NThlMzQ0ZDJmMjdkNGRkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIHZv
aWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUs
IE9TUkV4aXQmIGV4aXQKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQu
bV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKTsKICAgICAgICAgICAg
IGlmIChBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGNvZGVCbG9jay0+Z2V0QXJyYXlQcm9m
aWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKSkgewotICAgICAgICAgICAgICAgIGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQo
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpLnB0cigpOworICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIHNraXBQcm9maWxlOwogICAgICAgICAgICAgICAgIGlmIChpbnN0cnVjdGlvbi0+aXM8
T3BHZXRCeUlkPigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShjb2RlQmxvY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggMmFiNmE4MDkwODZiY2Iy
NWQwOTE2ZWUxNTc2ZDBlZWM4MTBiYjMwZi4uYjk1ZTc0M2EyNjVkNjczYzQxYzE3Mzk1ZTNmMzdh
ZmFlM2MwMmViYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
Y3BwCkBAIC01NzUsNyArNTc1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk1hdGVyaWFsaXplT2JqZWN0SW5PU1IsIEpTQ2VsbCosIChKU0dsb2JhbE9iamUKICAgICAgICAg
Ly8gRm9yIG5vdywgd2UgdXNlIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsZSBpbiB0aGUgYWN0dWFs
IENvZGVCbG9jay4gSXQgaXMgT0sgc2luY2UgY3VycmVudCBOZXdBcnJheUJ1ZmZlcgogICAgICAg
ICAvLyBhbmQgUGhhbnRvbU5ld0FycmF5QnVmZmVyIGFyZSBhbHdheXMgYm91bmQgdG8gYSBzcGVj
aWZpYyBvcF9uZXdfYXJyYXlfYnVmZmVyLgogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2sobWF0ZXJpYWxp
emF0aW9uLT5vcmlnaW4oKSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+YmFzZWxpbmVBbHRlcm5h
dGl2ZSgpKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5i
eXRlY29kZUluZGV4KCkpLnB0cigpOworICAgICAgICBjb25zdCBhdXRvKiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KG1hdGVyaWFsaXphdGlvbi0+b3Jp
Z2luKCkuYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAgICAgaWYgKCFjdXJyZW50SW5zdHJ1
Y3Rpb24tPmlzPE9wTmV3QXJyYXlCdWZmZXI+KCkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2Fz
ZSBjYW4gaGFwcGVuIGlmIE9iamVjdC5rZXlzLCBhbiBPcENhbGwgaXMgZmlyc3QgY29udmVydGVk
IGludG8gYSBOZXdBcnJheUJ1ZmZlciB3aGljaCBpcyB0aGVuIGNvbnZlcnRlZCBpbnRvIGEgUGhh
bnRvbU5ld0FycmF5QnVmZmVyLgogICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byB1
cGRhdGUgdGhlIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsZSBpbiB0aGF0IGNhc2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0FyZ3VtZW50LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9Bcmd1bWVudC5yYgppbmRleCBkNGQ4YzY2OGY0MzFi
OWZjNjNhMDZjNDZkZjRmYTUyZTEzMzc1NGMzLi4xZjVhZmVkNmNhZDM2ZjFkOGJlZmY2Zjg2ZWQw
NWE0N2ZmYTEwYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9y
L0FyZ3VtZW50LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJndW1l
bnQucmIKQEAgLTcxLDkgKzcxLDkgQEAgY2xhc3MgQXJndW1lbnQKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgogICAgIHZvaWQgc2V0I3tjYXBpdGFsaXplZF9uYW1lfSgje0B0eXBlLnRv
X3N9IHZhbHVlLCBGdW5jdG9yIGZ1bmMpCiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8I3t0
cmFpdHN9PigpKQorICAgICAgICBpZiAoaXNXaWRlMzIoKSkKICAgICAgICAgICAgIHNldCN7Y2Fw
aXRhbGl6ZWRfbmFtZX08T3Bjb2RlU2l6ZTo6V2lkZTMyPih2YWx1ZSwgZnVuYyk7Ci0gICAgICAg
IGVsc2UgaWYgKGlzV2lkZTE2PCN7dHJhaXRzfT4oKSkKKyAgICAgICAgZWxzZSBpZiAoaXNXaWRl
MTYoKSkKICAgICAgICAgICAgIHNldCN7Y2FwaXRhbGl6ZWRfbmFtZX08T3Bjb2RlU2l6ZTo6V2lk
ZTE2Pih2YWx1ZSwgZnVuYyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldCN7Y2FwaXRh
bGl6ZWRfbmFtZX08T3Bjb2RlU2l6ZTo6TmFycm93Pih2YWx1ZSwgZnVuYyk7CkBAIC04NCw3ICs4
NCw3IEBAIGNsYXNzIEFyZ3VtZW50CiAgICAgewogICAgICAgICBpZiAoISN7Rml0czo6Y2hlY2sg
InNpemUiLCAidmFsdWUiLCBAdHlwZX0pCiAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMoKTsKLSAg
ICAgICAgYXV0byogc3RyZWFtID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6
ZT46OnVuc2lnbmVkVHlwZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgI3tA
aW5kZXh9ICogc2l6ZSArIFBhZGRpbmdCeVNpemU8c2l6ZT46OnZhbHVlICsgLyogT3Bjb2RlIHNp
emUgKi8gMSk7CisgICAgICAgIGF1dG8qIHN0cmVhbSA9IGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBU
eXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGUqPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pih0aGlzKSArICN7QGluZGV4fSAqIHNpemUgKyBQYWRkaW5nQnlTaXplPHNpemU+Ojp2YWx1ZSAr
IE9wY29kZUlEV2lkdGhCeVNpemU8I3t0cmFpdHN9LCBzaXplPjo6b3Bjb2RlSURTaXplKTsKICAg
ICAgICAgKnN0cmVhbSA9ICN7Rml0czo6Y29udmVydCAic2l6ZSIsICJ2YWx1ZSIsIEB0eXBlfTsK
ICAgICB9CiBFT0YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggNmYw
YThmMWE4MDNlMTUxNjRlOTk0NDM0N2JhMzM0NDk2NTk4NjA4ZC4uZTkwZjk5NDY2MWE3ZjNlZGVh
YjA3N2JkMDQ1ZGE0Y2FkNDlmYmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9E
U0wucmIKQEAgLTE0OSwxMCArMTQ5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCYXNp
Y0Jsb2NrTG9jYXRpb247CiAKLXZvaWQgZHVtcEJ5dGVjb2RlKEJ5dGVjb2RlRHVtcGVyQmFzZSog
ZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBjb25zdCBJbnN0cnVjdGlvbiopOwor
dm9pZCBkdW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+
KiBkdW1wZXIsIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgSlNJbnN0cnVjdGlv
biopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotdm9pZCBkdW1wV2FzbShCeXRlY29kZUR1
bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKK3ZvaWQgZHVtcFdhc20oQnl0ZWNvZGVEdW1wZXJCYXNlPFdhc21JbnN0cnVjdGlv
blN0cmVhbT4qIGR1bXBlciwgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IFdh
c21JbnN0cnVjdGlvbiopOwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogRU9GCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlLnJiCmluZGV4IDA2MWI3NmE4MTNk
NDcxMTJjYzkwYjk5MzY4ZWJjYmNlZmU4ZTJlNWQuLmVlNjc4N2IxOGU0ZDhkM2FiZmY4OTEwMmJj
NWNjYTc3MDBjMDBkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvT3Bjb2RlLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2Rl
LnJiCkBAIC0xMDgsNiArMTA4LDEwIEBAIGNsYXNzIE9wY29kZQogICAgICAgQHNlY3Rpb24uaXNf
d2FzbT8gPyAiV2FzbU9wY29kZVRyYWl0cyIgOiAiSlNPcGNvZGVUcmFpdHMiCiAgICAgZW5kCiAK
KyAgICBkZWYgdHlwZV9wcmVmaXgKKyAgICAgIEBzZWN0aW9uLmlzX3dhc20/ID8gIldhc20iIDog
IkpTIgorICAgIGVuZAorCiAgICAgZGVmIG1hcF9maWVsZHNfd2l0aF9zaXplKHByZWZpeCwgc2l6
ZSwgJmJsb2NrKQogICAgICAgICBhcmdzID0gW0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNv
ZGVJRFR5cGUsIDApXQogICAgICAgICBhcmdzICs9IEBhcmdzLmR1cCBpZiBAYXJncwpAQCAtMTI4
LDcgKzEzMiw3IEBAIGNsYXNzIE9wY29kZQogCiAgICAgZGVmIHN0cnVjdAogICAgICAgICA8PC1F
T0YKLXN0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGljIEluc3RydWN0aW9uIHsKK3N0
cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGljICN7dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rp
b24gewogICAgICN7b3Bjb2RlSUR9CiAgICAgI3tsZW5ndGhWYWx1ZX0KICAgICAje3RlbXBzfQpA
QCAtMTYyLDcgKzE2Niw3IEBAIEVPRgogICAgIGRlZiBjaGVja3BvaW50U2l6ZUFzc2VydAogICAg
ICAgICByZXR1cm4gaWYgQGNoZWNrcG9pbnRzLm5pbD8KIAotICAgICAgICAic3RhdGljX2Fzc2Vy
dCgje2NhcGl0YWxpemVkX25hbWV9OjpsZW5ndGggPiAje2NhcGl0YWxpemVkX25hbWV9OjpudW1i
ZXJPZkNoZWNrcG9pbnRzLCBcIkZ1bGxCeXRlY29kZUxpdmVzcyByZWxpZXMgb24gdGhlIGxlbmd0
aCBvZiAje2NhcGl0YWxpemVkX25hbWV9IGJlaW5nIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9m
IGNoZWNrcG9pbnRzXCIpOyIKKyAgICAgICAgInN0YXRpY19hc3NlcnQoI3tjYXBpdGFsaXplZF9u
YW1lfTo6bGVuZ3RoICsgMSA+ICN7Y2FwaXRhbGl6ZWRfbmFtZX06Om51bWJlck9mQ2hlY2twb2lu
dHMsIFwiRnVsbEJ5dGVjb2RlTGl2ZXNzIHJlbGllcyBvbiB0aGUgbGVuZ3RoIG9mICN7Y2FwaXRh
bGl6ZWRfbmFtZX0gYmVpbmcgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgY2hlY2twb2ludHNc
Iik7IgogICAgIGVuZAogCiAgICAgZGVmIHRlbXBzCkBAIC0yMzIsNiArMjM2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogICAgICAgICByZXR1cm4gI3tt
YXBfZmllbGRzX3dpdGhfc2l6ZSgiIiwgIl9fc2l6ZSIsICY6Zml0c19jaGVjaykuam9pbiAiXG4g
ICAgICAgICAgICAmJiAifQorICAgICAgICAgICAgJiYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpO
YXJyb3cgPyAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNvZGVJRFR5cGUsIDApLmZpdHNf
Y2hlY2soU2l6ZTo6TmFycm93KX0gOiAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNvZGVJ
RFR5cGUsIDApLmZpdHNfY2hlY2soU2l6ZTo6V2lkZTE2KX0pCiAgICAgICAgICAgICAmJiAoX19z
aXplID09IE9wY29kZVNpemU6OldpZGUxNiA/ICN7b3Bfd2lkZTE2LmZpdHNfY2hlY2soU2l6ZTo6
TmFycm93KX0gOiB0cnVlKQogICAgICAgICAgICAgJiYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpX
aWRlMzIgPyAje29wX3dpZGUzMi5maXRzX2NoZWNrKFNpemU6Ok5hcnJvdyl9IDogdHJ1ZSk7CiAg
ICAgfQpAQCAtMjUxLDcgKzI1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgI3tvcF93
aWRlMTYuZml0c193cml0ZSBTaXplOjpOYXJyb3d9CiAgICAgICAgICAgICBlbHNlIGlmIChfX3Np
emUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQogICAgICAgICAgICAgICAgICN7b3Bfd2lkZTMyLmZp
dHNfd3JpdGUgU2l6ZTo6TmFycm93fQotICAgICAgICAgICAgI3tBcmd1bWVudC5uZXcoIm9wY29k
ZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KKyAgICAgICAg
ICAgICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCkuZml0c193cml0
ZSAiT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywgX19zaXpl
Pjo6b3Bjb2RlSURTaXplIn0KICN7bWFwX29wZXJhbmRzX3dpdGhfc2l6ZSgiICAgICAgICAgICAg
IiwgIl9fc2l6ZSIsICY6Zml0c193cml0ZSkuam9pbiAiXG4ifQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTI2NCw3ICsyNjksNyBAQCBFT0YKIAogICAgIGRlZiBkdW1w
ZXIKICAgICAgICAgPDwtRU9GCi0gICAgdm9pZCBkdW1wKEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVt
cGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGludCBfX3NpemVTaGlm
dEFtb3VudCkKKyAgICB2b2lkIGR1bXAoQnl0ZWNvZGVEdW1wZXJCYXNlPCN7dHlwZV9wcmVmaXh9
SW5zdHJ1Y3Rpb25TdHJlYW0+KiBkdW1wZXIsICN7dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBfX2xvY2F0aW9uLCBpbnQgX19zaXplU2hpZnRBbW91bnQpCiAgICAgewogICAg
ICAgICBkdW1wZXItPnByaW50TG9jYXRpb25BbmRPcChfX2xvY2F0aW9uLCAmIioqI3tAbmFtZX0i
WzIgLSBfX3NpemVTaGlmdEFtb3VudF0pOwogI3twcmludF9hcmdzIHsgfGFyZ3wKQEAgLTI4NCwz
MCArMjg5LDMwIEBAIEVPRgogICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDhfdCog
c3RyZWFtKQogICAgICAgICAje2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6TmFycm93Iil9CiAgICAg
ewotICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzdHJlYW0pWy0xXSA9PSBvcGNvZGVJRCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3Ry
ZWFtLCBzdGF0aWNfY2FzdDwje29wY29kZUlEVHlwZX0+KGJpdHdpc2VfY2FzdDxjb25zdCB0eXBl
bmFtZSBPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNv
ZGVTaXplOjpOYXJyb3c+OjpvcGNvZGVUeXBlKj4oc3RyZWFtKVstMV0pID09IG9wY29kZUlEKTsK
ICAgICB9CiAKICAgICAje2NhcGl0YWxpemVkX25hbWV9KGNvbnN0IHVpbnQxNl90KiBzdHJlYW0p
CiAgICAgICAgICN7aW5pdC5jYWxsKCJPcGNvZGVTaXplOjpXaWRlMTYiKX0KICAgICB7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0
cmVhbSlbLTFdID09IG9wY29kZUlEKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIHN0
YXRpY19jYXN0PCN7b3Bjb2RlSURUeXBlfT4oYml0d2lzZV9jYXN0PGNvbnN0IHR5cGVuYW1lIE9w
Y29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6
OldpZGUxNj46Om9wY29kZVR5cGUqPihzdHJlYW0pWy0xXSkgPT0gb3Bjb2RlSUQpOwogICAgIH0K
IAogCiAgICAgI3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50MzJfdCogc3RyZWFtKQogICAg
ICAgICAje2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lkZTMyIil9CiAgICAgewotICAgICAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJlYW0p
Wy0xXSA9PSBvcGNvZGVJRCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBzdGF0aWNf
Y2FzdDwje29wY29kZUlEVHlwZX0+KGJpdHdpc2VfY2FzdDxjb25zdCB0eXBlbmFtZSBPcGNvZGVJ
RFdpZHRoQnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRl
MzI+OjpvcGNvZGVUeXBlKj4oc3RyZWFtKVstMV0pID09IG9wY29kZUlEKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgI3tjYXBpdGFsaXplZF9uYW1lfSBkZWNvZGUoY29uc3QgdWludDhfdCogc3RyZWFt
KQogICAgIHsKICAgICAgICAgLy8gQSBwb2ludGVyIGlzIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBv
cGVyYW5kIChvcGNvZGUgYW5kIHByZWZpeCBhcmUgbm90IGluY2x1ZGVkKS4KICAgICAgICAgaWYg
KCpzdHJlYW0gPT0gI3t3aWRlMzJ9KQotICAgICAgICAgICAgcmV0dXJuIHsgYml0d2lzZV9jYXN0
PGNvbnN0IHVpbnQzMl90Kj4oc3RyZWFtICsgMikgfTsKKyAgICAgICAgICAgIHJldHVybiB7IGJp
dHdpc2VfY2FzdDxjb25zdCB1aW50MzJfdCo+KHN0cmVhbSArIC8qIHByZWZpeCAqLyAxICsgT3Bj
b2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6
V2lkZTMyPjo6b3Bjb2RlSURTaXplKSB9OwogICAgICAgICBpZiAoKnN0cmVhbSA9PSAje3dpZGUx
Nn0pCi0gICAgICAgICAgICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihz
dHJlYW0gKyAyKSB9OwotICAgICAgICByZXR1cm4geyBzdHJlYW0gKyAxIH07CisgICAgICAgICAg
ICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzdHJlYW0gKyAvKiBwcmVm
aXggKi8gMSArIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMs
IE9wY29kZVNpemU6OldpZGUxNj46Om9wY29kZUlEU2l6ZSkgfTsKKyAgICAgICAgcmV0dXJuIHsg
c3RyZWFtICsgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywg
T3Bjb2RlU2l6ZTo6TmFycm93Pjo6b3Bjb2RlSURTaXplIH07CiAgICAgfQogRU9GCiAgICAgZW5k
CkBAIC0zNjIsMTggKzM2NywxOSBAQCBFT0YKICAgICBlbmQKIAogICAgIGRlZiBsZW5ndGgKLSAg
ICAgICAgMSArIChAYXJncy5uaWw/ID8gMCA6IEBhcmdzLmxlbmd0aCkgKyAoQG1ldGFkYXRhLmVt
cHR5PyA/IDAgOiAxKQorICAgICAgICAoQGFyZ3MubmlsPyA/IDAgOiBAYXJncy5sZW5ndGgpICsg
KEBtZXRhZGF0YS5lbXB0eT8gPyAwIDogMSkKICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmR1bXBf
Ynl0ZWNvZGUobmFtZSwgb3Bjb2RlX3RyYWl0cywgb3Bjb2RlcykKKyAgICAgICAgdHlwZV9wcmVm
aXggPSAob3Bjb2RlX3RyYWl0cyA9PSA6SlNPcGNvZGVUcmFpdHMgPyAiSlMiIDogKG9wY29kZV90
cmFpdHMgPT0gOldhc21PcGNvZGVUcmFpdHMgPyAiV2FzbSIgOiAiRXJyb3Ije29wY29kZV90cmFp
dHN9IikpCiAgICAgICAgIDw8LUVPRi5jaG9tcAotdm9pZCBkdW1wI3tuYW1lfShCeXRlY29kZUR1
bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBfX2xvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiogX19pbnN0cnVjdGlvbikKK3ZvaWQgZHVtcCN7bmFtZX0oQnl0ZWNv
ZGVEdW1wZXJCYXNlPCN7dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rpb25TdHJlYW0+KiBkdW1wZXIsICN7
dHlwZV9wcmVmaXh9SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBfX2xvY2F0aW9uLCBjb25zdCAj
e3R5cGVfcHJlZml4fUluc3RydWN0aW9uKiBfX2luc3RydWN0aW9uKQogewotICAgIHN3aXRjaCAo
X19pbnN0cnVjdGlvbi0+b3Bjb2RlSUQ8I3tvcGNvZGVfdHJhaXRzfT4oKSkgeworICAgIHN3aXRj
aCAoX19pbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI3tvcGNvZGVzLm1hcCB7IHxvcHwKICAg
ICAgICAgPDwtRU9GLmNob21wCiAgICAgY2FzZSAje29wLm5hbWV9OgotICAgICAgICBfX2luc3Ry
dWN0aW9uLT5hczwje29wLmNhcGl0YWxpemVkX25hbWV9LCAje29wY29kZV90cmFpdHN9PigpLmR1
bXAoZHVtcGVyLCBfX2xvY2F0aW9uLCBfX2luc3RydWN0aW9uLT5zaXplU2hpZnRBbW91bnQ8I3tv
cGNvZGVfdHJhaXRzfT4oKSk7CisgICAgICAgIF9faW5zdHJ1Y3Rpb24tPmFzPCN7b3AuY2FwaXRh
bGl6ZWRfbmFtZX0+KCkuZHVtcChkdW1wZXIsIF9fbG9jYXRpb24sIF9faW5zdHJ1Y3Rpb24tPnNp
emVTaGlmdEFtb3VudCgpKTsKICAgICAgICAgYnJlYWs7CiBFT0YKICAgICB9LmpvaW4gIlxuIn0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBD
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCmluZGV4
IDc5NWRhNTI0YTYzZjc0OTEyMDg0YjJjZTFhOTk1YTkwNWIxMDRmMGMuLmMzMTljNzg2YThiZTY0
NDIzNzIwZjgwZDRiOTY2NDgxMzA5NDIzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0Fic3RyYWN0UEMuaApAQCAtMzEsNyArMzEsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAK
IGNsYXNzIEFic3RyYWN0UEMgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCA5ZWRmNTliOTY4NmE1YWQ2Y2VhODM4M2Y3
NDMzMzM2MGExOWM2ZDQxLi5hNjE4M2IwZDcyNGY5ZmNkZmU1NDJkNDJlOWYxYWQ2NmM3MWMxODM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNw
cApAQCAtMTA4LDEzICsxMDgsMTMgQEAgU1VQUFJFU1NfQVNBTiBDYWxsU2l0ZUluZGV4IENhbGxG
cmFtZTo6dW5zYWZlQ2FsbFNpdGVJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIENhbGxTaXRlSW5k
ZXg6OmZyb21CaXRzKHVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzKCkpOwogfQogCi1jb25zdCBJbnN0
cnVjdGlvbiogQ2FsbEZyYW1lOjpjdXJyZW50VlBDKCkgY29uc3QKK2NvbnN0IEpTSW5zdHJ1Y3Rp
b24qIENhbGxGcmFtZTo6Y3VycmVudFZQQygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNhbGxTaXRl
Qml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkpOwogICAgIHJldHVybiBjb2RlQmxvY2soKS0+aW5zdHJ1
Y3Rpb25zKCkuYXQoY2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCgpKS5wdHIoKTsKIH0KIAot
dm9pZCBDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZwYykKK3Zv
aWQgQ2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHZwYykKIHsK
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKGNvZGVCbG9jaygpLT5ieXRlY29kZUluZGV4KHZw
YykpOwogICAgIHRoaXNbc3RhdGljX2Nhc3Q8aW50PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyldLnRhZygpID0gY2FsbFNpdGUuYml0cygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IDg4Mjk5ZjQ0ZDZlMGUx
OTM4N2E2YTljZjc3NGY1MDcxMmFiMDAyYjQuLjQxOWVmYjM2YTQwOTVkYmUxYzhhMjA0NjEyNWU4
YzVjNzgyZjMzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmgKQEAgLTQwLDggKzQwLDYgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgIGNsYXNzIFNv
dXJjZU9yaWdpbjsKICAgICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAKLSAgICBzdHJ1Y3QgSW5z
dHJ1Y3Rpb247Ci0KICAgICBjbGFzcyBDYWxsU2l0ZUluZGV4IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIENhbGxTaXRlSW5kZXgoKSA9IGRlZmF1bHQ7CkBAIC0xOTksOSArMTk3LDkgQEAgbmFtZXNw
YWNlIEpTQyAgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb2RlT3JpZ2luIGNvZGVPcmln
aW4oKSBjb25zdDsKIAogICAgICAgICBpbmxpbmUgUmVnaXN0ZXIqIHRvcE9mRnJhbWUoKTsKLSAg
ICAKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdDsgLy8gVGhp
cyBvbmx5IG1ha2VzIHNlbnNlIGluIHRoZSBMTEludCBhbmQgYmFzZWxpbmUuCi0gICAgICAgIHZv
aWQgc2V0Q3VycmVudFZQQyhjb25zdCBJbnN0cnVjdGlvbiopOworCisgICAgICAgIGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdDsgLy8gVGhpcyBvbmx5IG1ha2VzIHNlbnNl
IGluIHRoZSBMTEludCBhbmQgYmFzZWxpbmUuCisgICAgICAgIHZvaWQgc2V0Q3VycmVudFZQQyhj
b25zdCBKU0luc3RydWN0aW9uKik7CiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxs
RnJhbWUqIGZyYW1lKSB7IGNhbGxlckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZSA9IGZyYW1lOyB9
CiAgICAgICAgIGlubGluZSB2b2lkIHNldFNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0LCBK
U1Njb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCAzNjIwMmRjYjVlOTNiZjVhMDVjYmE2NjQ5NDk4YzdjMzM5NjM4M2Nl
Li5lZDY4OTUyZjZkNmVhZWNiNTA5MTIwOTA3Y2Y1ZGEwOTUzMWIxNzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxNyw5
ICs1MTcsOSBAQCBDYXRjaEluZm86OkNhdGNoSW5mbyhjb25zdCBIYW5kbGVySW5mbyogaGFuZGxl
ciwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIC8vIGFuZCBjYW4gY2F1c2UgYW4gb3Zl
cmZsb3cuIE9TUiBleGl0IHByb3Blcmx5IGV4aXRzIHRvIGhhbmRsZXItPnRhcmdldAogICAgICAg
ICAvLyBpbiB0aGUgcHJvcGVyIGZyYW1lLgogICAgICAgICBpZiAoIUpJVENvZGU6OmlzT3B0aW1p
emluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpCi0gICAgICAgICAgICBtX2NhdGNoUENGb3JJ
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+dGFyZ2V0
KS5wdHIoKTsKKyAgICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0geyBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmF0KGhhbmRsZXItPnRhcmdldCkucHRyKCkgfTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBudWxscHRyOworICAg
ICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSB7IHN0YXRpY19jYXN0PEpTSW5zdHJ1
Y3Rpb24qPihudWxscHRyKSB9OwogICAgIH0KIH0KIApAQCAtNTMxLDkgKzUzMSw5IEBAIENhdGNo
SW5mbzo6Q2F0Y2hJbmZvKGNvbnN0IFdhc206OkhhbmRsZXJJbmZvKiBoYW5kbGVyLCBjb25zdCBX
YXNtOjpDYWxsZWUqIGNhbGxlCiAgICAgICAgIG1fdHlwZSA9IEhhbmRsZXJUeXBlOjpDYXRjaDsK
ICAgICAgICAgbV9uYXRpdmVDb2RlID0gaGFuZGxlci0+bV9uYXRpdmVDb2RlOwogICAgICAgICBp
ZiAoY2FsbGVlLT5jb21waWxhdGlvbk1vZGUoKSA9PSBXYXNtOjpDb21waWxhdGlvbk1vZGU6OkxM
SW50TW9kZSkKLSAgICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgV2FzbTo6TExJbnRDYWxsZWUqPihjYWxsZWUpLT5pbnN0cnVjdGlvbnMoKS5hdCho
YW5kbGVyLT5tX3RhcmdldCkucHRyKCk7CisgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnBy
ZXRlciA9IHsgc3RhdGljX2Nhc3Q8Y29uc3QgV2FzbTo6TExJbnRDYWxsZWUqPihjYWxsZWUpLT5p
bnN0cnVjdGlvbnMoKS5hdChoYW5kbGVyLT5tX3RhcmdldCkucHRyKCkgfTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBudWxscHRyOworICAgICAg
ICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSB7IHN0YXRpY19jYXN0PFdhc21JbnN0cnVj
dGlvbio+KG51bGxwdHIpIH07CiAgICAgfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IGU2NDY0NjU2NzlmMjFkMTNk
MzQ0Y2Q2ODgyMzkxNzA3NmZjY2FhMTEuLjYyYmEwMDE5MmU2MjNmMjhlYjZiOGE5MjgzYTk2Mjk5
Zjg5MTI5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNs
dWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgorI2luY2x1ZGUgPHZh
cmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogI2lmIEVOQUJMRShDX0xPT1ApCkBA
IC02OCw3ICs2OSw2IEBAIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBlbnVtIGNsYXNzIEhhbmRs
ZXJUeXBlIDogdWludDhfdDsKICAgICBzdHJ1Y3QgQ2FsbEZyYW1lQ2xvc3VyZTsKICAgICBzdHJ1
Y3QgSGFuZGxlckluZm87Ci0gICAgc3RydWN0IEluc3RydWN0aW9uOwogICAgIHN0cnVjdCBQcm90
b0NhbGxGcmFtZTsKIAogICAgIGVudW0gRGVidWdIb29rVHlwZSB7CkBAIC0xMDIsNyArMTAyLDgg
QEAgc3RydWN0IEhhbmRsZXJJbmZvOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBtX25hdGl2ZUNvZGU7CiAjZW5k
aWYKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyOwor
CisgICAgICAgIHN0ZDo6dmFyaWFudDxjb25zdCBKU0luc3RydWN0aW9uKiwgY29uc3QgV2FzbUlu
c3RydWN0aW9uKj4gbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CiAgICAgfTsKIAogICAgIGNsYXNz
IEludGVycHJldGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1MTViNzk2Yjhh
YjM4OTdmZmFkOTgyMmIwNDI1ZWVjYmIwNTRlMDU0Li5lOWMwZWNjMzBlYWNjNjhjNTU5ZjhhYzQ2
M2UxMDYyMjMxZGRlYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNTIsNyAr
MjUyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogCiAgICAgICAgIGlm
IChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRl
Y29kZU1haW5QYXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7Ci0gICAgICAg
IGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQo
bV9ieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICAgICAgY29uc3QgYXV0byogY3VycmVudEluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgICAg
IEFTU0VSVChjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CiAKICAgICAgICAgbV9wY1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgpLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCkpOwpAQCAtNTUxLDggKzU1MSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAKICAgICAgICAgQnl0ZWNvZGVJbmRleCBmaXJzdFRvID0gbV9ieXRlY29kZUlu
ZGV4OwogCi0gICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBt
X3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0
cigpOwotICAgICAgICAKKyAgICAgICAgY29uc3QgYXV0byogY3VycmVudEluc3RydWN0aW9uID0g
bV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZUluZGV4KS5w
dHIoKTsKKwogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNv
ZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IGMyNjVjY2MwNDc5ODdiZjljNzc0Nzg4MjQxYmUwNzIxYTBhNjVk
MWUuLmI4ZmRhNWQxYjQzMTVlOWY3ZDcwNGM0NmFhYTVhNWIxYmIwMzQ0ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtNjYsNyArNjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgU3RydWN0dXJlQ2hhaW47CiAgICAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLSAgICBz
dHJ1Y3QgSW5zdHJ1Y3Rpb247CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCYXNlSW5z
dHJ1Y3Rpb247CisgICAgc3RydWN0IEpTT3Bjb2RlVHJhaXRzOworICAgIHVzaW5nIEpTSW5zdHJ1
Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OworCiAgICAgc3RydWN0IE9w
ZXJhbmRUeXBlczsKICAgICBzdHJ1Y3QgU2ltcGxlSnVtcFRhYmxlOwogICAgIHN0cnVjdCBTdHJp
bmdKdW1wVGFibGU7CkBAIC0yODksOSArMjkyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdEp1bXBTbG93VG9Ib3QoSnVtcCwgaW50KTsKIAogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOworICAgICAgICB2b2lkIGNvbXBpbGVPcENh
bGwoY29uc3QgSlNJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KTsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbFNs
b3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYsIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KTsKKyAgICAgICAgdm9pZCBjb21waWxlT3BD
YWxsU2xvd0Nhc2UoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CkBAIC0zMDksMTMgKzMx
MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBjb21waWxlVGFpbENhbGwoY29u
c3QgT3AmLCBVbmxpbmtlZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4
KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIGJvb2wgY29tcGlsZUNh
bGxFdmFsKGNvbnN0IE9wJik7Ci0gICAgICAgIHZvaWQgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Cisg
ICAgICAgIHZvaWQgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSlNJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+CiAgICAgICAgIHZvaWQgZW1pdFB1dENhbGxSZXN1bHQoY29uc3QgT3AmKTsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPiB2b2lkIGNv
bXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPiB2b2lkIGNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4gdm9pZCBjb21waWxlT3BTdHJpY3RFcShj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPiB2b2lk
IGNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBKU0luc3RydWN0aW9uKik7CiAjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgICAgICB2b2lkIGNvbXBpbGVPcEVxQ29tbW9uKFZpcnR1YWxSZWdp
c3RlciBzcmMxLCBWaXJ0dWFsUmVnaXN0ZXIgc3JjMik7CiAgICAgICAgIHZvaWQgY29tcGlsZU9w
RXFTbG93Q29tbW9uKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTM3NSwy
NTcgKzM3OCwyNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKEpTVmFsdWVSZWdzLCBWaXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXAo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAgICAgICAgdm9pZCBl
bWl0X2NvbXBhcmVBbmRKdW1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKICAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wSW1wbChWaXJ0dWFsUmVnaXN0
ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxD
b25kaXRpb24pOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBl
bWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRp
b24pOworICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVVbnNp
Z25lZEltcGwoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVh
bFJlZ2lzdGVyIG9wMiwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcChjb25z
dCBJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOworICAgICAgICB2b2lkIGVtaXRf
Y29tcGFyZVVuc2lnbmVkQW5kSnVtcChjb25zdCBKU0luc3RydWN0aW9uKiwgUmVsYXRpb25hbENv
bmRpdGlvbik7CiAgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wSW1wbChW
aXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCB1bnNpZ25lZCB0YXJnZXQs
IFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlw
ZW5hbWUgU2xvd09wZXJhdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dyhjb25zdCBJbnN0cnVjdGlvbiosIERvdWJsZUNvbmRpdGlvbiwgU2xvd09wZXJhdGlvbiwgYm9v
bCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCBKU0luc3RydWN0aW9uKiwgRG91YmxlQ29u
ZGl0aW9uLCBTbG93T3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTbG93T3BlcmF0aW9uPgog
ICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93SW1wbChWaXJ0dWFsUmVnaXN0ZXIg
b3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIHNpemVfdCBpbnN0cnVj
dGlvblNpemUsIERvdWJsZUNvbmRpdGlvbiwgU2xvd09wZXJhdGlvbiwgYm9vbCBpbnZlcnQsIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgCisKICAgICAgICAgdm9p
ZCBhc3NlcnRTdGFja1BvaW50ZXJPZmZzZXQoKTsKIAotICAgICAgICB2b2lkIGVtaXRfb3BfYWRk
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iaXRhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JpdG9yKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iaXR4b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2JpdG5vdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfdGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9jYWxsX2V2YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Nh
bGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdGFp
bF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYXJndW1lbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Fy
Z3VtZW50X2NvdW50KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfcmVzdF9sZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2NoZWNrX3Rkeihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaWRl
bnRpdHlfd2l0aF9wcm9maWxlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2JlbG93KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9iZWxvd2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90cnlf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9p
ZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FkZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9iaXRhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfYml0b3IoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfYml0eG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2JpdG5vdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jYWxs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbChj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsX2V2YWwoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF92YXJhcmdzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF92YXJh
cmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9jYXRjaChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9jb25zdHJ1Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfdG9fdGhpcyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfYXJndW1lbnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfYXJndW1lbnRfY291bnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2NoZWNrX3Rkeihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV92
YWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9lbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VxX251bGwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3coY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3dlcShjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3Zh
bChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3NldF9w
cml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2VtcHR5KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZpbmVk
X29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNf
Ym9vbGVhbihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19u
dW1iZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAg
dm9pZCBlbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogI2Vsc2UKLSAgICAg
ICAgTk9fUkVUVVJOIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIE5PX1JFVFVSTiB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CiAjZW5kaWYKLSAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVjdChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2plcV9udWxsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2ptcChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2pudW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2plcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
amdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pncmVh
dGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pubGVzcyhj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5sZXNzZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2puZ3JlYXRlcihjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9qYmVsb3coY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pi
ZWxvd2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qdHJ1ZShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9oaW50KGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190cmFwcyhjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfbm9wKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2luKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbHNoaWZ0KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfbW92KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9t
dWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25lZ2F0ZShjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmVxKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19nZW5lcmF0
b3JfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Fz
eW5jX2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uc3RyaWN0
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2RlYyhjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaW5jKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVjdChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZmFsc2UoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2puZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfcHRyKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2puZXFfcHRyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2psZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2psZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfamdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfamdyZWF0ZXJlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9qbmxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3Bfam5sZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfam5ncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2plcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pzdHJpY3RlcShjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2piZWxvdyhjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qYmVsb3dlcShjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qdHJ1ZShjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdHJhcHMoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfbm9wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4oY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbHNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9wb3coY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbW92KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X211bChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZWdhdGUo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmVxKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25lcV9udWxsKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheShjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfYXN5bmNfZnVuYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfYXN5bmNfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHAoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25vdChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfZGVjKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2luYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3BhcmVudF9zY29wZShjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiop
OwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcmV0KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3Bfc3dpdGNoX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfdGVhcl9vZmZfYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF90aHJvdyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfdG9fbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90
b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19z
dHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX29iamVj
dChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fcHJpbWl0aXZl
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF91bmV4cGVjdGVkX2xv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Vuc2lnbmVkKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF91cnNoaWZ0KGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9pbnRlcm5hbF9maWVs
ZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbG9nX3NoYWRvd19j
aGlja2VuX3Byb2xvZ3VlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lk
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJf
YnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9z
ZXR0ZXJfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3JldChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yc2hpZnQo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X2Z1bmN0aW9u
X25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc3RyaWN0
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc3ViKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9pbW0oY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX3N0cmluZyhjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVu
dHMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdGhyb3coY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdG9fbnVtYmVyKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWVyaWMoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RvX29iamVjdChjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdW5leHBlY3RlZF9sb2FkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Vyc2hpZnQoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9pbnRlcm5hbF9maWVs
ZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
IAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlPgogICAgICAgICB2b2lkIGdl
bmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogCi0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW51
bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9l
bnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlLCB0eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9u
VHlwZT4KICAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25z
dCBPcGNvZGVUeXBlJiwgU2xvd1BhdGhGdW5jdGlvblR5cGUpOwotICAgICAgICB2b2lkIGVtaXRf
b3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiop
OwotCi0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9lcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfY2FsbGVl
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9o
YXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3df
b3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9qZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZ3JlYXRlcmVxKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2pubGVzcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3Nl
cShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3df
b3Bfam5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9o
aW50KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLQotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRz
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3Bl
cnR5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Fk
ZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF90YWlsX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX2V2YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90
YWlsX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdz
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfY2FsbGVlKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dl
dF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29u
c3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5f
YnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFz
X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVz
c2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9qZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNzKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9q
bmdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXJlcShjb25zdCBKU0lu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9q
bnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tb2Qo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wb3coY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9t
dWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSlNJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9zdWIoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9z
Y29wZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9f
c2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zy
b21fYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF90b19hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CiAKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
aXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVu
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdm9p
ZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSk7CiAgICAgICAg
IHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUpOwogCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSlNJbnN0cnVj
dGlvbiopOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY0V4cHJDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY0V4cHJDb21tb24oY29uc3QgSlNJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCBHUFJSZWcp
OwogICAgICAgICB2b2lkIGVtaXRWYXJSZWFkT25seUNoZWNrKFJlc29sdmVUeXBlLCBHUFJSZWcg
c2NyYXRjaEdQUik7CiAgICAgICAgIHZvaWQgZW1pdE5vdGlmeVdyaXRlV2F0Y2hwb2ludChHUFJS
ZWcgcG9pbnRlclRvU2V0KTsKQEAgLTY0MywxNCArNjQ2LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50Q2hhcihWaXJ0dWFsUmVnaXN0ZXIpOwogCiAg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFt
ZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Qcm9maWxlZEZ1bmN0aW9uPgotICAgICAg
ICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBJ
bnN0cnVjdGlvbiosIFByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24pOworICAg
ICAgICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25z
dCBKU0luc3RydWN0aW9uKiwgUHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbik7
CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBl
bmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Qcm9maWxlZEZ1bmN0aW9uPgotICAg
ICAgICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29u
c3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uKTsK
KyAgICAgICAgdm9pZCBlbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPios
IGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0
aW9uKTsKIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRv
ciwgdHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5cGVuYW1lIFByb2ZpbGVkRnVu
Y3Rpb24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0TWF0aElD
U2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJv
ZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7
CisgICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4q
LCBjb25zdCBKU0luc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVk
RnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBP
cCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwg
dHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9uPgotICAg
ICAgICB2b2lkIGVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25z
dCBJbnN0cnVjdGlvbiosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9u
LCBSZXBhdGNoRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5
TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBKU0luc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBhdGNo
RnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7CiAKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHJldHVybkZyb21CYXNlbGluZUdlbmVyYXRvcihWTSYpOwpAQCAtODMyLDEyICs4MzUsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3I+Ci0gICAgICAgIHZvaWQgZW1pdEJpdEJpbmFy
eU9wRmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmls
aW5nUG9saWN5IHNob3VsZEVtaXRQcm9maWxpbmcgPSBQcm9maWxpbmdQb2xpY3k6Ok5vUHJvZmls
aW5nKTsKKyAgICAgICAgdm9pZCBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBzaG91bGRFbWl0UHJv
ZmlsaW5nID0gUHJvZmlsaW5nUG9saWN5OjpOb1Byb2ZpbGluZyk7CiAKLSAgICAgICAgdm9pZCBl
bWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIE9wY29kZUlEKTsKKyAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQpOwogCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdl
bmVyYXRvcjo6U2hpZnRUeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdEZhc3RQYXRo
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdl
bmVyYXRvcjo6U2hpZnRUeXBlKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZVRvcENhbGxGcmFtZSgp
OwogCkBAIC04NDgsOCArODUxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIExvYWRz
IHRoZSBjaGFyYWN0ZXIgdmFsdWUgb2YgYSBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZyBpbnRvIGRz
dC4KICAgICAgICAgdm9pZCBlbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcyk7CiAKLSAgICAgICAgaW50IGp1bXBU
YXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgdGFyZ2V0KTsKLSAgICAgICAgCisgICAgICAg
IGludCBqdW1wVGFyZ2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBpbnQgdGFyZ2V0KTsKKwogI2lm
IEVOQUJMRShERkdfSklUKQogICAgICAgICB2b2lkIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNr
KCk7CiAjZWxzZQpAQCAtOTQ1LDggKzk0OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQ
Q1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4gbV9wY1RvQ29kZU9yaWdpbk1h
cDsKIAotICAgICAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0aW9uKiwgdm9pZCo+IG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQzsKLSAgICAgICAgSGFzaE1hcDxjb25zdCBJbnN0cnVjdGlvbiosIFVuaXF1
ZVJlZjxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+PiBtX2luc3RydWN0aW9uVG9NYXRoSUNHZW5lcmF0
aW9uU3RhdGU7CisgICAgICAgIEhhc2hNYXA8Y29uc3QgSlNJbnN0cnVjdGlvbiosIHZvaWQqPiBt
X2luc3RydWN0aW9uVG9NYXRoSUM7CisgICAgICAgIEhhc2hNYXA8Y29uc3QgSlNJbnN0cnVjdGlv
biosIFVuaXF1ZVJlZjxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+PiBtX2luc3RydWN0aW9uVG9NYXRo
SUNHZW5lcmF0aW9uU3RhdGU7CiAKICAgICAgICAgYm9vbCBtX2NhbkJlT3B0aW1pemVkOwogICAg
ICAgICBib29sIG1fc2hvdWxkRW1pdFByb2ZpbGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IGY0MjYwNzRmNDViYWY0ZmM2MGM4NTI4NWQwZGZj
YjBjMWE3NTVlYzkuLjA1Mzc3YjgyMDU4MWVhYmZhZTgyOWVmNGY1Y2IwODIwMTkxNWEzMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDQsMTA3
ICs0NCwxMDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX2psZXNz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qbGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
ZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpsZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIExlc3NUaGFu
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3NlcShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxP
cEpsZXNzZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgTGVzc1RoYW5PckVxdWFsKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmdyZWF0ZXI+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRlclRoYW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9qZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmdyZWF0ZXJlcT4oY3VycmVu
dEluc3RydWN0aW9uLCBHcmVhdGVyVGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2pubGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpubGVzcz4oY3VycmVudEluc3RydWN0aW9u
LCBHcmVhdGVyVGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3NlcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
am5sZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9uLCBHcmVh
dGVyVGhhbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZ3JlYXRlcihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBh
cmVBbmRKdW1wPE9wSm5ncmVhdGVyPihjdXJyZW50SW5zdHJ1Y3Rpb24sIExlc3NUaGFuT3JFcXVh
bCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJl
QW5kSnVtcDxPcEpuZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIExlc3NUaGFuKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2psZXNzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVt
aXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSmxlc3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91Ymxl
TGVzc1RoYW5BbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlTGVzcywgZmFsc2UsIGl0ZXIpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2psZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9u
LCBEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlTGVzc0Vx
LCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpncmVhdGVy
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZCwgb3BlcmF0
aW9uQ29tcGFyZUdyZWF0ZXIsIGZhbHNlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2pncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVB
bmRKdW1wU2xvdzxPcEpncmVhdGVyZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlR3JlYXRl
clRoYW5PckVxdWFsQW5kT3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXJFcSwgZmFsc2Us
IGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpubGVzcz4oY3VycmVudEluc3Ry
dWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZCwgb3BlcmF0aW9uQ29t
cGFyZUxlc3MsIHRydWUsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNz
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmxlc3NlcShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BK
bmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVk
LCBvcGVyYXRpb25Db21wYXJlTGVzc0VxLCB0cnVlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2puZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2puZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21w
YXJlQW5kSnVtcFNsb3c8T3BKbmdyZWF0ZXI+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlTGVz
c1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyLCB0cnVlLCBp
dGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSm5ncmVhdGVyZXE+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCwgb3BlcmF0aW9u
Q29tcGFyZUdyZWF0ZXJFcSwgdHJ1ZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2Jl
bG93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9iZWxvdyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgZW1pdF9jb21wYXJlVW5zaWduZWQ8T3BCZWxvdz4oY3VycmVudEluc3RydWN0aW9uLCBCZWxv
dyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JlbG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JlbG93ZXEoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZVVuc2lnbmVk
PE9wQmVsb3dlcT4oY3VycmVudEluc3RydWN0aW9uLCBCZWxvd09yRXF1YWwpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9qYmVsb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2piZWxvdyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wPE9wSmJlbG93
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamJl
bG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2piZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXA8T3BKYmVsb3dlcT4oY3VycmVudElu
c3RydWN0aW9uLCBCZWxvd09yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF91bnNpZ25l
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfdW5zaWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVW5zaWduZWQ+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6
OmVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmRpdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKQEAgLTIxOCw3ICsyMTgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcEltcGwoVmlydHVhbFJlZ2lzdGVyIG9w
MSwgVmlydHVhbFJlZ2lzdGVyIG9wMiwgdW5zaQogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
dm9pZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQordm9pZCBKSVQ6OmVt
aXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AxID0gYnl0ZWNv
ZGUubV9saHM7CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2ln
bmVkQW5kSnVtcEltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lzdGVyIG8KIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRp
dGlvbikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBKU0luc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZVVuc2lnbmVkSW1wbChWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIg
b3AxLCBWaXIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIFNsb3dPcGVyYXRp
b24+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBEb3VibGVDb25kaXRpb24gY29uZGl0aW9uLCBTbG93T3BlcmF0aW9uIG9w
ZXJhdGlvbiwgYm9vbCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29uc3QgSlNJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIERvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24sIFNsb3dPcGVyYXRpb24g
b3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKQEAgLTM5MCw3ICszOTAsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3dJbXBsKFZpcnR1YWxSZWdpc3RlciBv
cDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsCiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVz
dDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2luYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEluYz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjRHN0ID0gYnl0ZWNvZGUubV9z
cmNEc3Q7CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihzcmNEc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZGVjKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWMoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVjPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBzcmNEc3QgPSBieXRlY29kZS5tX3NyY0RzdDsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
I2lmIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE1vZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC00NTEsNyArNDUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihyZXN1bHQsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKQEAgLTQ2MSwxMyArNDYxLDEzIEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpCiAKICNlbHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChj
b25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSlNJbnN0cnVj
dGlvbiopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3Bh
dGhfbW9kKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKIH0KQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQ6IE9QX01PRCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcG93KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wb3co
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUG93PigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGkKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZtX3Vu
bGlua2VkQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wTmVnYXRlPigpLm1fcHJvZmlsZUluZGV4KTsKICAgICBKSVROZWdJQyogbmVnYXRlSUMgPSBt
X21hdGhJQ3MuYWRkSklUTmVnSUMoYXJpdGhQcm9maWxlKTsKQEAgLTUzOSw3ICs1MzksNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdh
dGUpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC01NDksNyArNTQ5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0MKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1l
IFNuaXBwZXRHZW5lcmF0b3I+Ci12b2lkIEpJVDo6ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5IHByb2Zp
bGluZ1BvbGljeSkKK3ZvaWQgSklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBwcm9maWxpbmdQ
b2xpY3kpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNTg5
LDcgKzU4OSw3IEBAIHZvaWQgSklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpCiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcExpc3QoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdG5vdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0
bm90KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEJpdG5vdD4oKTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC02MDgsMjcgKzYwOCwyNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRub3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iaXRhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JpdGFuZChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGg8T3BC
aXRhbmQsIEpJVEJpdEFuZEdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQ
b2xpY3k6OlNob3VsZEVtaXRQcm9maWxpbmcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iaXRv
cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfYml0b3IoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoPE9wQml0b3IsIEpJVEJpdE9yR2VuZXJhdG9yPihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeTo6U2hvdWxkRW1pdFByb2ZpbGluZyk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdHhvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0eG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxPcEJp
dHhvciwgSklUQml0WG9yR2VuZXJhdG9yPihjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1Bv
bGljeTo6U2hvdWxkRW1pdFByb2ZpbGluZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xzaGlm
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbHNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxPcExzaGlmdCwgSklUTGVmdFNoaWZ0R2VuZXJhdG9y
PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRGYXN0
UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCBvcGNv
ZGVJRCkKK3ZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CiAgICAgQVNTRVJU
KG9wY29kZUlEID09IG9wX3JzaGlmdCB8fCBvcGNvZGVJRCA9PSBvcF91cnNoaWZ0KTsKICAgICBz
d2l0Y2ggKG9wY29kZUlEKSB7CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBKSVQ6OmVtaXRSaWdo
dFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bj
b2RlSUQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdFJpZ2h0U2hp
ZnRGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdo
dFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5cGUgc25pcHBldFNoaWZ0VHlwZSkKK3ZvaWQgSklUOjpl
bWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6U2hpZnRUeXBlIHNuaXBwZXRTaGlmdFR5cGUp
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNjgyLDE3ICs2
ODIsMTcgQEAgdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHQKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wTGlzdCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcnNoaWZ0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9yc2hpZnQo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRSaWdo
dFNoaWZ0RmFzdFBhdGgoY3VycmVudEluc3RydWN0aW9uLCBvcF9yc2hpZnQpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BfdXJzaGlmdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2FkZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYWRkKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZtX3VubGlua2VkQ29kZUJsb2NrLT5iaW5hcnlBcml0
aFByb2ZpbGUoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEFkZD4oKS5tX3Byb2ZpbGVJbmRleCk7
CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9tYXRoSUNzLmFkZEpJVEFkZElDKGFyaXRoUHJvZmls
ZSk7CkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFk
ZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQsIG9wZXJh
dGlvblZhbHVlQWRkKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNzA5LDcgKzcwOSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlw
ZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Q
cm9maWxlZEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElD
PEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9u
IG5vblByb2ZpbGVkRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRG
dW5jdGlvbiBub25Qcm9maWxlZEZ1bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBi
eXRlY29kZS5tX2RzdDsKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zh
c3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiog
YwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KLXZvaWQg
SklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHBy
b2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikK
K3ZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0
aElDLCBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVu
Y3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1
bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTgy
Miw3ICs4MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5j
dGlvbiwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9u
Pgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRSZXBh
dGNoRnVuY3Rpb24gcHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJv
ZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uIHJlcGF0Y2hGdW5jdGlvbikKK3ZvaWQgSklU
OjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRSZXBhdGNoRnVuY3Rp
b24gcHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5j
dGlvbiwgUmVwYXRjaEZ1bmN0aW9uIHJlcGF0Y2hGdW5jdGlvbikKIHsKICAgICBNYXRoSUNHZW5l
cmF0aW9uU3RhdGUmIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSA9IG1faW5zdHJ1Y3Rpb25Ub01hdGhJ
Q0dlbmVyYXRpb25TdGF0ZS5maW5kKGN1cnJlbnRJbnN0cnVjdGlvbiktPnZhbHVlLmdldCgpOwog
ICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKQEAgLTg2
NSw3ICs4NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2Vu
ZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogYwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVu
Y3Rpb24sIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlv
bj4KLXZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiog
bWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZFJl
cGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBw
cm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVwYXRjaEZ1bmN0aW9uKQordm9pZCBK
SVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRSZXBhdGNoRnVu
Y3Rpb24gcHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRG
dW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uIHJlcGF0Y2hGdW5jdGlvbikKIHsKICAgICBNYXRoSUNH
ZW5lcmF0aW9uU3RhdGUmIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSA9IG1faW5zdHJ1Y3Rpb25Ub01h
dGhJQ0dlbmVyYXRpb25TdGF0ZS5maW5kKGN1cnJlbnRJbnN0cnVjdGlvbiktPnZhbHVlLmdldCgp
OwogICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKQEAg
LTkyNSw3ICs5MjUsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElD
PEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgfSk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cERpdj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBA
IC05ODMsNyArOTgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9tdWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X211bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmbV91bmxpbmtlZENvZGVCbG9jay0+Ymlu
YXJ5QXJpdGhQcm9maWxlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubV9wcm9maWxl
SW5kZXgpOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1fbWF0aElDcy5hZGRKSVRNdWxJQyhhcml0
aFByb2ZpbGUpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX211bChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRNYXRoSUNGYXN0PE9w
TXVsPihtdWxJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
LCBvcGVyYXRpb25WYWx1ZU11bCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTk5OSw3ICs5
OTksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIGVtaXRNYXRoSUNTbG93PE9wTXVs
PihtdWxJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0
aW1pemUsIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1p
emUpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3N1Yihjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSAmbV91bmxpbmtlZENvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlKGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BTdWI+KCkubV9wcm9maWxlSW5kZXgpOwogICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1fbWF0aElDcy5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwpAQCAtMTAwNyw3ICsx
MDA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3N1Yihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
aW5kZXggYzY4ZTQ3ZWU5Yzg4YjE2ZTgxNjE0ZmRjOGRjYTBjNjBjNDJjMjg5Ny4uODk5ODA4NzJk
MmI3Mjc3NGM2OTU2YjM5MTE5MmU4NzE4MWIzN2U5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lk
IEpJVDo6ZW1pdF9vcF9yZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX3JldChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIGNh
bGxGcmFtZVJlZ2lzdGVyKSk7CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIEpJVDo6Y29tcGls
ZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2YWwmIGJ5dGVjb2RlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBib29sIEpJVDo6Y29t
cGlsZVRhaWxDYWxsKGNvbnN0IE9wVGFpbENhbGwmIGJ5dGVjb2RlLCBVbmxpbmtlZENhbGxMaW5r
SW5mbyosIHVucwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxl
T3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJ
bmZvSW5kZXgpCit2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcD4oKTsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nh
c2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCB1bnNpZ25lZCkKK3ZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nh
c2UoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVkKQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0g
T3A6Om9wY29kZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7
CkBAIC0zMjUsODcgKzMyNSw4NyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIH0KIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbDxPcENhbGw+KGN1cnJlbnRJbnN0
cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
dGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF90YWlsX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BUYWlsQ2FsbD4oY3VycmVudEluc3RydWN0aW9u
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX2V2
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgY29tcGlsZU9wQ2FsbDxPcENhbGxFdmFsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2Fs
bExpbmtJbmZvSW5kZXgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Nh
bGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgY29tcGlsZU9wQ2FsbDxPcENhbGxWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2Fs
bExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJh
cmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbDxPcFRhaWxDYWxsVmFyYXJncz4oY3VycmVudElu
c3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGls
ZU9wQ2FsbDxPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cz4oY3VycmVudEluc3RydWN0aW9uLCBt
X2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3Rf
dmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2NvbnN0cnVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wQ29uc3RydWN0PihjdXJyZW50SW5z
dHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2Fs
bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9w
Q2FsbD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbD4oY3VycmVudEluc3RydWN0
aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY2FsbF9ldmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxlQ2FsbEV2
YWxTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21w
aWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVy
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFp
bF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGls
ZU9wQ2FsbFNsb3dDYXNlPE9wVGFpbENhbGxWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0
ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcFRhaWxDYWxsRm9yd2FyZEFy
Z3VtZW50cz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4Kysp
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3Ry
dWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRv
ck9wZW4+KCk7CiAgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CkBAIC00NTks
NyArNDU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgZmFzdENhc2UubGluayh0aGlzKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKIApAQCAtNTA3LDcgKzUw
Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcEl0ZXJhdG9yTmV4dD4oKTsKICAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgp
IHsKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAppbmRleCBiODZlOWE0
MTAzYzg1MDZjM2ZkYmJhYzU0ZDdlOTRlNjY2MGFhZDk5Li5mNjM3ZjBiZjkzZWYwODliYzY5M2Rh
ZDUzNThhNjhjMDNjYzZmYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEV4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhj
ZXB0aW9ucy5jcHAKQEAgLTU3LDE4ICs1NywyMiBAQCB2b2lkIGdlbmVyaWNVbndpbmQoVk0mIHZt
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBDYXRjaEluZm8gaGFuZGxlciA9IHZtLmludGVy
cHJldGVyLT51bndpbmQodm0sIGNhbGxGcmFtZSwgZXhjZXB0aW9uKTsgLy8gVGhpcyBtYXkgdXBk
YXRlIGNhbGxGcmFtZS4KIAogICAgIHZvaWQqIGNhdGNoUm91dGluZTsKLSAgICBjb25zdCBJbnN0
cnVjdGlvbiogY2F0Y2hQQ0ZvckludGVycHJldGVyID0gbnVsbHB0cjsKKyAgICBKU09yV2FzbUlu
c3RydWN0aW9uIGNhdGNoUENGb3JJbnRlcnByZXRlciA9IHsgc3RhdGljX2Nhc3Q8SlNJbnN0cnVj
dGlvbio+KG51bGxwdHIpIH07CiAgICAgaWYgKGhhbmRsZXIubV92YWxpZCkgewogICAgICAgICBj
YXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBoYW5kbGVyLm1fY2F0Y2hQQ0ZvckludGVycHJldGVyOwog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIGNhdGNoUm91dGluZSA9IGhhbmRsZXIubV9uYXRpdmVD
b2RlLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAjZWxzZQotICAgICAgICBpZiAoY2F0Y2hQQ0Zvcklu
dGVycHJldGVyLT5pc1dpZGUzMigpKQotICAgICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6
OmdldFdpZGUzMkNvZGVQdHIoY2F0Y2hQQ0ZvckludGVycHJldGVyLT5vcGNvZGVJRCgpKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2F0Y2hQQ0ZvckludGVycHJldGVyLT5pc1dpZGUxNigpKQotICAgICAg
ICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHIoY2F0Y2hQQ0Zvcklu
dGVycHJldGVyLT5vcGNvZGVJRCgpKTsKKyNpZiAhRU5BQkxFKFdFQkFTU0VNQkxZKQorI2Vycm9y
IFdBU00gcmVxdWlyZXMgdGhlIEpJVCwgc28gdGhpcyBzZWN0aW9uIGFzc3VtZXMgd2UgYXJlIGlu
IEpTCisjZW5kaWYKKyAgICAgICAgY29uc3QgYXV0byogcGMgPSBzdGQ6OmdldDxjb25zdCBKU0lu
c3RydWN0aW9uKj4oY2F0Y2hQQ0ZvckludGVycHJldGVyKTsKKyAgICAgICAgaWYgKHBjLT5pc1dp
ZGUzMigpKQorICAgICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6OmdldFdpZGUzMkNvZGVQ
dHIocGMtPm9wY29kZUlEKCkpOworICAgICAgICBlbHNlIGlmIChwYy0+aXNXaWRlMTYoKSkKKyAg
ICAgICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyKHBjLT5vcGNv
ZGVJRCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6
OmdldENvZGVQdHIoY2F0Y2hQQ0ZvckludGVycHJldGVyLT5vcGNvZGVJRCgpKTsKKyAgICAgICAg
ICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRDb2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsKICNl
bmRpZgogICAgIH0gZWxzZQogICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6aGFuZGxlVW5j
YXVnaHRFeGNlcHRpb24odm0pLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAwMmUyZjhhZWEzYzkzNzk3YjRlNWQxMmYz
YmRhMmFiNWIzNDBmNmNkLi5iZmZiMmY0YzMwMzBlZWVlMTRmODkwZWY4MWNhMGUzZTgxOTg3Y2Q2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjIwLDcgKzIyMCw3
IEBAIGlubGluZSBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgSklUOjpmYXN0UGF0aFJlc3VtZVBvaW50
KCkgY29uc3QKICAgICBpZiAoaXRlciAhPSBtX2Zhc3RQYXRoUmVzdW1lTGFiZWxzLmVuZCgpKQog
ICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAgICAgLy8gTmV4dCBpbnN0cnVjdGlvbiBpbiBz
ZXF1ZW5jZQotICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3Vu
bGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigp
OworICAgIGNvbnN0IGF1dG8qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgcmV0dXJu
IG1fbGFiZWxzW21fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+
c2l6ZSgpXTsKIH0KIApAQCAtNDMyLDcgKzQzMiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChKU1ZhbHVlUmVncyBqc1JlZywgVmlydHVhbFJl
CiAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChqc1JlZyk7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgaW50IEpJVDo6anVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIGludCB0YXJnZXQpCitBTFdBWVNfSU5MSU5FIGludCBKSVQ6Omp1bXBUYXJnZXQoY29uc3Qg
SlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGludCB0YXJnZXQpCiB7CiAgICAgaWYgKHRhcmdl
dCkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCmluZGV4IDU2ZGZiODczNjUyM2E3NWMzY2E1MTJjOGZjMThjMzEzMjQ2MDFkNjgu
LjViODVjN2FjNTE3YTcwMmRjZmQ3YTYyZWRmMDkyMTFhM2Q1ZDMzM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNDYsNyArNDYsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbW92KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wTW92PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW92KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3RvcmVWYWx1ZShqc1JlZ1QxMCwg
YWRkcmVzc0Zvcihkc3QpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbmQoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW5kPigpOwogICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKHJldHVyblZhbHVlSlNSLCBjYWxsRnJhbWVSZWdpc3RlcikpOwpAQCAtNzYsNyArNzYs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICByZXQoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbXAoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm1wPigpOwogICAgIHVuc2lnbmVkIHRhcmdl
dCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVs
KTsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X29i
amVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X29iamVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmpl
Y3Q+KCk7CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2Uo
c2xvd0Nhc2VzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xMjIs
NyArMTIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIH0KIAogCi12b2lkIEpJVDo6ZW1p
dF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hhc0luc3RhbmNlPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFu
Y2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5j
ZW9mPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE5
MiwxMCArMTkyLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIAor
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5jZW9m
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CiAg
ICAgCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2Yo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX2lzX2VtcHR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0eShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJc0VtcHR5PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2Rz
dDsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0eShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3R5cGVvZl9pc191bmRl
ZmluZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wVHlwZW9mSXNVbmRlZmluZWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3R5cGVvZl9p
c191bmRlZmluZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNVbmRlZmluZWRPck51bGw+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNf
Ym9vbGVhbihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0Jvb2xlYW4+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMzAzLDcgKzMwMyw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTAp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc051bWJlcj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAK
ICNpZiBVU0UoQklHSU5UMzIpCi12b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdf
aW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQmlnSW50PigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTM0NiwxNCArMzQ2LDE0IEBA
IHZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwog
fQogI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKLU5PX1JFVFVSTiB2b2lkIEpJVDo6ZW1pdF9v
cF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKikKK05PX1JFVFVSTiB2b2lkIEpJVDo6ZW1p
dF9vcF9pc19iaWdfaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIC8vIElmIHdlIG9u
bHkgaGF2ZSBIZWFwQmlnSW50cywgdGhlbiB3ZSBlbWl0IGlzQ2VsbFdpdGhUeXBlIGluc3RlYWQg
b2YgaXNCaWdJbnQuCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbmRp
ZgogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5
cGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMzcxLDcgKzM3MSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpz
UmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19vYmplY3QoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNPYmplY3Q+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2lzX29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFRvUHJpbWl0aXZlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
b19wcmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b19wcm9wZXJ0eV9rZXkoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wVG9Qcm9wZXJ0eUtleT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRGdW5jdGlvbk5hbWU+KCk7CiAKQEAgLTQz
Niw3ICs0MzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uU2V0RnVuY3Rpb25OYW1lLCBnbG9iYWxPYmplY3RHUFIsIGZ1bmN0aW9uR1BSLCBuYW1lSlNS
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9ub3QoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wTm90PigpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9vcGVyYW5kLCBqc1JlZ1QxMCk7CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2pmYWxzZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BKZmFsc2U+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5z
dHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2Vu
ZXJhdG9yKFZNJiB2bSkKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc0ZhbHNleSIpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSmVxTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1
ZTsKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1hc3F1ZXJhZGVzR2xvYmFsT2Jq
ZWN0SXNGb3JlaWduLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZXFfbnVs
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3Bfam5lcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFOdWxsPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTM4LDcg
KzUzOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVs
bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKdW5kZWZpbmVkT3JOdWxsPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01NTQsNyAr
NTU0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2hJZk51bGwoanNS
ZWdUMTApLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9u
dWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEpudW5kZWZpbmVkT3JOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVj
b2RlLm1fdmFsdWU7CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRl
ZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGFkZEp1bXAoYnJhbmNoSWZOb3ROdWxsKGpzUmVnVDEwKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfamVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfamVxX3B0cihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKZXFQdHI+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVjb2RlLm1fdmFs
dWU7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX3B0cihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BKbmVxUHRyPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBieXRlY29kZS5tX3ZhbHVl
OwpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RXE+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2xocywgcmVnVDAp
OwpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2plcShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXE+KCk7CiAgICAgdW5zaWduZWQgdGFy
Z2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFi
ZWwpOwpAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVtaXRf
b3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2p0cnVlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigp
OwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBi
eXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTY3OCw3ICs2NzgsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYg
dm0pCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25lcShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXE+KCk7CiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX2xocywgcmVnVDApOwpAQCAtNjkwLDcgKzY5MCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BKbmVxPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3Vy
cmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTcwMiw3ICs3MDIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKICNlbmRpZgogCi12b2lkIEpJVDo6ZW1pdF9vcF90aHJvdyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVGhyb3c+KCk7CiAgICAgdWludDMyX3QgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CkBAIC03NTAsNyArNzUwLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hh
bmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTgyNSwxOCArODI1LDE4IEBAIHZvaWQgSklUOjpjb21waWxl
T3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlm
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wU3RyaWN0RXE8T3BT
dHJpY3RlcT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbnN0
cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9uc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGNvbXBpbGVPcFN0cmljdEVxPE9wTnN0cmljdGVxPihjdXJyZW50SW5zdHJ1Y3Rp
b24pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxlT3BTdHJp
Y3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
Ojpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
PigpOwogICAgIGludCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC05MDUsMTcgKzkwNSwxNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0
cmljdEVxSnVtcDxPcEpzdHJpY3RlcT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wU3RyaWN0RXFKdW1wPE9wSm5zdHJp
Y3RlcT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pz
dHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJp
Y3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIApAQCAtOTI2LDcgKzkyNiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgZW1p
dEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFy
Z2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC05MzksNyArOTM5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogI2VuZGlmCiAKLXZvaWQgSklUOjplbWl0
X29wX3RvX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFRvTnVtYmVyPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3RWUmVnID0gYnl0ZWNvZGUubV9k
c3Q7CkBAIC05NTQsNyArOTU0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0VlJlZywganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19u
dW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvTnVt
ZXJpYz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpA
QCAtOTc1LDcgKzk3NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3RWUmVnLCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3N0cmlu
Zyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfdG9fc3RyaW5nKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvU3RyaW5nPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3RWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05OTAs
NyArOTkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
VlJlZywganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19vYmplY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RvX29i
amVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb09iamVjdD4oKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTAwNiw3ICsxMDA2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJlZywg
anNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2F0Y2g+KCk7CiAKQEAgLTEwNTIsMTIgKzEwNTIsMTIg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjpl
bWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAg
ICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGhlcmUuLi4KIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3BhcmVudF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3BhcmVudF9zY29wZShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQYXJlbnRTY29wZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgY3VycmVudFNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKQEAgLTEwNjcsNyArMTA2Nyw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
ZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3N3aXRj
aF9pbW0oY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNoSW1tPigpOwogICAg
IHNpemVfdCB0YWJsZUluZGV4ID0gYnl0ZWNvZGUubV90YWJsZUluZGV4OwpAQCAtMTA5NCw3ICsx
MDk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEpTU3dpdGNo
UHRyVGFnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFy
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYSBmYXN0IHBhdGguCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDUyMQpAQCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBKU1N3aXRjaFB0clRhZyk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNoU3RyaW5nPigpOwogICAgIHNpemVfdCB0YWJs
ZUluZGV4ID0gYnl0ZWNvZGUubV90YWJsZUluZGV4OwpAQCAtMTE0Miw3ICsxMTQyLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEpTU3dpdGNoUHRyVGFnKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BFcU51bGw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFf
bnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25l
cV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9uZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXFOdWxs
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEyMDYs
NyArMTIwNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpz
UmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
KQordm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAg
Ly8gRXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNv
bnN0YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQg
dW5uZWNlc3NhcmlseSBwcm9sb25naW5nCkBAIC0xMzM1LDcgKzEzMzUsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRv
cihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IG9wX2VudGVyX2hhbmRsZXIiKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0U2NvcGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtMTM0NSw3ICsxMzQ1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9f
dGhpcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHNyY0RzdCA9IGJ5dGVjb2RlLm1fc3JjRHN0OwpAQCAtMTM1OSw3ICsxMzU5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNz
KGpzUmVnVDEwLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDIpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZVRoaXM+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1fY2FsbGVlOwpAQCAtMTM5NCw3ICsxMzk0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0
LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NoZWNrX3Rkeihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrVGR6PigpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCkBAIC0xNDA5LDcgKzE0MDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190
ZHooY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogLy8gU2xvdyBjYXNl
cwogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTQyMCw3ICsxNDIwLDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUUKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCByZXR1
cm5WYWx1ZUdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE0MzIsNyArMTQzMiw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2RzdCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
amVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0x
NDQzLDcgKzE0NDMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIGVtaXRKdW1wU2xv
d1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXMKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0
X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWJ1Zyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWJ1Zz4o
KTsKICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVn
VDApOwpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBub0RlYnVnZ2VyUmVxdWVzdHMu
bGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25zdCBK
U0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
cmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcoKSAmJiBtX3VubGlua2VkQ29k
ZUJsb2NrLT5sb29wSGludHNBcmVFbGlnaWJsZUZvckZ1enppbmdFYXJseVJldHVybigpKSkgewog
ICAgICAgICB1aW50cHRyX3QqIHB0ciA9IHZtKCkuZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVy
KGluc3RydWN0aW9uKTsKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xv
b3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAvLyBFbWl0IHRoZSBzbG93IHBhdGggZm9yIHRoZSBKSVQgb3B0
aW1pemF0aW9uIGNoZWNrOgpAQCAtMTUyMSwyNiArMTUyMSwyNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbG9vcF9oaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbAogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NoZWNrX3RyYXBzKGNvbnN0
IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2NoZWNrX3RyYXBzKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKQogewogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihOb25aZXJvLCBBYnNv
bHV0ZUFkZHJlc3MobV92bS0+dHJhcHMoKS50cmFwQml0c0FkZHJlc3MoKSksIFRydXN0ZWRJbW0z
MihWTVRyYXBzOjpBc3luY0V2ZW50cykpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfbm9wKGNv
bnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX25vcChjb25zdCBKU0luc3RydWN0
aW9uKikKIHsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9iZWdpbihjb25z
dCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2luKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1
dGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEluc3RydWN0aW9u
KikKK3ZvaWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKQogewogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKSk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTU4MSw3ICsxNTgx
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2NoZWNr
X3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHYKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfY2hlY2tfdHJhcHNfaGFu
ZGxlciIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld1JlZ2V4cD4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNTk0LDcgKzE1OTQsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXROZXdGdW5j
Q29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE2MTYsMjggKzE2
MTYsMjggQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVu
Yyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGVtaXROZXdGdW5jQ29tbW9uPE9wTmV3RnVuYz4oY3VycmVudEluc3RydWN0aW9uKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1
bmMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRO
ZXdGdW5jQ29tbW9uPE9wTmV3R2VuZXJhdG9yRnVuYz4oY3VycmVudEluc3RydWN0aW9uKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNf
Z2VuZXJhdG9yX2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGVtaXROZXdGdW5jQ29tbW9uPE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jPihjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2FzeW5jX2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGVtaXROZXdGdW5jQ29tbW9uPE9wTmV3QXN5bmNGdW5jPihjdXJyZW50SW5zdHJ1Y3Rpb24p
OwogfQotICAgIAorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0TmV3RnVu
Y0V4cHJDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE2
NTksMjcgKzE2NTksMjcgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5ld0Z1bmNF
eHA+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19nZW5l
cmF0b3JfZnVuY19leHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5l
d0dlbmVyYXRvckZ1bmNFeHA+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX25ld19hc3luY19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21t
b248T3BOZXdBc3luY0Z1bmNFeHA+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9Ci0gICAgCi12b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19n
ZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5ld0FzeW5jR2VuZXJhdG9yRnVuY0V4
cD4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLSAgICAKLXZvaWQgSklUOjplbWl0X29wX25ld19h
cnJheShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorCit2b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfYXJyYXkoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJy
YXk+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTY5
MSw3ICsxNjkxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJheVdpdGhQcm9maWxlLCBkc3QsIGFyZ3VtZW50R1BSMCwgYXJndW1lbnRHUFIxLCBhcmd1bWVu
dEdQUjIsIHNpemUpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXpl
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5l
d0FycmF5V2l0aFNpemU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dp
dGhfc2l6ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUsIGRzdCwgZ2xvYmFs
T2JqZWN0R1BSLCBwcm9maWxlR1BSLCBzaXplSlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
cHJvZmlsZV90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIG1faXNTaGFyZWFibGUgPSBmYWxzZTsKIApAQCAtMTc3NCw3ICsx
Nzc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAganVtcFRvRW5kLmxpbmsodGhpcyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19j
aGlja2VuX3Byb2xvZ3VlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLnNoYWRvd0NoaWNrZW4oKSk7CiAgICAgdXBkYXRl
VG9wQ2FsbEZyYW1lKCk7CkBAIC0xNzg4LDcgKzE3ODgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9s
b2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdAogICAgIGxvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZVBhY2tldChzaGFkb3dQYWNrZXRSZWcs
IHNjcmF0Y2gxUmVnLCByZWdUMyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3df
Y2hpY2tlbl90YWlsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5zaGFkb3dD
aGlja2VuKCkpOwogICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwpAQCAtMTgwNyw3ICsxODA3LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBsb2dTaGFkb3dDaGlja2VuVGFpbFBhY2tl
dChzaGFkb3dQYWNrZXRSZWcsIGpzUmVnVDMyLCByZWdUNCwgcmVnVDEsIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJv
bF9mbG93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgbV9pc1NoYXJlYWJsZSA9IGZhbHNlOwogCkBAIC0xODIxLDcg
KzE4MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2FyZ3VtZW50X2NvdW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BBcmd1bWVudENvdW50PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTE4MzIsNyArMTgzMiw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2FyZ3VtZW50X2NvdW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEdldFJlc3RMZW5ndGg+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRz
dCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Jlc3RfbGVuZ3RoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnQoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0QXJndW1lbnQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9
IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTg3MSw3ICsxODcxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2FyZ3VtZW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRQcm90b3R5cGVPZj4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDQ0Mjk0ODUzNmU3MzFlYmUwNmE4
YWU3MGY4MzY0M2ViMjM2MmY0MDIuLjgxOTk3ODBjOTU2NzA4ZWRhYjZiNTk5MzY0ODU4MmI1ZDVi
ZDFhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcEVxU2xvd0NvbW1vbihWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogICAgIGRvbmUubGluayh0aGlzKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEVxPigpOwogCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXE+KCk7CiAKQEAg
LTk3LDcgKzk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXE+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0g
anVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpA
QCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoMzIoRXF1YWwsIGpzUmVn
VDEwLnBheWxvYWRHUFIoKSwganNSZWdUMzIucGF5bG9hZEdQUigpKSwgdGFyZ2V0KTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKbmVxPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudElu
c3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYWRkSnVtcChicmFuY2gzMihOb3RFcXVhbCwganNSZWdUMTAucGF5bG9hZEdQUigp
LCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lcShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BFcT4oKTsKIApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgcmV0
dXJuVmFsdWVKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lcT4o
KTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgcmV0dXJuVmFsdWVKU1IpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEplcT4oKTsKICAgICB1bnNpZ25lZCB0
YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRM
YWJlbCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBl
bWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0
YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcT4oKTsK
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcFN0cmljdEVxQ29tbW9uKFZpcnR1YWxSZWdpc3RlciBzcmMxLCAgVmlydHVhbFJlZ2lzdGVy
IHNyYzIpCiAgICAgZmlyc3RJc09iamVjdC5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
U3RyaWN0ZXE+KCk7CiAgICAgY29tcGlsZU9wU3RyaWN0RXFDb21tb24oYnl0ZWNvZGUubV9saHMs
IGJ5dGVjb2RlLm1fcmhzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9z
dHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wTnN0cmljdGVxPigpOwogICAgIGNvbXBpbGVPcFN0cmljdEVxQ29tbW9uKGJ5dGVj
b2RlLm1fbGhzLCBieXRlY29kZS5tX3Jocyk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BKc3RyaWN0ZXE+KCk7CiAgICAgaW50IHRhcmdldCA9IGp1bXBU
YXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTIw
Nyw3ICsyMDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRKdW1wKGJyYW5jaDMyKEVxdWFsLCBqc1Jl
Z1QxMC5wYXlsb2FkR1BSKCksIGpzUmVnVDMyLnBheWxvYWRHUFIoKSksIHRhcmdldCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSm5zdHJpY3RlcT4oKTsKICAgICBpbnQgdGFyZ2V0ID0ganVtcFRh
cmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMjE3
LDcgKzIxNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRKdW1wKGJyYW5jaDMyKE5vdEVxdWFsLCBq
c1JlZ1QxMC5wYXlsb2FkR1BSKCksIGpzUmVnVDMyLnBheWxvYWRHUFIoKSksIHRhcmdldCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihO
b25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKaW5kZXggYzBjYjcyZmI2MGQ5MzUzNTM5ZTk0MTdhY2JmODRlNTEwOGQzODUwMi4uZWZjOWEw
ZThiYjAyZTIyNTgxMTg0NjIzZDEwNjBhODkzNWNkZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yODI1LDcgKzI4MjUsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBl
LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1
bHQpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3Bl
Rm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI4NzcsNyArMjg3Nyw3IEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSwgRW5jb2RlZEpTVmFs
dWUsIChKU0dsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXNvbHZlZFNjb3BlKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cnVjdGlv
biogcGMpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZyb21TY29wZSwg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0lu
c3RydWN0aW9uKiBwYykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI5MTks
NyArMjkxOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2Nv
cGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgfSkpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFRvU2NvcGUsIHZvaWQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFRvU2NvcGUsIHZvaWQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKaW5kZXggZDVlOWY1YzcwNWE1ODkzOTA3MTFiYWY3MzcwYjAwNGIyNjFmZGI4NC4uMmE1OWY2
NGU4ODVhZDVhMjVlMTg2NzJmOTZjM2RkNWJiODY1YmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTY4LDcgKzY4LDEwIEBAIGNsYXNzIFdhdGNocG9p
bnRTZXQ7CiAKIHN0cnVjdCBFQ01BTW9kZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7Ci1zdHJ1
Y3QgSW5zdHJ1Y3Rpb247CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0
aW9uOworc3RydWN0IEpTT3Bjb2RlVHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJ
bnN0cnVjdGlvbjxKU09wY29kZVRyYWl0cz47CiAKIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwog
CkBAIC0yOTQsOSArMjk3LDkgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEoKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5k
ZXgsIGludDMyX3QgbWluKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3
aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlIGtl
eSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxp
bmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiog
Ynl0ZWNvZGVQQykpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9t
U2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBJbnN0cnVjdGlv
biogYnl0ZWNvZGVQQykpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRU
b1Njb3BlLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNv
ZGVQQykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlU2NvcGVG
b3JCYXNlbGluZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uR2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
SlNJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0luc3Ry
dWN0aW9uKiBieXRlY29kZVBDKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvSGF2ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2Fw
YWNpdHksIGNoYXIqLCAoVk0qLCBKU09iamVjdCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZSwgY2hh
ciosIChWTSosIEpTT2JqZWN0Kiwgc2l6ZV90IG5ld1NpemUpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggOGViMjEzOGExMWM5Y2I5
Njk5ZmMzZmEyOWRhYTIyZTU1MmIxOWM4MS4uYzhiOGIwYmYzZGUxZjNjZmI3YmRkOWIwMWMyN2E0
NzY3OTk5MzdmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSklUOjpnZW5lcmF0ZUdldEJ5VmFs
U2xvd0Nhc2UoY29uc3QgT3Bjb2RlVHlwZSYgYnl0ZWNvZGUsIFZlY3RvcjxTbG93Q2FzZUVuCiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
QnlWYWw+KCksIGl0ZXIpOwogfQpAQCAtMTY1LDcgKzE2NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVy
YXRpb25UCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5D
aGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFBy
aXZhdGVOYW1lPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIEFTU0VSVChoYXNBbnlTbG93Q2FzZXMoaXRlcikpOwogCkBAIC0yNjAsNyArMjYw
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXIKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJh
c2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVj
dGlvbik7CiAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTM0OCw3ICszNDgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBl
bmQoZ2VuKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTQxNywxNCArNDE3LDE0IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi10
ZW1wbGF0ZSB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWw+KGNvbnN0IElu
c3RydWN0aW9uKik7Cit0ZW1wbGF0ZSB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0
QnlWYWw+KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5
X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVj
dD4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBA
IC00ODMsNyArNDgzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblQKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC01MjIsNyArNTIyLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVy
QmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtNTg0
LDcgKzU4NCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyCiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdldHRlckJ5SWQ+KCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYnl0ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBAIC01
OTQsNyArNTk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUHV0R2V0dGVyQnlJZCwgcmVnVDIsIHJlZ1QwLCBtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmltcGwoKSwgb3B0aW9ucywgcmVnVDEpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFNldHRlckJ5SWQ+KCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYnl0ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBAIC02
MDQsNyArNjA0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUHV0U2V0dGVyQnlJZCwgcmVnVDIsIHJlZ1QwLCBtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmltcGwoKSwgb3B0aW9ucywgcmVnVDEpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9z
ZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyU2V0
dGVyQnlJZD4oKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyUGF5bG9hZChieXRlY29kZS5t
X2Jhc2UsIHJlZ1QwKTsKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
Z2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCByZWdUMywgcmVn
VDAsIG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSku
aW1wbCgpLCBhdHRyaWJ1dGUsIHJlZ1QxLCByZWdUMik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X3B1dF9nZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJCeVZhbD4oKTsKIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJCeVZh
bCwgZ2xvYmFsT2JqZWN0R1JQLCBiYXNlR1BSLCBwcm9wZXJ0eUpTUiwgYXR0cmlidXRlcywgc2V0
dGVyR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9z
ZXR0ZXJfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFNldHRlckJ5
VmFsPigpOwogCkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRl
cl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblB1dFNldHRlckJ5VmFsLCBnbG9iYWxPYmplY3RHUlAsIGJhc2VH
UFIsIHByb3BlcnR5SlNSLCBhdHRyaWJ1dGVzLCBzZXR0ZXJHUFIpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2Rz
dDsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJh
c2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lk
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTc2Miw3ICs3NjIsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRf
Y2FsbFNsb3dPcGVyYXRpb25UaAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kZWxf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5
VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTgw
NCw3ICs4MDQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91
bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTg3NCw3ICs4NzQsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxT
bG93T3BlcmF0aW9uVAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05MDgsNyArOTA4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVz
dWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0bwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Q2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBA
IC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAg
LTk5Myw3ICs5OTMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0QnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1f
ZHN0OwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTExMDAsNyArMTEw
MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lk
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xMTM4LDcgKzExMzgsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRW
UmVnLCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMTIwMSw3
ICsxMjAxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd08KICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRf
YnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VW
UmVnID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFdyaXRlQmFycmllcihiYXNlVlJlZywgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OwpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGgKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTM0Miw3ICsxMzQyLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
QEAgLTEzNzAsNyArMTM3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2Rz
dDsKQEAgLTE0MDYsNyArMTQwNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTE0ODYsMzEgKzE0ODYsMzEgQEAg
dm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlIHR5cGUpCiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwogICAgIGVtaXRIYXNQcml2YXRl
KGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hh
c19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICBlbWl0SGFzUHJpdmF0ZVNs
b3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9o
YXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOwogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVj
b2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0
ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNj
ZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2
ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BS
ZXNvbHZlU2NvcGU+KCk7CiAgICAgUmVzb2x2ZVR5cGUgcHJvZmlsZWRSZXNvbHZlVHlwZSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKG1fcHJvZmlsZWRDb2RlQmxvY2spLm1fcmVzb2x2ZVR5cGU7CkBAIC0x
NzQxLDcgKzE3NDEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9yZXNvbHZlX3Njb3BlR2VuZXJhdG9yKFZNJiB2bQogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X3Jlc29sdmVfc2NvcGUiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2dldF9mcm9tX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEZyb21T
Y29wZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0x
OTc0LDcgKzE5NzQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihWTSYgdgogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X2dldF9mcm9tX3Njb3BlIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X3RvX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKQEAgLTIx
MTMsNyArMjExMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF90b19zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMjE3Myw3ICsyMTczLDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9y
KFZNJiB2bSkKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbUFyZ3VtZW50cz4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0yMTg2LDcgKzIxODYsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTAp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1l
bnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFRvQXJndW1lbnRzPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHMgPSBieXRlY29kZS5tX2FyZ3VtZW50czsKQEAg
LTIyMDEsNyArMjIwMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVy
KGFyZ3VtZW50cywgdmFsdWUsIFNob3VsZEZpbHRlclZhbHVlKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0SW50ZXJuYWxGaWVsZD4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9m
aWVsZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRJbnRlcm5hbEZpZWxkPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtMjIzMSw3
ICsyMjMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2Vu
dW1lcmF0b3IoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJvcGVydHlFbnVt
ZXJhdG9yPigpOwogCkBAIC0yMjY1LDcgKzIyNjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BFbnVtZXJhdG9yTmV4dD4oKTsKIApAQCAtMjMyOCw3ICsyMzI4LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVl
SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZ2VuZXJhdGVHZXRCeVZhbFNs
b3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCksIGl0
ZXIpOwogfQpAQCAtMjQ1OCw0OCArMjQ1OCw0OCBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9y
X2hhc19wcm9wZXJ0eUltcGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bgog
ICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9l
bnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3Jf
aGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2VudW1lcmF0b3JfaGFz
X3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckhhc093blBy
b3BlcnR5PigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KTsKIH0KIAog
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5
X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3By
b3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0
b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9n
ZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0
b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChj
b25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiB7
CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0
X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5f
YnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBK
SVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRo
X2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggZDBiMzczODky
MWE0ZjAwMTUxMmU3ZGVlM2E4NDQzYzUxOTNiZDI2Yy4uNjcwNzc1N2JjNWM0YTI2Y2UzOWVjMmE4
NWM0YWFlNjg3Mzk1NzVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBpbml0aWFsaXplKCkKIAogICAgIHN0YXRpY19h
c3NlcnQobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSA8IFVJTlQ4X01BWCk7
CiAgICAgc3RhdGljX2Fzc2VydCh3YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUg
PCBVSU5UOF9NQVgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5n
dGggKyAxOyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4Qnl0ZWNvZGVT
dHJ1Y3RMZW5ndGggKyAxOyArK2kpIHsKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zW2ldID0gbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGlu
ZTsKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQud2FzbUV4Y2VwdGlvbkluc3RydWN0aW9uc1tp
XSA9IHdhc21fdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggMzdjMWFmZTZkZTc2Yzg5MzVhYzc0
NmQ2MGZiNDk3ZDMxZTZlN2NhOS4uYzAzMzNkMzQyYjA5YjAzMDQwMTBmNDQ2Mjg0M2ZjMDg5NDgy
OWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtNTUsOCAr
NTUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCB2b2lkIGluaXRpYWxpemUoKTsK
IAotICAgIGZyaWVuZCBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Ci0gICAg
ZnJpZW5kIEluc3RydWN0aW9uKiB3YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CisgICAgZnJp
ZW5kIEpTSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworICAgIGZyaWVuZCBX
YXNtSW5zdHJ1Y3Rpb24qIHdhc21FeGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKICAgICBmcmllbmQg
T3Bjb2RlKiBvcGNvZGVNYXAoKTsKICAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVNYXBXaWRlMTYo
KTsKICAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVNYXBXaWRlMzIoKTsKQEAgLTc0LDE0ICs3NCwx
NCBAQCBwcml2YXRlOgogCiB2b2lkIGluaXRpYWxpemUoKTsKIAotaW5saW5lIEluc3RydWN0aW9u
KiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQoraW5saW5lIEpTSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlv
bkluc3RydWN0aW9ucygpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rp
b24qPihnX2pzY0NvbmZpZy5sbGludC5leGNlcHRpb25JbnN0cnVjdGlvbnMpOworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PEpTSW5zdHJ1Y3Rpb24qPihnX2pzY0NvbmZpZy5sbGludC5leGNl
cHRpb25JbnN0cnVjdGlvbnMpOwogfQotICAgIAotaW5saW5lIEluc3RydWN0aW9uKiB3YXNtRXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKworaW5saW5lIFdhc21JbnN0cnVjdGlvbiogd2FzbUV4Y2Vw
dGlvbkluc3RydWN0aW9ucygpCiB7Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlv
bio+KGdfanNjQ29uZmlnLmxsaW50Lndhc21FeGNlcHRpb25JbnN0cnVjdGlvbnMpOworICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8V2FzbUluc3RydWN0aW9uKj4oZ19qc2NDb25maWcubGxpbnQud2Fz
bUV4Y2VwdGlvbkluc3RydWN0aW9ucyk7CiB9CiAKIGlubGluZSBPcGNvZGUqIG9wY29kZU1hcCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCmlu
ZGV4IGU4ODMxNTMyOGNjYjhmODViM2Y1ZGY3MTU1OGEwY2JjY2IzNTg1NmMuLmQyMWMxYTIxMDI4
NDhmMGYzOTc1YjkyZDMzMDFhM2NiZTdmZmIxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCi1JbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJv
dyhWTSYgdm0pCitKU0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KFZNJiB2bSkKIHsKICAgICBV
TlVTRURfUEFSQU0odm0pOwogI2lmIExMSU5UX1RSQUNJTkcKQEAgLTUwLDcgKzUwLDcgQEAgSW5z
dHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mIHZtKQogICAgIHJldHVybiBMTEludDo6ZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zKCk7CiB9CiAKLUluc3RydWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhW
TSYgdm0pCitXYXNtSW5zdHJ1Y3Rpb24qIHdhc21SZXR1cm5Ub1Rocm93KFZNJiB2bSkKIHsKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogI2lmIExMSU5UX1RSQUNJTkcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAppbmRleCBlNWY5MDIxZmFkYjhlZmNiMjU4
N2MwY2E2MDE3NmViZjFkY2JhYzRhLi5mZGEzNTMyZGNjMGE4ODVjNDE4ZTY2NzZhMjI5MmRjNDMz
YjUzN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNl
cHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9u
cy5oCkBAIC0zMywxNiArMzMsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFt
ZTsKIGNsYXNzIFZNOwotc3RydWN0IEluc3RydWN0aW9uOwogdGVtcGxhdGU8UHRyVGFnPiBjbGFz
cyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFz
ZUluc3RydWN0aW9uOworc3RydWN0IEpTT3Bjb2RlVHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlv
biA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRyYWl0cz47CisKIG5hbWVzcGFjZSBMTEludCB7
CiAKIC8vIEdpdmVzIHlvdSBhIFBDIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0
byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZAogLy8gYmV0d2VlbiAxIGFuZCA5IHNsb3RzIHdp
bGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlCiAvLyBpbnRl
cnByZXRlcidzIGV4Y2VwdGlvbiBoYW5kbGVyLgotSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3co
Vk0mKTsKLUluc3RydWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhWTSYpOworSlNJbnN0cnVjdGlv
biogcmV0dXJuVG9UaHJvdyhWTSYpOworV2FzbUluc3RydWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJv
dyhWTSYpOwogCiAvLyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1
bmsuCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRv
VGhyb3coVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCmluZGV4IDdhMGU3ZGZlNjU2YmY0MzQwNGNlOGNlNmZhNTNlOThkZTExZmQ5ZTguLjBj
NWJmOWUxZDYyMWU2YmJiN2MxYTk2MDY5MDA4YzNmNTM4YzE0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBA
IGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kKSB7IHJldHVyCiAgICAgKCh0YXJnZXRPZmZzZXQpID8gKHRhcmdldE9m
ZnNldCkgOiBjb2RlQmxvY2stPm91dE9mTGluZUp1bXBPZmZzZXQocGMpKQogCiAjZGVmaW5lIEpV
TVBfVE8odGFyZ2V0KSBkbyB7IFwKLSAgICAgICAgcGMgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgKHRh
cmdldCkpOyBcCisgICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0
aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgKHRhcmdldCkpOyBc
CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQlJBTkNIKGNvbmRpdGlvbikg
ZG8geyAgICAgICAgICAgICAgICAgIFwKQEAgLTIyMCw3ICsyMjAsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBUeXBlcz4gdm9pZCBzbG93UGF0aExvZ0YoY29uc3QgY2hhciosIGNvbnN0IFR5cGVz
Ji4uLikgeyB9CiAKICNlbmRpZiAvLyBMTElOVF9UUkFDSU5HCiAKLWV4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCitleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJh
bmQpCiB7CiAgICAgaWYgKCFPcHRpb25zOjp0cmFjZUxMSW50RXhlY3V0aW9uKCkpCiAgICAgICAg
IExMSU5UX0VORF9JTVBMKCk7CkBAIC0yMzgsNyArMjM4LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSW4KICAgICBMTElOVF9FTkQoKTsKIH0KIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgaW50IGZyb21XaGVyZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCitleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKQogewogICAgIGlmICghT3B0aW9uczo6dHJhY2VMTEludEV4ZWN1dGlvbigp
KQogICAgICAgICBMTElOVF9FTkRfSU1QTCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgIExMSU5UX1JF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCi1zdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90
b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEm
IG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQorc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRh
LCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVy
ZSh2bSk7CiAKQEAgLTgwNCw3ICs4MDQsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90
b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZAogICAg
IHZtLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBwZXJmb3Jt
TExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCitzdGF0aWMg
SlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBi
YXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBt
ZXRhZGF0YSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMDA2LDcgKzIwMDYsNyBA
QCBlbnVtIGNsYXNzIFNldEFyZ3VtZW50c1dpdGggewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
T3AsIFNldEFyZ3VtZW50c1dpdGggc2V0PgotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2YXJh
cmdzU2V0dXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmFyYXJnc1Nl
dHVwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYywgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCkKIHsKICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKIApAQCAt
MjA1Niw3ICsyMDU2LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVj
dF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RWYXJhcmdzLCBT
ZXRBcmd1bWVudHNXaXRoOjpPYmplY3Q+KGNhbGxGcmFtZSwgcGMsIENvZGVGb3JDb25zdHJ1Y3Qp
OwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUg
Y29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IHBjLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCiB7
CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcENhbGxFdmFsPigpOwpAQCAtMjM3NiwxMyArMjM3NiwxMyBAQCBzdGF0aWMgdm9pZCBoYW5k
bGVJdGVyYXRvck5leHRDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
R2xvYmFsTwogICAgICAgICB2YWx1ZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0
KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUpOwogfQogCi1pbmxpbmUgU2xv
d1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0SW5zdHJ1Y3Rpb25EdXJpbmdFeGl0KFRocm93
U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiBwYykKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlv
bkR1cmluZ0V4aXQoVGhyb3dTY29wZSYgc2NvcGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0lu
c3RydWN0aW9uU3RyZWFtOjpSZWYgcGMpCiB7CiAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHJldHVyblRvVGhyb3coc2NvcGUudm0oKSksIG51
bGxwdHIpOwogCiAgICAgaWYgKE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBjb2Rl
QmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rKSB7Ci0gICAgICAg
IGNvbnN0IEluc3RydWN0aW9uKiBuZXh0UEMgPSBwYy5uZXh0KCkucHRyKCk7CisgICAgICAgIGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIG5leHRQQyA9IHBjLm5leHQoKS5wdHIoKTsKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG5leHRQQywgTExJbnQ6Om5vcm1hbE9T
UkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA3
ZWM4MDE1ZWU4YzVhZWM0YzUyOWQ2ZGM1MjgyYTM0M2M3NGE0YmViLi43YmQxMDdiOTU1ZTVlOGM1
NTk1MjUwZTUxYmNmZjdjNzZiODRjOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaApAQCAtMjYsMjQgKzI2LDI0IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
Q2FsbEZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IFByb3RvQ2FsbEZyYW1lOwog
CiBuYW1lc3BhY2UgTExJbnQgewogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IGZyb21X
aGVyZSwgaW50IG9wZXJhbmQpIFJFRkVSRU5DRURfRlJPTV9BU007Ci1leHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVj
dGlvbiosIGludCBmcm9tV2hlcmUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBSRUZFUkVOQ0VE
X0ZST01fQVNNOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3Bl
cmFuZChDYWxsRnJhbWUqLCBjb25zdCBKU0luc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50
IG9wZXJhbmQpIFJFRkVSRU5DRURfRlJPTV9BU007CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJu
VHlwZSBsbGludF90cmFjZV92YWx1ZShDYWxsRnJhbWUqLCBjb25zdCBKU0luc3RydWN0aW9uKiwg
aW50IGZyb21XaGVyZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIFJFRkVSRU5DRURfRlJPTV9B
U007CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9saW5rX2NhbGwoQ2FsbEZy
YW1lKiwgSlNDZWxsKiwgQ2FsbExpbmtJbmZvKikgUkVGRVJFTkNFRF9GUk9NX0FTTTsKIGV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3ZpcnR1YWxfY2FsbChDYWxsRnJhbWUqLCBK
U0NlbGwqLCBDYWxsTGlua0luZm8qKSBSRUZFUkVOQ0VEX0ZST01fQVNNOwogZXh0ZXJuICJDIiB2
b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhDYWxsRnJhbWUqLCBKU0NlbGwqKSBSRUZFUkVO
Q0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKIAogI2RlZmluZSBMTElOVF9TTE9XX1BBVEhfREVD
TChuYW1lKSBcCi0gICAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfIyNuYW1l
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCisgICAgZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfIyNuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykKIAogI2RlZmluZSBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0wobmFtZSkgXAogICAgIExMSU5UX1NMT1dfUEFUSF9ERUNMKG5hbWUpIFJFRkVSRU5D
RURfRlJPTV9BU00gV1RGX0lOVEVSTkFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNGZhNGZiM2Q3OTFiMzM0NzgwZDhk
ODgwNmFiMDJkOGViY2Y3MDU4YS4uZDAzYzY2ZWU0MTlhNzEzZWIzNWZlY2FjYTc0NGFlZGU4NDFi
YThkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQpAQCAtMzIwLDggKzMyMCwxMCBAQCBlbmQKIAogIyBPcGNvZGUgb2Zmc2V0
cwogY29uc3QgT3Bjb2RlSUROYXJyb3dTaXplID0gMSAjIE9wY29kZUlECi1jb25zdCBPcGNvZGVJ
RFdpZGUxNlNpemUgPSAyICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlECi1jb25zdCBPcGNvZGVJ
RFdpZGUzMlNpemUgPSAyICMgV2lkZTMyIFByZWZpeCArIE9wY29kZUlECitjb25zdCBPcGNvZGVJ
RFdpZGUxNlNpemVKUyA9IDIgIyBXaWRlMTYgUHJlZml4ICsgT3Bjb2RlSUQKK2NvbnN0IE9wY29k
ZUlEV2lkZTMyU2l6ZUpTID0gMiAjIFdpZGUzMiBQcmVmaXggKyBPcGNvZGVJRAorY29uc3QgT3Bj
b2RlSURXaWRlMTZTaXplV2FzbSA9IDMgIyBXaWRlMTYgUHJlZml4ICsgT3Bjb2RlSUQoMSBieXRl
KSAjIEZJWE1FOiBjaGFuZ2UgdGhpcyBiYWNrIG9uY2UgRVdTIHBhc3Nlcy4KK2NvbnN0IE9wY29k
ZUlEV2lkZTMyU2l6ZVdhc20gPSAzICMgV2lkZTMyIFByZWZpeCArIE9wY29kZUlEKDEgYnl0ZSkg
IyBGSVhNRTogY2hhbmdlIHRoaXMgYmFjayBvbmNlIEVXUyBwYXNzZXMuCiAKIGlmIFg4Nl82NF9X
SU4gb3IgQ19MT09QX1dJTgogICAgIGNvbnN0IEdpZ2FjYWdlQ29uZmlnID0gX2dfZ2lnYWNhZ2VD
b25maWcKQEAgLTM1OCwzNSArMzYwLDUxIEBAIG1hY3JvIGRpc3BhdGNoSW5kaXJlY3Qob2Zmc2V0
UmVnKQogICAgIGRpc3BhdGNoKG9mZnNldFJlZykKIGVuZAogCi1tYWNybyBnZW5lcmljRGlzcGF0
Y2hPcChkaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkKK21hY3JvIGdlbmVyaWNEaXNwYXRjaE9w
SlMoZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCiAgICAgbWFjcm8gZGlzcGF0Y2hOYXJyb3co
KQotICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGggLSAxKSAq
IDEgKyBPcGNvZGVJRE5hcnJvd1NpemUpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9w
Y29kZU5hbWUlX2xlbmd0aCkgKiAxICsgT3Bjb2RlSUROYXJyb3dTaXplKQogICAgIGVuZAogCiAg
ICAgbWFjcm8gZGlzcGF0Y2hXaWRlMTYoKQotICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVv
cGNvZGVOYW1lJV9sZW5ndGggLSAxKSAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemUpCisgICAgICAg
IGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCkgKiAyICsgT3Bjb2RlSURX
aWRlMTZTaXplSlMpCiAgICAgZW5kCiAKICAgICBtYWNybyBkaXNwYXRjaFdpZGUzMigpCi0gICAg
ICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCAtIDEpICogNCArIE9w
Y29kZUlEV2lkZTMyU2l6ZSkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFt
ZSVfbGVuZ3RoKSAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVKUykKKyAgICBlbmQKKworICAgIHNp
emUoZGlzcGF0Y2hOYXJyb3csIGRpc3BhdGNoV2lkZTE2LCBkaXNwYXRjaFdpZGUzMiwgbWFjcm8g
KGRpc3BhdGNoKSBkaXNwYXRjaCgpIGVuZCkKK2VuZAorCittYWNybyBnZW5lcmljRGlzcGF0Y2hP
cFdhc20oZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCisgICAgbWFjcm8gZGlzcGF0Y2hOYXJy
b3coKQorICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICog
MSArIE9wY29kZUlETmFycm93U2l6ZSkKKyAgICBlbmQKKworICAgIG1hY3JvIGRpc3BhdGNoV2lk
ZTE2KCkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoKSAq
IDIgKyBPcGNvZGVJRFdpZGUxNlNpemVXYXNtKQorICAgIGVuZAorCisgICAgbWFjcm8gZGlzcGF0
Y2hXaWRlMzIoKQorICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5n
dGgpICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZVdhc20pCiAgICAgZW5kCiAKICAgICBzaXplKGRp
c3BhdGNoTmFycm93LCBkaXNwYXRjaFdpZGUxNiwgZGlzcGF0Y2hXaWRlMzIsIG1hY3JvIChkaXNw
YXRjaCkgZGlzcGF0Y2goKSBlbmQpCiBlbmQKIAogbWFjcm8gZGlzcGF0Y2hPcChzaXplLCBvcGNv
ZGVOYW1lKQotICAgIGdlbmVyaWNEaXNwYXRjaE9wKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1l
KQorICAgIGdlbmVyaWNEaXNwYXRjaE9wSlMoZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCiBl
bmQKIAogCiBtYWNybyBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0g
ICAgc2l6ZShnZXR1T3BlcmFuZE5hcnJvdywgZ2V0dU9wZXJhbmRXaWRlMTYsIGdldHVPcGVyYW5k
V2lkZTMyLCBtYWNybyAoZ2V0dSkKKyAgICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBnZXR1T3Bl
cmFuZFdpZGUxNkpTLCBnZXR1T3BlcmFuZFdpZGUzMkpTLCBtYWNybyAoZ2V0dSkKICAgICAgICAg
Z2V0dShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgIGVuZCkKIGVuZAogCiBtYWNy
byBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAgICBzaXplKGdldE9w
ZXJhbmROYXJyb3csIGdldE9wZXJhbmRXaWRlMTYsIGdldE9wZXJhbmRXaWRlMzIsIG1hY3JvIChn
ZXQpCisgICAgc2l6ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZTE2SlMsIGdldE9w
ZXJhbmRXaWRlMzJKUywgbWFjcm8gKGdldCkKICAgICAgICAgZ2V0KG9wY29kZVN0cnVjdCwgZmll
bGROYW1lLCBkc3QpCiAgICAgZW5kKQogZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggOTg3NmVmNmVmNzQyYWNlZWRh
ZTI2OWEyYWI0NTRjNWI2MmNkNTE2Yi4uZTdhNGQxOTg4OGFiMzkxMmJkZDc3N2FiYWQwMGE4MGY0
ODk5ZDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNf
SU5MSU5FIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8T3Bjb2Rl
PihtX3ZhbHVlKTsgfQogCiAgICAgb3BlcmF0b3IgQ2FsbEZyYW1lKigpIHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxDYWxsRnJhbWUqPihtX3ZhbHVlKTsgfQotICAgIG9wZXJhdG9yIGNvbnN0IEluc3Ry
dWN0aW9uKigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KG1fdmFs
dWUpOyB9CisgICAgb3BlcmF0b3IgY29uc3QgSlNJbnN0cnVjdGlvbiooKSB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y29uc3QgSlNJbnN0cnVjdGlvbio+KG1fdmFsdWUpOyB9CiAgICAgb3BlcmF0b3Ig
SlNDZWxsKigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihtX3ZhbHVlKTsgfQogICAg
IG9wZXJhdG9yIFByb3RvQ2FsbEZyYW1lKigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm90b0Nh
bGxGcmFtZSo+KG1fdmFsdWUpOyB9CiAgICAgb3BlcmF0b3IgUmVnaXN0ZXIqKCkgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PFJlZ2lzdGVyKj4obV92YWx1ZSk7IH0KQEAgLTI4Nyw3ICsyODcsNyBAQCBK
U1ZhbHVlIENMb29wOjpleGVjdXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1
dGFibGVBZGRyZXNzLCBWTSogdm0sCiAgICAgICAgIC8vIGluaXRpYWxpemVkIHRoZSBvcGNvZGVN
YXAgYWJvdmUuIFRoaXMgaXMgYmVjYXVzZSBnZXRDb2RlUHRyKCkKICAgICAgICAgLy8gY2FuIGRl
cGVuZCBvbiB0aGUgb3Bjb2RlTWFwLgogICAgICAgICB1aW50OF90KiBleGNlcHRpb25JbnN0cnVj
dGlvbnMgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihMTEludDo6ZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVu
Z3RoICsgMTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4Qnl0ZWNv
ZGVTdHJ1Y3RMZW5ndGggKyAxOyArK2kpCiAgICAgICAgICAgICBleGNlcHRpb25JbnN0cnVjdGlv
bnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDIyNzE2ZjgxYmJkOTA3OGM5
NmZlZTExZGQ4YzQxMGUyYTU5YWQ0ZjIuLmFjZTg3MTE2NzJlNzAyMTZkMzlhNDhkZjE1ZmQ2NmQ2
YjU3YzQxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0zNCwyMCArMzQsMjAgQEAgbWFjcm8gZ2V0
T3BlcmFuZE5hcnJvdyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgIGxvYWRic2kg
Y29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICsgT3Bjb2RlSUROYXJy
b3dTaXplW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1hY3JvIGdldHVPcGVyYW5kV2lkZTE2KG9w
Y29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGggY29uc3RleHByICVvcGNvZGVT
dHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZVtQQiwgUEMs
IDFdLCBkc3QKK21hY3JvIGdldHVPcGVyYW5kV2lkZTE2SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKKyAgICBsb2FkaCBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVf
aW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAot
bWFjcm8gZ2V0T3BlcmFuZFdpZGUxNihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAg
IGxvYWRoc2kgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiAr
IE9wY29kZUlEV2lkZTE2U2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldE9wZXJhbmRXaWRl
MTZKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRoc2kgY29uc3RleHBy
ICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6
ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1hY3JvIGdldHVPcGVyYW5kV2lkZTMyKG9wY29k
ZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1
Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZVtQQiwgUEMsIDFd
LCBkc3QKK21hY3JvIGdldHVPcGVyYW5kV2lkZTMySlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUs
IGRzdCkKKyAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5k
ZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFj
cm8gZ2V0T3BlcmFuZFdpZGUzMihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxv
YWRpcyBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bj
b2RlSURXaWRlMzJTaXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0T3BlcmFuZFdpZGUzMkpT
KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bj
b2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVKU1tQ
QiwgUEMsIDFdLCBkc3QKIGVuZAogCiBtYWNybyBtYWtlUmV0dXJuKGdldCwgZGlzcGF0Y2gsIGZu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQppbmRleCBjNDUzMzUxZDQ5MjZjZjc0ZThkNmVmODU4NTk4NzRhNDViYWQ1OWZh
Li41ZGU3YmNjN2ZkMGQ0ZjA0MGYyZGY5NGJkNDczNDVkODM1ODY5NDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpA
QCAtMzksMjAgKzM5LDM2IEBAIG1hY3JvIGdldE9wZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0LCBm
aWVsZE5hbWUsIGRzdCkKICAgICBsb2FkYnNxIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmll
bGROYW1lJV9pbmRleCArIE9wY29kZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCBkc3QKIGVuZAog
Ci1tYWNybyBnZXR1T3BlcmFuZFdpZGUxNihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQot
ICAgIGxvYWRoIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIg
KyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdp
ZGUxNkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGggY29uc3RleHBy
ICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6
ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1hY3JvIGdldE9wZXJhbmRXaWRlMTYob3Bjb2Rl
U3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAgICBsb2FkaHNxIGNvbnN0ZXhwciAlb3Bjb2RlU3Ry
dWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAx
XSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUxNldhc20ob3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKKyAgICBsb2FkaCBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVf
aW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplV2FzbVtQQiwgUEMsIDFdLCBkc3QKIGVuZAog
Ci1tYWNybyBnZXR1T3BlcmFuZFdpZGUzMihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQot
ICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQg
KyBPcGNvZGVJRFdpZGUzMlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXRPcGVyYW5kV2lk
ZTE2SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaHNxIGNvbnN0ZXhw
ciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNp
emVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXRPcGVyYW5kV2lkZTMyKG9wY29k
ZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3Ry
dWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVbUEIsIFBDLCAx
XSwgZHN0CittYWNybyBnZXRPcGVyYW5kV2lkZTE2V2FzbShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFt
ZSwgZHN0KQorICAgIGxvYWRoc3EgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUl
X2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZVdhc21bUEIsIFBDLCAxXSwgZHN0CitlbmQK
KworbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzJKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0
KQorICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAq
IDQgKyBPcGNvZGVJRFdpZGUzMlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKK2VuZAorCittYWNybyBn
ZXR1T3BlcmFuZFdpZGUzMldhc20ob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBs
b2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bj
b2RlSURXaWRlMzJTaXplV2FzbVtQQiwgUEMsIDFdLCBkc3QKK2VuZAorCittYWNybyBnZXRPcGVy
YW5kV2lkZTMySlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaXMgY29u
c3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lk
ZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAorZW5kCisKK21hY3JvIGdldE9wZXJhbmRXaWRlMzJX
YXNtKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGlzIGNvbnN0ZXhwciAl
b3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVX
YXNtW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKIG1hY3JvIG1ha2VSZXR1cm4oZ2V0LCBkaXNwYXRj
aCwgZm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRl
eCAzZTUzNzkwNTIyNzE5ZDY2MGRkYWYyMmQzZWYzZWNmZjNlNTY2NWZmLi5mYmFlMmI0ZGZhYmRl
ZWMxYTAyODE0NmU3MzQ3NDVkMmY5NDVhZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9XZWJBc3NlbWJseS5hc20KQEAgLTEwMCwxMyArMTAwLDEzIEBAIG1hY3JvIHdhc21OZXh0
SW5zdHJ1Y3Rpb24oKQogZW5kCiAKIG1hY3JvIHdhc21OZXh0SW5zdHJ1Y3Rpb25XaWRlMTYoKQot
ICAgIGxvYWRiIE9wY29kZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCB0MAorICAgIGxvYWRoIE9w
Y29kZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCB0MCAjIEZJWE1FOiBjaGFuZ2UgdGhpcyBiYWNr
IG9uY2UgRVdTIHBhc3Nlcy4KICAgICBsZWFwIF9nX29wY29kZU1hcFdpZGUxNiwgdDEKICAgICBq
bXAgTnVtYmVyT2ZKU09wY29kZUlEcyAqIFB0clNpemVbdDEsIHQwLCBQdHJTaXplXSwgQnl0ZWNv
ZGVQdHJUYWcsIEFkZHJlc3NEaXZlcnNpZmllZAogZW5kCiAKIG1hY3JvIHdhc21OZXh0SW5zdHJ1
Y3Rpb25XaWRlMzIoKQotICAgIGxvYWRiIE9wY29kZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCB0
MAorICAgIGxvYWRoIE9wY29kZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCB0MCAjIEZJWE1FOiBj
aGFuZ2UgdGhpcyBiYWNrIG9uY2UgRVdTIHBhc3Nlcy4KICAgICBsZWFwIF9nX29wY29kZU1hcFdp
ZGUzMiwgdDEKICAgICBqbXAgTnVtYmVyT2ZKU09wY29kZUlEcyAqIFB0clNpemVbdDEsIHQwLCBQ
dHJTaXplXSwgQnl0ZWNvZGVQdHJUYWcsIEFkZHJlc3NEaXZlcnNpZmllZAogZW5kCkBAIC00NjAs
NyArNDYwLDcgQEAgZW5kCiAjIFdhc20gd3JhcHBlciBvZiBnZXQvZ2V0dSB0aGF0IG9wZXJhdGUg
b24gY3R4CiBtYWNybyB3Z2V0cyhjdHgsIGZpZWxkLCBkc3QpCiAgICAgY3R4KG1hY3JvKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKLSAgICAgICAgc2l6ZShnZXRPcGVyYW5kTmFycm93
LCBnZXRPcGVyYW5kV2lkZTE2LCBnZXRPcGVyYW5kV2lkZTMyLCBtYWNybyAoZ2V0KQorICAgICAg
ICBzaXplKGdldE9wZXJhbmROYXJyb3csIGdldE9wZXJhbmRXaWRlMTZXYXNtLCBnZXRPcGVyYW5k
V2lkZTMyV2FzbSwgbWFjcm8gKGdldCkKICAgICAgICAgICAgIGdldChvcGNvZGVTdHJ1Y3QsIGZp
ZWxkLCBkc3QpCiAgICAgICAgIGVuZCkKICAgICBlbmQpCkBAIC00NjgsNyArNDY4LDcgQEAgZW5k
CiAKIG1hY3JvIHdnZXR1KGN0eCwgZmllbGQsIGRzdCkKICAgICBjdHgobWFjcm8ob3Bjb2RlTmFt
ZSwgb3Bjb2RlU3RydWN0LCBzaXplKQotICAgICAgICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBn
ZXR1T3BlcmFuZFdpZGUxNiwgZ2V0dU9wZXJhbmRXaWRlMzIsIG1hY3JvIChnZXR1KQorICAgICAg
ICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBnZXR1T3BlcmFuZFdpZGUxNldhc20sIGdldHVPcGVy
YW5kV2lkZTMyV2FzbSwgbWFjcm8gKGdldHUpCiAgICAgICAgICAgICBnZXR1KG9wY29kZVN0cnVj
dCwgZmllbGQsIGRzdCkKICAgICAgICAgZW5kKQogICAgIGVuZCkKQEAgLTQ3OCw3ICs0NzgsNyBA
QCBlbmQKIAogbWFjcm8gZGlzcGF0Y2goY3R4KQogICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBv
cGNvZGVTdHJ1Y3QsIHNpemUpCi0gICAgICAgIGdlbmVyaWNEaXNwYXRjaE9wKHdhc21EaXNwYXRj
aCwgc2l6ZSwgb3Bjb2RlTmFtZSkKKyAgICAgICAgZ2VuZXJpY0Rpc3BhdGNoT3BXYXNtKHdhc21E
aXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkKICAgICBlbmQpCiBlbmQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGNhMjRlNzU0MGFiNGRk
ZTUxMWE1OTY2YTE3MWQ2OTg5MzY1M2UxNWIuLjE2YTIzMmZjYWMzMjZkYzNjNmUxYzJkMWVjNzgx
MDFiOWVhZTRkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAKQEAgLTk4Myw3ICs5ODMsNyBAQCBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxD
YWNoZWRTdHJpbmdKdW1wVGFibGU+IG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwog
ICAgIENhY2hlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHBy
ZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICBDYWNoZWRIYXNoTWFwPHVuc2lnbmVkLCBVbmxp
bmtlZENvZGVCbG9jazo6UmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gbV90
eXBlUHJvZmlsZXJJbmZvTWFwOwotICAgIENhY2hlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOworICAgIENhY2hl
ZFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxl
Q29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZEJpdFZl
Y3Rvcj4gbV9iaXRWZWN0b3JzOwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRIYXNoU2V0PENhY2hl
ZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPj4gbV9j
b25zdGFudElkZW50aWZpZXJTZXRzOwogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgOiAxOwpAQCAtMTQzOSwxOCArMTQzOSwxOCBAQCBwcml2YXRlOgogICAgIEVuY29k
ZWRUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIENhY2hlZEluc3RydWN0aW9uU3RyZWFtIDogcHVi
bGljIENhY2hlZE9iamVjdDxJbnN0cnVjdGlvblN0cmVhbT4geworY2xhc3MgQ2FjaGVkSW5zdHJ1
Y3Rpb25TdHJlYW0gOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PEpTSW5zdHJ1Y3Rpb25TdHJlYW0+IHsK
IHB1YmxpYzoKLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBJbnN0cnVj
dGlvblN0cmVhbSYgc3RyZWFtKQorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIHN0cmVhbSkKICAgICB7CiAgICAgICAgIG1faW5zdHJ1
Y3Rpb25zLmVuY29kZShlbmNvZGVyLCBzdHJlYW0ubV9pbnN0cnVjdGlvbnMpOwogICAgIH0KIAot
ICAgIEluc3RydWN0aW9uU3RyZWFtKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAg
ICBKU0luc3RydWN0aW9uU3RyZWFtKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYs
IEluc3RydWN0aW9uU3RyZWFtTWFsbG9jPiBpbnN0cnVjdGlvbnNWZWN0b3I7CiAgICAgICAgIG1f
aW5zdHJ1Y3Rpb25zLmRlY29kZShkZWNvZGVyLCBpbnN0cnVjdGlvbnNWZWN0b3IpOwotICAgICAg
ICByZXR1cm4gbmV3IEluc3RydWN0aW9uU3RyZWFtKFdURk1vdmUoaW5zdHJ1Y3Rpb25zVmVjdG9y
KSk7CisgICAgICAgIHJldHVybiBuZXcgSlNJbnN0cnVjdGlvblN0cmVhbShXVEZNb3ZlKGluc3Ry
dWN0aW9uc1ZlY3RvcikpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4NzksNyArMTg3OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgVW5saW5rZWRDb2RlQmxv
Y2smKTsKICAgICB2b2lkIGRlY29kZShEZWNvZGVyJiwgVW5saW5rZWRDb2RlQmxvY2smKSBjb25z
dDsKIAotICAgIEluc3RydWN0aW9uU3RyZWFtKiBpbnN0cnVjdGlvbnMoRGVjb2RlciYgZGVjb2Rl
cikgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuZGVjb2RlKGRlY29kZXIpOyB9CisgICAg
SlNJbnN0cnVjdGlvblN0cmVhbSogaW5zdHJ1Y3Rpb25zKERlY29kZXImIGRlY29kZXIpIGNvbnN0
IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmRlY29kZShkZWNvZGVyKTsgfQogCiAgICAgVmlydHVh
bFJlZ2lzdGVyIHRoaXNSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGhpc1JlZ2lzdGVyOyB9
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nj
b3BlUmVnaXN0ZXI7IH0KQEAgLTE5NjYsMTEgKzE5NjYsMTEgQEAgcHJpdmF0ZToKICAgICBDYWNo
ZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwog
CiAgICAgQ2FjaGVkUHRyPENhY2hlZEluc3RydWN0aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsK
LSAgICBDYWNoZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0
czsKKyAgICBDYWNoZWRWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
PiBtX2p1bXBUYXJnZXRzOwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRKU1ZhbHVlPiBtX2NvbnN0
YW50UmVnaXN0ZXJzOwogICAgIENhY2hlZFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+
IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOwogICAgIENhY2hlZFZlY3RvcjxF
eHByZXNzaW9uUmFuZ2VJbmZvPiBtX2V4cHJlc3Npb25JbmZvOwotICAgIENhY2hlZEhhc2hNYXA8
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PiBtX291dE9mTGluZUp1bXBUYXJnZXRzOwor
ICAgIENhY2hlZEhhc2hNYXA8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBp
bnQ+IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkSWRl
bnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkV3JpdGVCYXJy
aWVyPENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+IG1fZnVuY3Rpb25EZWNsczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDhj
ZjEwZDI2NDZiZTNjZGYxYTNhMjM3MWM1NTE4NjFiYTY0MmRjMWEuLjFlZWVlMmNiOWU0NmM0NGYx
OWM4ZDRmMDJiNjUxMDdiMzNkNGE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTEyLDEwICsxMTIsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChiQ29uZGl0aW9uKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBwYyA9IGJ5dGVjb2RlLm1fdGFy
Z2V0TGFiZWwgXAotICAgICAgICAgICAgICAgID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0
cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArIGJ5dGVjb2Rl
Lm1fdGFyZ2V0TGFiZWwpIFwKKyAgICAgICAgICAgICAgICA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSlNJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSAr
IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpIFwKICAgICAgICAgICAgICAgICA6IGNvZGVCbG9jay0+
b3V0T2ZMaW5lSnVtcFRhcmdldChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgcGMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3Ry
dWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgcGMtPnNpemUo
KSk7IFwKKyAgICAgICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0
aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgcGMtPnNpemUoKSk7
IFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIApAQCAtNTUyLDcgKzU1Miw3IEBAIEpTQ19E
RUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfbmVnYXRlKQogfQogCiAjaWYgRU5BQkxF
KERGR19KSVQpCi1zdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9w
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgbGVmdCwgSlNWYWx1ZSByaWdodCkKK3N0YXRp
YyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUg
cmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7CiAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMocGMp
OwogCkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9y
QmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29kZUIKICAgICAgICAg
cHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KICNlbHNlCi1zdGF0aWMgdm9pZCB1
cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJs
b2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0K
K3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBjb25zdCBKU0luc3RydWN0aW9uKiwgSlNWYWx1ZSwgSlNWYWx1
ZSwgSlNWYWx1ZSkgeyB9CiAjZW5kaWYKIAogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF90b19udW1iZXIpCkBAIC04NDYsNyArODQ2LDcgQEAgSlNDX0RFRklORV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9pc19jb25zdHJ1Y3RvcikKIH0KIAogdGVtcGxhdGU8T3Bjb2Rl
U2l6ZSB3aWR0aD4KLUFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yT3Bl
blRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiog
cGMpCitBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBpdGVyYXRvck9wZW5UcnlGYXN0
SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck9wZW4sIHdp
ZHRoPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KTsKQEAgLTg5Miw3ICs4OTIsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIpCiB9CiAKIHRlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+
Ci1BTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBpdGVyYXRvck5leHRUcnlGYXN0SW1w
bChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjKQorQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0
b3JOZXh0VHJ5RmFzdEltcGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JOZXh0LCB3aWR0aD4oKTsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDliMjQ3YjdlNTY5NjMx
MmZjZmM0NmY5OGFhZjE3NTQ2ZmQ4NDk2YmEuLmRjNmE4ZDEwOTMxNzNjYjEwNjA5MzFhMDAwNTY4
OTcyYTZjMGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCkBAIC0yNDgsMTMgKzI0OCwxMiBAQCBpbmxpbmUgSlNBcnJheSogYWxsb2Nh
dGVOZXdBcnJheUJ1ZmZlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0ltbXV0YWJs
ZQogfSAvLyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzCiAKIGNsYXNzIENhbGxGcmFtZTsKLXN0
cnVjdCBJbnN0cnVjdGlvbjsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KG5hbWUpIFwKLSAgICBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG5hbWUsIFNsb3dQYXRoUmV0
dXJuVHlwZSwgKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKikpCisgICAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihuYW1lLCBTbG93UGF0aFJldHVyblR5cGUsIChDYWxsRnJhbWUqLCBj
b25zdCBKU0luc3RydWN0aW9uKikpCiAKICNkZWZpbmUgSlNDX0RFRklORV9DT01NT05fU0xPV19Q
QVRIKG5hbWUpIFwKLSAgICBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04obmFtZSwgU2xvd1BhdGhS
ZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykp
CisgICAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG5hbWUsIFNsb3dQYXRoUmV0dXJuVHlwZSwg
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykpCiAKIEpTQ19E
RUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjayk7CiBKU0Nf
REVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6
ZXJBZ2VudEJhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2Vk
RnV6emVyQWdlbnRCYXNlLmNwcAppbmRleCAxNzBmMWE2MGRhYmIyNTY3MWMwZWQ2Y2QzNzVjMGI5
YjEyOGQxNjY1Li4yNjk4ODZiZmMyMTI3ZDM0ZWUxNDYwZDc3ODcxYWNhMzg1Zjg4NDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2Vu
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1
enplckFnZW50QmFzZS5jcHAKQEAgLTc1LDggKzc1LDggQEAgU3BlY3VsYXRlZFR5cGUgRmlsZUJh
c2VkRnV6emVyQWdlbnRCYXNlOjpnZXRQcmVkaWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBj
b24KICAgICBWZWN0b3I8U3RyaW5nPiB1cmxQYXJ0cyA9IHNvdXJjZVVSTC5zcGxpdCgnLycpOwog
ICAgIHByZWRpY3Rpb25UYXJnZXQuc291cmNlRmlsZW5hbWUgPSB1cmxQYXJ0cy5pc0VtcHR5KCkg
PyBzb3VyY2VVUkwgOiB1cmxQYXJ0cy5sYXN0KCk7CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25zID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKTsKLSAgICBjb25z
dCBJbnN0cnVjdGlvbiogYW5JbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZUlu
ZGV4KS5wdHIoKTsKKyAgICBjb25zdCBhdXRvJiBpbnN0cnVjdGlvbnMgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1dG8qIGFuSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlv
bnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgcHJlZGljdGlvblRhcmdldC5vcGNvZGVJ
ZCA9IGFuSW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKICAgICBpbnQgc3RhcnRMb2NhdGlvbiA9
IHByZWRpY3Rpb25UYXJnZXQuZGl2b3QgLSBwcmVkaWN0aW9uVGFyZ2V0LnN0YXJ0T2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAppbmRleCA5YjY5MTNmOTQw
Y2MyOTBiZWUyYzI2ZDRlNWFkYzc4YjliYzFiY2FjLi41NWI3YTBmOGMyMmE5OWRlNWI1YWM5MmI4
MWIyZWY4MTNhMWRkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25m
aWcuaApAQCAtMTAxLDggKzEwMSw4IEBAIHN0cnVjdCBDb25maWcgewogICAgIHZvaWQgKCpzaGVs
bFRpbWVvdXRDaGVja0NhbGxiYWNrKShWTSYpOwogCiAgICAgc3RydWN0IHsKLSAgICAgICAgdWlu
dDhfdCBleGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3RoICsgMV07Ci0gICAgICAg
IHVpbnQ4X3Qgd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsK
KyAgICAgICAgdWludDhfdCBleGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4Qnl0ZWNvZGVTdHJ1Y3RM
ZW5ndGggKyAxXTsKKyAgICAgICAgdWludDhfdCB3YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21h
eEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMV07CiAgICAgICAgIGNvbnN0IHZvaWQqIGdhdGVNYXBb
bnVtYmVyT2ZHYXRlc107CiAgICAgfSBsbGludDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGU4YTRlN2E2MjMzOWQzNmJlYTBmNzI1N2I0MTczNWVj
ODI0M2VmNTcuLjI5NDlkMDkyNWZjMDQ0NzRhNmRkMjgwNzc1ZTRhMzU4ZjRjMGFlYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTczLDcgKzczLDYg
QEAgY2xhc3MgQ0xvb3A7CiAKIHN0cnVjdCBDbGFzc0luZm87CiBzdHJ1Y3QgRHVtcENvbnRleHQ7
Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CiBzdHJ1Y3QgTWV0aG9kVGFibGU7CiBlbnVtIGNsYXNzIFVu
a25vd24geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
bG93UGF0aEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbG93UGF0
aEZ1bmN0aW9uLmgKaW5kZXggYmZjMzhjNjUwOWQxNTgxNWNkYzU0MTcwNDVjYzcyODdmZGMxOTY3
Mi4uMzI2N2VhOTQ4ZjhkOGIzOTIzNjUxNzgzMDI1MzJlM2U4YTIyZDA0YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaApAQCAtMzAsOCAr
MzAsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxsRnJhbWU7Ci1zdHJ1Y3QgSW5z
dHJ1Y3Rpb247Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0
cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rp
b248SlNPcGNvZGVUcmFpdHM+OwogCi11c2luZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhS
ZXR1cm5UeXBlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKENhbGxGcmFtZSosIGNvbnN0IElu
c3RydWN0aW9uKik7Cit1c2luZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBl
KEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKENhbGxGcmFtZSosIGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKaW5kZXggZjY2ZGFhYjhjNzExNTAxZTNmZTlkMWYzN2YyMzYxMmQzYWE0MTA2NS4uZTMyZGNi
MGFkMzRiMjNiY2RhMjQ3MWEwM2VlOTJjYjUyMzMzODIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBWTTo6c2V0Q3Jhc2hPblZN
Q3JlYXRpb24oYm9vbCBzaG91bGRDcmFzaCkKICAgICB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBz
aG91bGRDcmFzaDsKIH0KIAotdm9pZCBWTTo6YWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3ZvaWQgVk06OmFkZExvb3BIaW50RXhlY3V0
aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb29wSGludEV4ZWN1dGlvbkNvdW50TG9jayB9OwogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5hZGQoaW5zdHJ1Y3Rpb24sIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVpbnRwdHJfdD4+KDAsIG51bGxwdHIpKTsK
QEAgLTE0NTYsMTQgKzE0NTYsMTQgQEAgdm9pZCBWTTo6YWRkTG9vcEhpbnRFeGVjdXRpb25Db3Vu
dGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICArK2FkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZmlyc3Q7CiB9CiAKLXVpbnRwdHJfdCogVk06OmdldExvb3BIaW50RXhlY3V0
aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit1aW50cHRyX3QqIFZN
OjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExv
Y2sgfTsKICAgICBhdXRvIGl0ZXIgPSBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5z
dHJ1Y3Rpb24pOwogICAgIHJldHVybiBpdGVyLT52YWx1ZS5zZWNvbmQuZ2V0KCk7CiB9CiAKLXZv
aWQgVk06OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pCit2b2lkIFZNOjpyZW1vdmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29u
c3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2sgfTsKICAgICBhdXRvIGl0ZXIgPSBtX2xvb3BIaW50
RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKaW5kZXggNzg2Y2Q2MDNmNGMzYTI3OWQ4YmE4NWRjMTMyYTQ3M2NhNjhjMDBmZS4uZGM2
ODM2M2NkNDY5MzY4NGE5Yzg2NWZmZmVlYmJkN2U4ODk2ZDgzYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJWTVRyYXBzLmgiCiAjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKKyNpbmNs
dWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpA
QCAtMTYxLDcgKzE2MiwxNCBAQCBjbGFzcyBTaWduYXR1cmU7CiB9CiAKIHN0cnVjdCBFbnRyeUZy
YW1lOwotc3RydWN0IEluc3RydWN0aW9uOworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJh
c2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3N0cnVjdCBXYXNtT3Bjb2Rl
VHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRy
YWl0cz47Cit1c2luZyBXYXNtSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29k
ZVRyYWl0cz47CisKK3VzaW5nIEpTT3JXYXNtSW5zdHJ1Y3Rpb24gPSBzdGQ6OnZhcmlhbnQ8Y29u
c3QgSlNJbnN0cnVjdGlvbiosIGNvbnN0IFdhc21JbnN0cnVjdGlvbio+OwogCiBjbGFzcyBRdWV1
ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsKQEAgLTY2OSw3
ICs2NzcsNyBAQCBwdWJsaWM6CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWVGb3JDYXRjaDsKICAg
ICBDYWxsZWVCaXRzIGNhbGxlZUZvcldhc21DYXRjaDsKICAgICB2b2lkKiB0YXJnZXRNYWNoaW5l
UENGb3JUaHJvdzsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogdGFyZ2V0SW50ZXJwcmV0ZXJQQ0Zv
clRocm93OworICAgIEpTT3JXYXNtSW5zdHJ1Y3Rpb24gdGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRo
cm93OwogICAgIHVpbnQzMl90IG9zckV4aXRJbmRleDsKICAgICB2b2lkKiBvc3JFeGl0SnVtcERl
c3RpbmF0aW9uOwogICAgIFJlZ0V4cCogbV9leGVjdXRpbmdSZWdFeHAgeyBudWxscHRyIH07CkBA
IC04NTUsOSArODYzLDkgQEAgcHVibGljOgogICAgICAgICBTZXRGb3JTY29wZTxFeGNlcHRpb24q
PiBtX3NhdmVkTGFzdEV4Y2VwdGlvbjsKICAgICB9OwogCi0gICAgdm9pZCBhZGRMb29wSGludEV4
ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICB1aW50cHRyX3QqIGdldExv
b3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgIHZvaWQgcmVt
b3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgdm9p
ZCBhZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IHVpbnRwdHJfdCogZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICB2b2lkIHJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0lu
c3RydWN0aW9uKik7CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0
IEpTQ2VsbCogZnJvbSkgeyBoZWFwLndyaXRlQmFycmllcihmcm9tKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU1ZhbHVlIHRvKSB7
IGhlYXAud3JpdGVCYXJyaWVyKGZyb20sIHRvKTsgfQpAQCAtMTAwMCw3ICsxMDA4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuT25UZXJtaW5hdGlvbiB7IGZhbHNl
IH07CiAKICAgICBMb2NrIG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2s7Ci0gICAgSGFzaE1h
cDxjb25zdCBJbnN0cnVjdGlvbiosIHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRy
PHVpbnRwdHJfdD4+PiBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzOworICAgIEhhc2hNYXA8Y29u
c3QgSlNJbnN0cnVjdGlvbiosIHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVp
bnRwdHJfdD4+PiBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzOwogCiAjaWYgRU5BQkxFKERGR19E
T0VTX0dDX1ZBTElEQVRJT04pCiAgICAgRG9lc0dDQ2hlY2sgbV9kb2VzR0M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCmluZGV4IDY0MzI3ZTk5YzE1NDBlNmViZDYy
MWE2NGQxYzFiOWU5NGJjN2I0NGUuLmEzMjFjNTJmMTVlY2E1MjIxM2VjZDZlZTkyMTcyNzE5ODEx
YjMyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVl
LmgiCisjaW5jbHVkZSAicnVudGltZS9WTS5oIgogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CkBAIC0xMDAsOSArMTAxLDkgQEAgTExJbnRDYWxsZWU6OkxMSW50Q2FsbGVlKEZ1bmN0aW9uQ29k
ZUJsb2NrR2VuZXJhdG9yJiBnZW5lcmF0b3IsIHNpemVfdCBpbmRleCwgc3QKICAgICAgICAgICAg
IGF1dG8mIGluc3RydWN0aW9uID0gKm1faW5zdHJ1Y3Rpb25zLT5hdCh1bmxpbmtlZEhhbmRsZXIu
bV90YXJnZXQpLnB0cigpOwogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9u
SGFuZGxlclB0clRhZz4gdGFyZ2V0OwogICAgICAgICAgICAgaWYgKHVubGlua2VkSGFuZGxlci5t
X3R5cGUgPT0gSGFuZGxlclR5cGU6OkNhdGNoKQotICAgICAgICAgICAgICAgIHRhcmdldCA9IENv
ZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpoYW5kbGVXYXNt
Q2F0Y2goaW5zdHJ1Y3Rpb24ud2lkdGg8V2FzbU9wY29kZVRyYWl0cz4oKSkuY29kZSgpKTsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPihMTEludDo6aGFuZGxlV2FzbUNhdGNoKGluc3RydWN0aW9uLndpZHRoKCkpLmNvZGUo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gQ29kZUxvY2F0
aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmhhbmRsZVdhc21DYXRjaEFs
bChpbnN0cnVjdGlvbi53aWR0aDxXYXNtT3Bjb2RlVHJhaXRzPigpKS5jb2RlKCkpOworICAgICAg
ICAgICAgICAgIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWc+KExMSW50OjpoYW5kbGVXYXNtQ2F0Y2hBbGwoaW5zdHJ1Y3Rpb24ud2lkdGgoKSkuY29kZSgp
KTsKIAogICAgICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgdGFy
Z2V0KTsKICAgICAgICAgfQpAQCAtMTQ0LDEzICsxNDUsMTMgQEAgc3RkOjp0dXBsZTx2b2lkKiwg
dm9pZCo+IExMSW50Q2FsbGVlOjpyYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgbnVsbHB0ciwg
bnVsbHB0ciB9OwogfQogCi1JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IExMSW50Q2FsbGVlOjpv
dXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZz
ZXQpCitXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBMTEludENhbGxlZTo6b3V0T2ZMaW5l
SnVtcE9mZnNldChXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkK
IHsKICAgICBBU1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5jb250YWlucyhieXRlY29kZU9m
ZnNldCkpOwogICAgIHJldHVybiBtX291dE9mTGluZUp1bXBUYXJnZXRzLmdldChieXRlY29kZU9m
ZnNldCk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9uKiBMTEludENhbGxlZTo6b3V0T2ZMaW5lSnVt
cFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCitjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIExM
SW50Q2FsbGVlOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMp
CiB7CiAgICAgaW50IG9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0KHBjKTsKICAgICBpbnQgdGFyZ2V0
ID0gb3V0T2ZMaW5lSnVtcE9mZnNldChvZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNhbGxlZS5oCmluZGV4IGIxODRjNzliMDA5ODBmNzA5Yjg0MGZiMGM4MTkyMzY4NDRmNjA3
MzEuLjFkMzcxYjQzZjBhMDU2N2E0YjQ4Y2JmZjkwY2VhZmQxMGMxYWVmNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6
CiAgICAgdWludDMyX3QgbnVtQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1Bcmd1bWVu
dHM7IH0KICAgICBjb25zdCBGaXhlZFZlY3RvcjxUeXBlPiYgY29uc3RhbnRUeXBlcygpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RhbnRUeXBlczsgfQogICAgIGNvbnN0IEZpeGVkVmVjdG9yPHVpbnQ2
NF90PiYgY29uc3RhbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0KLSAgICBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gKm1faW5z
dHJ1Y3Rpb25zOyB9CisgICAgY29uc3QgV2FzbUluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdWludDY0X3QgZ2V0Q29uc3RhbnQoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1
cm4gbV9jb25zdGFudHNbcmVnLnRvQ29uc3RhbnRJbmRleCgpXTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgVHlwZSBnZXRDb25zdGFudFR5cGUoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKQEAgLTI0
NSwyMCArMjQ1LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29uc3RhbnRUeXBlc1ty
ZWcudG9Db25zdGFudEluZGV4KCldOwogICAgIH0KIAotICAgIEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIHsgcmV0dXJuIG1fanVtcFRhcmdldHMuc2l6ZSgp
OyB9Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBsYXN0SnVtcFRhcmdldCgpIHsgcmV0
dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIHsgcmV0dXJuIG1fanVtcFRhcmdl
dHMuc2l6ZSgpOyB9CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQg
bGFzdEp1bXBUYXJnZXQoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQogCi0gICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZzZXQoSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBv
dXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0
aW9uKQorICAgIGNvbnN0IFdhc21JbnN0cnVjdGlvbiogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25z
dCBXYXNtSW5zdHJ1Y3Rpb24qKTsKKyAgICB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0KTsKKyAgICB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBv
dXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6
UmVmJiBpbnN0cnVjdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBvdXRPZkxpbmVKdW1wT2Zm
c2V0KGluc3RydWN0aW9uLm9mZnNldCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcmV0dXJu
QWRkcmVzcykKKyAgICBpbmxpbmUgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgV2FzbUluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQog
ICAgIHsKICAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2luc3RydWN0
aW9ucy0+YXQoMCkucHRyKCk7Ci0gICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgbV9pbnN0cnVjdGlvbnMtPnNpemUoKSk7Cisg
ICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgV2FzbUluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0
aW9uc0JlZ2luKSArIG1faW5zdHJ1Y3Rpb25zLT5zaXplKCkpOwogICAgICAgICBSRUxFQVNFX0FT
U0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9uc0JlZ2luICYmIHJldHVybkFkZHJlc3Mg
PCBpbnN0cnVjdGlvbnNFbmQpOwogICAgICAgICByZXR1cm4gcmV0dXJuQWRkcmVzcyAtIGluc3Ry
dWN0aW9uc0JlZ2luOwogICAgIH0KQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgfQog
I2VuZGlmCiAKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0
cyA9IEhhc2hNYXA8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47
CiAKIHByaXZhdGU6CiAgICAgTExJbnRDYWxsZWUoRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3Im
LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9u
Pj4mJik7CkBAIC0zMDEsOSArMzAxLDkgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX251bUFy
Z3VtZW50cyB7IDAgfTsKICAgICBGaXhlZFZlY3RvcjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7CiAg
ICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+IG1fY29uc3RhbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdhc21JbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAgICAgY29uc3Qgdm9pZCog
bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwotICAgIEZpeGVkVmVjdG9yPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgRml4ZWRWZWN0b3I8
dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAg
ICAgRml4ZWRWZWN0b3I8Y29uc3QgU2lnbmF0dXJlKj4gbV9zaWduYXR1cmVzOwogICAgIE91dE9m
TGluZUp1bXBUYXJnZXRzIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAgICAgTExJbnRUaWVyVXBD
b3VudGVyIG1fdGllclVwQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4IDQx
NzQ5MTNkNjhjYjY1YzgxZTY4MTI3Nzk1ZDMwMmEwYTg3NmJiMzcuLjljMzI2ZDYyMTYxOTE3ZDc4
MTIyOWZkZDExYTkzMDUzODUzZGNjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcApAQCAt
MzMsMTkgKzMzLDE5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLXZv
aWQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OnNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1
ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGluc3RydWN0aW9ucykKK3ZvaWQgRnVuY3Rpb25Db2Rl
QmxvY2tHZW5lcmF0b3I6OnNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3Ry
dWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCiB7CiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZN
b3ZlKGluc3RydWN0aW9ucyk7CiAgICAgbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyID0gbV9pbnN0
cnVjdGlvbnMtPnJhd1BvaW50ZXIoKTsKIH0KIAotdm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVy
YXRvcjo6YWRkT3V0T2ZMaW5lSnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5
dGVjb2RlT2Zmc2V0LCBpbnQgdGFyZ2V0KQordm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRv
cjo6YWRkT3V0T2ZMaW5lSnVtcFRhcmdldCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCBieXRlY29kZU9mZnNldCwgaW50IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VCh0YXJnZXQpOwogICAgIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuc2V0KGJ5dGVjb2RlT2Zmc2V0
LCB0YXJnZXQpOwogfQogCi1JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IEZ1bmN0aW9uQ29kZUJs
b2NrR2VuZXJhdG9yOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgYnl0ZWNvZGVPZmZzZXQpCit0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFt
ZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAgICBB
U1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5jb250YWlucyhieXRlY29kZU9mZnNldCkpOwog
ICAgIHJldHVybiBtX291dE9mTGluZUp1bXBUYXJnZXRzLmdldChieXRlY29kZU9mZnNldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxv
Y2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDdlNGE0MGJmNDUwODZkZjc3OGEzMzMxMDk1MjFhYmE3
ZjczZmM3OWUuLjg1NThiMGU3NmNiZTk5NDgxNDM1NzNhMGMxZDMwNTkxNzMwYmI4MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvci5oCkBAIC04MSw3ICs4MSw4IEBAIHB1YmxpYzoKICAgICB1aW50MzJf
dCBudW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUFyZ3VtZW50czsgfQogICAgIGNv
bnN0IFZlY3RvcjxUeXBlPiYgY29uc3RhbnRUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3Rh
bnRUeXBlczsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNvbnN0YW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptX2luc3RydWN0aW9uczsgfQorICAgIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
b25zdGFudHM7IH0KKyAgICBjb25zdCBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuICptX2luc3RydWN0aW9uczsgfQogCiAgICAgdm9pZCBzZXROdW1W
YXJzKHVuc2lnbmVkIG51bVZhcnMpIHsgbV9udW1WYXJzID0gbnVtVmFyczsgfQogICAgIHZvaWQg
c2V0TnVtQ2FsbGVlTG9jYWxzKHVuc2lnbmVkIG51bUNhbGxlZUxvY2FscykgeyBtX251bUNhbGxl
ZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsgfQpAQCAtOTMsMjcgKzk0LDI3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fY29uc3RhbnRUeXBlc1tyZWcudG9Db25zdGFudEluZGV4KCldOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVj
dGlvblN0cmVhbT4pOwotICAgIHZvaWQgYWRkSnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IGp1bXBUYXJnZXQpIHsgbV9qdW1wVGFyZ2V0cy5hcHBlbmQoanVtcFRhcmdldCk7IH0K
LSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG51bWJlck9mSnVtcFRhcmdldHMoKSB7IHJl
dHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsgfQotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgbGFzdEp1bXBUYXJnZXQoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQorICAg
IHZvaWQgc2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25TdHJl
YW0+KTsKKyAgICB2b2lkIGFkZEp1bXBUYXJnZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQganVtcFRhcmdldCkgeyBtX2p1bXBUYXJnZXRzLmFwcGVuZChqdW1wVGFyZ2V0
KTsgfQorICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG51bWJlck9m
SnVtcFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsgfQorICAgIHR5cGVu
YW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxhc3RKdW1wVGFyZ2V0KCkgeyByZXR1
cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAotICAgIHZvaWQgYWRkT3V0T2ZMaW5lSnVtcFRh
cmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQgdGFyZ2V0KTsKLSAgICBJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCk7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zm
c2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAgIHZvaWQg
YWRkT3V0T2ZMaW5lSnVtcFRhcmdldCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgaW50IHRhcmdldCk7CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCk7CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0
T2ZMaW5lSnVtcE9mZnNldChjb25zdCB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNl
dChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHJldHVybkFk
ZHJlc3MpCisgICAgaW5saW5lIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAg
ICB7CiAgICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gbV9pbnN0cnVjdGlv
bnMtPmF0KDApLnB0cigpOwotICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIG1faW5zdHJ1Y3Rpb25zLT5zaXplKCkpOworICAg
ICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IFdhc21JbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlv
bnNCZWdpbikgKyBtX2luc3RydWN0aW9ucy0+c2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwg
aW5zdHJ1Y3Rpb25zRW5kKTsKICAgICAgICAgcmV0dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVj
dGlvbnNCZWdpbjsKICAgICB9CiAKLSAgICBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiYgdGllclVwQ291bnRlcigpIHsg
cmV0dXJuIG1fdGllclVwQ291bnRlcjsgfQorICAgIEhhc2hNYXA8dHlwZW5hbWUgV2FzbUluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiYg
dGllclVwQ291bnRlcigpIHsgcmV0dXJuIG1fdGllclVwQ291bnRlcjsgfQogCiAgICAgdW5zaWdu
ZWQgYWRkU2lnbmF0dXJlKGNvbnN0IFNpZ25hdHVyZSYpOwogCkBAIC0xMjUsNyArMTI2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYWRkRXhjZXB0aW9uSGFuZGxlcihjb25zdCBVbmxpbmtlZEhhbmRs
ZXJJbmZvJiBoYW5kbGVyKSB7IG1fZXhjZXB0aW9uSGFuZGxlcnMuYXBwZW5kKGhhbmRsZXIpOyB9
CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CisgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRh
cmdldHMgPSBIYXNoTWFwPHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBp
bnQ+OwogCiAgICAgdWludDMyX3QgbV9mdW5jdGlvbkluZGV4OwogCkBAIC0xMzYsMTIgKzEzNywx
MiBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fbnVtQXJndW1lbnRzIHsgMCB9OwogICAgIFZl
Y3RvcjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX2NvbnN0
YW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rp
b25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1
Y3Rpb25zOwogICAgIGNvbnN0IHZvaWQqIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51bGxw
dHIgfTsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0
czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1f
anVtcFRhcmdldHM7CiAgICAgVmVjdG9yPGNvbnN0IFNpZ25hdHVyZSo+IG1fc2lnbmF0dXJlczsK
ICAgICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwotICAgIEhh
c2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgTExJbnRUaWVyVXBDb3VudGVyOjpPU1JF
bnRyeURhdGE+IG1fdGllclVwQ291bnRlcjsKKyAgICBIYXNoTWFwPHR5cGVuYW1lIFdhc21JbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBMTEludFRpZXJVcENvdW50ZXI6Ok9TUkVudHJ5RGF0YT4g
bV90aWVyVXBDb3VudGVyOwogICAgIFZlY3RvcjxKdW1wVGFibGU+IG1fanVtcFRhYmxlczsKICAg
ICBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4gbV9leGNlcHRpb25IYW5kbGVyczsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRzLmgKaW5k
ZXggNmE4OGJiNGQwYjhhN2FmZjgxZDk4MDcwZGE2MjdhNTM5Njg2ZWQwMS4uNzA4MjNjODE2OTM0
NzU1NTI5YzA4YTY2Yzk3ODY4ZjIyMWIyYzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUdlbmVyYXRvclRyYWl0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaApAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3Qg
R2VuZXJhdG9yVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IFdhc21PcGNvZGVJRDsKICAg
ICB1c2luZyBPcE5vcCA9IFdhc21Ob3A7CiAgICAgdXNpbmcgQ29kZUJsb2NrID0gc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPjsKKyAgICB1c2luZyBJbnN0cnVjdGlv
blR5cGUgPSBXYXNtSW5zdHJ1Y3Rpb247CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBv
cGNvZGVGb3JEaXNhYmxpbmdPcHRpbWl6YXRpb25zID0gd2FzbV91bnJlYWNoYWJsZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3Bw
CmluZGV4IGI0MGU3MjFmOTc1MzRlMTI0YTU4ZDIyNGQ2ZGE1YTIzZGNhNzE1NGUuLmUzOThjNmU0
MDRlM2JlOTc0MjE3Zjk5NzE4YzY5MWMwMmY5ZjhiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtNDc0LDcgKzQ3NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZVByZXZpb3VzQmxvY2tGb3JDYXRjaChDb250cm9s
VHlwZSYsIFN0YWNrJik7CiAKICAgICBzdHJ1Y3QgU3dpdGNoRW50cnkgewotICAgICAgICBJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldDsKKyAgICAgICAgV2FzbUluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQgb2Zmc2V0OwogICAgICAgICBpbnQqIGp1bXBUYXJnZXQ7CiAgICAgfTsKIApA
QCAtNTEwLDcgKzUxMCw3IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVC
bG9ja0dlbmVyYXRvcj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQnl0CiB9CiAKIAotdXNpbmcg
QnVmZmVyID0gSW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uQnVmZmVyOwordXNpbmcgQnVm
ZmVyID0gdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvbkJ1ZmZlcjsK
IHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCdWZmZXI+KiB0aHJlYWRTcGVjaWZpY0J1ZmZlclB0cjsK
IAogc3RhdGljIFRocmVhZFNwZWNpZmljPEJ1ZmZlcj4mIHRocmVhZFNwZWNpZmljQnVmZmVyKCkK
QEAgLTEyMjgsNyArMTIyOCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFN3aXRjaChFeHBy
ZXNzaW9uVHlwZSBjb25kaXRpb24sIGNvbnN0IFZlY3RvcjxDb250cm9sVHlwCiAgICAgV2FzbVN3
aXRjaDo6ZW1pdCh0aGlzLCBjb25kaXRpb24sIHRhYmxlSW5kZXgpOwogCiAgICAgdW5zaWduZWQg
aW5kZXggPSAwOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0ID0gbV9sYXN0
SW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7CisgICAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQg
b2Zmc2V0ID0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7CiAKICAgICBhdXRvIGFkZFRhcmdl
dCA9IFsmXShDb250cm9sVHlwZSYgdGFyZ2V0KSB7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGFy
Z2V0TGFiZWwgPSB0YXJnZXQudGFyZ2V0TGFiZWxGb3JCcmFuY2goKTsKQEAgLTE4NTAsMTMgKzE4
NTAsMTMgQEAgdm9pZCBHZW5lcmljTGFiZWw8V2FzbTo6R2VuZXJhdG9yVHJhaXRzPjo6c2V0TG9j
YXRpb24oQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFdhc20KIAogI2RlZmluZSBDQVNFKF9fb3ApIFwK
ICAgICBjYXNlIF9fb3A6Om9wY29kZUlEOiAgXAotICAgICAgICBpbnN0cnVjdGlvbi0+Y2FzdDxf
X29wLCBXYXNtT3Bjb2RlVHJhaXRzPigpLT5zZXRUYXJnZXRMYWJlbChCb3VuZExhYmVsKHRhcmdl
dCksIFsmXSgpIHsgXAorICAgICAgICBpbnN0cnVjdGlvbi0+Y2FzdDxfX29wPigpLT5zZXRUYXJn
ZXRMYWJlbChCb3VuZExhYmVsKHRhcmdldCksIFsmXSgpIHsgXAogICAgICAgICAgICAgZ2VuZXJh
dG9yLm1fY29kZUJsb2NrLT5hZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KGluc3RydWN0aW9uLm9mZnNl
dCgpLCB0YXJnZXQpOyBcCiAgICAgICAgICAgICByZXR1cm4gQm91bmRMYWJlbCgpOyBcCiAgICAg
ICAgIH0pOyBcCiAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24t
Pm9wY29kZUlEPFdhc21PcGNvZGVUcmFpdHM+KCkpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVj
dGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBDQVNFKFdhc21KbXApCiAgICAgICAgIENBU0Uo
V2FzbUp0cnVlKQogICAgICAgICBDQVNFKFdhc21KZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuY3BwCmluZGV4IDA3NWM5
YWFiY2Y4YzFiOTZmOWNlMzgwOWNjYjM2MzczYzAyNWIwZGIuLjZhYzlkNWQ3ZWJiMmJiZDhjZTdj
Y2RkMWRiNDVjMzlmODY1OTdkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAotdm9pZCBMTEludFRpZXJVcENvdW50
ZXI6OmFkZE9TUkVudHJ5RGF0YUZvckxvb3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZz
ZXQsIE9TUkVudHJ5RGF0YSYmIGRhdGEpCit2b2lkIExMSW50VGllclVwQ291bnRlcjo6YWRkT1NS
RW50cnlEYXRhRm9yTG9vcCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBv
ZmZzZXQsIE9TUkVudHJ5RGF0YSYmIGRhdGEpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX29z
ckVudHJ5RGF0YS5hZGQob2Zmc2V0LCBXVEZNb3ZlKGRhdGEpKTsKICAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1hdXRvIExMSW50VGllclVw
Q291bnRlcjo6b3NyRW50cnlEYXRhRm9yTG9vcChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9m
ZnNldCkgY29uc3QgLT4gY29uc3QgT1NSRW50cnlEYXRhJgorYXV0byBMTEludFRpZXJVcENvdW50
ZXI6Om9zckVudHJ5RGF0YUZvckxvb3AodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgb2Zmc2V0KSBjb25zdCAtPiBjb25zdCBPU1JFbnRyeURhdGEmCiB7CiAgICAgYXV0byBl
bnRyeSA9IG1fb3NyRW50cnlEYXRhLmZpbmQob2Zmc2V0KTsKICAgICBSRUxFQVNFX0FTU0VSVChl
bnRyeSAhPSBtX29zckVudHJ5RGF0YS5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmgKaW5kZXggMTQwYTgyYzhlNGEzMTg3
OTNjY2ZiODMyMWMwMjUwMTk2YzgzNGVmYi4uMDI4YWI3ODE0YzgxMDI0Y2I0NjJhNTQyNjIxZGY4
ZjM3ODUyZjQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxM
SW50VGllclVwQ291bnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludFRpZXJVcENvdW50ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFZl
Y3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IHZhbHVlczsKICAgICB9OwogCi0gICAgTExJbnRUaWVyVXBD
b3VudGVyKEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhPiYm
IG9zckVudHJ5RGF0YSkKKyAgICBMTEludFRpZXJVcENvdW50ZXIoSGFzaE1hcDx0eXBlbmFtZSBX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhPiYmIG9zckVudHJ5RGF0
YSkKICAgICAgICAgOiBtX29zckVudHJ5RGF0YShXVEZNb3ZlKG9zckVudHJ5RGF0YSkpCiAgICAg
ewogICAgICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CkBAIC03NiwxNCArNzYsMTQgQEAgcHVi
bGljOgogICAgICAgICAgICAgc2V0TmV3VGhyZXNob2xkKE9wdGlvbnM6OnRocmVzaG9sZEZvck9N
R09wdGltaXplU29vbigpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZE9TUkVudHJ5RGF0YUZvckxv
b3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhJiYpOworICAgIHZvaWQg
YWRkT1NSRW50cnlEYXRhRm9yTG9vcCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgT1NSRW50cnlEYXRhJiYpOwogCi0gICAgY29uc3QgT1NSRW50cnlEYXRhJiBvc3JFbnRy
eURhdGFGb3JMb29wKEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpIGNvbnN0OworICAgIGNvbnN0
IE9TUkVudHJ5RGF0YSYgb3NyRW50cnlEYXRhRm9yTG9vcCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCkgY29uc3Q7CiAKICAgICBMb2NrIG1fbG9jazsKICAgICBDb21waWxh
dGlvblN0YXR1cyBtX2NvbXBpbGF0aW9uU3RhdHVzIHsgQ29tcGlsYXRpb25TdGF0dXM6Ok5vdENv
bXBpbGVkIH07CiAgICAgQ29tcGlsYXRpb25TdGF0dXMgbV9sb29wQ29tcGlsYXRpb25TdGF0dXMg
eyBDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQgfTsKLSAgICBIYXNoTWFwPEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YT4gbV9vc3JFbnRyeURhdGE7CisgICAgSGFz
aE1hcDx0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRh
PiBtX29zckVudHJ5RGF0YTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IGNmMjdmZWEz
MjkwZDMwODBjMDJmNDJiYTU5NmVjMjhiMmY4OTU0ZGIuLjJhODY3ZDZjNzNmZGVmM2U5MTg3MDZh
M2YwNzJjMGQ1ODI5OTNjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
bG93UGF0aHMuY3BwCkBAIC0yODksMTMgKzI4OSwxMyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRy
YWNlKQogICAgIGlmICghT3B0aW9uczo6dHJhY2VMTEludEV4ZWN1dGlvbigpKQogICAgICAgICBX
QVNNX0VORF9JTVBMKCk7CiAKLSAgICBXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQgPSBwYy0+b3Bjb2Rl
SUQ8V2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQgPSBwYy0+
b3Bjb2RlSUQoKTsKICAgICBkYXRhTG9nRigiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1
LCAlcywgcGMgPSAlcFxuIiwKICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICBD
QUxMRUUoKSwKICAgICAgICAgY2FsbEZyYW1lLAogICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4oQ0FMTEVFKCktPmJ5dGVjb2RlT2Zmc2V0KHBjKSksCi0gICAgICAgIHBjLT5uYW1lPFdhc21P
cGNvZGVUcmFpdHM+KCksCisgICAgICAgIHBjLT5uYW1lKCksCiAgICAgICAgIHBjKTsKICAgICBp
ZiAob3Bjb2RlSUQgPT0gd2FzbV9lbnRlcikgewogICAgICAgICBkYXRhTG9nRigiRnJhbWUgd2ls
bCBldmVudHVhbGx5IHJldHVybiB0byAlcFxuIiwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVl
KCkpOwpAQCAtMzE4LDEzICszMTgsMTMgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChvdXRfb2ZfbGlu
ZV9qdW1wX3RhcmdldCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTChyZWZfZnVuYykKIHsKLSAgICBh
dXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZWZGdW5jLCBXYXNtT3Bjb2RlVHJhaXRzPigp
OworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJlZkZ1bmM+KCk7CiAgICAgV0FT
TV9SRVRVUk4oV2FzbTo6b3BlcmF0aW9uV2FzbVJlZkZ1bmMoaW5zdGFuY2UsIGluc3RydWN0aW9u
Lm1fZnVuY3Rpb25JbmRleCkpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dldCkK
IHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUdldCwgV2FzbU9wY29k
ZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUdldD4o
KTsKICAgICBpbnQzMl90IGluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2luZGV4KS51bmJveGVk
SW50MzIoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSBXYXNtOjpvcGVyYXRpb25HZXRX
YXNtVGFibGVFbGVtZW50KGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluZGV4
KTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTMzNCw3ICszMzQsNyBAQCBXQVNNX1NMT1dfUEFUSF9E
RUNMKHRhYmxlX2dldCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9zZXQpCiB7Ci0gICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVTZXQsIFdhc21PcGNvZGVUcmFpdHM+
KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVTZXQ+KCk7CiAgICAg
dWludDMyX3QgaW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1faW5kZXgpLnVuYm94ZWRVSW50MzIo
KTsKICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1ZSku
ZW5jb2RlZEpTVmFsdWUoKTsKICAgICBpZiAoIVdhc206Om9wZXJhdGlvblNldFdhc21UYWJsZUVs
ZW1lbnQoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5kZXgsIHZhbHVlKSkK
QEAgLTM0NCw3ICszNDQsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX3NldCkKIAogV0FT
TV9TTE9XX1BBVEhfREVDTCh0YWJsZV9pbml0KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBw
Yy0+YXM8V2FzbVRhYmxlSW5pdCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUluaXQ+KCk7CiAgICAgdWludDMyX3QgZHN0T2Zmc2V0
ID0gUkVBRChpbnN0cnVjdGlvbi5tX2RzdE9mZnNldCkudW5ib3hlZFVJbnQzMigpOwogICAgIHVp
bnQzMl90IHNyY09mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zcmNPZmZzZXQpLnVuYm94ZWRV
SW50MzIoKTsKICAgICB1aW50MzJfdCBsZW5ndGggPSBSRUFEKGluc3RydWN0aW9uLm1fbGVuZ3Ro
KS51bmJveGVkVUludDMyKCk7CkBAIC0zNTcsMjAgKzM1NywyMCBAQCBXQVNNX1NMT1dfUEFUSF9E
RUNMKGVsZW1fZHJvcCkKIHsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKIAotICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUVsZW1Ecm9wLCBXYXNtT3Bjb2RlVHJhaXRzPigp
OworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUVsZW1Ecm9wPigpOwogICAgIFdh
c206Om9wZXJhdGlvbldhc21FbGVtRHJvcChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9lbGVtZW50
SW5kZXgpOwogICAgIFdBU01fRU5EKCk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVf
c2l6ZSkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZVNpemUsIFdh
c21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFi
bGVTaXplPigpOwogICAgIFdBU01fUkVUVVJOKFdhc206Om9wZXJhdGlvbkdldFdhc21UYWJsZVNp
emUoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCkpOwogfQogCiBXQVNNX1NMT1df
UEFUSF9ERUNMKHRhYmxlX2ZpbGwpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtVGFibGVGaWxsLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbVRhYmxlRmlsbD4oKTsKICAgICB1aW50MzJfdCBvZmZzZXQgPSBSRUFEKGlu
c3RydWN0aW9uLm1fb2Zmc2V0KS51bmJveGVkVUludDMyKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUg
ZmlsbCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9maWxsKS5lbmNvZGVkSlNWYWx1ZSgpOwogICAgIHVp
bnQzMl90IHNpemUgPSBSRUFEKGluc3RydWN0aW9uLm1fc2l6ZSkudW5ib3hlZFVJbnQzMigpOwpA
QCAtMzgxLDcgKzM4MSw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfZmlsbCkKIAogV0FT
TV9TTE9XX1BBVEhfREVDTCh0YWJsZV9jb3B5KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBw
Yy0+YXM8V2FzbVRhYmxlQ29weSwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUNvcHk+KCk7CiAgICAgaW50MzJfdCBkc3RPZmZzZXQg
PSBSRUFEKGluc3RydWN0aW9uLm1fZHN0T2Zmc2V0KS51bmJveGVkSW50MzIoKTsKICAgICBpbnQz
Ml90IHNyY09mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zcmNPZmZzZXQpLnVuYm94ZWRJbnQz
MigpOwogICAgIGludDMyX3QgbGVuZ3RoID0gUkVBRChpbnN0cnVjdGlvbi5tX2xlbmd0aCkudW5i
b3hlZEludDMyKCk7CkBAIC0zOTIsNyArMzkyLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJs
ZV9jb3B5KQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dyb3cpCiB7Ci0gICAgYXV0byBp
bnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVHcm93LCBXYXNtT3Bjb2RlVHJhaXRzPigpOwor
ICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlR3Jvdz4oKTsKICAgICBFbmNv
ZGVkSlNWYWx1ZSBmaWxsID0gUkVBRChpbnN0cnVjdGlvbi5tX2ZpbGwpLmVuY29kZWRKU1ZhbHVl
KCk7CiAgICAgdWludDMyX3Qgc2l6ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zaXplKS51bmJveGVk
VUludDMyKCk7CiAgICAgV0FTTV9SRVRVUk4oV2FzbTo6b3BlcmF0aW9uV2FzbVRhYmxlR3Jvdyhp
bnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBmaWxsLCBzaXplKSk7CkBAIC00MDAs
MTQgKzQwMCwxNCBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dyb3cpCiAKIFdBU01fU0xP
V19QQVRIX0RFQ0woZ3Jvd19tZW1vcnkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtR3Jvd01lbW9yeSwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21Hcm93TWVtb3J5PigpOwogICAgIGludDMyX3QgZGVsdGEgPSBSRUFE
KGluc3RydWN0aW9uLm1fZGVsdGEpLnVuYm94ZWRJbnQzMigpOwogICAgIFdBU01fUkVUVVJOKFdh
c206Om9wZXJhdGlvbkdyb3dNZW1vcnkoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZGVsdGEpKTsKIH0K
IAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfZmlsbCkKIHsKLSAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21NZW1vcnlGaWxsLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUZpbGw+KCk7CiAgICAgdWludDMyX3Qg
ZHN0QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9kc3RBZGRyZXNzKS51bmJveGVkVUludDMy
KCk7CiAgICAgdWludDMyX3QgdGFyZ2V0VmFsdWUgPSBSRUFEKGluc3RydWN0aW9uLm1fdGFyZ2V0
VmFsdWUpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBjb3VudCA9IFJFQUQoaW5zdHJ1
Y3Rpb24ubV9jb3VudCkudW5ib3hlZFVJbnQzMigpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIFdBU01f
U0xPV19QQVRIX0RFQ0wobWVtb3J5X2ZpbGwpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5
X2NvcHkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5Q29weSwg
V2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21N
ZW1vcnlDb3B5PigpOwogICAgIHVpbnQzMl90IGRzdEFkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9u
Lm1fZHN0QWRkcmVzcykudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90IHNyY0FkZHJlc3Mg
PSBSRUFEKGluc3RydWN0aW9uLm1fc3JjQWRkcmVzcykudW5ib3hlZFVJbnQzMigpOwogICAgIHVp
bnQzMl90IGNvdW50ID0gUkVBRChpbnN0cnVjdGlvbi5tX2NvdW50KS51bmJveGVkVUludDMyKCk7
CkBAIC00MjksNyArNDI5LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfY29weSkKIAog
V0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfaW5pdCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9u
ID0gcGMtPmFzPFdhc21NZW1vcnlJbml0LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUluaXQ+KCk7CiAgICAgdWludDMyX3QgZHN0
QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9kc3RBZGRyZXNzKS51bmJveGVkVUludDMyKCk7
CiAgICAgdWludDMyX3Qgc3JjQWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zcmNBZGRyZXNz
KS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3QgbGVuZ3RoID0gUkVBRChpbnN0cnVjdGlv
bi5tX2xlbmd0aCkudW5ib3hlZFVJbnQzMigpOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIFdBU01fU0xP
V19QQVRIX0RFQ0woZGF0YV9kcm9wKQogewogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwog
Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtRGF0YURyb3AsIFdhc21PcGNvZGVU
cmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtRGF0YURyb3A+KCk7
CiAgICAgV2FzbTo6b3BlcmF0aW9uV2FzbURhdGFEcm9wKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5t
X2RhdGFTZWdtZW50SW5kZXgpOwogICAgIFdBU01fRU5EKCk7CiB9CkBAIC00NzQsNyArNDc0LDcg
QEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsKQogewogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbCwgV2FzbU9wY29k
ZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsPigpOwog
ICAgIHJldHVybiBkb1dhc21DYWxsKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5k
ZXgpOwogfQogCkBAIC00ODIsNyArNDgyLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX25v
X3RscykKIHsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gaW5zdHJ1
Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxOb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBh
dXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsTm9UbHM+KCk7CiAgICAgcmV0dXJuIGRv
V2FzbUNhbGwoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCk7CiB9CiAKQEAg
LTUxMSwxNCArNTExLDE0IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZG9XYXNtQ2FsbElu
ZGlyZWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBXYXNtOjpJbnN0YW5jCiAKIFdBU01fU0xPV19Q
QVRIX0RFQ0woY2FsbF9pbmRpcmVjdCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFz
PFdhc21DYWxsSW5kaXJlY3QsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVj
dGlvbiA9IHBjLT5hczxXYXNtQ2FsbEluZGlyZWN0PigpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9u
SW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCkudW5ib3hlZEludDMyKCk7
CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVjdChjYWxsRnJhbWUsIGluc3RhbmNlLCBmdW5j
dGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluc3RydWN0aW9uLm1fc2lnbmF0
dXJlSW5kZXgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfaW5kaXJlY3Rfbm9fdGxz
KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxJbmRpcmVjdE5vVGxz
LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2Fz
bUNhbGxJbmRpcmVjdE5vVGxzPigpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBSRUFE
KGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCkudW5ib3hlZEludDMyKCk7CiAgICAgcmV0dXJu
IGRvV2FzbUNhbGxJbmRpcmVjdChjYWxsRnJhbWUsIGluc3RhbmNlLCBmdW5jdGlvbkluZGV4LCBp
bnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOwog
fQpAQCAtNTQ4LDM1ICs1NDgsMzUgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkb1dhc21D
YWxsUmVmKENhbGxGcmFtZSogY2FsbEZyYW1lLCBXYXNtOjpJbnN0YW5jZSogY2EKIAogV0FTTV9T
TE9XX1BBVEhfREVDTChjYWxsX3JlZikKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFz
PFdhc21DYWxsUmVmLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbUNhbGxSZWY+KCk7CiAgICAgSlNWYWx1ZSByZWZlcmVuY2UgPSBKU1ZhbHVl
OjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uUmVmZXJlbmNlKS5lbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihjYWxsRnJhbWUsIGluc3RhbmNlLCBy
ZWZlcmVuY2UsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOwogfQogCiBXQVNNX1NMT1df
UEFUSF9ERUNMKGNhbGxfcmVmX25vX3RscykKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21DYWxsUmVmTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0
cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJlZk5vVGxzPigpOwogICAgIEpTVmFsdWUgcmVmZXJl
bmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5j
ZSkuZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1l
LCBpbnN0YW5jZSwgcmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKIH0K
IAogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3JlZikKIHsKLSAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWYsIFdhc21PcGNvZGVUcmFpdHM+KCk7Cisg
ICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtU2V0R2xvYmFsUmVmPigpOwogICAgIGlu
c3RhbmNlLT5zZXRHbG9iYWwoaW5zdHJ1Y3Rpb24ubV9nbG9iYWxJbmRleCwgUkVBRChpbnN0cnVj
dGlvbi5tX3ZhbHVlKS5qc1ZhbHVlKCkpOwogICAgIFdBU01fRU5EX0lNUEwoKTsKIH0KIAogV0FT
TV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3JlZl9wb3J0YWJsZV9iaW5kaW5nKQogewotICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVNldEdsb2JhbFJlZlBvcnRhYmxlQmluZGlu
ZywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21TZXRHbG9iYWxSZWZQb3J0YWJsZUJpbmRpbmc+KCk7CiAgICAgaW5zdGFuY2UtPnNldEdsb2Jh
bChpbnN0cnVjdGlvbi5tX2dsb2JhbEluZGV4LCBSRUFEKGluc3RydWN0aW9uLm1fdmFsdWUpLmpz
VmFsdWUoKSk7CiAgICAgV0FTTV9FTkRfSU1QTCgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNM
KG1lbW9yeV9hdG9taWNfd2FpdDMyKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbU1lbW9yeUF0b21pY1dhaXQzMiwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGlu
c3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlBdG9taWNXYWl0MzI+KCk7CiAgICAgdW5zaWdu
ZWQgYmFzZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9wb2ludGVyKS51bmJveGVkSW50MzIoKTsKICAg
ICB1bnNpZ25lZCBvZmZzZXQgPSBpbnN0cnVjdGlvbi5tX29mZnNldDsKICAgICB1aW50MzJfdCB2
YWx1ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1ZSkudW5ib3hlZEludDMyKCk7CkBAIC01ODks
NyArNTg5LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfYXRvbWljX3dhaXQzMikKIAog
V0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfYXRvbWljX3dhaXQ2NCkKIHsKLSAgICBhdXRvIGlu
c3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlBdG9taWNXYWl0NjQsIFdhc21PcGNvZGVUcmFp
dHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5QXRvbWljV2Fp
dDY0PigpOwogICAgIHVuc2lnbmVkIGJhc2UgPSBSRUFEKGluc3RydWN0aW9uLm1fcG9pbnRlciku
dW5ib3hlZEludDMyKCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gaW5zdHJ1Y3Rpb24ubV9vZmZz
ZXQ7CiAgICAgdWludDY0X3QgdmFsdWUgPSBSRUFEKGluc3RydWN0aW9uLm1fdmFsdWUpLnVuYm94
ZWRJbnQ2NCgpOwpAQCAtNjAyLDcgKzYwMiw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5
X2F0b21pY193YWl0NjQpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2F0b21pY19ub3Rp
ZnkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5QXRvbWljTm90
aWZ5LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbU1lbW9yeUF0b21pY05vdGlmeT4oKTsKICAgICB1bnNpZ25lZCBiYXNlID0gUkVBRChpbnN0
cnVjdGlvbi5tX3BvaW50ZXIpLnVuYm94ZWRJbnQzMigpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9
IGluc3RydWN0aW9uLm1fb2Zmc2V0OwogICAgIGludDMyX3QgY291bnQgPSBSRUFEKGluc3RydWN0
aW9uLm1fY291bnQpLnVuYm94ZWRJbnQzMigpOwpAQCAtNjIxLDcgKzYyMSw3IEBAIFdBU01fU0xP
V19QQVRIX0RFQ0wodGhyb3cpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBp
bnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGhyb3csIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGhyb3c+KCk7CiAgICAgY29uc3QgV2FzbTo6
VGFnJiB0YWcgPSBpbnN0YW5jZS0+dGFnKGluc3RydWN0aW9uLm1fZXhjZXB0aW9uSW5kZXgpOwog
CiAgICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+IHZhbHVlcyh0YWcucGFyYW1ldGVyQ291bnQoKSk7
CkBAIC02NTUsNyArNjU1LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChyZXRocm93KQogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJl
dGhyb3csIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtUmV0aHJvdz4oKTsKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IFJFQUQoaW5zdHJ1Y3Rp
b24ubV9leGNlcHRpb24pLmpzVmFsdWUoKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CiAKQEAgLTY5OSwxNCArNjk5LDE0IEBAIFdBU01f
U0xPV19QQVRIX0RFQ0wocmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbikKICAgICAgICAgY2Fs
bEZyYW1lLT51bmNoZWNrZWRSKGluc3RydWN0aW9uLm1fZXhjZXB0aW9uKSA9IHRocm93blZhbHVl
OwogICAgIH07CiAKLSAgICBpZiAocGMtPmlzPFdhc21DYXRjaCwgV2FzbU9wY29kZVRyYWl0cz4o
KSkKLSAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21DYXRjaCwgV2FzbU9wY29kZVRyYWl0
cz4oKSk7Ci0gICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaEFsbCwgV2FzbU9wY29kZVRyYWl0
cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbCwgV2FzbU9w
Y29kZVRyYWl0cz4oKSk7Ci0gICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaE5vVGxzLCBXYXNt
T3Bjb2RlVHJhaXRzPigpKQotICAgICAgICBoYW5kbGVDYXRjaChwYy0+YXM8V2FzbUNhdGNoTm9U
bHMsIFdhc21PcGNvZGVUcmFpdHM+KCkpOwotICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hB
bGxOb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMt
PmFzPFdhc21DYXRjaEFsbE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpKTsKKyAgICBpZiAocGMt
PmlzPFdhc21DYXRjaD4oKSkKKyAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21DYXRjaD4o
KSk7CisgICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaEFsbD4oKSkKKyAgICAgICAgaGFuZGxl
Q2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbD4oKSk7CisgICAgZWxzZSBpZiAocGMtPmlzPFdh
c21DYXRjaE5vVGxzPigpKQorICAgICAgICBoYW5kbGVDYXRjaChwYy0+YXM8V2FzbUNhdGNoTm9U
bHM+KCkpOworICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hBbGxOb1Rscz4oKSkKKyAgICAg
ICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbE5vVGxzPigpKTsKICAgICBlbHNl
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKQEAgLTcxNywxOSArNzE3
LDE5IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wocmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbikK
ICAgICBXQVNNX1JFVFVSTl9UV08ocGMsIHBheWxvYWQpOwogfQogCi1leHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24oQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNl
LCBXYXNtOjpFeGNlcHRpb25UeXBlIGV4Y2VwdGlvblR5cGUpCitleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24oQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMsIFdhc206Okluc3RhbmNlKiBpbnN0YW5j
ZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSBleGNlcHRpb25UeXBlKQogewogICAgIFVOVVNFRF9QQVJB
TShwYyk7CiAgICAgV0FTTV9SRVRVUk5fVFdPKG9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKGNh
bGxGcmFtZSwgZXhjZXB0aW9uVHlwZSwgaW5zdGFuY2UpLCBudWxscHRyKTsKIH0KIAotZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnQoY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCB1aW50MzJfdCB4KQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
c2xvd19wYXRoX3dhc21fcG9wY291bnQoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWludDMy
X3QgeCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PHVpbnQ2NF90PihfX2J1aWx0aW5fcG9wY291bnQoeCkpKTsKICAgICBXQVNNX1JFVFVSTl9U
V08ocGMsIHJlc3VsdCk7CiB9CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3df
cGF0aF93YXNtX3BvcGNvdW50bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCB4KQor
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnRsbChj
b25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCB4KQogewogICAgIHZvaWQqIHJlc3Vs
dCA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9fYnVpbHRpbl9w
b3Bjb3VudGxsKHgpKSk7CiAgICAgV0FTTV9SRVRVUk5fVFdPKHBjLCByZXN1bHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCmluZGV4IGI2NGNlN2NkZTQxYWFh
MDY4OTdlOGZmZmVkODJhOGQwNjQzMmRmZDAuLjQ2MDllMzZiMDM5MjRkMTBlYTAyNzQ1NjEwZjBm
MmZlNGU4MzFmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhz
LmgKQEAgLTM0LDkgKzM0LDEyIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1l
Owotc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCit0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBXYXNtT3Bjb2RlVHJh
aXRzOwordXNpbmcgV2FzbUluc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVU
cmFpdHM+OworCiBuYW1lc3BhY2UgV2FzbSB7CiBjbGFzcyBJbnN0YW5jZTsKIH0KQEAgLTQ0LDcg
KzQ3LDcgQEAgY2xhc3MgSW5zdGFuY2U7CiBuYW1lc3BhY2UgTExJbnQgewogCiAjZGVmaW5lIFdB
U01fU0xPV19QQVRIX0RFQ0wobmFtZSkgXAotICAgIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIHNsb3dfcGF0aF93YXNtXyMjbmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UpCisgICAgZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fIyNuYW1lKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2Up
CiAKICNkZWZpbmUgV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wobmFtZSkgXAogICAgIFdBU01f
U0xPV19QQVRIX0RFQ0wobmFtZSkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUwKQEAg
LTg3LDkgKzkwLDkgQEAgV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wodGhyb3cpOwogV0FTTV9T
TE9XX1BBVEhfSElEREVOX0RFQ0wocmV0aHJvdyk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVD
TChyZXRyaWV2ZV9hbmRfY2xlYXJfZXhjZXB0aW9uKTsKIAotZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgc2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKiwgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25U
eXBlKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKLWV4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50KGNvbnN0IEluc3RydWN0aW9uKiBw
YywgdWludDMyX3QpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwotZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnRsbChjb25zdCBJbnN0
cnVjdGlvbiogcGMsIHVpbnQ2NF90KSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsK
K2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3Rocm93X2V4Y2Vw
dGlvbihDYWxsRnJhbWUqLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qLCBXYXNtOjpJbnN0YW5jZSog
aW5zdGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lO
VEVSTkFMOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9w
Y291bnQoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWludDMyX3QpIFJFRkVSRU5DRURfRlJP
TV9BU00gV1RGX0lOVEVSTkFMOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19w
YXRoX3dhc21fcG9wY291bnRsbChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCkg
UkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453570</attachid>
            <date>2022-03-01 21:57:37 -0800</date>
            <delta_ts>2022-03-02 09:17:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237347-20220301215736.patch</filename>
            <type>text/plain</type>
            <size>375040</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDBlZmU2YjYzNDkzM2Q3NzkxM2Y3MzU5MmNmNWY5MjJiY2NhYWJkLi44MDYzY2ZmNTdhMzE3ODRm
YjAyM2M3MDBiOGJhZDhjNzMwNzM3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NjIgQEAKKzIwMjItMDMtMDEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE9wY29kZVRyYWl0cyB0byBzdXBwb3J0IHRo
ZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgMi1ieXRlIFdBU00gb3Bjb2RlIGlkcyBpbiBieXRlY29k
ZSBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzczNDcKKworICAgICAgICBUaGUgbnVtYmVyIG9mIFdBU00gb3Bjb2RlcyB3aWxsIGluY3Jl
YXNlIGJleW9uZCAyNTUgd2hlbiBXQVNNIFNJTUQgaXMgaW1wbGVtZW50ZWQsIGFuZCBzbyB0aGlz
IHBhdGNoCisgICAgICAgIGNoYW5nZXMgT3Bjb2RlVHJhaXRzIHRvIGFsbG93IGZvciB0aGUgcG9z
c2liaWxpdHkgb2YgaGF2aW5nIHR3by1ieXRlIFdBU00gb3Bjb2RlcyB3aXRob3V0IHJlZ3Jlc3Np
bmcKKyAgICAgICAgSlMuIFdlIGhhdmUgdG8gdGhyZWFkIHRoZXNlIE9wY29kZVRyYWl0cyBldmVy
eXdoZXJlIHRoYXQgdGhleSBhcmUgdXNlZCBzbyB0aGF0IGNvZGUgY2FuIHJlYWQgdGhlCisgICAg
ICAgIGNvcnJlY3QgdmFsdWUgd2hlbiBkZWNvZGluZyBhbiBpbnN0cnVjdGlvbiBzdHJlYW0uIFRo
aXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIHRoZSBzaXplIG9mIFdBU00gb3Bjb2RlcworICAgICAg
ICB5ZXQsIGFsdGhvdWdoIEkgaGF2ZSB0ZXN0ZWQgdGhhdCB0aGUgdGVzdCBzdWl0ZSBzdGlsbCBw
YXNzZXMgaWYgd2UgZG8gaW5jcmVhc2UgdGhlIG9wY29kZSBzaXplLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OkJ5dGVjb2RlQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjphZGRMZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2lj
QmxvY2s8T3Bjb2RlVHJhaXRzPjo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjppc0p1bXBU
YXJnZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6
Y29tcHV0ZUltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVU
cmFpdHM+Ojpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRl
Y29kZUJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmFkZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25B
bmRPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVh
bVR5cGU+OjpkdW1wVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
Om91dE9mTGluZUp1bXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAg
IChKU0M6Oldhc206OkJ5dGVjb2RlRHVtcGVyOjpyZWdpc3Rlck5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCBjb25zdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppbnN0cnVjdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4p
OgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3Jb
XSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmR1bXApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBoKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRl
TG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEluc3Ry
dWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5M
aXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjpyZXBsYWNlQnl0ZWNvZGVXaXRoRnJhZ21lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjphZGp1c3RBYnNvbHV0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdEp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFu
ZENvbHVtbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdV
cGRhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5h
cnlBcml0aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0
aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlv
bkF0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAo
SlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om9wY29kZUlEIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
Ojppc1dpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aXNXaWRl
MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNNZXRhZGF0YSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om51bWJlck9mQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OnNpemVTaGlmdEFtb3VudCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURXaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURCeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0
cnVjdGlvbjo6aXMgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmNhc3QpOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OmNhc3QgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rp
b246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHA6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5CeXRlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaDoKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6Om9wZXJhdG9yLT4gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6QmFzZVJlZjo6cHRyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6OnVud3JhcCBjb25zdCk6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6cHRyKToK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6OnB0ciBjb25zdCk6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjp1bndyYXApOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6dW53cmFwIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Oml0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVy
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OnN3YXApOgorICAgICAgICAoSlND
OjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNPcGNvZGVTaGFwZSk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlU2l6ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6Cisg
ICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6anVtcFRh
cmdldEZvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6ZXh0cmFjdFN0b3JlZEp1bXBUYXJn
ZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjp1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0
c0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OmR1bXBMaW5lQ29sdW1uRW50cnkpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
bnN0cnVjdGlvbkF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6
b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6d2l0aFdyaXRlcik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjpyZWNvcmRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRlT3Bjb2RlMTYp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRl
T3Bjb2RlMzIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
Lmg6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMpOgorICAgICAgICAo
SlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVW
YXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJl
Y3Vyc2l2ZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0
eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJl
dHVyblBDKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
b21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToK
KyAgICAgICAgKiBnZW5lcmF0b3IvQXJndW1lbnQucmI6CisgICAgICAgICogZ2VuZXJhdG9yL0RT
TC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvT3Bjb2RlLnJiOgorICAgICAgICAqIGludGVycHJl
dGVyL0Fic3RyYWN0UEMuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmN1cnJlbnRWUEMgY29uc3QpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2F0Y2hJbmZvOjpDYXRjaEluZm8pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGht
ZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbGVzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pn
cmVhdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pncmVhdGVyZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5sZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2pubGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZ3JlYXRlcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3Bfamxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2psZXNz
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9qbmxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pubGVz
c2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2JlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JlbG93ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamJlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2piZWxvd2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Bvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcG93KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0
aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRub3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdHhvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Vyc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9z
dWIpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jYWxsX2V2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2FsbF92
YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1bWVQb2ludCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpJVDo6anVtcFRhcmdldCk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW92KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbXApOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfZW1wdHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191
bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X2NlbGxfd2l0aF90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3NldF9mdW5jdGlvbl9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2plcV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5l
cV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9z
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5zdHJpY3Rl
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmlj
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zd2l0Y2hfY2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5n
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRl
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVidWcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19yZWdleHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Fz
eW5jX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhf
c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1l
bnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2plcSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9zdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pz
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcSk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
dHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGly
ZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRl
X2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpMTEludDo6d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgor
ICAgICAgICAoSlNDOjpMTEludDo6d2FzbVJldHVyblRvVGhyb3cpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50
R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTEludDo6ZGlzcGF0
Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkNMb29w
UmVnaXN0ZXI6Om9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKToKKyAgICAgICAgKEpTQzo6
Q0xvb3A6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpDTG9vcFJlZ2lzdGVyOjpvcGVyYXRvciBj
b25zdCBJbnN0cnVjdGlvbiopOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZEluc3RydWN0aW9uU3RyZWFt
OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFz
dEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6Cisg
ICAgICAgIChKU0M6OlZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAo
SlNDOjpWTTo6cmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRDYWxsZWU6OkxMSW50Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRDYWxsZWU6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTElu
dENhbGxlZTo6b3V0T2ZMaW5lSnVtcFRhcmdldCk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVl
Lmg6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6c2V0SW5zdHJ1
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6
OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogd2FzbS9X
YXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVu
Y3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OmNvbnN0YW50UmVnaXN0ZXJzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6Omluc3RydWN0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjph
ZGRKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5l
cmF0b3I6Om51bWJlck9mSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlv
bkNvZGVCbG9ja0dlbmVyYXRvcjo6bGFzdEp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNt
OjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpieXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjp0aWVy
VXBDb3VudGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50R2VuZXJhdG9yOjphZGRTd2l0Y2gpOgorICAgICAgICAoSlNDOjpHZW5lcmljTGFiZWw8V2Fz
bTo6R2VuZXJhdG9yVHJhaXRzPjo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIHdhc20vV2FzbUxM
SW50VGllclVwQ291bnRlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50VGllclVwQ291
bnRlcjo6YWRkT1NSRW50cnlEYXRhRm9yTG9vcCk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50
VGllclVwQ291bnRlcjo6b3NyRW50cnlEYXRhRm9yTG9vcCBjb25zdCBjb25zdCk6CisgICAgICAg
ICogd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmg6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50VGllclVwQ291bnRlcjo6TExJbnRUaWVyVXBDb3VudGVyKToKKyAgICAgICAgKiB3YXNtL1dh
c21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6V0FTTV9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24p
OgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fcG9wY291bnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fcG9wY291bnRsbCk6CisgICAgICAgICogd2Fz
bS9XYXNtU2xvd1BhdGhzLmg6CisKIDIwMjItMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQXBwbGVXaW5dIFN0YXJ0IHVzaW5nIFZp
c3VhbCBTdHVkaW8gMjAyMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3NWE0N2JjZTVjMTA0ZWQ3OWQ2NzM5ZTk4
ZGVhNDhhZGI0ZWQxNjIxLi5iODIyYmI0ZWY4ZjE2ZjNhZDdhOWJmNGI3ZTk2Y2MxODdmNzcxMjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcApAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5F
X0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihCeXRlY29kZUJhc2ljQmxvY2spOwogCi1C
eXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayhjb25zdCBJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgYmxvY2tJbmRleCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK0J5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpC
eXRlY29kZUJhc2ljQmxvY2soY29uc3QgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpS
ZWYmIGluc3RydWN0aW9uLCB1bnNpZ25lZCBibG9ja0luZGV4KQogICAgIDogbV9sZWFkZXJPZmZz
ZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpCiAgICAgLCBtX3RvdGFsTGVuZ3RoKDApCiAgICAgLCBt
X2luZGV4KGJsb2NrSW5kZXgpCkBAIC00MiwyNiArNDMsMzAgQEAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjpCeXRlY29kZUJhc2ljQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1
Y3Rpb24KICAgICBhZGRMZW5ndGgoaW5zdHJ1Y3Rpb24tPnNpemUoKSk7CiB9CiAKLUJ5dGVjb2Rl
QmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jazo6U3BlY2lh
bEJsb2NrVHlwZSBibG9ja1R5cGUsIHVuc2lnbmVkIGJsb2NrSW5kZXgpCi0gICAgOiBtX2xlYWRl
ck9mZnNldChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6
IFVJTlRfTUFYKQotICAgICwgbV90b3RhbExlbmd0aChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6IFVJTlRfTUFYKQordGVtcGxhdGU8dHlwZW5hbWUgT3Bj
b2RlVHJhaXRzPgorQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkJ5dGVjb2RlQmFz
aWNCbG9jayh0eXBlbmFtZSBCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6U3BlY2lh
bEJsb2NrVHlwZSBibG9ja1R5cGUsIHVuc2lnbmVkIGJsb2NrSW5kZXgpCisgICAgOiBtX2xlYWRl
ck9mZnNldChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVu
dHJ5QmxvY2sgPyAwIDogVUlOVF9NQVgpCisgICAgLCBtX3RvdGFsTGVuZ3RoKGJsb2NrVHlwZSA9
PSBCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jayA/IDAgOiBVSU5U
X01BWCkKICAgICAsIG1faW5kZXgoYmxvY2tJbmRleCkKIHsKIH0KIAotdm9pZCBCeXRlY29kZUJh
c2ljQmxvY2s6OmFkZExlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OmFkZExlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkKIHsKICAgICBtX2RlbHRhLmFw
cGVuZChieXRlY29kZUxlbmd0aCk7CiAgICAgbV90b3RhbExlbmd0aCArPSBieXRlY29kZUxlbmd0
aDsKIH0KIAotdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkKK3RlbXBsYXRl
PHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz46OnNocmlua1RvRml0KCkKIHsKICAgICBtX2RlbHRhLnNocmlua1RvRml0KCk7CiAgICAg
bV9zdWNjZXNzb3JzLnNocmlua1RvRml0KCk7CiB9CiAKLXN0YXRpYyBib29sIGlzSnVtcFRhcmdl
dChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordGVtcGxhdGU8
dHlwZW5hbWUgT3Bjb2RlVHJhaXRzPgorc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KHR5cGVuYW1l
IE9wY29kZVRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3Rvcjx0eXBlbmFtZSBC
eXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpP
ZmZzZXQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9jYXRjaCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02OSwx
NCArNzQsMTUgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnMKICAgICByZXR1cm4gc3RkOjpiaW5h
cnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29k
ZU9mZnNldCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KIHRlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrPgotYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+
IEJhc2ljQmxvY2tWZWN0b3IKK2F1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46
OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlw
ZSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCiB7CiAgICAgQmFzaWNCbG9ja1Zl
Y3RvciBiYXNpY0Jsb2NrczsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
MzI+IGp1bXBUYXJnZXRzOworICAgIFZlY3Rvcjx0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5
cGU6Ok9mZnNldCwgMzI+IGp1bXBUYXJnZXRzOwogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGp1bXBUYXJnZXRzKTsKIAotICAgIGF1dG8gbGlu
a0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBmcm9tLCBCeXRlY29kZUJhc2ljQmxv
Y2smIHRvKSB7CisgICAgYXV0byBsaW5rQmxvY2tzID0gWyZdIChCeXRlY29kZUJhc2ljQmxvY2s8
T3Bjb2RlVHJhaXRzPiYgZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz4mIHRv
KSB7CiAgICAgICAgIGZyb20uYWRkU3VjY2Vzc29yKHRvKTsKICAgICB9OwogCkBAIC04NSwyNSAr
OTEsMjUgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBiYXNpY0Jsb2Nrcy5yZXNl
cnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIC8vIEVudHJ5IGJsb2NrLgotICAgICAgICAgICAgYmFzaWNCbG9ja3MuY29uc3RydWN0QW5k
QXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgp
KTsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChCeXRlY29kZUJh
c2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgpKTsK
ICAgICAgICAgICAgIC8vIEZpcnN0IGJsb2NrLgotICAgICAgICAgICAgYmFzaWNCbG9ja3MuY29u
c3RydWN0QW5kQXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jaywgYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChC
eXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Mu
c2l6ZSgpKTsKICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmFzaWNCbG9ja3NbMF0sIGJhc2ljQmxv
Y2tzWzFdKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVu
dCA9ICZiYXNpY0Jsb2Nrcy5sYXN0KCk7Ci0gICAgICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0g
KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKSAtPiBCeXRlY29kZUJh
c2ljQmxvY2sqIHsKKyAgICAgICAgYXV0byogY3VycmVudCA9ICZiYXNpY0Jsb2Nrcy5sYXN0KCk7
CisgICAgICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKGNvbnN0IHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6UmVmJiBpbnN0cnVjdGlvbikgLT4gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9w
Y29kZVRyYWl0cz4qIHsKICAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVu
ZChpbnN0cnVjdGlvbiwgYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAm
YmFzaWNCbG9ja3MubGFzdCgpOwogICAgICAgICB9OwogICAgICAgICBib29sIG5leHRJbnN0cnVj
dGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rp
b24gOiBpbnN0cnVjdGlvbnMpIHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVPZmZzZXQgPSBp
bnN0cnVjdGlvbi5vZmZzZXQoKTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCk7CisgICAgICAgICAgICBhdXRvIG9wY29kZUlEID0gaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAKICAgICAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFs
c2U7CiAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGp1bXAgdGFy
Z2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgotICAgICAg
ICAgICAgaWYgKG5leHRJbnN0cnVjdGlvbklzTGVhZGVyIHx8IGlzSnVtcFRhcmdldChvcGNvZGVJ
RCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgaWYgKG5leHRJ
bnN0cnVjdGlvbklzTGVhZGVyIHx8IGlzSnVtcFRhcmdldDxPcGNvZGVUcmFpdHM+KG9wY29kZUlE
LCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgY3VycmVu
dCA9IGFwcGVuZEJsb2NrKGluc3RydWN0aW9uKTsKICAgICAgICAgICAgICAgICBjcmVhdGVkQmxv
Y2sgPSB0cnVlOwogICAgICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFs
c2U7CkBAIC0xMjAsNyArMTI2LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICAg
ICAgY3VycmVudC0+YWRkTGVuZ3RoKGluc3RydWN0aW9uLT5zaXplKCkpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIEV4aXQgYmxvY2suCi0gICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFw
cGVuZChCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgpKTsK
KyAgICAgICAgYmFzaWNCbG9ja3MuY29uc3RydWN0QW5kQXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjpFeGl0QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAg
IGJhc2ljQmxvY2tzLnNocmlua1RvRml0KCk7CiAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2Nrcy5s
YXN0KCkuaXNFeGl0QmxvY2soKSk7CiAgICAgfQpAQCAtMTI4LDE1ICsxMzQsMTUgQEAgYXV0byBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJgogCiAgICAgLy8gTGluayBiYXNpYyBibG9ja3MgdG9nZXRoZXIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXTsKKyAgICAg
ICAgYXV0byYgYmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXTsKIAogICAgICAgICBpZiAoYmxvY2suaXNF
bnRyeUJsb2NrKCkgfHwgYmxvY2suaXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCB2aXNpdGVkTGVuZ3RoID0gMDsgdmlzaXRlZExlbmd0aCA8IGJsb2NrLnRvdGFsTGVuZ3Ro
KCk7KSB7Ci0gICAgICAgICAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGluc3RydWN0aW9uID0g
aW5zdHJ1Y3Rpb25zLmF0KGJsb2NrLmxlYWRlck9mZnNldCgpICsgdmlzaXRlZExlbmd0aCk7Ci0g
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwor
ICAgICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChibG9jay5sZWFk
ZXJPZmZzZXQoKSArIHZpc2l0ZWRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBvcGNvZGVJRCA9
IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCiAgICAgICAgICAgICB2aXNpdGVkTGVuZ3RoICs9
IGluc3RydWN0aW9uLT5zaXplKCk7CiAKQEAgLTE3MSw3ICsxNzcsNyBAQCBhdXRvIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mCiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGJyYW5jaCwgbGluayB0byB0
aGUgYmxvY2socykgdGhhdCB3ZSBqdW1wIHRvLgogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9w
Y29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbi5vZmZzZXQoKSAr
IGluc3RydWN0aW9uLT5zaXplKCkgPT0gYmxvY2subGVhZGVyT2Zmc2V0KCkgKyBibG9jay50b3Rh
bExlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87CisgICAgICAgICAgICAgICAgVmVjdG9y
PHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0LCAxPiBieXRlY29kZU9mZnNl
dHNKdW1wZWRUbzsKICAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlv
bihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAg
ICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyT2ZKdW1wVGFyZ2V0cyA9IGJ5dGVjb2RlT2Zmc2V0
c0p1bXBlZFRvLnNpemUoKTsKQEAgLTIwMCw3ICsyMDYsNyBAQCBhdXRvIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mCiAgICAgICAgIC8vIElmIHdlIGZhbGwgdGhyb3VnaCB0aGVuIGxpbmsgdG8gdGhlIG5leHQg
YmxvY2sgaW4gcHJvZ3JhbSBvcmRlci4KICAgICAgICAgaWYgKGZhbGxzVGhyb3VnaCkgewogICAg
ICAgICAgICAgQVNTRVJUKGkgKyAxIDwgYmFzaWNCbG9ja3Muc2l6ZSgpKTsKLSAgICAgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayYgbmV4dEJsb2NrID0gYmFzaWNCbG9ja3NbaSArIDFdOworICAg
ICAgICAgICAgYXV0byYgbmV4dEJsb2NrID0gYmFzaWNCbG9ja3NbaSArIDFdOwogICAgICAgICAg
ICAgbGlua0Jsb2NrcyhibG9jaywgbmV4dEJsb2NrKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIx
NCwxMiArMjIwLDE0IEBAIGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICByZXR1cm4gYmFzaWNC
bG9ja3M7CiB9CiAKLWF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNp
Y0Jsb2NrVmVjdG9yCit0ZW1wbGF0ZTw+CithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29k
ZVRyYWl0cz46OmNvbXB1dGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucykgLT4gQmFzaWNCbG9ja1ZlY3RvcgogewogICAgIHJldHVy
biBjb21wdXRlSW1wbChjb2RlQmxvY2ssIGluc3RydWN0aW9ucyk7CiB9CiAKLWF1dG8gQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxv
Y2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tW
ZWN0b3IKK3RlbXBsYXRlPD4KK2F1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrPEpTT3Bjb2RlVHJhaXRz
Pjo6Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCBK
U0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tWZWN0b3IKIHsK
ICAgICByZXR1cm4gY29tcHV0ZUltcGwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5o
CmluZGV4IGQwYTg4MmQ1NDYzMjI5MTFjMzdlZWFiZGMwYWZkMzBmNWFlZjczNGEuLmQ3NjQzZDE5
ZjgyY2Q0YzYyZGIzNmY4YzZjMTUyNGVkYWJiMDY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTM3LDIxICszNywy
NCBAQCBjbGFzcyBCeXRlY29kZUdyYXBoOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKLXN0cnVjdCBJ
bnN0cnVjdGlvbjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIERF
Q0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEJ5dGVjb2RlQmFzaWNCbG9jayk7
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KIGNsYXNzIEJ5dGVjb2RlQmFzaWNC
bG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUJhc2ljQmxvY2spOwogICAgIGZyaWVu
ZCBjbGFzcyBCeXRlY29kZUdyYXBoOwogcHVibGljOgogICAgIHVzaW5nIEJhc2ljQmxvY2tWZWN0
b3IgPSBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywg
MTYsIEJ5dGVjb2RlQmFzaWNCbG9ja01hbGxvYz47Ci0gICAgc3RhdGljX2Fzc2VydChtYXhPcGNv
ZGVMZW5ndGggPD0gVUlOVDhfTUFYKTsKKyAgICB1c2luZyBJbnN0cnVjdGlvblR5cGUgPSBCYXNl
SW5zdHJ1Y3Rpb248T3Bjb2RlVHJhaXRzPjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVR5
cGUgPSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OworICAgIHN0YXRpY19hc3Nl
cnQobWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPD0gVUlOVDhfTUFYKTsKICAgICBlbnVtIFNwZWNp
YWxCbG9ja1R5cGUgeyBFbnRyeUJsb2NrLCBFeGl0QmxvY2sgfTsKLSAgICBpbmxpbmUgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmLCB1bnNpZ25lZCBibG9j
a0luZGV4KTsKKyAgICBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrKGNvbnN0IHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZTo6UmVmJiwgdW5zaWduZWQgYmxvY2tJbmRleCk7CiAgICAgaW5s
aW5lIEJ5dGVjb2RlQmFzaWNCbG9jayhTcGVjaWFsQmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0lu
ZGV4KTsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrJiYpID0gZGVm
YXVsdDsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz4mJikgPSBkZWZhdWx0OwogCiAKICAgICBib29sIGlzRW50cnlCbG9jaygpIHsgcmV0dXJu
ICFtX2xlYWRlck9mZnNldCAmJiAhbV90b3RhbExlbmd0aDsgfQpAQCAtNzIsMTIgKzc1LDEyIEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBPbmx5IGNhbGxlZCBmcm9tIEJ5dGVjb2RlR3Jh
cGguCi0gICAgc3RhdGljIEJhc2ljQmxvY2tWZWN0b3IgY29tcHV0ZShDb2RlQmxvY2sqLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKTsKLSAgICBzdGF0aWMgQmFzaWNCbG9j
a1ZlY3RvciBjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+
IHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpOworICAgIHN0YXRpYyBCYXNpY0Js
b2NrVmVjdG9yIGNvbXB1dGUoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
JiBpbnN0cnVjdGlvbnMpOworICAgIHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGUoVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGlu
c3RydWN0aW9ucyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+IHN0YXRpYyBCYXNpY0Js
b2NrVmVjdG9yIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtVHlwZSYgaW5zdHJ1Y3Rpb25zKTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKLSAg
ICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrKQorICAgIHZvaWQg
YWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiBibG9jaykKICAg
ICB7CiAgICAgICAgIGlmICghbV9zdWNjZXNzb3JzLmNvbnRhaW5zKGJsb2NrLmluZGV4KCkpKQog
ICAgICAgICAgICAgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jay5pbmRleCgpKTsKQEAgLTg1LDcg
Kzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSB2b2lkIGFkZExlbmd0aCh1bnNpZ25lZCk7
CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OworICAgIHR5
cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OwogICAg
IHVuc2lnbmVkIG1fdG90YWxMZW5ndGg7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKIApAQCAtOTYs
NCArOTksNyBAQCBwcml2YXRlOgogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCit1c2lu
ZyBKU0J5dGVjb2RlQmFzaWNCbG9jayA9IEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29kZVRyYWl0
cz47Cit1c2luZyBXYXNtQnl0ZWNvZGVCYXNpY0Jsb2NrID0gQnl0ZWNvZGVCYXNpY0Jsb2NrPFdh
c21PcGNvZGVUcmFpdHM+OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDViZjY3YjYxYjYy
YmMxMmUwNGMyZmE3Y2E5MzQzYzBjN2FkZTY3MDAuLjA2MWQ3YmQxNDJkYjQ5ZWYwM2M5ZjMwNTY4
NGVmNzE2OTQ0MjVlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtNDEsMzEgKzQxLDM0IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi12b2lkIEJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKQordGVtcGxhdGU8dHlw
ZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgordm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SW5z
dHJ1Y3Rpb25TdHJlYW1UeXBlPjo6cHJpbnRMb2NhdGlvbkFuZE9wKHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBt
X2N1cnJlbnRMb2NhdGlvbiA9IGxvY2F0aW9uOwogICAgIG1fb3V0LnByaW50ZigiWyU0dV0gJS0x
OHMgIiwgbG9jYXRpb24sIG9wKTsKIH0KIAotdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OmR1bXBW
YWx1ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25T
dHJlYW1UeXBlPgordm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
Pjo6ZHVtcFZhbHVlKFZpcnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgbV9vdXQucHJpbnRmKCIl
cyIsIHJlZ2lzdGVyTmFtZShyZWcpLmRhdGEoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZT4KIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgQnl0
ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8VHJhaXRzPiBsYWJl
bCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OmR1bXBW
YWx1ZShHZW5lcmljQm91bmRMYWJlbDxUcmFpdHM+IGxhYmVsKQogewogICAgIGludCB0YXJnZXQg
PSBsYWJlbC50YXJnZXQoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgdGFyZ2V0ID0gb3V0
T2ZMaW5lSnVtcE9mZnNldChtX2N1cnJlbnRMb2NhdGlvbik7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCB0YXJnZXRPZmZzZXQgPSB0YXJnZXQgKyBtX2N1cnJlbnRMb2NhdGlvbjsKKyAg
ICBhdXRvIHRhcmdldE9mZnNldCA9IHRhcmdldCArIG1fY3VycmVudExvY2F0aW9uOwogICAgIG1f
b3V0LnByaW50KHRhcmdldCwgIigtPiIsIHRhcmdldE9mZnNldCwgIikiKTsKIH0KIAotdGVtcGxh
dGUgdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxK
U0dlbmVyYXRvclRyYWl0cz4pOwordGVtcGxhdGUgdm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SlNJ
bnN0cnVjdGlvblN0cmVhbT46OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxKU0dlbmVyYXRv
clRyYWl0cz4pOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotdGVtcGxhdGUgdm9pZCBCeXRl
Y29kZUR1bXBlckJhc2U6OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxXYXNtOjpHZW5lcmF0
b3JUcmFpdHM+KTsKK3RlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPFdhc21JbnN0cnVj
dGlvblN0cmVhbT46OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxXYXNtOjpHZW5lcmF0b3JU
cmFpdHM+KTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKIHRlbXBsYXRlPGNsYXNz
IEJsb2NrPgpAQCAtNzgsNyArODEsNyBAQCBDU3RyaW5nIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdpc3RlciByKSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgQmxvY2s+Ci1pbnQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAoraW50IEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAogewogICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxp
bmVKdW1wT2Zmc2V0KG9mZnNldCk7CiB9CkBAIC05MSwxNCArOTQsMTQgQEAgQ1N0cmluZyBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElD
U3RhdHVzTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoY29u
c3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNN
YXAmKQogewogICAgIDo6SlNDOjpkdW1wQnl0ZWNvZGUodGhpcywgaXQub2Zmc2V0KCksIGl0LnB0
cigpKTsKICAgICB0aGlzLT5tX291dC5wcmludCgiXG4iKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBi
bG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlw
ZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0
YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIG91dCk7CiAgICAg
ZHVtcGVyLmR1bXBCeXRlY29kZShpdCwgc3RhdHVzTWFwKTsKQEAgLTIxMCw3ICsyMTMsNyBAQCB2
b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN0cmluZ1N3aXRjaEp1bXBU
YWJsZXMoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmxvY2s+Ci1zdGF0aWMgdm9pZCBkdW1w
SGVhZGVyKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgUHJpbnRTdHJlYW0mIG91dCkKK3N0YXRpYyB2b2lkIGR1bXBIZWFkZXIoQmxvY2sqIGJsb2Nr
LCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFByaW50U3RyZWFtJiBv
dXQpCiB7CiAgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwogICAgIHNpemVfdCB3aWRl
MTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKQEAgLTI1Miw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBk
dW1wRm9vdGVyKER1bXBlciYgZHVtcGVyKQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZv
aWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQordm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAm
IHN0YXR1c01hcCkKIHsKICAgICBkdW1wSGVhZGVyKGJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7
CiAKQEAgLTI2Niw3ICsyNjksNyBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJsb2NrKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rp
b25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0
dXNNYXAmIGljU3RhdHVzTWFwKQordm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBHcmFwaChCbG9jayogYmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElD
U3RhdHVzTWFwJiBpY1N0YXR1c01hcCkKIHsKICAgICBkdW1wSGVhZGVyKGJsb2NrLCBpbnN0cnVj
dGlvbnMsIG91dCk7CiAKQEAgLTI4NSw3ICsyODgsNyBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25T
dAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2Nr
IDogZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogZ3JhcGgpIHsKICAgICAgICAgaWYg
KGJsb2NrLmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApAQCAtMzE3LDYgKzMyMCw4IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0
CiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIAordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1w
ZXJCYXNlPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+OwordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1w
ZXJCYXNlPFdhc21JbnN0cnVjdGlvblN0cmVhbT47CiB0ZW1wbGF0ZSBjbGFzcyBCeXRlY29kZUR1
bXBlcjxDb2RlQmxvY2s+OwogdGVtcGxhdGUgY2xhc3MgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+OwogdGVtcGxhdGUgY2xhc3MgQ29kZUJsb2NrQnl0
ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjsKQEAgLTMzMSw3ICszMzYsNyBAQCB2b2lkIEJ5dGVjb2Rl
RHVtcGVyOjpkdW1wQmxvY2soRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBjb25z
dCBNb2R1bGVJbgogICAgIHNpemVfdCB3aWRlMTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKICAgICBz
aXplX3Qgd2lkZTMySW5zdHJ1Y3Rpb25Db3VudCA9IDA7CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBi
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgaXQgIT0gYmxvY2stPmluc3RydWN0aW9ucygp
LmVuZCgpOyBpdCArPSBpdC0+c2l6ZTxXYXNtT3Bjb2RlVHJhaXRzPigpKSB7CisgICAgZm9yIChh
dXRvIGl0ID0gYmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5lbmQoKTsgaXQgKz0gaXQtPnNpemUoKSkgewogICAgICAgICBpZiAoaXQtPmlz
V2lkZTE2KCkpCiAgICAgICAgICAgICArK3dpZGUxNkluc3RydWN0aW9uQ291bnQ7CiAgICAgICAg
IGVsc2UgaWYgKGl0LT5pc1dpZGUzMigpKQpAQCAtMzU5LDcgKzM2NCw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI6OmR1bXBCbG9jayhGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2ssIGNv
bnN0IE1vZHVsZUluCiAgICAgICAgIGJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSk7CiAKICAgICBC
eXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIG91dCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gYmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5l
bmQoKTsgaXQgKz0gaXQtPnNpemU8V2FzbU9wY29kZVRyYWl0cz4oKSkgeworICAgIGZvciAoYXV0
byBpdCA9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1
Y3Rpb25zKCkuZW5kKCk7IGl0ICs9IGl0LT5zaXplKCkpIHsKICAgICAgICAgZHVtcFdhc20oJmR1
bXBlciwgaXQub2Zmc2V0KCksIGl0LnB0cigpKTsKICAgICAgICAgb3V0LnByaW50KCJcbiIpOwog
ICAgIH0KQEAgLTQxNiw2ICs0MjEsMTkgQEAgQ1N0cmluZyBCeXRlY29kZUR1bXBlcjo6Zm9ybWF0
Q29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRfdCBjb25zdGFudCkgY29uc3QKICAgICB9CiB9CiAK
K0NTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6OnJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIgcikg
Y29uc3QKK3sKKyAgICBpZiAoci5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBjb25zdGFu
dE5hbWUocik7CisKKyAgICByZXR1cm4gdG9DU3RyaW5nKHIpOworfQorCitpbnQgQnl0ZWNvZGVE
dW1wZXI6Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgb2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxpbmVK
dW1wT2Zmc2V0KG9mZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdhc20KIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmgKaW5kZXggMjE2ZTZlNjdlYTBkMmRjN2Q5M2FhNDUxMjhlOWEwNjJk
M2Q2M2I5Yi4uNWRlMTVlOGNjYTIyNGQyNjAyOWYwYmE0ZGE3ZmVjNWEwYmY5YzEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTI2
LDkgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Js
b2NrLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCkBAIC0zNywxNSArMzksMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlR3JhcGg7CiAKLXN0cnVjdCBJbnN0cnVj
dGlvbjsKLQordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgogY2xhc3Mg
Qnl0ZWNvZGVEdW1wZXJCYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CeXRlY29kZUR1bXBl
ckJhc2UoKQogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHByaW50TG9jYXRpb25BbmRPcChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CisgICAgdm9p
ZCBwcmludExvY2F0aW9uQW5kT3AodHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZz
ZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgdm9pZCBkdW1wT3BlcmFuZChjb25zdCBjaGFyKiBvcGVyYW5kTmFtZSwgVCBvcGVyYW5k
LCBib29sIGlzRmlyc3QgPSBmYWxzZSkKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBDU3RyaW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0KSBjb25zdCA9
IDA7CiAKICAgICBCeXRlY29kZUR1bXBlckJhc2UoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAg
OiBtX291dChvdXQpCkBAIC03NSwxMyArNzYsMTMgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAg
IFByaW50U3RyZWFtJiBtX291dDsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fY3Vy
cmVudExvY2F0aW9uIHsgMCB9OworICAgIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6
T2Zmc2V0IG1fY3VycmVudExvY2F0aW9uIHsgMCB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgQmxv
Y2s+Ci1jbGFzcyBCeXRlY29kZUR1bXBlciA6IHB1YmxpYyBCeXRlY29kZUR1bXBlckJhc2Ugewor
Y2xhc3MgQnl0ZWNvZGVEdW1wZXIgOiBwdWJsaWMgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1
Y3Rpb25TdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxv
Y2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVt
cEJ5dGVjb2RlKEJsb2NrKiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAKICAg
ICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAg
IDogQnl0ZWNvZGVEdW1wZXJCYXNlKG91dCkKQEAgLTk0LDEwICs5NSwxMCBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgQmxvY2sqIGJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jazsgfQog
Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSlNJbnN0
cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKIAogICAgIENTdHJp
bmcgcmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdpc3RlcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50
IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpIGNv
bnN0IG92ZXJyaWRlOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBD
U3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIpIGNvbnN0OwpAQCAtMTA4LDggKzEw
OSw4IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIGNsYXNzIENvZGVCbG9ja0J5
dGVjb2RlRHVtcGVyIGZpbmFsIDogcHVibGljIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW0mLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01h
cCgpKTsKLSAgICBzdGF0aWMgdm9pZCBkdW1wR3JhcGgoQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmls
ZSgpLCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGlj
IHZvaWQgZHVtcEdyYXBoKEJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVj
b2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpLCBjb25zdCBJQ1N0
YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKIAogICAgIHZvaWQgZHVtcElkZW50aWZpZXJzKCk7
CiAgICAgdm9pZCBkdW1wQ29uc3RhbnRzKCk7CkBAIC0xMzIsMTYgKzEzMywyOSBAQCBuYW1lc3Bh
Y2UgV2FzbSB7CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjsKIHN0cnVjdCBNb2R1
bGVJbmZvcm1hdGlvbjsKIAotY2xhc3MgQnl0ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpCeXRlY29kZUR1bXBlcjxGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcj4geworY2xhc3MgQnl0
ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpCeXRlY29kZUR1bXBlckJhc2U8V2FzbUlu
c3RydWN0aW9uU3RyZWFtPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEZ1
bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBQcmlu
dFN0cmVhbSYgb3V0KTsKIAotcHJpdmF0ZToKLSAgICB1c2luZyBKU0M6OkJ5dGVjb2RlRHVtcGVy
PEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPjo6Qnl0ZWNvZGVEdW1wZXI7CisgICAgQnl0ZWNv
ZGVEdW1wZXIoRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBQcmludFN0cmVhbSYg
b3V0KQorICAgICAgICA6IEJ5dGVjb2RlRHVtcGVyQmFzZShvdXQpCisgICAgICAgICwgbV9ibG9j
ayhibG9jaykKKyAgICB7CisgICAgfQogCisgICAgfkJ5dGVjb2RlRHVtcGVyKCkgb3ZlcnJpZGUg
eyB9CisKKyAgICBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2soKSBjb25zdCB7IHJl
dHVybiBtX2Jsb2NrOyB9CisKKyAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0
ZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CiAgICAgdm9p
ZCBkdW1wQ29uc3RhbnRzKCk7Ci0gICAgQ1N0cmluZyBjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lz
dGVyIGluZGV4KSBjb25zdCBmaW5hbDsKKyAgICBDU3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFs
UmVnaXN0ZXIgaW5kZXgpIGNvbnN0OwogICAgIENTdHJpbmcgZm9ybWF0Q29uc3RhbnQoVHlwZSwg
dWludDY0X3QpIGNvbnN0OworCisgICAgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIG1fYmxv
Y2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApp
bmRleCBmNjAzNmIxYjgyZGEyZWZkOGNkYzczYzgwZjkxNTYwNTU4Y2Y5YzZjLi4wMTI1NDk2OTQz
MzQwMThkZTM1NTUxYzcyYmRjMjkwNWZmZWQ5ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgWWllbGREYXRh
IHsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IHBvaW50IHsgMCB9OworICAgIHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBwb2ludCB7IDAgfTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYXJndW1lbnQgeyAwIH07CiAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKIH07
CkBAIC01MiwxNCArNTIsMTQgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0
YT4gWWllbGRzOwogCiAgICAgc3RydWN0IEdlbmVyYXRvckZyYW1lRGF0YSB7Ci0gICAgICAgIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbV9wb2ludDsKKyAgICAgICAgdHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fcG9pbnQ7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBt
X2RzdDsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGU7CiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBtX3N5bWJvbFRhYmxlOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9pbml0aWFs
VmFsdWU7CiAgICAgfTsKIAotICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucywgU3ltYm9s
VGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5l
cmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29k
ZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KQogICAgICAgICA6IG1fYnl0ZWNvZGVHZW5lcmF0b3IoYnl0ZWNvZGVHZW5lcmF0
b3IpCiAgICAgICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICAgICAsIG1faW5zdHJ1
Y3Rpb25zKGluc3RydWN0aW9ucykKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3lpZWxkczsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGVu
dGVyUG9pbnQoKSBjb25zdAorICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBl
bnRlclBvaW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5h
dChtX2VudGVyUG9pbnQpOwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2dlbmVyYXRvckZyYW1lRGF0YTsKICAgICB9CiAKLSAgICBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QKKyAgICBjb25zdCBKU0luc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW5zdHJ1Y3Rpb25zOwogICAgIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHByaXZhdGU6CiAgICAg
fQogCiAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7Ci0gICAgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2VudGVyUG9pbnQ7CisgICAgdHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fZW50ZXJQb2ludDsKICAgICBzdGQ6Om9wdGlvbmFsPEdl
bmVyYXRvckZyYW1lRGF0YT4gbV9nZW5lcmF0b3JGcmFtZURhdGE7CiAgICAgVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IqIG1fY29kZUJsb2NrOwotICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVy
JiBtX2luc3RydWN0aW9uczsKKyAgICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX2luc3Ry
dWN0aW9uczsKICAgICBCeXRlY29kZUdyYXBoIG1fZ3JhcGg7CiAgICAgVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CiAgICAgWWllbGRzIG1feWllbGRzOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBydW4oVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIm
IGluc3RydWN0aW9ucykKKyAgICB2b2lkIHJ1bihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciog
Y29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMpCiAgICAg
ewogICAgICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVy
bWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4KICAgICAgICAg
Ly8gVGhpcyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBxdWVzdGlv
biwgIndoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4KQEAgLTI4
Niw3ICsyODYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAg
IHJld3JpdGVyLmV4ZWN1dGUoKTsKIH0KIAotdm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9u
KEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9u
cywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgpCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0
ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvciogY29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMs
IFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4KQogewogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0
ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9uKCkpKSB7CiAgICAgICAgIGRhdGFMb2dMbigi
Qnl0ZWNvZGVzIGJlZm9yZSBnZW5lcmF0b3JpZmljYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKaW5kZXggODMwMWQ0MDU3YTMzZDIxYmEzOGMzOGM5YzkyMGY1NDkzNGRiYmI4NS4uYzlmMWE5
ZTUxNjViNDEwNGZmODkwNzI0ODYxMzZiYTRmOTkxMjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKQEAgLTI5LDExICsyOSwxNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2Rl
R2VuZXJhdG9yOwotY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CiBjbGFzcyBTeW1ib2xU
YWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOwogY2xhc3MgU3ltYm9sVGFi
bGU7CiAKLXZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRvciYs
IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImLCBT
eW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCk7CitzdHJ1Y3QgSlNPcGNvZGVUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1
Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciA9
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyPEpTSW5zdHJ1Y3Rpb24+OworCit2b2lkIHBlcmZvcm1H
ZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3ImLCBVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvciosIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKaW5kZXggYzhkNGE1MTYxOGM3OGM4NGEzM2IxYWEzYmZjMjlhYWY0
OTgyYTllMC4uZDI4M2NiNjVlZjAwN2FiODE3ZWQ2YWMyNjY4ZjA3MGU0MzczZTBjNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0zNCwz
MSArMzQsMzEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9j
azsKLQogY2xhc3MgQnl0ZWNvZGVHcmFwaCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVHcmFwaCk7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgQmFzaWNCbG9ja3NWZWN0b3IgPSBCeXRlY29kZUJhc2ljQmxvY2s6OkJhc2ljQmxvY2tW
ZWN0b3I7CisgICAgdXNpbmcgQmFzaWNCbG9ja1R5cGUgPSBKU0J5dGVjb2RlQmFzaWNCbG9jazsK
KyAgICB1c2luZyBCYXNpY0Jsb2Nrc1ZlY3RvciA9IHR5cGVuYW1lIEJhc2ljQmxvY2tUeXBlOjpC
YXNpY0Jsb2NrVmVjdG9yOworICAgIHVzaW5nIEluc3RydWN0aW9uU3RyZWFtVHlwZSA9IHR5cGVu
YW1lIEJhc2ljQmxvY2tUeXBlOjpJbnN0cnVjdGlvblN0cmVhbVR5cGU7CiAKICAgICB0eXBlZGVm
IFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3JhcGg+IGl0ZXJhdG9yOwog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci0gICAgaW5saW5lIEJ5dGVj
b2RlR3JhcGgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJik7CisgICAg
aW5saW5lIEJ5dGVjb2RlR3JhcGgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtVHlwZSYpOwogCiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpy
ZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCks
IG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBibG9ja0Nv
bnRhaW5zQnl0ZWNvZGVPZmZzZXQoY29uc3QgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaywgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBzdGF0aWMgYm9vbCBi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoY29uc3QgQmFzaWNCbG9ja1R5cGUmIGJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBieXRlY29kZU9mZnNldCkKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLmxlYWRlck9mZnNldCgp
OwogICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVj
b2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2sudG90YWxMZW5ndGgoKTsKICAgICB9CiAK
LSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBCYXNpY0Jsb2Nr
VHlwZSogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU6Ok9mZnNldCBieXRlY29kZU9mZnNldCkKICAgICB7CiAgICAgICAgIC8qCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7
IGkrKykgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgKi8KIAotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2sgPSBh
cHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxCeXRlY29kZUJhc2ljQmxvY2ssIHVuc2lnbmVkPihtX2Jh
c2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChCeXRl
Y29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2spIHsgcmV0dXJuIGJhc2ljQmxvY2stPmxlYWRlck9m
ZnNldCgpOyB9KTsKKyAgICAgICAgQmFzaWNCbG9ja1R5cGUqIGJhc2ljQmxvY2sgPSBhcHByb3hp
bWF0ZUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrVHlwZSwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3Ms
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKEJhc2ljQmxvY2tUeXBl
KiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsgfSk7CiAg
ICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgogICAgICAg
ICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCpiYXNpY0Jsb2NrLCBieXRlY29kZU9m
ZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9jazsKQEAgLTg2LDIzICs4NiwyMyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmYmFzaWNCbG9ja1sxXTsKICAgICB9CiAKLSAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKKyAgICBCYXNpY0Jsb2NrVHlwZSogZmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlw
ZTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0cnlCaW5hcnlT
ZWFyY2g8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNp
Y0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKEJ5dGVjb2RlQmFzaWNCbG9jayogYmFz
aWNCbG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0KCk7IH0pOworICAgICAg
ICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2tUeXBlLCB1bnNpZ25lZD4obV9iYXNp
Y0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKEJhc2ljQmxv
Y2tUeXBlKiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsg
fSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNC
bG9ja3Muc2l6ZSgpOyB9Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBhdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxCeXRlY29kZUdyYXBoKj4odGhpcyktPm1fYmFz
aWNCbG9ja3NbaW5kZXhdOyB9Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKyAgICBCYXNpY0Jsb2Nr
VHlwZSYgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Qnl0ZWNv
ZGVHcmFwaCo+KHRoaXMpLT5tX2Jhc2ljQmxvY2tzW2luZGV4XTsgfQorICAgIEJhc2ljQmxvY2tU
eXBlJiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7
IH0KIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9
CiAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0K
LSAgICBCeXRlY29kZUJhc2ljQmxvY2smIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KLSAgICBC
eXRlY29kZUJhc2ljQmxvY2smIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorICAg
IEJhc2ljQmxvY2tUeXBlJiBmaXJzdCgpIHsgcmV0dXJuIGF0KDApOyB9CisgICAgQmFzaWNCbG9j
a1R5cGUmIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQogCiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLSAgICB2b2lkIGR1bXAoQ29kZUJsb2NrVHlwZSog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxPcGVyYW5kczxTcGVjdWxhdGVkVHlwZT4+PiBzcGVjdWxhdGlvbkF0SGVh
ZCwgUHJpbnRTdHJlYW0mIHByaW50ZXIgPSBXVEY6OmRhdGFGaWxlKCkpCisgICAgdm9pZCBkdW1w
KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlJiBp
bnN0cnVjdGlvbnMsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE9wZXJhbmRzPFNwZWN1bGF0ZWRUeXBl
Pj4+IHNwZWN1bGF0aW9uQXRIZWFkLCBQcmludFN0cmVhbSYgcHJpbnRlciA9IFdURjo6ZGF0YUZp
bGUoKSkKICAgICB7CiAgICAgICAgIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPENvZGVCbG9ja1R5
cGU+OjpkdW1wR3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsICp0aGlzLCBzcGVjdWxhdGlv
bkF0SGVhZCwgcHJpbnRlcik7CiAgICAgfQpAQCAtMTEzLDggKzExMyw4IEBAIHByaXZhdGU6CiAK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLUJ5dGVjb2RlR3JhcGg6OkJ5dGVj
b2RlR3JhcGgoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVh
bSYgaW5zdHJ1Y3Rpb25zKQotICAgIDogbV9iYXNpY0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGUoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpKQorQnl0ZWNvZGVHcmFwaDo6Qnl0ZWNv
ZGVHcmFwaChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
VHlwZSYgaW5zdHJ1Y3Rpb25zKQorICAgIDogbV9iYXNpY0Jsb2NrcyhCYXNpY0Jsb2NrVHlwZTo6
Y29tcHV0ZShjb2RlQmxvY2ssIGluc3RydWN0aW9ucykpCiB7CiAgICAgQVNTRVJUKG1fYmFzaWNC
bG9ja3Muc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggZTg2Y2UxODc3MTA3
NThmNjgzYTEyN2M4OWQxNjJiNjVmYjQ0NWNlZS4uMjA3ZTQ2MjczNjc4YjkxMjNmYmI4MDY3Y2Y4
MjI1MWEwYjYwMmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTUwLDEwICs1MCwxMCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbgogICAgIHNpemVfdCBzaXplID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEZ1bGxC
eXRlY29kZUxpdmVuZXNzPihzaXplKTsKIAotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBi
bG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgZm9yIChh
dXRvJiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAg
ICAgIGlmIChibG9jay5pc0VudHJ5QmxvY2soKSB8fCBibG9jay5pc0V4aXRCbG9jaygpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIG91dCA9IGJsb2NrLm91dCgp
OwogCiAgICAgICAgIGF1dG8gdXNlID0gWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewpAQCAtOTYs
OSArOTYsOSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkJsb2NrcyA9IG1fZ3Jh
cGguc2l6ZSgpOwogICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBwcmVkZWNlc3NvcnMobnVtYmVy
T2ZCbG9ja3MpOwotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgp
CisgICAgZm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpCiAgICAgICAgIHByZWRlY2Vzc29yc1ti
bG9jay5pbmRleCgpXS5yZXNpemUobnVtYmVyT2ZCbG9ja3MpOwotICAgIGZvciAoQnl0ZWNvZGVC
YXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogbV9n
cmFwaCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHN1Y2Nlc3NvckluZGV4IDogYmxvY2suc3Vj
Y2Vzc29ycygpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBibG9ja0luZGV4ID0gYmxvY2suaW5k
ZXgoKTsKICAgICAgICAgICAgIHByZWRlY2Vzc29yc1tzdWNjZXNzb3JJbmRleF1bYmxvY2tJbmRl
eF0gPSB0cnVlOwpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpkdW1wUmVzdWx0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgfQogICAgIH07
CiAKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBtX2dyYXBoKSB7CisgICAg
Zm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpIHsKICAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNv
ZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCAm
YmxvY2ssIGJsb2NrLmxlYWRlck9mZnNldCgpLCBibG9jay50b3RhbExlbmd0aCgpKTsKIAogICAg
ICAgICBkYXRhTG9nRigiUHJlZGVjZXNzb3JzOiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGU1
MDk0NzVhOTliMWVkZTk0YWE5MjI4YTk1NTc4NjNhN2ZhYTUyMmQuLjgxNjkyYWUzNDc4ZjE3MzNk
YWNmNDRhYjMwZGFkYWM3YTVkOTk2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTUxLDIzICs1
MSwyMyBAQCBlbnVtIGNsYXNzIExpdmVuZXNzQ2FsY3VsYXRpb25Qb2ludCA6IHVpbnQ4X3Qgewog
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgotICAgIHN0YXRp
YyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5z
dHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNl
RnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2Rl
QmxvY2tUeXBlKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVw
T3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSosIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNv
bnN0IFVzZUZ1bmN0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhV
c2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIERlZkZ1bmN0
b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5
cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUlu
ZGV4LCBjb25zdCBEZWZGdW5jdG9yJik7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29k
ZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgQnl0
ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IERlZkZ1bmN0b3ImKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVu
YW1lIERlZkZ1bmN0b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4KENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOworICAg
IHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiwgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25z
dCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZT4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiBvdXQpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0m
LCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9u
cz4KLSAgICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVCYXNpY0Jsb2NrJiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KTsKKyAg
ICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGVCbG9j
a1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgSlNCeXRlY29kZUJh
c2ljQmxvY2smLCBCeXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgot
ICAgIHN0YXRpYyBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlw
ZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxv
Y2smKTsKKyAgICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVC
bG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgSlNCeXRlY29k
ZUJhc2ljQmxvY2smKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5
cGVuYW1lIEluc3RydWN0aW9ucz4KICAgICBzdGF0aWMgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVz
c0luZm9BdEluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBC
eXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAppbmRleCA2NDhjNGI1ZTk2MzA4NTFkODk4MTcxZDFkMDc3NTY2MjRlYTY1NTVjLi41Njc2
NGNlNjFlZjBkNDg0YzhiM2E1NWM0NmFmYTRmZmIxYzI4MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNJbmxpbmVzLmgKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lz
dGVyRm9yTGl2ZW5lc3MoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IERl
ZkZ1bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6
c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgYXV0
byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAg
ICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KApAQCAtNzEsNyArNzEsNyBAQCBpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERl
ZihDb2RlQmxvY2tUeXBlKgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0
eXBlbmFtZSBVc2VGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UpCitpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVz
ZShDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
Y29uc3QgVXNlRnVuY3RvciYgdXNlKQogewogICAgIGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1
Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVJbmRleCgKQEAgLTgzLDEyICs4MywxMiBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgot
aW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKK2lubGluZSB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRp
b25IYW5kbGVyKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKIHsKLSAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlv
biBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8g
SWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJp
YWJsZXMgb2YgdGhlCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVk
ZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIEJ5dGVjb2RlSW5kZXguCiAgICAg
aWYgKGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZUluZGV4KGJ5
dGVjb2RlSW5kZXgpKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2Nr
ID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7
CisgICAgICAgIGF1dG8qIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOwogICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2Nr
KTsKICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKICAgICB9
CkBAIC05Nyw3ICs5Nyw3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kCiAvLyBTaW1wbGlmaWVk
IGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmly
c3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4g
dGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VG
dW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQ
cm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhl
Y3V0ZXMgdGhlIEJ5dGVjb2RlSW5kZXggaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxs
eSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRo
aXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2Ug
YW5kIGRlZiB0aGUgc2FtZQpAQCAtMTIwLDcgKzEyMCw3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUq
IGNvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci1pbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2Nr
VHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBGYXN0Qml0
VmVjdG9yJiBvdXQpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBKU0luc3Ry
dWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsKICAgICBhdXRvIG51
bWJlck9mQ2hlY2twb2ludHMgPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCktPm51bWJl
ck9mQ2hlY2twb2ludHMoKTsKICAgICBmb3IgKENoZWNrcG9pbnQgY2hlY2twb2ludCA9IG51bWJl
ck9mQ2hlY2twb2ludHM7IGNoZWNrcG9pbnQtLTspIHsKQEAgLTEzOCw3ICsxMzgsNyBAQCBpbmxp
bmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrVHlwZSogY29kZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlw
ZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVH
cmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2ssIEJ5dGVjb2RlSW5kZXggdGFy
Z2V0SW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK2lubGluZSBib29sIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgSlNCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBCeXRlY29k
ZUluZGV4IHRhcmdldEluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFibG9jay5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLmlzRW50cnlCbG9jaygp
KTsKQEAgLTE1OSw3ICsxNTksNyBAQCBpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFn
YXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxp
bmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2soQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxv
Y2spCitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEpTQnl0ZWNvZGVCYXNp
Y0Jsb2NrJiBibG9jaykKIHsKICAgICBpZiAoYmxvY2suaXNFeGl0QmxvY2soKSB8fCBibG9jay5p
c0VudHJ5QmxvY2soKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcwLDcgKzE3MCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4K
IGlubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Z2V0TGl2
ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWJ5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpLCAiZ2V0TGl2ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbiBjYW4ndCBi
ZSB1c2VkIHRvIGFzayBxdWVzdGlvbnMgYWJvdXQgY2hlY2twb2ludHMiKTsKLSAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsKKyAgICBhdXRvKiBibG9jayA9IGdyYXBoLmZpbmRC
YXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSk7CiAgICAg
QVNTRVJUKGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAg
QVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgogaW5saW5l
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5MaXZlbmVzc0ZpeHBvaW50KENv
ZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMs
IEJ5dGVjb2RlR3JhcGgmIGdyYXBoKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVz
ID0gY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKTsKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayYgYmxvY2sgOiBncmFwaCkgeworICAgIGZvciAoYXV0byYgYmxvY2sgOiBncmFwaCkgewog
ICAgICAgICBibG9jay5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJs
b2NrLm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLmluKCku
Y2xlYXJBbGwoKTsKQEAgLTE5MiwxNyArMTkyLDE3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjo6cnVuTGl2ZW5lc3NGaXhwb2ludChDb2RlQmxvY2tUeXBlKiBjb2Rl
CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgbGFz
dEJsb2NrID0gZ3JhcGgubGFzdCgpOworICAgIGF1dG8mIGxhc3RCbG9jayA9IGdyYXBoLmxhc3Qo
KTsKICAgICBsYXN0QmxvY2suaW4oKS5jbGVhckFsbCgpOwogICAgIGxhc3RCbG9jay5vdXQoKS5j
bGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwogICAgIG5ld091dC5yZXNpemUo
bGFzdEJsb2NrLm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0g
ZmFsc2U7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IGdyYXBoLmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGJsb2NrIDog
Z3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAgICBuZXdPdXQu
Y2xlYXJBbGwoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2tJbmRleCA6IGJsb2Nr
LnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgc3Vj
Y2Vzc29yID0gZ3JhcGhbYmxvY2tJbmRleF07CisgICAgICAgICAgICAgICAgYXV0byYgc3VjY2Vz
c29yID0gZ3JhcGhbYmxvY2tJbmRleF07CiAgICAgICAgICAgICAgICAgbmV3T3V0IHw9IHN1Y2Nl
c3Nvci5pbigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYmxvY2sub3V0KCkgPSBuZXdP
dXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVS
ZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdy
aXRlci5jcHAKaW5kZXggODEwMjZhYjNjNzg0ZjFhYzNlMTQ0NDAwMWYzNzJiODJkNGNhYmY3ZS4u
NGFkMDYyY2JiNzY5Mjg4ODI2YjdmYWJlZWM5MTJiMmE0NzQxY2Q4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5GcmFn
bWVudCh1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aQogICAgIH0KIH0KIAotdm9pZCBCeXRl
Y29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGluc2VydGlvblBvaW50LCBJ
bmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiYgd3Jp
dGVyKQordm9pZCBCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGlu
c2VydGlvblBvaW50LCBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIEpTSW5zdHJ1Y3Rpb25T
dHJlYW1Xcml0ZXImJiB3cml0ZXIpCiB7CiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50LnBvc2l0
aW9uID09IFBvc2l0aW9uOjpCZWZvcmUgfHwgaW5zZXJ0aW9uUG9pbnQucG9zaXRpb24gPT0gUG9z
aXRpb246OkFmdGVyKTsKICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbiB7CkBAIC0x
MTQsMTEgKzExNCwxMSBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRz
KCkKICAgICBhdXRvIG91dE9mTGluZUp1bXBUYXJnZXRzID0gbV9jb2RlQmxvY2stPnJlcGxhY2VP
dXRPZkxpbmVKdW1wVGFyZ2V0cygpOwogCiAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgZm9yIChJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwgbV93cml0ZXIuc2l6ZSgpOykgewor
ICAgIGZvciAodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwg
bV93cml0ZXIuc2l6ZSgpOykgewogICAgICAgICBpbnQgYmVmb3JlID0gMDsKICAgICAgICAgaW50
IGFmdGVyID0gMDsKICAgICAgICAgaW50IHJlbW92ZSA9IDA7Ci0gICAgICAgIHdoaWxlIChjdXJy
ZW50SW5zZXJ0aW9uICE9IG1faW5zZXJ0aW9ucy5lbmQoKSAmJiBzdGF0aWNfY2FzdDxJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0PihjdXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNl
dCkgPT0gaSkgeworICAgICAgICB3aGlsZSAoY3VycmVudEluc2VydGlvbiAhPSBtX2luc2VydGlv
bnMuZW5kKCkgJiYgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0PihjdXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNldCkgPT0gaSkgewogICAg
ICAgICAgICAgYXV0byBzaXplID0gY3VycmVudEluc2VydGlvbi0+bGVuZ3RoKCk7CiAgICAgICAg
ICAgICBpZiAoY3VycmVudEluc2VydGlvbi0+dHlwZSA9PSBJbnNlcnRpb246OlR5cGU6OlJlbW92
ZSkKICAgICAgICAgICAgICAgICByZW1vdmUgKz0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCmluZGV4IDBkY2ViZTc5MzkwYjRm
ZjBiNWQ4YmIwMmI1NTJmOGZlMjQ2YTJlNWEuLjViZGY3N2QwNzM0YWU4MjgyZGJlNjI2NjRkNWUy
YWU4YThkYzBlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVJld3JpdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlUmV3cml0ZXIuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDMy
X3QgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOwogCi0gICAgICAg
IEluc2VydGlvblBvaW50KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBQb3NpdGlv
biBwb3MpCisgICAgICAgIEluc2VydGlvblBvaW50KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBvZmZzZXQsIFBvc2l0aW9uIHBvcykKICAgICAgICAgICAgIDogYnl0ZWNvZGVP
ZmZzZXQob2Zmc2V0KQogICAgICAgICAgICAgLCBwb3NpdGlvbihwb3MpCiAgICAgICAgIHsKQEAg
LTEzMiwxNCArMTMyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFR5cGUgdHlwZTsKICAgICAgICAg
SW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoOwogICAgICAgICBzaXplX3QgcmVtb3ZlTGVuZ3Ro
OwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBpbnN0cnVjdGlvbnM7CisgICAgICAg
IEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgaW5zdHJ1Y3Rpb25zOwogICAgIH07CiAKIHB1Ymxp
YzoKICAgICBjbGFzcyBGcmFnbWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhZ21l
bnQpOwogICAgIHB1YmxpYzoKLSAgICAgICAgRnJhZ21lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5
dGVjb2RlR2VuZXJhdG9yLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgd3JpdGVyLCBJbmNsdWRl
QnJhbmNoJiBpbmNsdWRlQnJhbmNoKQorICAgICAgICBGcmFnbWVudChCeXRlY29kZUdlbmVyYXRv
ciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlciwg
SW5jbHVkZUJyYW5jaCYgaW5jbHVkZUJyYW5jaCkKICAgICAgICAgICAgIDogbV9ieXRlY29kZUdl
bmVyYXRvcihieXRlY29kZUdlbmVyYXRvcikKICAgICAgICAgICAgICwgbV93cml0ZXIod3JpdGVy
KQogICAgICAgICAgICAgLCBtX2luY2x1ZGVCcmFuY2goaW5jbHVkZUJyYW5jaCkKQEAgLTE3MSwx
MSArMTcxLDExIEBAIHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBtX2J5dGVjb2RlR2VuZXJhdG9yOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciYgbV93cml0ZXI7CisgICAgICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1fd3Jp
dGVyOwogICAgICAgICBJbmNsdWRlQnJhbmNoJiBtX2luY2x1ZGVCcmFuY2g7CiAgICAgfTsKIAot
ICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9y
LCBCeXRlY29kZUdyYXBoJiBncmFwaCwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlcikKKyAgICBCeXRlY29kZVJld3Jp
dGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgQnl0ZWNvZGVHcmFwaCYg
Z3JhcGgsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIEpTSW5zdHJ1Y3Rp
b25TdHJlYW1Xcml0ZXImIHdyaXRlcikKICAgICAgICAgOiBtX2J5dGVjb2RlR2VuZXJhdG9yKGJ5
dGVjb2RlR2VuZXJhdG9yKQogICAgICAgICAsIG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9j
b2RlQmxvY2soY29kZUJsb2NrKQpAQCAtMTg0LDEwICsxODQsMTAgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRC
ZWZvcmUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9u
IGZ1bmN0aW9uKQorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRCZWZvcmUoY29uc3QgdHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24p
CiAgICAgewogICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2ggPSBJbmNsdWRlQnJh
bmNoOjpObzsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgd3JpdGVyOworICAgICAg
ICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyIHdyaXRlcjsKICAgICAgICAgRnJhZ21lbnQgZnJh
Z21lbnQobV9ieXRlY29kZUdlbmVyYXRvciwgd3JpdGVyLCBpbmNsdWRlQnJhbmNoKTsKICAgICAg
ICAgZnVuY3Rpb24oZnJhZ21lbnQpOwogICAgICAgICBmcmFnbWVudC5hbGlnbigpOwpAQCAtMTk1
LDEwICsxOTUsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0
aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcihjb25zdCBJbnN0cnVjdGlvblN0cmVh
bTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24sIHNpemVfdCBhbGlnbkNvbmdy
dWVudCA9IDApCisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKGNvbnN0IHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uLCBz
aXplX3QgYWxpZ25Db25ncnVlbnQgPSAwKQogICAgIHsKICAgICAgICAgSW5jbHVkZUJyYW5jaCBp
bmNsdWRlQnJhbmNoID0gSW5jbHVkZUJyYW5jaDo6Tm87Ci0gICAgICAgIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyIHdyaXRlcjsKKyAgICAgICAgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciB3cml0
ZXI7CiAgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1fYnl0ZWNvZGVHZW5lcmF0b3IsIHdyaXRl
ciwgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKICAgICAgICAg
ZnJhZ21lbnQuYWxpZ24oYWxpZ25Db25ncnVlbnQpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAgICB2b2lkIHJlcGxh
Y2VCeXRlY29kZVdpdGhGcmFnbWVudChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0
cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgdm9pZCByZXBsYWNlQnl0ZWNvZGVXaXRo
RnJhZ21lbnQoY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVj
dGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCiAgICAgewogICAgICAgICAvLyBOb3RlOiBUaGlzIGZ1
bmN0aW9uIHByZXNlcnZlcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBzdWJzZXF1ZW50IGJ5dGVjb2Rl
IChvbiB0YXJnZXRzIHdoZXJlIHRoaXMgbWF0dGVycykKICAgICAgICAgbV9pbnNlcnRpb25zLmFw
cGVuZChJbnNlcnRpb24geyBJbnNlcnRpb25Qb2ludChpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9z
aXRpb246Ok9yaWdpbmFsQnl0ZWNvZGVQb2ludCksIEluc2VydGlvbjo6VHlwZTo6UmVtb3ZlLCBJ
bmNsdWRlQnJhbmNoOjpObywgaW5zdHJ1Y3Rpb24tPnNpemUoKSwgeyB9IH0pOwpAQCAtMjE3LDEy
ICsyMTcsMTIgQEAgcHVibGljOgogCiAgICAgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgoKSB7IHJldHVy
biBtX2dyYXBoOyB9CiAKLSAgICBpbnQzMl90IGFkanVzdEFic29sdXRlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYWJzb2x1dGVPZmZzZXQpCisgICAgaW50MzJfdCBhZGp1c3RBYnNv
bHV0ZU9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYWJzb2x1dGVP
ZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Q
b2ludCgwLCBQb3NpdGlvbjo6RW50cnlQb2ludCksIEluc2VydGlvblBvaW50KGFic29sdXRlT2Zm
c2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCkpOwogICAgIH0KIAotICAgIGludDMyX3QgYWRqdXN0
SnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9yaWdpbmFsQnl0ZWNvZGVPZmZz
ZXQsIGludDMyX3Qgb3JpZ2luYWxKdW1wVGFyZ2V0KQorICAgIGludDMyX3QgYWRqdXN0SnVtcFRh
cmdldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29k
ZU9mZnNldCwgaW50MzJfdCBvcmlnaW5hbEp1bXBUYXJnZXQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludChvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0
LCBQb3NpdGlvbjo6TGFiZWxQb2ludCksIEluc2VydGlvblBvaW50KG9yaWdpbmFsSnVtcFRhcmdl
dCwgUG9zaXRpb246OkxhYmVsUG9pbnQpKTsKICAgICB9CkBAIC0yMzAsNyArMjMwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRqdXN0SnVtcFRhcmdldHMoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2gsIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyJiYgZnJhZ21lbnQpOworICAgIHZvaWQgaW5zZXJ0SW1wbChJbnNlcnRpb25Qb2lu
dCwgSW5jbHVkZUJyYW5jaCwgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYmIGZyYWdtZW50KTsK
IAogICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKICAgICB2b2lk
IGFwcGx5TW9kaWZpY2F0aW9uKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICBC
eXRlY29kZUdlbmVyYXRvciYgbV9ieXRlY29kZUdlbmVyYXRvcjsKICAgICBCeXRlY29kZUdyYXBo
JiBtX2dyYXBoOwogICAgIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBtX2NvZGVCbG9jazsK
LSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgbV93cml0ZXI7CisgICAgSlNJbnN0cnVjdGlv
blN0cmVhbVdyaXRlciYgbV93cml0ZXI7CiAgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKaW5kZXggZmI1NmQ0Y2JiNWM5ZTg3MmE5NzRmNTI1NGU2MWFiMGYwZTk3
ZmRmYi4uZDljNzJiMThkOWE3ZTdmYzM4YzMxYWYxMzljZmRhNTJjOGQzNGEzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBVU0VTIFVTRVNfT1JfREVGUwog
I2RlZmluZSBERUZTIFVTRVNfT1JfREVGUwogCi12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJ
bmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSlNJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgU2NvcGVk
TGFtYmRhPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lk
KFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1
YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQogewogCiAgICAgYXV0byBkZWZBdCA9IFsmXSAoQ2hlY2tw
b2ludCB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDdiNTJhMzkwZWNjNTM4
ZmNiNmI2MWI3NTRjMDdiZDEzODNlNzRiZmYuLjk4OGU2YzMwNjg5OGYxOGE3NTM2ZWMyYWEyMjc0
OWE2YTg5NWIxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIsIGNvbnN0
IEluc3RydWN0aW9uKiwgQ2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmlydHVh
bFJlZ2lzdGVyKT4mKTsKLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNp
Z25lZCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBDaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYpOwordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciwgY29uc3QgSlNJbnN0cnVjdGlvbiosIENoZWNrcG9pbnQs
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rlcik+Jik7Cit2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBDaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYp
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2lu
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
c3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiAo
Y29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgY29kZUJsb2Nr
LT51c2VzQ2FsbEV2YWwoKSkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgp
KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKIHsKICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKGNv
ZGVCbG9jay0+bnVtVmFycygpLCBpbnN0cnVjdGlvbiwgY2hlY2twb2ludCwgc2NvcGVkTGFtYmRh
PHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4oZnVuY3RvcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwZTU3OWY5MjkwM2I4YzhlYTc3NTU2
MTM2ZDZlNTE2YTFlNGNhNmYyLi5iMzc5Yzk3YzlkZTk3ZDcwZmY0ZjA5MTdkNzIxMDY4NmZiZDRi
ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCkKICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wR3Jh
cGgodGhpcywgaW5zdHJ1Y3Rpb25zKCksIGdyYXBoLCBvdXQsIHN0YXR1c01hcCk7CiB9CiAKLXZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAg
ICAgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJ5dGVjb2RlKHRoaXMsIG91dCwgaXQs
IHN0YXR1c01hcCk7CiB9CkBAIC00NzQsMTAgKzQ3NCwxMSBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICBicmVhazsgXAogICAgIH0KIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1dG8m
IGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9uU3RyZWFtKSB7CiAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgIG1fYnl0ZWNvZGVDb3N0
ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOworICAgICAgICBzdGF0aWNfYXNzZXJ0KE9wY29k
ZUlEV2lkdGhCeVNpemU8SlNPcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29k
ZUlEU2l6ZSA9PSAxKTsKKyAgICAgICAgbV9ieXRlY29kZUNvc3QgKz0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gKyAxOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgICAgIExJTkso
T3BHZXRCeVZhbCwgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdldFByaXZhdGVOYW1lLCBwcm9m
aWxlKQpAQCAtMjA4MCw3ICsyMDgxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5n
ZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBpbnQKIAogYm9v
bCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbikKIHsKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKKyAgICBjb25zdCBhdXRv
JiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOwogICAgIGZvciAoY29uc3QgYXV0
byYgaXQgOiBpbnN0cnVjdGlvblN0cmVhbSkgewogICAgICAgICBpZiAoaXQtPmlzPE9wRGVidWc+
KCkpIHsKICAgICAgICAgICAgIGludCB1bnVzZWQ7CkBAIC0zMDcyLDcgKzMwNzMsNyBAQCB2b2lk
IENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKQogICAgICAgICByZXR1cm4g
c3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKTsKICAgICB9OwogCi0gICAgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAg
c3dpdGNoIChvcGNvZGVJRCkgewpAQCAtMzI2Miw4ICszMjYzLDggQEAgdm9pZCBDb2RlQmxvY2s6
OnZhbGlkYXRlKCkKICAgICAgICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
blN0cmVhbSA9IGluc3RydWN0aW9ucygpOworCisgICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25T
dHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9u
IDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIGlmICghIWJhc2VsaW5lQWx0ZXJuYXRpdmUoKS0+
aGFuZGxlckZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleChpbnN0cnVjdGlvbi5vZmZzZXQo
KSkpKSB7CkBAIC0zMzExLDEzICszMzEyLDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRTdGVwcGlu
Z01vZGUoQ29kZUJsb2NrOjpTdGVwcGluZ01vZGUgbW9kZSkKICAgICAgICAgamV0dGlzb24oUHJv
ZmlsZXI6OkpldHRpc29uRHVlVG9EZWJ1Z2dlclN0ZXBwaW5nKTsKIH0KIAotaW50IENvZGVCbG9j
azo6b3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCitpbnQgQ29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAg
IGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChwYyk7CiAgICAgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9u
KiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQor
Y29uc3QgSlNJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChw
Yyk7CiAgICAgaW50IHRhcmdldCA9IG1fdW5saW5rZWRDb2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0
KG9mZnNldCk7CkBAIC0zMzM0LDcgKzMzMzUsNyBAQCBVbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJs
b2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieQog
ICAgIHJldHVybiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKIH0KIAotQmluYXJ5QXJpdGhQcm9maWxlKiBDb2Rl
QmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK0Jp
bmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7CiAg
ICAgY2FzZSBvcF9hZGQ6CkBAIC0zMzUyLDcgKzMzNTMsNyBAQCBCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1VbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2Nr
Ojp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJp
dGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewogICAgIGNhc2Ug
b3BfbmVnYXRlOgpAQCAtMzM5MSw5ICszMzkyLDkgQEAgdm9pZCBDb2RlQmxvY2s6Omluc2VydEJh
c2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAgICAgaWYgKCF1
bmxpbmtlZENvZGVCbG9jaygpLT5oYXNPcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
cygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgRml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9w
UHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CisgICAgY29uc3QgRml4ZWRWZWN0
b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgYnl0ZWNvZGVPZmZzZXRzID0gdW5saW5r
ZWRDb2RlQmxvY2soKS0+b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgb2Zmc2V0c0xlbmd0aCA9IGJ5dGVjb2RlT2Zmc2V0cy5zaXpl
KCk7IGkgPCBvZmZzZXRzTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgLy8gQmVjYXVzZSBvcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgYmFz
aWMgYmxvY2ssIGZpbmRpbmcgCisgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBm
aW5kaW5nCiAgICAgICAgIC8vIHRoZSBuZXh0IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93IHdpbGwg
Z2l2ZSB1cyB0aGUgdGV4dCByYW5nZSBvZiBhIHNpbmdsZSBiYXNpYyBibG9jay4KICAgICAgICAg
c2l6ZV90IHN0YXJ0SWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2ldOwogICAgICAgICBhdXRvIGluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoc3RhcnRJZHgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDQ5MWJiOGVlMDViMTU5NzNkNTlkZDM2M2E4
NDA1NjQ1YjZjMmMxZGQuLmNjN2UyY2RkMGI2MzQ4NzBmZDVjZDI2MzRhOWU1N2IwNDVkY2I1NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIxNSwx
MiArMjE1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKCk7CiAgICAgdm9p
ZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9
IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRT
dHJlYW0mKTsKLSAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgdm9pZCBwcmludFN0cnVjdHVyZShQcmludFN0cmVhbSYsIGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOworICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwgY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IHZvaWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBKU0luc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOwogCiAgICAgdm9pZCBkdW1wTWF0aElDU3Rh
dHMoKTsKIApAQCAtMjg4LDMyICsyODgsMzIgQEAgcHVibGljOgogICAgIHZvaWQgbGlua0luY29t
aW5nUG9seW1vcnBoaWNDYWxsKENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIFBvbHltb3JwaGljQ2Fs
bE5vZGUqKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKTsKLSAgICBpbnQgb3V0
T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKKyAgICBj
b25zdCBKU0luc3RydWN0aW9uKiBvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIHBjKTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5v
dXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiAgICAgfQotICAgIGludCBvdXRPZkxpbmVKdW1w
T2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYyk7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZz
ZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpOworICAgIGludCBvdXRP
ZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rp
b24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlv
bi5wdHIoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNv
bnN0IEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChjb25zdCBKU0luc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgIHsKICAg
ICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5hdCgw
KS5wdHIoKTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihp
bnN0cnVjdGlvbnNCZWdpbikgKyBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICBjb25z
dCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuQWRk
cmVzcyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25z
RW5kKTsKICAgICAgICAgcmV0dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KGNvbnN0IElu
c3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXgoY29uc3QgSlNJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAg
ICAgIHJldHVybiBCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KHJldHVybkFkZHJlc3MpKTsK
ICAgICB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmluc3RydWN0aW9ucygpOyB9Ci0gICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9CisgICAgY29uc3QgSlNJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmluc3RydWN0aW9ucygpOyB9CisgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25BdChCeXRlY29kZUluZGV4IGluZGV4KSBjb25zdCB7IHJldHVybiBpbnN0cnVjdGlvbnMoKS5h
dChpbmRleCkucHRyKCk7IH0KIAogICAgIHNpemVfdCBwcmVkaWN0ZWRNYWNoaW5lQ29kZVNpemUo
KTsKIApAQCAtNDI4LDggKzQyOCw4IEBAIHB1YmxpYzoKIAogICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKICAg
ICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5
dGVjb2RlSW5kZXgpOwotICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmgKaW5kZXggNTFmMWQwMmUxODI1NThjOWMyOTEyZDg0MGM1ODgxMDQ4
Y2E4MDFkOS4uNTBkNzJhNDQxZTMxYThjYTYxZTAzMzA0NDQ3ZDY3N2MzNThmMDFhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTQwLDYgKzQw
LDcgQEAgc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gOjpKU0M6Om9wY29kZUxlbmd0aHM7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCogb3Bjb2RlTmFtZXMgPSA6OkpTQzo6b3Bj
b2RlTmFtZXM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNoZWNrcG9pbnRDb3VudFRhYmxl
ID0gYnl0ZWNvZGVDaGVja3BvaW50Q291bnRUYWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9w
Y29kZVNpemUgbWF4T3Bjb2RlSURXaWR0aCA9IG1heEpTT3Bjb2RlSURXaWR0aDsKIH07CiAKIHN0
cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKQEAgLTUyLDEyICs1MywxMiBAQCBzdHJ1Y3QgV2FzbU9w
Y29kZVRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2Rl
TGVuZ3RocyA9IHdhc21PcGNvZGVMZW5ndGhzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
Y2hhciogY29uc3QqIG9wY29kZU5hbWVzID0gd2FzbU9wY29kZU5hbWVzOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjaGVja3BvaW50Q291bnRUYWJsZSA9IHdhc21DaGVja3BvaW50Q291bnRU
YWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgbWF4T3Bjb2RlSURXaWR0aCA9
IG1heFdhc21PcGNvZGVJRFdpZHRoOwogfTsKIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGU+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uIHsKLQog
ICAgIHN0cnVjdCBNZXRhZGF0YSB7IH07CiAKIHByb3RlY3RlZDoKQEAgLTY4LDEyMSArNjksMTI0
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBXaWR0aD4KICAgICBjbGFzcyBJ
bXBsIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgICAgICB0eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEIG9wY29kZUlE
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRD4o
bV9vcGNvZGUpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBUeXBlQnlTaXpl
PE9wY29kZVNpemU6Ok5hcnJvdz46OnVuc2lnbmVkVHlwZSBtX29wY29kZTsKKyAgICAgICAgdHlw
ZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIFdpZHRoPjo6b3Bjb2RlVHlwZSBtX29w
Y29kZTsKICAgICB9OwogCiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0g
SlNPcGNvZGVUcmFpdHM+CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBvcGNvZGVJRCgp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRzPigpKQotICAgICAgICAg
ICAgcmV0dXJuIHdpZGUzMjxUcmFpdHM+KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKTsK
LSAgICAgICAgaWYgKGlzV2lkZTE2PFRyYWl0cz4oKSkKLSAgICAgICAgICAgIHJldHVybiB3aWRl
MTY8VHJhaXRzPigpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCk7Ci0gICAgICAgIHJldHVy
biBuYXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpOworICAgICAgICBpZiAoaXNX
aWRlMzIoKSkKKyAgICAgICAgICAgIHJldHVybiB3aWRlMzIoKS0+b3Bjb2RlSUQoKTsKKyAgICAg
ICAgaWYgKGlzV2lkZTE2KCkpCisgICAgICAgICAgICByZXR1cm4gd2lkZTE2KCktPm9wY29kZUlE
KCk7CisgICAgICAgIHJldHVybiBuYXJyb3coKS0+b3Bjb2RlSUQoKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBUcmFpdHM6Om9wY29kZU5hbWVz
W29wY29kZUlEPFRyYWl0cz4oKV07CisgICAgICAgIHJldHVybiBUcmFpdHM6Om9wY29kZU5hbWVz
W29wY29kZUlEKCldOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaXNXaWRlMTYoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3
aWRlMTY7CisgICAgICAgIHJldHVybiBuYXJyb3coKS0+b3Bjb2RlSUQoKSA9PSBUcmFpdHM6Ondp
ZGUxNjsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGlzV2lkZTMyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBu
YXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRyYWl0czo6d2lkZTMyOwor
ICAgICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAg
ICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8
VHJhaXRzPigpKQorICAgICAgICBpZiAoaXNXaWRlMzIoKSkKICAgICAgICAgICAgIHJldHVybiBP
cGNvZGVTaXplOjpXaWRlMzI7Ci0gICAgICAgIHJldHVybiBpc1dpZGUxNjxUcmFpdHM+KCkgPyBP
cGNvZGVTaXplOjpXaWRlMTYgOiBPcGNvZGVTaXplOjpOYXJyb3c7CisgICAgICAgIHJldHVybiBp
c1dpZGUxNigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93OwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAg
IGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wY29kZUlE
PFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CisgICAg
ICAgIHJldHVybiBvcGNvZGVJRCgpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRh
ZGF0YTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aENo
ZWNrcG9pbnRzOworICAgICAgICByZXR1cm4gb3Bjb2RlSUQoKSA8IFRyYWl0czo6bnVtYmVyT2ZC
eXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGVja3BvaW50
cygpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0NoZWNrcG9pbnRzPFRyYWl0cz4oKSkK
KyAgICAgICAgaWYgKCFoYXNDaGVja3BvaW50cygpKQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRhYmxlW29wY29kZUlEPFRyYWl0
cz4oKV07CisgICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRhYmxlW29wY29k
ZUlEKCldOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2Rl
VHJhaXRzPgogICAgIGludCBzaXplU2hpZnRBbW91bnQoKSBjb25zdAogICAgIHsKLSAgICAgICAg
aWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMjsKLSAgICAgICAgaWYgKGlzV2lkZTE2PFRyYWl0cz4oKSkKKyAgICAgICAg
aWYgKGlzV2lkZTE2KCkpCiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+
CisgICAgT3Bjb2RlU2l6ZSBvcGNvZGVJRFdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChpc1dpZGUzMigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJh
aXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemU7CisgICAgICAgIGlmIChpc1dp
ZGUxNigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBP
cGNvZGVTaXplOjpXaWRlMTY+OjpvcGNvZGVJRFNpemU7CisgICAgICAgIHJldHVybiBPcGNvZGVJ
RFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6b3Bjb2RlSURTaXplOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIG9wY29kZUlEQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICh1bnNpZ25lZCkgb3Bjb2RlSURXaWR0aCgpOworICAgIH0KKwogICAgIHNpemVf
dCBzaXplKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gc2l6ZVNoaWZ0QW1vdW50ID0gdGhp
cy0+c2l6ZVNoaWZ0QW1vdW50PFRyYWl0cz4oKTsKKyAgICAgICAgYXV0byBzaXplU2hpZnRBbW91
bnQgPSB0aGlzLT5zaXplU2hpZnRBbW91bnQoKTsKICAgICAgICAgc2l6ZV90IHByZWZpeFNpemUg
PSBzaXplU2hpZnRBbW91bnQgPyAxIDogMDsKICAgICAgICAgc2l6ZV90IG9wZXJhbmRTaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBzaXplU2hpZnRBbW91bnQ7Ci0gICAgICAgIHNpemVf
dCBzaXplT2ZCeXRlY29kZSA9IDE7Ci0gICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIChU
cmFpdHM6Om9wY29kZUxlbmd0aHNbb3Bjb2RlSUQ8VHJhaXRzPigpXSAtIDEpICogb3BlcmFuZFNp
emUgKyBwcmVmaXhTaXplOworICAgICAgICBzaXplX3Qgc2l6ZU9mQnl0ZWNvZGUgPSBvcGNvZGVJ
REJ5dGVzKCk7CisgICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIFRyYWl0czo6b3Bjb2Rl
TGVuZ3Roc1tvcGNvZGVJRCgpXSAqIG9wZXJhbmRTaXplICsgcHJlZml4U2l6ZTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4K
KyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIGJvb2wgaXMoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUOjpvcGNvZGVJRDsKKyAgICAgICAgcmV0
dXJuIG9wY29kZUlEKCkgPT0gVDo6b3Bjb2RlSUQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xh
c3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8Y2xh
c3MgVD4KICAgICBUIGFzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoaXM8VCwgVHJh
aXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAgICByZXR1cm4gVDo6
ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRoLCB0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRo
PgogICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoaXM8
VCwgVHJhaXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAgICByZXR1
cm4gVChyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB0eXBlbmFtZSBUeXBlQnlTaXplPHdpZHRo
Pjo6dW5zaWduZWRUeXBlKj4odGhpcyArICh3aWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cgPyAx
IDogMikpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFQqIGNhc3QoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgQVNTRVJU
KChpczxUPigpKSk7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KHRoaXMpOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJh
aXRzPgorICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgY29uc3QgVCogY2FzdCgpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAgICAgICBBU1NFUlQo
KGlzPFQ+KCkpKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHRo
aXMpOwogICAgIH0KIApAQCAtMTkxLDI5ICsxOTUsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6Ok5hcnJvdz4qPih0aGlz
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0
cz4KICAgICBjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qIHdpZGUxNigpIGNvbnN0CiAg
ICAgewotCi0gICAgICAgIEFTU0VSVChpc1dpZGUxNjxUcmFpdHM+KCkpOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZigqdGhpcykgPT0gMSwgIlBvaW50ZXIgbWF0aCIpOworICAgICAgICBB
U1NFUlQoaXNXaWRlMTYoKSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBjb25zdCBJbXBsPE9w
Y29kZVNpemU6OldpZGUzMj4qIHdpZGUzMigpIGNvbnN0CiAgICAgewotCi0gICAgICAgIEFTU0VS
VChpc1dpZGUzMjxUcmFpdHM+KCkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZigqdGhp
cykgPT0gMSwgIlBvaW50ZXIgbWF0aCIpOworICAgICAgICBBU1NFUlQoaXNXaWRlMzIoKSk7CiAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lk
ZTMyPio+KHRoaXMgKyAxKTsKICAgICB9CiB9OwogCi1zdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJs
aWMgQmFzZUluc3RydWN0aW9uPE9wY29kZUlEPiB7Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2Yo
SW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBt
YXRoIik7Ci0KLXN0cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdh
c21PcGNvZGVJRD4gewotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0g
MSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKK3VzaW5nIEpT
SW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgV2Fz
bUluc3RydWN0aW9uICA9IEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2RlVHJhaXRzPjsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKEpTSW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMg
dGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAKaW5k
ZXggMzhjYWY5NWZkOWUwNjEwNTNlMTM1YTU5ZmUxYTNjNzVmODVhODVkMy4uNTM1NDI5N2NkZmE2
Yjc5ZDA2NmFhMTM3MWZlODA2OGRiMTQ1ZTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBAIC0zMCwyMCArMzAsNCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihJbnN0cnVjdGlvblN0cmVhbSk7CiAKLUluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0
cmVhbShJbnN0cnVjdGlvbkJ1ZmZlciYmIGluc3RydWN0aW9ucykKLSAgICA6IG1faW5zdHJ1Y3Rp
b25zKFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSkKLXsgfQotCi1zaXplX3QgSW5zdHJ1Y3Rpb25TdHJl
YW06OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6
ZSgpOwotfQotCi1ib29sIEluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyhJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pIGNvbnN0Ci17Ci0KLSAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gYml0
d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnN0cnVjdGlvbik7Ci0gICAgcmV0dXJuIHBvaW50
ZXIgPj0gbV9pbnN0cnVjdGlvbnMuZGF0YSgpICYmIHBvaW50ZXIgPCAobV9pbnN0cnVjdGlvbnMu
ZGF0YSgpICsgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAppbmRleCAzZTk3OGQz
MzJkNThkNzBhNTI5ZDI4ZjA1MjY2NDQ4Y2ZmNzZlYjEwLi4zOTJjOWNlZTg4Y2NmYTI0ZGQxNDk1
Nzg4NjA1Y2EwMjBkZWQ5YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaApAQCAtMzQsMTUgKzM0LDE5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihJbnN0cnVjdGlv
blN0cmVhbSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KIGNsYXNzIElu
c3RydWN0aW9uU3RyZWFtIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGZy
aWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwogICAgIGZyaWVuZCBjbGFz
cyBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTsKIHB1YmxpYzoKICAgICB1c2luZyBJbnN0cnVjdGlv
bkJ1ZmZlciA9IFZlY3Rvcjx1aW50OF90LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYsIElu
c3RydWN0aW9uU3RyZWFtTWFsbG9jPjsKIAotICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
OworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9pbnN0cnVjdGlvbnMuc2l6ZSgpOworICAgIH0KIAogICAgIHVzaW5nIE9mZnNldCA9IHVuc2ln
bmVkOwogCkBAIC01MSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgQmFzZVJlZiB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFz
cyBJbnN0cnVjdGlvblN0cmVhbTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgQmFzZVJlZihjb25z
dCBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiYgb3RoZXIpCkBAIC02NSw4ICs2OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX2luZGV4ID0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQog
Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIHVud3JhcCgpOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogcHRy
KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IEluc3Ry
dWN0aW9uVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAg
ICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHB0cigpIGNvbnN0IHsgcmV0dXJuIHVu
d3JhcCgpOyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJhc2VSZWY8SW5zdHJ1
Y3Rpb25CdWZmZXI+JiBvdGhlcikgY29uc3QKICAgICAgICAgewpAQCAtODcsNyArOTEsNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlu
bGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5k
ZXhdKTsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBCYXNlUmVmKEluc3RydWN0aW9uQnVm
ZmVyJiBpbnN0cnVjdGlvbnMsIHNpemVfdCBpbmRleCkKQEAgLTEwMywzMyArMTA3LDM2IEBAIHB1
YmxpYzoKICAgICB1c2luZyBSZWYgPSBCYXNlUmVmPGNvbnN0IEluc3RydWN0aW9uQnVmZmVyPjsK
IAogICAgIGNsYXNzIE11dGFibGVSZWYgOiBwdWJsaWMgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZl
cj4gewotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0
ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVzaW5nIEJhc2VSZWY8SW5zdHJ1Y3Rpb25C
dWZmZXI+OjpCYXNlUmVmOworICAgICAgICB1c2luZyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVy
Pjo6bV9pbmRleDsKKyAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj46Om1f
aW5zdHJ1Y3Rpb25zOwogCiAgICAgcHVibGljOgogICAgICAgICBSZWYgZnJlZXplKCkgY29uc3Qg
IHsgcmV0dXJuIFJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX2luZGV4IH07IH0KLSAgICAgICAgaW5s
aW5lIEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gdW53cmFwKCk7IH0KLSAgICAg
ICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
dW53cmFwKCk7IH0KLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiBwdHIoKSB7IHJldHVybiB1
bndyYXAoKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHB0cigpIGNvbnN0
IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlubGluZSBJbnN0cnVjdGlvblR5cGUqIG9w
ZXJhdG9yLT4oKSB7IHJldHVybiB1bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgY29uc3QgSW5z
dHJ1Y3Rpb25UeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAg
ICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlwZSogcHRyKCkgeyByZXR1cm4gdW53cmFwKCk7IH0K
KyAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uVHlwZSogcHRyKCkgY29uc3QgeyByZXR1
cm4gdW53cmFwKCk7IH0KICAgICAgICAgaW5saW5lIG9wZXJhdG9yIFJlZigpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBSZWYgeyBtX2luc3RydWN0aW9ucywgbV9pbmRleCB9OwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIHVud3Jh
cCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlv
bnNbbV9pbmRleF0pOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogdW53cmFw
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KCZt
X2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0KKyAgICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlw
ZSogdW53cmFwKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvblR5cGUqPigm
bV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVj
dGlvblR5cGUqIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
SW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5kZXhdKTsgfQogICAgIH07CiAK
IHByaXZhdGU6CiAgICAgY2xhc3MgaXRlcmF0b3IgOiBwdWJsaWMgUmVmIHsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4g
ZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOwogCiAgICAgcHVibGljOgogICAgICAgICB1
c2luZyBSZWY6OlJlZjsKKyAgICAgICAgdXNpbmcgUmVmOjptX2luZGV4OwogCiAgICAgICAgIFJl
ZiYgb3BlcmF0b3IqKCkKICAgICAgICAgewpAQCAtMTQ0LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpcyAr
PSB0aGlzLT5wdHIoKS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMTc2LDE5ICsx
ODMsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuZGF0YSgpOwog
ICAgIH0KIAotICAgIGJvb2wgY29udGFpbnMoSW5zdHJ1Y3Rpb24qKSBjb25zdDsKKyAgICBib29s
IGNvbnRhaW5zKEluc3RydWN0aW9uVHlwZSogaW5zdHJ1Y3Rpb24pIGNvbnN0CisgICAgeworICAg
ICAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBwb2ludGVyID49IG1faW5zdHJ1Y3Rpb25z
LmRhdGEoKSAmJiBwb2ludGVyIDwgKG1faW5zdHJ1Y3Rpb25zLmRhdGEoKSArIG1faW5zdHJ1Y3Rp
b25zLnNpemUoKSk7CisgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSW5zdHJ1Y3Rp
b25TdHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJik7CisgICAgZXhwbGljaXQgSW5zdHJ1Y3Rpb25T
dHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJiBpbnN0cnVjdGlvbnMpCisgICAgICAgIDogbV9pbnN0
cnVjdGlvbnMoV1RGTW92ZShpbnN0cnVjdGlvbnMpKQorICAgIHsgfQogCiAgICAgSW5zdHJ1Y3Rp
b25CdWZmZXIgbV9pbnN0cnVjdGlvbnM7CiB9OwogCi1jbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciA6IHB1YmxpYyBJbnN0cnVjdGlvblN0cmVhbSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0
cnVjdGlvblR5cGU+CitjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciA6IHB1YmxpYyBJbnN0
cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+IHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNv
ZGVSZXdyaXRlcjsKIHB1YmxpYzoKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVj
dGlvblR5cGU+OjpJbnN0cnVjdGlvblN0cmVhbTsKKyAgICB1c2luZyB0eXBlbmFtZSBJbnN0cnVj
dGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpJbnN0cnVjdGlvbkJ1ZmZlcjsKKyAgICB1c2lu
ZyB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpNdXRhYmxlUmVm
OworICAgIHVzaW5nIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46
Ok9mZnNldDsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+Ojpt
X2luc3RydWN0aW9uczsKKwogICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyKCkKLSAgICAgICAg
OiBJbnN0cnVjdGlvblN0cmVhbSh7IH0pCisgICAgICAgIDogSW5zdHJ1Y3Rpb25TdHJlYW08SW5z
dHJ1Y3Rpb25UeXBlPih7IH0pCiAgICAgeyB9CiAKICAgICB2b2lkIHNldEluc3RydWN0aW9uQnVm
ZmVyKEluc3RydWN0aW9uQnVmZmVyJiYgYnVmZmVyKQpAQCAtMjYxLDE0ICsyODEsMTQgQEAgcHVi
bGljOgogICAgICAgICBtX3Bvc2l0aW9uID0gcmVmLm9mZnNldCgpOwogICAgIH0KIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gZmluYWxpemUoKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiBmaW5hbGl6ZSgpCiAg
ICAgewogICAgICAgICBtX2ZpbmFsaXplZCA9IHRydWU7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25z
LnNocmlua1RvRml0KCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rp
b25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtKFdURk1vdmUobV9pbnN0cnVjdGlvbnMp
KSB9OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPElu
c3RydWN0aW9uVHlwZT4+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT4o
V1RGTW92ZShtX2luc3RydWN0aW9ucykpIH07CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEluc3RydWN0aW9uU3RyZWFtPiBmaW5hbGl6ZShJbnN0cnVjdGlvbkJ1ZmZlciYgdXNlZEJ1ZmZl
cikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBl
Pj4gZmluYWxpemUoSW5zdHJ1Y3Rpb25CdWZmZXImIHVzZWRCdWZmZXIpCiAgICAgewogICAgICAg
ICBtX2ZpbmFsaXplZCA9IHRydWU7CiAKQEAgLTI3OCw3ICsyOTgsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgdXNlZEJ1ZmZlciA9IFdURk1vdmUobV9pbnN0cnVjdGlvbnMpOwogCi0gICAgICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9u
U3RyZWFtKFdURk1vdmUocmVzdWx0QnVmZmVyKSkgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiB7IG5ldyBJbnN0cnVj
dGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+KFdURk1vdmUocmVzdWx0QnVmZmVyKSkgfTsKICAg
ICB9CiAKICAgICBNdXRhYmxlUmVmIHJlZigpCkBAIC0yODYsNyArMzA2LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gTXV0YWJsZVJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX3Bvc2l0aW9uIH07
CiAgICAgfQogCi0gICAgdm9pZCBzd2FwKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBvdGhlcikK
KyAgICB2b2lkIHN3YXAoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI8SW5zdHJ1Y3Rpb25UeXBlPiYg
b3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9maW5hbGl6ZWQsIG90aGVyLm1fZmlu
YWxpemVkKTsKICAgICAgICAgc3RkOjpzd2FwKG1fcG9zaXRpb24sIG90aGVyLm1fcG9zaXRpb24p
OwpAQCAtMjk0LDExICszMTQsMTIgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBj
bGFzcyBpdGVyYXRvciA6IHB1YmxpYyBNdXRhYmxlUmVmIHsKLSAgICAgICAgZnJpZW5kIGNsYXNz
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOworICAgIGNsYXNzIGl0ZXJhdG9yIDogcHVibGljIElu
c3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46Ok11dGFibGVSZWYgeworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB1c2luZyBNdXRhYmxlUmVmOjpNdXRhYmxlUmVmOwor
ICAgICAgICB1c2luZyBNdXRhYmxlUmVmOjptX2luZGV4OwogCiAgICAgcHVibGljOgogICAgICAg
ICBNdXRhYmxlUmVmJiBvcGVyYXRvciooKQpAQCAtMzE0LDcgKzMzNSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpcyAr
PSB0aGlzLT5wdHIoKS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMzM0LDUgKzM1
NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpbmFsaXplZCB7IGZhbHNlIH07CiB9OwogCit1
c2luZyBKU0luc3RydWN0aW9uU3RyZWFtID0gSW5zdHJ1Y3Rpb25TdHJlYW08SlNJbnN0cnVjdGlv
bj47Cit1c2luZyBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyID0gSW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXI8SlNJbnN0cnVjdGlvbj47Cit1c2luZyBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0gPSBJbnN0
cnVjdGlvblN0cmVhbTxXYXNtSW5zdHJ1Y3Rpb24+OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAppbmRleCA2YzA3M2NmNjc2YWJkNjgw
YmYzYzNmNzRjMWUxZjEwNDQ4ODlkNzdhLi40MzQ4Y2U3YTgzNzEwNjFlNmY1ZGNmZGIzZDViY2Vj
MTEzNmY3NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0z
MSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJCeXRlY29kZXMuaCIKICNpbmNsdWRlICJMTEludE9w
Y29kZS5oIgorI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTg4LDEwICs4OSwxNCBAQCBleHRlcm4gY29uc3QgdW5z
aWduZWQgd2FzbU9wY29kZUxlbmd0aHNbXTsKICAgICBGT1JfRUFDSF9XQVNNX0lEKE9QQ09ERV9J
RF9MRU5HVEhTKTsKICN1bmRlZiBPUENPREVfSURfTEVOR1RIUwogCi1zdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1heEpTT3Bjb2RlTGVuZ3RoID0gLyogT3Bjb2RlICovIDEgKyAvKiBXaWRlMzIg
T3Bjb2RlICovIDEgKyAvKiBPcGVyYW5kcyAqLyAoTUFYX0xFTkdUSF9PRl9CWVRFQ09ERV9JRFMg
LSAxKSAqIDQ7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFdhc21PcGNvZGVMZW5ndGgg
PSAvKiBPcGNvZGUgKi8gMSArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8qIE9wZXJhbmRzICov
IChNQVhfTEVOR1RIX09GX1dBU01fSURTIC0gMSkgKiA0Owotc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBtYXhPcGNvZGVMZW5ndGggPSBzdGQ6Om1heChtYXhKU09wY29kZUxlbmd0aCwgbWF4V2Fz
bU9wY29kZUxlbmd0aCk7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4
T3Bjb2RlTGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIobWF4T3Bjb2RlTGVuZ3RoKSAr
IDE7CitzdGF0aWNfYXNzZXJ0KE5VTUJFUl9PRl9CWVRFQ09ERV9JRFMgPCAyNTUpOworc3RhdGlj
IGNvbnN0ZXhwciBPcGNvZGVTaXplIG1heEpTT3Bjb2RlSURXaWR0aCA9IE9wY29kZVNpemU6Ok5h
cnJvdzsKK3N0YXRpY19hc3NlcnQoTlVNQkVSX09GX1dBU01fSURTIDwgMjU1KTsKK3N0YXRpYyBj
b25zdGV4cHIgT3Bjb2RlU2l6ZSBtYXhXYXNtT3Bjb2RlSURXaWR0aCA9IE9wY29kZVNpemU6Oldp
ZGUxNjsgLy8gRklYTUU6IGNoYW5nZSB0aGlzIGJhY2sgb25jZSBFV1MgcGFzc2VzLgorc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhKU0J5dGVjb2RlU3RydWN0TGVuZ3RoID0gLyogT3Bjb2Rl
ICovIG1heEpTT3Bjb2RlSURXaWR0aCArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8qIE9wZXJh
bmRzICovIE1BWF9MRU5HVEhfT0ZfQllURUNPREVfSURTICogNDsKK3N0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4V2FzbUJ5dGVjb2RlU3RydWN0TGVuZ3RoID0gLyogT3Bjb2RlICovIG1heFdh
c21PcGNvZGVJRFdpZHRoICsgLyogV2lkZTMyIE9wY29kZSAqLyAxICsgLyogT3BlcmFuZHMgKi8g
TUFYX0xFTkdUSF9PRl9XQVNNX0lEUyAqIDQ7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1h
eEJ5dGVjb2RlU3RydWN0TGVuZ3RoID0gc3RkOjptYXgobWF4SlNCeXRlY29kZVN0cnVjdExlbmd0
aCwgbWF4V2FzbUJ5dGVjb2RlU3RydWN0TGVuZ3RoKTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgYml0V2lkdGhGb3JNYXhCeXRlY29kZVN0cnVjdExlbmd0aCA9IFdURjo6Z2V0TVNCU2V0Q29u
c3RleHByKG1heEJ5dGVjb2RlU3RydWN0TGVuZ3RoKSArIDE7CiAKICNkZWZpbmUgRk9SX0VBQ0hf
T1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShtYWNybykgXAogICAgIG1hY3JvKE9wQ2FsbFZhcmFy
Z3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlSW5saW5lcy5o
CmluZGV4IDRhMmFmNmExMDZhNDc5NDZjODhjMDlkZThjNWMxZDAxOTFlZjYxZTcuLjhiN2M2M2Y1
ZGE3MmExMmU5N2ViZDZjZDdiNWY5NzYzZGEwZGI0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZUlubGluZXMuaApAQCAtNTQsNyArNTQsNyBAQCBpbmxpbmUg
Ym9vbCBpc09wY29kZVNoYXBlKE9wY29kZUlEIG9wY29kZUlEKQogfQogCiB0ZW1wbGF0ZTxPcGNv
ZGVTaGFwZSBzaGFwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHNoYXBlICE9IEFueU9w
Y29kZVNoYXBlPj4KLWlubGluZSBib29sIGlzT3Bjb2RlU2hhcGUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQoraW5saW5lIGJvb2wgaXNPcGNvZGVTaGFwZShjb25zdCBKU0luc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICByZXR1cm4gaXNPcGNvZGVTaGFwZTxzaGFwZT4oaW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZVNpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGVTaXplLmgKaW5kZXggMjRiMTYyYjkzZjc5ZTg0YTBkMTg2NDIzMWFjZGJkNzNlNTlh
YTA2My4uYTY1M2E5NmI4NzgyZmJlZWI0YzFmZGM0YzdlMjhhNmJlZThkMzQzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCkBAIC0yNSw2ICsyNSw4IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKIG5hbWVzcGFjZSBK
U0MgewogCiBlbnVtIE9wY29kZVNpemUgewpAQCAtNzIsNCArNzQsMjUgQEAgc3RydWN0IFBhZGRp
bmdCeVNpemU8T3Bjb2RlU2l6ZTo6V2lkZTMyPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
OF90IHZhbHVlID0gMTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgT3Bjb2RlU2l6
ZT4KK3N0cnVjdCBPcGNvZGVJRFdpZHRoQnlTaXplOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHM+CitzdHJ1Y3QgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJv
dz4geworICAgIHVzaW5nIG9wY29kZVR5cGUgPSB1aW50OF90OworICAgIHN0YXRpYyBjb25zdGV4
cHIgT3Bjb2RlU2l6ZSBvcGNvZGVJRFNpemUgPSBPcGNvZGVTaXplOjpOYXJyb3c7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CitzdHJ1Y3QgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFp
dHMsIE9wY29kZVNpemU6OldpZGUxNj4geworICAgIHVzaW5nIG9wY29kZVR5cGUgPSB0eXBlbmFt
ZSBzdGQ6OmNvbmRpdGlvbmFsPFRyYWl0czo6bWF4T3Bjb2RlSURXaWR0aCA9PSBPcGNvZGVTaXpl
OjpOYXJyb3csIHVpbnQ4X3QsIHVpbnQxNl90Pjo6dHlwZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IE9wY29kZVNpemUgb3Bjb2RlSURTaXplID0gc3RhdGljX2Nhc3Q8T3Bjb2RlU2l6ZT4oc2l6ZW9m
KG9wY29kZVR5cGUpKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KK3N0cnVjdCBP
cGNvZGVJRFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTMyPiB7CisgICAgdXNp
bmcgb3Bjb2RlVHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8VHJhaXRzOjptYXhPcGNv
ZGVJRFdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdywgdWludDhfdCwgdWludDE2X3Q+Ojp0eXBl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBvcGNvZGVJRFNpemUgPSBzdGF0aWNf
Y2FzdDxPcGNvZGVTaXplPihzaXplb2Yob3Bjb2RlVHlwZSkpOworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lz
ZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuY3BwCmluZGV4IGQyZTg1MDZjNGM0MjZiYmI3YWI1NDU4NDdjOTIzNDAzMzQ0
ZDliMTYuLmQ4YTc2MTBmNzNlMzdjZjczODQ3MzZiMGFmNzkzMDYxMTIzZGI2ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMu
Y3BwCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUgPHNpemVf
dCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaz4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRz
Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCB2ZWN0
b3JTaXplPiYgb3V0KQorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihC
bG9jayogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYm
IGluc3RydWN0aW9uLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
LCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0Zvcklu
c3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIFsmXShpbnQzMl90IHJlbGF0aXZlT2Zm
c2V0KSB7CiAgICAgICAgIG91dC5hcHBlbmQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyByZWxhdGl2
ZU9mZnNldCk7CkBAIC01NCw3ICs1NCw3IEBAIGVudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c01vZGUgewogfTsKIAogdGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01v
ZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ssIHNpemVfdCB2ZWN0b3JTaXplPgotdm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIHZlY3RvclNpemU+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRl
cm5hbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVj
dGlvbnMsIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3Rv
clNpemU+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5pc0VtcHR5KCkpOwogCkBAIC04OCwzMiAr
ODgsMzIgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0KICAgICBvdXQuc2hyaW5rQ2FwYWNpdHko
dG9JbmRleCk7CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQor
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCkKIHsKICAg
ICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCksIG91dCk7CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3Ry
dWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQogewogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2Nr
Q2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogfQogCi12b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywg
Y29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCwgMzI+JiBvdXQpCiB7CiAgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFp
bT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7CiB9CiAKLXZvaWQgcmVjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0PiYgb3V0KQordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0PiYgb3V0KQogewogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxD
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlPihjb2RlQmxvY2ssIGlu
c3RydWN0aW9ucywgb3V0KTsKIH0KIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5z
dHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KQordm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9y
PHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCkKIHsKICAgICBn
ZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG91dCk7
CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5z
dHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KQordm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ciogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGlu
c3RydWN0aW9uLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAx
PiYgb3V0KQogewogICAgIGdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCBmMTc1ZTJjY2E3ZGExMjhlYTQ1YjJiMTM3
YTNiOWI4MDY2NTE2MmIwLi5kOGVhMGZkYzRlOTRmMzcxOTdmMDY3OWYyNWYwYjBhYzlmYTc2ZWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jazsKIAogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5k
ZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KLXZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCwgMzI+JiBvdXQpOwotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayos
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Ci12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYs
IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKENvZGVCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQp
Owordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KTsKIAotdm9pZCByZWNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3V0KTsKK3ZvaWQg
cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwg
Y29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmLCBWZWN0b3I8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7Ci12b2lkIGZpbmRKdW1wVGFyZ2V0c0Zv
ckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW06OlJlZiYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0
KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiwgY29uc3Qg
dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0Zv
ckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgdHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJ
bmxpbmVzLmgKaW5kZXggMGJkNDAzOTg0NTJkOWNlZjY1MGM4NDllYTdlMmUzZGM3MzY2NGRjNS4u
ZjdlZmFiYmQ5NDM4ZDA4ZmIwNjQzMzM4OTM0NGY0YWFjOTJhMjdhMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5s
aW5lcy5oCkBAIC05MCw3ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEJsb2NrPgotaW5saW5lIGludCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIHVu
c2lnbmVkIHRhcmdldCkKK2lubGluZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEJsb2Nr
KiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5z
dHJ1Y3Rpb24sIHVuc2lnbmVkIHRhcmdldCkKIHsKICAgICBpZiAodGFyZ2V0KQogICAgICAgICBy
ZXR1cm4gdGFyZ2V0OwpAQCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJ
bnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6Ugog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFwPgotaW5saW5lIGludCBqdW1wVGFyZ2V0Rm9y
SW5zdHJ1Y3Rpb24oSGFzaE1hcCYgb3V0T2ZMaW5lSnVtcFRhcmdldHMsIGNvbnN0IEluc3RydWN0
aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCB1bnNpZ25lZCB0YXJnZXQpCitpbmxpbmUgaW50
IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihIYXNoTWFwJiBvdXRPZkxpbmVKdW1wVGFyZ2V0cywg
Y29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5z
aWduZWQgdGFyZ2V0KQogewogICAgIGlmICh0YXJnZXQpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7
CkBAIC0xMDcsMTQgKzEwNywxNCBAQCBpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlv
bihIYXNoTWFwJiBvdXRPZkxpbmVKdW1wVGFyZ2V0cywgY29uc3QgSW5zdHJ1YwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgQmxvY2s+Ci1pbmxpbmUgaW50IGp1bXBUYXJnZXRG
b3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24pCitpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihC
bG9jayYmIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVm
JiBpbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9w
PigpOwogICAgIHJldHVybiBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrLCB0eXBlbmFtZSBGdW5jdGlvbj4KLWlubGluZSB2b2lkIGV4dHJhY3RTdG9yZWRKdW1w
VGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0aW9uKQoraW5s
aW5lIHZvaWQgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2smJiBj
b2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1
Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlvbikKIHsKICNkZWZpbmUgQ0FTRV9PUChfX29w
KSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogXApAQCAtMTM1LDcgKzEzNSw3IEBAIFNXSVRD
SF9KTVAoQ0FTRV9PUCwgU1dJVENIX0NBU0UsIFNXSVRDSF9ERUZBVUxUX09GRlNFVCkKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZSBDb2Rl
QmxvY2tPckhhc2hNYXA+Ci1pbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvcklu
c3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zdHJ1
Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uJiBmdW5j
dGlvbiwgQ29kZUJsb2NrT3JIYXNoTWFwJiBjb2RlQmxvY2tPckhhc2hNYXApCitpbmxpbmUgdm9p
ZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2Nr
LCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0
YWJsZVJlZiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0aW9uLCBDb2RlQmxvY2tP
ckhhc2hNYXAmIGNvZGVCbG9ja09ySGFzaE1hcCkKIHsKICNkZWZpbmUgQ0FTRV9PUChfX29wKSBc
CiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogeyBcCkBAIC0xNzEsNyArMTcxLDcgQEAgU1dJVENI
X0pNUChDQVNFX09QLCBTV0lUQ0hfQ0FTRSwgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rpb24+Ci1pbmxpbmUgdm9pZCB1
cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIHVu
c2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVj
dGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCitpbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFy
Z2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZpbmFsT2Zmc2V0
LCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uLCBG
dW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3Ry
dWN0aW9uKGNvZGVCbG9jaywgZmluYWxPZmZzZXQsIGluc3RydWN0aW9uLCBmdW5jdGlvbiwgY29k
ZUJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGFjNTcxMjdiY2Y4OTA3MmJlMDM4NDE2ZGExMzliNDFm
MTY0YWU2MTQuLmE5YWY3Y2Y0MzFmZDRjM2Y1MDVjZTgwYzBmZjVhMjQzMjQyMTU0NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIGlubGluZSB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjpn
ZXRMaW5lQW5kQ29sdW1uKGNvbnN0IEV4cHJlc3Npb25SYW5nZUluZm8mIGluZm8sCiB9CiAKICNp
Zm5kZWYgTkRFQlVHCi1zdGF0aWMgdm9pZCBkdW1wTGluZUNvbHVtbkVudHJ5KHNpemVfdCBpbmRl
eCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKQorc3RhdGlj
IHZvaWQgZHVtcExpbmVDb2x1bW5FbnRyeShzaXplX3QgaW5kZXgsIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtLCB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwg
dW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKQogewogICAgIGNvbnN0IGF1dG8gaW5zdHJ1
Y3Rpb24gPSBpbnN0cnVjdGlvblN0cmVhbS5hdChpbnN0cnVjdGlvbk9mZnNldCk7CiAgICAgY29u
c3QgY2hhciogZXZlbnQgPSAiIjsKQEAgLTI5NCw3ICsyOTQsNyBAQCBVbmxpbmtlZENvZGVCbG9j
azo6flVubGlua2VkQ29kZUJsb2NrKCkKICAgICB9CiB9CiAKLWNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29uc3QKK2NvbnN0IEpTSW5z
dHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKSBjb25zdAog
ewogICAgIEFTU0VSVChtX2luc3RydWN0aW9ucy5nZXQoKSk7CiAgICAgcmV0dXJuICptX2luc3Ry
dWN0aW9uczsKQEAgLTMzMiw3ICszMzIsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVu
bGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAg
IHJldHVybiAqbV9saXZlbmVzczsKIH0KIAotaW50IFVubGlua2VkQ29kZUJsb2NrOjpvdXRPZkxp
bmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCitp
bnQgVW5saW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIEFTU0VSVChtX291
dE9mTGluZUp1bXBUYXJnZXRzLmNvbnRhaW5zKGJ5dGVjb2RlT2Zmc2V0KSk7CiAgICAgcmV0dXJu
IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMWM1
OTA0MmUwZDBjMzgxMWIzYzliZTIxNThjZGM1NGMwMWRiYjgxYy4uOTQxYmYzYTliZmQyMmM2OWNk
NmViZmU4NmY4ZDI5ZGRlNTFmN2VmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTIxMSwxMiArMjExLDEyIEBAIHB1Ymxp
YzoKICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICBKU1BhcnNlclNjcmlw
dE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTUGFyc2VyU2Ny
aXB0TW9kZT4obV9zY3JpcHRNb2RlKTsgfQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0m
IGluc3RydWN0aW9ucygpIGNvbnN0OwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bkF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluc3RydWN0aW9ucygpLmF0
KGluZGV4KS5wdHIoKTsgfQotICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKKyAgICBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0
cnVjdGlvbnMoKSBjb25zdDsKKyAgICBjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbkF0
KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluc3RydWN0aW9ucygpLmF0KGlu
ZGV4KS5wdHIoKTsgfQorICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5hdCgwKS5wdHIoKTsKLSAgICAgICAgY29uc3QgYXV0
byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikgKyBpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOworICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5zdHJ1Y3Rpb24gPj0gaW5zdHJ1Y3Rpb25zQmVnaW4gJiYg
aW5zdHJ1Y3Rpb24gPCBpbnN0cnVjdGlvbnNFbmQpOwogICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rp
b24gLSBpbnN0cnVjdGlvbnNCZWdpbjsKICAgICB9CkBAIC0yNzgsNyArMjc4LDcgQEAgcHVibGlj
OgogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVy
biAwOyB9CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1
bW47IH0KIAotICAgIGNvbnN0IEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+
JiBvcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cygpIGNvbnN0CisgICAgY29uc3Qg
Rml4ZWRWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3BQcm9m
aWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fcmFyZURhdGEpOwogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVD
b250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKQEAgLTQzOCw5ICs0MzgsOSBAQCBwcml2YXRlOgog
ICAgIFBhY2tlZFJlZlB0cjxTdHJpbmdJbXBsPiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICBQ
YWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCi0g
ICAgRml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsK
KyAgICBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1f
anVtcFRhcmdldHM7CiAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gbV9tZXRhZGF0YTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0luc3RydWN0aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBtX2xpdmVuZXNz
OwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgdW5zaWduZWQgbV9lbmREaXZvdDsKICAgICAgICAgfTsKICAgICAgICAgSGFzaE1h
cDx1bnNpZ25lZCwgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlcklu
Zm9NYXA7Ci0gICAgICAgIEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1f
b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CisgICAgICAgIEZpeGVkVmVjdG9y
PEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0czsKICAgICAgICAgRml4ZWRWZWN0b3I8Qml0VmVjdG9yPiBtX2JpdFZlY3RvcnM7
CiAgICAgICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXJTZXQ+IG1fY29uc3RhbnRJZGVudGlmaWVy
U2V0czsKIApAQCAtNDgyLDEyICs0ODIsMTIgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBt
X3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB9OwogCi0gICAgaW50IG91dE9mTGlu
ZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0gICAgaW50IG91dE9mTGlu
ZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCisg
ICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0KTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCB0eXBlbmFtZSBKU0lu
c3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgIH0KLSAgICBp
bnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCisgICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IHRoaXMtPmJ5dGVjb2RlT2Zmc2V0KHBjKTsKICAg
ICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNDk5
LDcgKzQ5OSw3IEBAIHB1YmxpYzoKICAgICBCYXNlbGluZUV4ZWN1dGlvbkNvdW50ZXImIGxsaW50
RXhlY3V0ZUNvdW50ZXIoKSB7IHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7IH0KIAogcHJp
dmF0ZToKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9
IEhhc2hNYXA8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCiAg
ICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNw
cAppbmRleCA2ZDdiZWExZjM5NDBjMzc2M2I5ODQ4YTFlNjgyZjI0MTkyMGE0Yzg5Li45ZGFkNzhi
NmY3ZjY0ZTRkOTk2ZmFjYjhlMGJmNTVjMGNlM2E2MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
OjphZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdAogICAgIG1f
dHlwZVByb2ZpbGVySW5mb01hcC5zZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIHJhbmdlKTsKIH0KIAot
dm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUoc3RkOjp1bmlxdWVfcHRy
PEluc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCit2b2lkIFVubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SlNJbnN0cnVjdGlvblN0cmVhbT4g
aW5zdHJ1Y3Rpb25zKQogewogICAgIEFTU0VSVChpbnN0cnVjdGlvbnMpOwogICAgIHsKQEAgLTE3
MCw3ICsxNzAsNyBAQCBVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvcjo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LAogICAgIHJldHVybiBVbmxpbmtl
ZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXg8VW5saW5rZWRIYW5kbGVySW5mbz4obV9leGNl
cHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKLXZvaWQgVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0ZXIm
IHJld3JpdGVyLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zKQordm9pZCBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdy
aXRlciYgcmV3cml0ZXIsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucykK
IHsKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMsIHdlIGFkanVzdCB0aGUganVt
cHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldCwgdGhlIG9mZnNldCB0byB0
aGUganVtcCB0YXJnZXQsIGFuZAogICAgIC8vIHRoZSBpbnNlcnRpb24gaW5mb3JtYXRpb24uCkBA
IC0yMDUsMTMgKzIwNSwxMyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphcHBs
eU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiByZXdyaXRlciwgSQogICAgIHJlY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlzLCBpbnN0cnVjdGlvbnMsIG1fanVtcFRhcmdldHMpOwog
fQogCi12b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRPZkxpbmVKdW1wVGFy
Z2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQsIGludCB0YXJnZXQp
Cit2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRPZkxpbmVKdW1wVGFyZ2V0
KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwgaW50
IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0YXJnZXQpOwogICAgIG1fb3V0T2ZMaW5l
SnVtcFRhcmdldHMuc2V0KGJ5dGVjb2RlT2Zmc2V0LCB0YXJnZXQpOwogfQogCi1pbnQgVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK2ludCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMu
Y29udGFpbnMoYnl0ZWNvZGVPZmZzZXQpKTsKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFy
Z2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCA2MGEz
NTQxZGRkMjIyMWU5ZmU3OGIxYmE5YmY1Njg1NzNjZWU5NzQ0Li5iM2Q1MGI4Zjk2ZjZjZWNlOWU5
YjBlZWI2YWYzYTViNzgzZTIyZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtODAsNyAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlJiBtZXRhZGF0YSgpIHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5tZXRhZGF0YSgpOyB9CiAgICAgdm9pZCBhZGRFeHByZXNzaW9u
SW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZz
ZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbik7CiAgICAg
dm9pZCBhZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9m
ZnNldCwgdW5zaWduZWQgc3RhcnREaXZvdCwgdW5zaWduZWQgZW5kRGl2b3QpOwotICAgIHZvaWQg
YWRkT3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IG9mZnNldCkKKyAgICB2b2lkIGFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVP
ZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKICAgICB7
CiAgICAgICAgIG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMuYXBwZW5kKG9m
ZnNldCk7CiAgICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXJzW2luZGV4XTsgfQogICAgIHZvaWQgYWRkSWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJiBp
KSB7IHJldHVybiBtX2lkZW50aWZpZXJzLmFwcGVuZChpKTsgfQogCi0gICAgdXNpbmcgT3V0T2ZM
aW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47
Ci0gICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIGludCB0YXJnZXQpOwotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQpOwotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAgIHVzaW5nIE91dE9mTGluZUp1bXBU
YXJnZXRzID0gSGFzaE1hcDx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGlu
dD47CisgICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7CisgICAgaW50IG91dE9mTGluZUp1bXBPZmZz
ZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICBpbnQgb3V0T2ZM
aW5lSnVtcE9mZnNldChjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGlu
c3RydWN0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5z
dHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgIH0KQEAgLTE5NCw5ICsxOTQsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGdldExpbmVBbmRDb2x1bW4oY29uc3QgRXhwcmVzc2lvblJhbmdlSW5mbyYsIHVu
c2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlN
b2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJik7
CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiwgSlNJbnN0cnVj
dGlvblN0cmVhbVdyaXRlciYpOwogCi0gICAgdm9pZCBmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8
SW5zdHJ1Y3Rpb25TdHJlYW0+KTsKKyAgICB2b2lkIGZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxK
U0luc3RydWN0aW9uU3RyZWFtPik7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKIApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgVk0mIG1fdm07CiAgICAgU3Ry
b25nPFVubGlua2VkQ29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICAvLyBJbiBub24tUmFyZURh
dGEuCi0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7
CisgICAgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1w
VGFyZ2V0czsKICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBWZWN0
b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIFZlY3Rv
cjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICBW
ZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9G
YXRQb3NpdGlvbnM7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVW5saW5rZWRDb2RlQmxvY2s6OlJh
cmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01h
cDsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250
cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOwog
ICAgIFZlY3RvcjxCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICBWZWN0b3I8SWRlbnRpZmll
clNldD4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogICAgIHVuc2lnbmVkIG1fbnVtQmluYXJ5
QXJpdGhQcm9maWxlcyB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA5ZGRmZDM0YmY3OWQ4ZjRiMTlm
ZGRlNTZiMmE0MTFiM2JjYjE2MDgwLi41ZGI5YWJhOTg5MGNhMDcwOTBhMjk5ZjZjYzQ5Njk4YWRk
Y2JhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMzQsNiArMzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHVzaW5nIE9wY29kZUlEID0gOjpKU0M6Ok9wY29kZUlEOwogICAgICAgICB1c2lu
ZyBPcE5vcCA9IDo6SlNDOjpPcE5vcDsKICAgICAgICAgdXNpbmcgQ29kZUJsb2NrID0gc3RkOjp1
bmlxdWVfcHRyPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPjsKKyAgICAgICAgdXNpbmcgSW5z
dHJ1Y3Rpb25UeXBlID0gSlNJbnN0cnVjdGlvbjsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBP
cGNvZGVJRCBvcGNvZGVGb3JEaXNhYmxpbmdPcHRpbWl6YXRpb25zID0gb3BfZW5kOwogICAgIH07
CiAKQEAgLTEwOTAsNyArMTA5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGFs
bG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSnVtcE9w
PgotICAgICAgICB2b2lkIHNldFRhcmdldEZvckp1bXBJbnN0cnVjdGlvbihJbnN0cnVjdGlvblN0
cmVhbTo6TXV0YWJsZVJlZiYsIGludCB0YXJnZXQpOworICAgICAgICB2b2lkIHNldFRhcmdldEZv
ckp1bXBJbnN0cnVjdGlvbih0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVm
JiwgaW50IHRhcmdldCk7CiAKICAgICAgICAgdXNpbmcgQmlnSW50TWFwRW50cnkgPSBzdGQ6OnR1
cGxlPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdCwgYm9vbD47CiAKQEAgLTExODgsNyArMTE4
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGFkZEJpZ0ludENvbnN0YW50
KGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4LCBib29sIHNpZ24pOwogICAgICAgICBS
ZWdpc3RlcklEKiBhZGRUZW1wbGF0ZU9iamVjdENvbnN0YW50KFJlZjxUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3I+JiYsIGludCk7CiAKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CisgICAgICAgIGNvbnN0IEpT
SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
d3JpdGVyOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRocm93RXhwcmVzc2lvblRvb0Rl
ZXBFeGNlcHRpb24oKTsKIApAQCAtMTIwNCw3ICsxMjA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgcmVzdG9yZVREWlN0YWNrKGNvbnN0IFByZXNlcnZlZFREWlN0YWNrJik7CiAK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICAgICAgdm9pZCB3aXRoV3JpdGVy
KEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIsIGNvbnN0IEZ1bmMmIGZuKQorICAgICAg
ICB2b2lkIHdpdGhXcml0ZXIoSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgd3JpdGVyLCBjb25z
dCBGdW5jJiBmbikKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBwcmV2TGFzdE9wY29kZUlE
ID0gbV9sYXN0T3Bjb2RlSUQ7CiAgICAgICAgICAgICBhdXRvIHByZXZMYXN0SW5zdHJ1Y3Rpb24g
PSBtX2xhc3RJbnN0cnVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oCmluZGV4IDBmOTE5OTM3YjVl
NDZlNzhlNjExNzYyNDBkYmVhMTM3OGY3ZWU1OGMuLjE4ZDg2MjNmZGJjOTRjODdmZTdhMWVkOTk5
ZTZiN2JkODlkZWVjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2UuaApAQCAtNDYsNiArNDYsOSBAQCBj
bGFzcyBCeXRlY29kZUdlbmVyYXRvckJhc2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVj
b2RlR2VuZXJhdG9yPgogICAgIGZyaWVuZCBjbGFzcyBHZW5lcmljTGFiZWw7CiAKKyAgICB1c2lu
ZyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlclR5cGUgPSBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjx0
eXBlbmFtZSBUcmFpdHM6Okluc3RydWN0aW9uVHlwZT47CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25T
dHJlYW1UeXBlID0gSW5zdHJ1Y3Rpb25TdHJlYW08dHlwZW5hbWUgVHJhaXRzOjpJbnN0cnVjdGlv
blR5cGU+OworCiBwdWJsaWM6CiAgICAgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKHR5cGVuYW1lIFRy
YWl0czo6Q29kZUJsb2NrLCB1aW50MzJfdCB2aXJ0dWFsUmVnaXN0ZXJDb3VudEZvckNhbGxlZVNh
dmVzKTsKIApAQCAtNzcsMTIgKzgwLDEyIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lk
IHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBt
X3dyaXRlcjsKKyAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlclR5cGUgbV93cml0ZXI7CiAgICAg
dHlwZW5hbWUgVHJhaXRzOjpDb2RlQmxvY2sgbV9jb2RlQmxvY2s7CiAKICAgICBib29sIG1fb3V0
T2ZNZW1vcnlEdXJpbmdDb25zdHJ1Y3Rpb24geyBmYWxzZSB9OwogICAgIHR5cGVuYW1lIFRyYWl0
czo6T3Bjb2RlSUQgbV9sYXN0T3Bjb2RlSUQgPSBUcmFpdHM6Om9wY29kZUZvckRpc2FibGluZ09w
dGltaXphdGlvbnM7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgbV9sYXN0SW5z
dHJ1Y3Rpb24geyBtX3dyaXRlci5yZWYoKSB9OworICAgIHR5cGVuYW1lIEluc3RydWN0aW9uU3Ry
ZWFtVHlwZTo6TXV0YWJsZVJlZiBtX2xhc3RJbnN0cnVjdGlvbiB7IG1fd3JpdGVyLnJlZigpIH07
CiAKICAgICBTZWdtZW50ZWRWZWN0b3I8R2VuZXJpY0xhYmVsPFRyYWl0cz4sIDMyPiBtX2xhYmVs
czsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY2FsbGVlTG9jYWxzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvckJhc2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaAppbmRleCBiZDc4OTBkNWZhYjllMTVlN2Jl
NWUzYjA3ZmQ4MThkNDIyNTBiNmE3Li44ZGM2MmJiNjIwMzk1NGUyZWNkOTJiZDg2OTgxN2IxMjk5
NjM5ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaApAQCAtOTMsNyArOTMs
NyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjplbWl0TGFiZWwoR2VuZXJp
Y0xhYmVsPFRyYWl0cz4mIGxhYmVsKQogdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgogdm9pZCBC
eXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6cmVjb3JkT3Bjb2RlKHR5cGVuYW1lIFRyYWl0
czo6T3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgQVNTRVJUKG1fbGFzdE9wY29kZUlEID09IFRy
YWl0czo6b3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9ucyB8fCAobV9sYXN0T3Bjb2RlSUQg
PT0gbV9sYXN0SW5zdHJ1Y3Rpb24tPm9wY29kZUlEPHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlVHJh
aXRzPigpICYmIG1fd3JpdGVyLnBvc2l0aW9uKCkgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0
KCkgKyBtX2xhc3RJbnN0cnVjdGlvbi0+c2l6ZTx0eXBlbmFtZSBUcmFpdHM6Ok9wY29kZVRyYWl0
cz4oKSkpOworICAgIEFTU0VSVChtX2xhc3RPcGNvZGVJRCA9PSBUcmFpdHM6Om9wY29kZUZvckRp
c2FibGluZ09wdGltaXphdGlvbnMgfHwgKG1fbGFzdE9wY29kZUlEID09IG1fbGFzdEluc3RydWN0
aW9uLT5vcGNvZGVJRCgpICYmIG1fd3JpdGVyLnBvc2l0aW9uKCkgPT0gbV9sYXN0SW5zdHJ1Y3Rp
b24ub2Zmc2V0KCkgKyBtX2xhc3RJbnN0cnVjdGlvbi0+c2l6ZSgpKSk7CiAgICAgbV9sYXN0SW5z
dHJ1Y3Rpb24gPSBtX3dyaXRlci5yZWYoKTsKICAgICBtX2xhc3RPcGNvZGVJRCA9IG9wY29kZUlE
OwogfQpAQCAtMTAyLDYgKzEwMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFRyYWl0cz46OmFsaWduV2lkZU9wY29kZTE2KCkKIHsKICNp
ZiBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCisgICAgc3RhdGljX2Fzc2VydChUcmFpdHM6Ok9w
Y29kZVRyYWl0czo6bWF4T3Bjb2RlSURXaWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cpOwogICAg
IHNpemVfdCBvcGNvZGVTaXplID0gMTsKICAgICBzaXplX3QgcHJlZml4QW5kT3Bjb2RlU2l6ZSA9
IG9wY29kZVNpemUgKyBQYWRkaW5nQnlTaXplPE9wY29kZVNpemU6OldpZGUxNj46OnZhbHVlOwog
ICAgIHdoaWxlICgobV93cml0ZXIucG9zaXRpb24oKSArIHByZWZpeEFuZE9wY29kZVNpemUpICUg
T3Bjb2RlU2l6ZTo6V2lkZTE2KQpAQCAtMTEzLDYgKzExNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFRyYWl0cz4KIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFRyYWl0cz46OmFsaWduV2lkZU9w
Y29kZTMyKCkKIHsKICNpZiBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCisgICAgc3RhdGljX2Fz
c2VydChUcmFpdHM6Ok9wY29kZVRyYWl0czo6bWF4T3Bjb2RlSURXaWR0aCA9PSBPcGNvZGVTaXpl
OjpOYXJyb3cpOwogICAgIHNpemVfdCBvcGNvZGVTaXplID0gMTsKICAgICBzaXplX3QgcHJlZml4
QW5kT3Bjb2RlU2l6ZSA9IG9wY29kZVNpemUgKyBQYWRkaW5nQnlTaXplPE9wY29kZVNpemU6Oldp
ZGUzMj46OnZhbHVlOwogICAgIHdoaWxlICgobV93cml0ZXIucG9zaXRpb24oKSArIHByZWZpeEFu
ZE9wY29kZVNpemUpICUgT3Bjb2RlU2l6ZTo6V2lkZTMyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaApp
bmRleCA4NzU3ZDNhMGQ1NGZjODlmYjBkOTdhYzhiOTllODZhMzQxZWI2ZDc0Li4zNzU1MDRlMWYx
MTIyNzUyZDhjMmMxN2U3Yjg3ZDM1ZTQ5NGIxMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaApA
QCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIFJlZmVyZW5jZSBjb3VudCBpbmRp
Y2F0ZXMgbnVtYmVyIG9mIGxpdmUgcmVnaXN0ZXJzIHRoYXQgYWxpYXMgdGhpcyBvYmplY3QuCiBj
bGFzcyBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhdGljUHJv
cGVydHlBbmFseXNpcz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RhdGljUHJvcGVydHlB
bmFseXNpcz4gY3JlYXRlKEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiYgaW5zdHJ1Y3Rp
b25SZWYpCisgICAgc3RhdGljIFJlZjxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiBjcmVhdGUodHlw
ZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGluc3RydWN0aW9uUmVmKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGljUHJvcGVydHlBbmFseXNp
cyhXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkpOyAKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RhdGljUHJvcGVydHlBbmFseXNpcyhXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkpOwogICAg
IH0KIAogICAgIHZvaWQgYWRkUHJvcGVydHlJbmRleCh1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KSB7
IG1fcHJvcGVydHlJbmRleGVzLmFkZChwcm9wZXJ0eUluZGV4KTsgfQpAQCAtNDUsMTIgKzQ1LDEy
IEBAIHB1YmxpYzoKICAgICBpbnQgcHJvcGVydHlJbmRleENvdW50KCkgeyByZXR1cm4gbV9wcm9w
ZXJ0eUluZGV4ZXMuc2l6ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RhdGljUHJvcGVydHlBbmFs
eXNpcyhJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGluc3RydWN0aW9uUmVmKQorICAg
IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXModHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0
YWJsZVJlZiYmIGluc3RydWN0aW9uUmVmKQogICAgICAgICA6IG1faW5zdHJ1Y3Rpb25SZWYoV1RG
TW92ZShpbnN0cnVjdGlvblJlZikpCiAgICAgewogICAgIH0KIAotICAgIEluc3RydWN0aW9uU3Ry
ZWFtOjpNdXRhYmxlUmVmIG1faW5zdHJ1Y3Rpb25SZWY7CisgICAgdHlwZW5hbWUgSlNJbnN0cnVj
dGlvblN0cmVhbTo6TXV0YWJsZVJlZiBtX2luc3RydWN0aW9uUmVmOwogICAgIHR5cGVkZWYgSGFz
aFNldDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IFByb3BlcnR5SW5kZXhTZXQ7CiAgICAgUHJvcGVy
dHlJbmRleFNldCBtX3Byb3BlcnR5SW5kZXhlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCmlu
ZGV4IDVmOWU3Mzg2MmE0YWNkMzA3YjEwMWJkMWNkNmYyM2ZjNTE3NTJkM2IuLmFlNDliMDI3NzNj
NjcyMGUzY2YzMzE1MWMxNjlhMWViZjJlMDgxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCkBA
IC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gaXMgdW5kZXJzdG9vZCB0byBiZSBs
b3NzeSwgYW5kIGl0J3MgT0sgaWYgaXQgdHVybnMgb3V0IHRvIGJlIHdyb25nIHNvbWV0aW1lcy4K
IGNsYXNzIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgewogcHVibGljOgotICAgIHZvaWQgY3JlYXRl
VGhpcyhSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3Ry
dWN0aW9uUmVmKTsKLSAgICB2b2lkIG5ld09iamVjdChSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0
aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKTsKKyAgICB2b2lkIGNyZWF0ZVRo
aXMoUmVnaXN0ZXJJRCogZHN0LCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxl
UmVmIGluc3RydWN0aW9uUmVmKTsKKyAgICB2b2lkIG5ld09iamVjdChSZWdpc3RlcklEKiBkc3Qs
IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYp
OwogICAgIHZvaWQgcHV0QnlJZChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIHByb3BlcnR5SW5k
ZXgpOyAvLyBwcm9wZXJ0eUluZGV4IGlzIGFuIGluZGV4IGludG8gYSB1bmlxdWVkIHNldCBvZiBz
dHJpbmdzLgogICAgIHZvaWQgbW92KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsK
IApAQCAtNTAsMTQgKzUwLDE0IEBAIHByaXZhdGU6CiAgICAgQW5hbHlzaXNNYXAgbV9hbmFseXNl
czsKIH07CiAKLWlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMo
UmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlv
blJlZikKK2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMoUmVn
aXN0ZXJJRCogZHN0LCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGlu
c3RydWN0aW9uUmVmKQogewogICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0g
bV9hbmFseXNlcy5hZGQoCiAgICAgICAgIGRzdC0+aW5kZXgoKSwgU3RhdGljUHJvcGVydHlBbmFs
eXNpczo6Y3JlYXRlKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKSk7CiAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsgLy8gQ2FuJ3QgaGF2ZSB0d28gJ3Ro
aXMnIGluIHRoZSBzYW1lIGNvbnN0cnVjdG9yLgogfQogCi1pbmxpbmUgdm9pZCBTdGF0aWNQcm9w
ZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZikKK2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5
QW5hbHl6ZXI6Om5ld09iamVjdChSZWdpc3RlcklEKiBkc3QsIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rp
b25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpCiB7CiAgICAgYXV0byBhbmFseXNp
cyA9IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZShXVEZNb3ZlKGluc3RydWN0aW9uUmVm
KSk7CiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFk
ZChkc3QtPmluZGV4KCksIGFuYWx5c2lzLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGVhY2JjMGNlMjcyZjY3YmU4
MmM3OTM3MmFhN2Y3Mjg4OGI2ZjIxNWYuLjA1NzhlNGZjYzc4N2FjMzkyOTk0MzA5MDIxZGRjYTA1
OTdjNmFhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC0xODIsOSArMTgyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgTm9kZSogY2Fs
bFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIENhbGxMaW5rU3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBF
Q01BTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Fs
bE9wPgotICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBO
b2RlVHlwZSBvcCwgQ2FsbE1vZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKKyAgICBU
ZXJtaW5hbGl0eSBoYW5kbGVDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBv
cCwgQ2FsbE1vZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDYWxsT3A+Ci0gICAgVGVybWluYWxpdHkgaGFuZGxlVmFyYXJnc0NhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUpOworICAgIFRlcm1pbmFsaXR5
IGhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwg
Q2FsbE1vZGUpOwogICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50LCBOb2Rl
KiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtbnQpOwogICAgIHZvaWQgZW1p
dEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpOwogICAgIE5vZGUqIGdldEFyZ3VtZW50Q291bnQoKTsKQEAgLTI0Niw3ICsy
NDYsNyBAQCBwcml2YXRlOgogICAgIE5vZGUqIHN0b3JlKE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlk
ZW50aWZpZXIsIGNvbnN0IFB1dEJ5VmFyaWFudCYsIE5vZGUqIHZhbHVlKTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgotICAgIHZvaWQgcGFyc2VHZXRCeUlkKGNvbnN0IEluc3RydWN0aW9u
Kik7CisgICAgdm9pZCBwYXJzZUdldEJ5SWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogICAgIHZv
aWQgc2ltcGxpZnlHZXRCeVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyYpOwogICAgIHZv
aWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBT
cGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUsIEJ5dGVjb2RlSW5kZXgg
b3NyRXhpdEluZGV4KTsKQEAgLTEyNTQsMTAgKzEyNTQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
Tm9kZSogbV92YWx1ZSB7IG51bGxwdHIgfTsKICAgICAgICAgU2V0TW9kZSBtX3NldE1vZGU7CiAg
ICAgfTsKLSAgICAKKwogICAgIFZlY3RvcjxEZWxheWVkU2V0TG9jYWwsIDI+IG1fc2V0TG9jYWxR
dWV1ZTsKIAotICAgIGNvbnN0IEluc3RydWN0aW9uKiBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKKyAg
ICBjb25zdCBKU0luc3RydWN0aW9uKiBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKICAgICBib29sIG1f
aGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFs
c2UgfTsKIH07CkBAIC0xMzEwLDcgKzEzMTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjphZGRK
dW1wVG8odW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2Fs
bE9wPgotQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
YWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2Rl
LCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkKK0J5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0
eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTm9k
ZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPENhbGxPcD4oKTsKICAgICBOb2RlKiBjYWxs
VGFyZ2V0ID0gZ2V0KGNhbGxlZUZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2lu
dCgpKSk7CkBAIC0xMzY5LDcgKzEzNjksNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxP
cD4KLUJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFy
YXJnc0NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2Fs
bE1vZGUpCitCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVZhcmFyZ3NDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1v
ZGUgY2FsbE1vZGUpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7CiAg
ICAgaW50IGZpcnN0RnJlZVJlZyA9IGJ5dGVjb2RlLm1fZmlyc3RGcmVlLm9mZnNldCgpOwpAQCAt
MTUzNSwxNCArMTUzNSwxNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVU
YWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogICAgICAgICBCeXRl
Y29kZUluZGV4IG9sZEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CiAgICAgICAgIGF1dG8gb2xkU3Rh
Y2tUb3AgPSBtX2lubGluZVN0YWNrVG9wOwogICAgICAgICBtX2lubGluZVN0YWNrVG9wID0gc3Rh
Y2tFbnRyeTsKLSAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG9wY29kZUxl
bmd0aHNbb3BfZW50ZXJdKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChPcGNvZGVJRFdpZHRoQnlT
aXplPEpTT3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemUgPT0g
MSk7CisgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChvcGNvZGVMZW5ndGhz
W29wX2VudGVyXSArIDEpOwogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgICAgIHByb2Nl
c3NTZXRMb2NhbFF1ZXVlKCk7CiAgICAgICAgIG1fY3VycmVudEluZGV4ID0gb2xkSW5kZXg7CiAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AgPSBvbGRTdGFja1RvcDsKICAgICAgICAgbV9leGl0T0sg
PSBmYWxzZTsKIAotICAgICAgICBCYXNpY0Jsb2NrKiogZW50cnlCbG9ja1B0ciA9IHRyeUJpbmFy
eVNlYXJjaDxCYXNpY0Jsb2NrKiwgQnl0ZWNvZGVJbmRleD4oc3RhY2tFbnRyeS0+bV9ibG9ja0xp
bmtpbmdUYXJnZXRzLCBzdGFja0VudHJ5LT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuc2l6ZSgpLCBC
eXRlY29kZUluZGV4KG9wY29kZUxlbmd0aHNbb3BfZW50ZXJdKSwgZ2V0Qnl0ZWNvZGVCZWdpbkZv
ckJsb2NrKTsKKyAgICAgICAgQmFzaWNCbG9jayoqIGVudHJ5QmxvY2tQdHIgPSB0cnlCaW5hcnlT
ZWFyY2g8QmFzaWNCbG9jayosIEJ5dGVjb2RlSW5kZXg+KHN0YWNrRW50cnktPm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cywgc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLnNpemUoKSwgQnl0
ZWNvZGVJbmRleChvcGNvZGVMZW5ndGhzW29wX2VudGVyXSArIDEpLCBnZXRCeXRlY29kZUJlZ2lu
Rm9yQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChlbnRyeUJsb2NrUHRyKTsKICAgICAg
ICAgYWRkSnVtcFRvKCplbnRyeUJsb2NrUHRyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
NjU0LDcgKzE2NTUsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENh
bGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogc2F2
ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKKyAgICBjb25zdCBK
U0luc3RydWN0aW9uKiBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY3VycmVudEluc3RydWN0
aW9uOwogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5s
aW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2Rl
QmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKQEAgLTUzNDUsNyArNTM0Niw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmNsZWFyQ2FjaGVzKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+
Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUdldEJ5SWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJZChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKQEAgLTU0NzEsMTIgKzU0NzIsMTIgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAg
ICBhZGRKdW1wVG8obV9jdXJyZW50SW5kZXgub2Zmc2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFN3aXRjaCBvbiB0aGUgY3VycmVu
dCBieXRlY29kZSBvcGNvZGUuCi0gICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQobV9jdXJyZW50SW5kZXgpLnB0cigpOworICAgICAg
ICBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMu
YXQobV9jdXJyZW50SW5kZXgpLnB0cigpOwogICAgICAgICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9
IGN1cnJlbnRJbnN0cnVjdGlvbjsgLy8gU29tZSBtZXRob2RzIHdhbnQgdG8gdXNlIHRoaXMsIGFu
ZCB3ZSdkIHJhdGhlciBub3QgdGhyZWFkIGl0IHRocm91Z2ggY2FsbHMuCiAgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwotICAgICAgICAK
KwogICAgICAgICBWRVJCT1NFX0xPRygiICAgIHBhcnNpbmcgIiwgY3VycmVudENvZGVPcmlnaW4o
KSwgIjogIiwgb3Bjb2RlSUQsICJcbiIpOwogICAgICAgICAKICAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpIHsKQEAgLTg4MDAsOCArODgwMSw4IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgZGF0YUxvZ0xuKCk7CiAgICAg
ICAgIGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCktPmR1bXBCeXRlY29kZSgpOwogICAgIH0K
LSAgICAKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+IGp1bXBUYXJn
ZXRzOworCisgICAgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
MzI+IGp1bXBUYXJnZXRzOwogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2Nr
LCBqdW1wVGFyZ2V0cyk7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29kZUF0
REZHVGltZSgpKSkgewogICAgICAgICBkYXRhTG9nKCJKdW1wIHRhcmdldHM6ICIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVlMzJkMmQy
NGYxYjNlZDg3MGMzMzBmMmVmMjNkODVlNGVjZTQ4MzcuLjU4MmFhZjVmZDE5NjRhNDQ3ZTExNDQy
MTRiZjgyMGQxMWRhZDIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbmxpbmUgdm9pZCBkZWJ1Z0ZhaWwo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBDYXBhYmlsaXR5TGV2ZWwg
cgogICAgICAgICBkYXRhTG9nKCJERkcgcmVqZWN0aW5nIG9wY29kZSBpbiAiLCAqY29kZUJsb2Nr
LCAiIGJlY2F1c2Ugb2Ygb3Bjb2RlICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwgIlxuIik7CiB9
CiAKLUNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCitDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNvZGVCbG9j
ayk7IC8vIFRoaXMgZnVuY3Rpb24gZG9lcyBzb21lIGJ5dGVjb2RlIHBhcnNpbmcuIE9yZGluYXJp
bHkgYnl0ZWNvZGUgcGFyc2luZyByZXF1aXJlcyB0aGUgb3duaW5nIENvZGVCbG9jay4gSXQncyBz
b3J0IG9mIHN0cmFuZ2UgdGhhdCB3ZSBkb24ndCB1c2UgaXQgaGVyZSByaWdodCBub3cuCiAgICAg
VU5VU0VEX1BBUkFNKHBjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCmluZGV4IDRkYTg5YWI3NDIzYTBkODA5OWVkMGM1MjkwNDVhYmIyNWMxYjRkYWUuLjhl
NWIxMDMwZDU5NDg0NGQ2YTE4YTFlZGZkODUyOTgzYTA5M2ZhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApAQCAtNDUsNyArNDUsNyBAQCBib29sIG1p
Z2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxvY2sqKTsKIGJvb2wgbWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKTsKIGJvb2wgY2FuVXNlT1NSRXhp
dEZ1enppbmcoQ29kZUJsb2NrKik7CiAKLWlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsKE9wY29kZUlELCBDb2RlQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpOworaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQsIENvZGVCbG9jayos
IGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKTsKIAogQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChDb2RlQmxvY2sqKTsKICNlbHNlIC8vIEVOQUJMRShERkdfSklUKQpAQCAtNTgsNyArNTgs
NyBAQCBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwoQ29kZUJs
b2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25G
b3JDb25zdHJ1Y3QoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIGNh
blVzZU9TUkV4aXRGdXp6aW5nKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CiAKLWlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlELCBDb2RlQmxvY2sqLCBj
b25zdCBJbnN0cnVjdGlvbiopIHsgcmV0dXJuIENhbm5vdENvbXBpbGU7IH0KK2lubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlELCBDb2RlQmxvY2sqLCBjb25zdCBK
U0luc3RydWN0aW9uKikgeyByZXR1cm4gQ2Fubm90Q29tcGlsZTsgfQogaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoQ29kZUJsb2NrKikgeyByZXR1cm4gQ2Fubm90Q29tcGls
ZTsgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAppbmRleCA4OWFlNzNmMjNkYTU3YzczZWUxMDU2MTRiYzY3NDdlZDAx
OTI1NWQzLi5iMjQzYzY3NDc5NTBjZWZkNmI1MmQ4ZGU1M2E1YWFlYTE0OGJiMGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCB2
b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0
IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwogICAgICAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbik7CiAgICAg
ICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBjb2RlQmxvY2stPmdldEFy
cmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSkpIHsKLSAgICAgICAgICAgICAg
ICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmF0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQo
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpLnB0cigpOwogICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcCBza2lwUHJvZmlsZTsKICAgICAgICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rp
b24tPmlzPE9wR2V0QnlJZD4oKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0
YSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcAppbmRleCAxODIyMjM5NmNmNDVlN2FlN2MzYjEwM2M0ZWZhOTZmYWE3NDE4Zjc5Li41
ODRmZmQ4ODU2YjE4Yzc3NjhiY2EyZDM3OTVlOTBlODMzMWUyMTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBA
IC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ28KIAogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0OwogCi0gICAgY29uc3QgSW5z
dHJ1Y3Rpb24mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+
aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOworICAgIGNvbnN0IGF1
dG8mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+aW5zdHJ1
Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGlmIChjYWxsZXJJc0xM
SW50KSB7CiAjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSBMTEludDo6cmV0dXJu
TG9jYXRpb25UaHVuayhuYW1lIyNfcmV0dXJuX2xvY2F0aW9uLCBjYWxsSW5zdHJ1Y3Rpb24ud2lk
dGgoKSkuY29kZSgpCiAKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1Rh
cmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkK
ICAgICBib29sIGV4aXRUb0xMSW50ID0gT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8
IGNvZGVCbG9ja0ZvckV4aXQtPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5r
OwogICAgIGlmIChleGl0VG9MTEludCkgewogICAgICAgICBhdXRvIGJ5dGVjb2RlSW5kZXggPSBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIGNvbnN0IEluc3RydWN0
aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAqY29kZUJsb2NrRm9yRXhpdC0+aW5zdHJ1Y3Rpb25z
KCkuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIGN1cnJlbnRJ
bnN0cnVjdGlvbiA9ICpjb2RlQmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29k
ZUluZGV4KS5wdHIoKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGRlc3RpbmF0aW9uOwogICAgICAgICBpZiAoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50T1NSRXhpdFRyYW1w
b2xpbmVUaHVuaygpLmNvZGUoKTsKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIGFkanVzdEFuZEp1
bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYg
ZXhpdCkKIAogICAgICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewogICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjdXJyZW50SW5zdHJ1
Y3Rpb24pLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5m
bzo6cmVnVDIsICZ2bS50YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cpOworICAgICAgICAgICAg
aml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QyLCAmc3RkOjpnZXQ8Y29uc3QgSlNJbnN0cnVjdGlv
bio+KHZtLnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdykpOwogICAgICAgICB9CiAKICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9ja0ZvckV4aXQt
Pm1ldGFkYXRhVGFibGUoKSksIExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRhVGFibGVHUFIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCBmYzNhNmM0ZmRhZTNkZDg5Njc4YzZiYjlhNjU2OTBiNDhmN2ZhZDdhLi4zNjBlMTgxODNlY2Jh
MWUwY2MwNWQ3NmM3MmNkZjEyMTllY2NiMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjEwMCw3ICsyMTAwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvb3BIaW50KE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChl
bWl0RWFybHlSZXR1cm4pIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICAgICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0
KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOworICAgICAgICAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSkucHRyKCk7CiAKICAgICAgICAgICAgIHVpbnRwdHJfdCogcHRyID0g
dm0oKS5nZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24pOwogICAgICAgICAg
ICAgbV9qaXQucHVzaFRvU2F2ZShHUFJJbmZvOjpyZWdUMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOWU1OTliZmZlYzhiOTAwZmQ3MjM4
ZWRjNjM5Y2ViNTY0OTQzYTljOC4uOGM0NGQ2NGI4OTVlODI2ZmNhNGMzNzNhNGM0NjZjYjMyMTZh
YzljNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMTYyNzQsNyArMTYyNzQsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAKICAg
ICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXggPSBtX29yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKKyAgICAgICAgY29uc3Qg
YXV0byogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQo
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCk7CiAgICAgICAgIFZNKiB2bSA9ICZ0aGlzLT52
bSgpOwogICAgICAgICB1aW50cHRyX3QqIHB0ciA9IHZtLT5nZXRMb29wSGludEV4ZWN1dGlvbkNv
dW50ZXIoaW5zdHJ1Y3Rpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggZmU3OWY3OGQzNzUwZDYzNGRlMjMyM2NhZGRiMDZk
NDE3ZTg4M2JlNy4uYTgyNGY3YTUxOWNlNDVmNGE3NDI1NTU4ZTM0NGQyZjI3ZDRkZDNjYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApA
QCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWdu
ZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAgICAgICAgICBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwog
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tG
b3IoY29kZU9yaWdpbik7CiAgICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUgPSBjb2RlQmxvY2stPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgo
KSkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKS5w
dHIoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYXQoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpLnB0cigpOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBza2lwUHJvZmlsZTsKICAgICAgICAg
ICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24tPmlzPE9wR2V0QnlJZD4oKSkgewogICAgICAgICAgICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0
YWRhdGEoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwCmluZGV4IDJhYjZhODA5MDg2YmNiMjVkMDkxNmVlMTU3NmQwZWVjODEwYmIzMGYuLmI5
NWU3NDNhMjY1ZDY3M2M0MWMxNzM5NWUzZjM3YWZhZTNjMDJlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtNTc1LDcgKzU3NSw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSLCBKU0Nl
bGwqLCAoSlNHbG9iYWxPYmplCiAgICAgICAgIC8vIEZvciBub3csIHdlIHVzZSBhcnJheSBhbGxv
Y2F0aW9uIHByb2ZpbGUgaW4gdGhlIGFjdHVhbCBDb2RlQmxvY2suIEl0IGlzIE9LIHNpbmNlIGN1
cnJlbnQgTmV3QXJyYXlCdWZmZXIKICAgICAgICAgLy8gYW5kIFBoYW50b21OZXdBcnJheUJ1ZmZl
ciBhcmUgYWx3YXlzIGJvdW5kIHRvIGEgc3BlY2lmaWMgb3BfbmV3X2FycmF5X2J1ZmZlci4KICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFu
ZEJhc2VsaW5lQ29kZUJsb2NrKG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCksIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKSk7Ci0gICAgICAgIGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0
KG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKKyAgICAg
ICAgY29uc3QgYXV0byogY3VycmVudEluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5hdChtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7
CiAgICAgICAgIGlmICghY3VycmVudEluc3RydWN0aW9uLT5pczxPcE5ld0FycmF5QnVmZmVyPigp
KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGNhc2UgY2FuIGhhcHBlbiBpZiBPYmplY3Qua2V5cywg
YW4gT3BDYWxsIGlzIGZpcnN0IGNvbnZlcnRlZCBpbnRvIGEgTmV3QXJyYXlCdWZmZXIgd2hpY2gg
aXMgdGhlbiBjb252ZXJ0ZWQgaW50byBhIFBoYW50b21OZXdBcnJheUJ1ZmZlci4KICAgICAgICAg
ICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSBhcnJheSBhbGxvY2F0aW9uIHBy
b2ZpbGUgaW4gdGhhdCBjYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9Bcmd1bWVudC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJn
dW1lbnQucmIKaW5kZXggZDRkOGM2NjhmNDMxYjlmYzYzYTA2YzQ2ZGY0ZmE1MmUxMzM3NTRjMy4u
MWY1YWZlZDZjYWQzNmYxZDhiZWZmNmY4NmVkMDVhNDdmZmExMGIyYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9Bcmd1bWVudC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0FyZ3VtZW50LnJiCkBAIC03MSw5ICs3MSw5IEBAIGNsYXNz
IEFyZ3VtZW50CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHNldCN7
Y2FwaXRhbGl6ZWRfbmFtZX0oI3tAdHlwZS50b19zfSB2YWx1ZSwgRnVuY3RvciBmdW5jKQogICAg
IHsKLSAgICAgICAgaWYgKGlzV2lkZTMyPCN7dHJhaXRzfT4oKSkKKyAgICAgICAgaWYgKGlzV2lk
ZTMyKCkpCiAgICAgICAgICAgICBzZXQje2NhcGl0YWxpemVkX25hbWV9PE9wY29kZVNpemU6Oldp
ZGUzMj4odmFsdWUsIGZ1bmMpOwotICAgICAgICBlbHNlIGlmIChpc1dpZGUxNjwje3RyYWl0c30+
KCkpCisgICAgICAgIGVsc2UgaWYgKGlzV2lkZTE2KCkpCiAgICAgICAgICAgICBzZXQje2NhcGl0
YWxpemVkX25hbWV9PE9wY29kZVNpemU6OldpZGUxNj4odmFsdWUsIGZ1bmMpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBzZXQje2NhcGl0YWxpemVkX25hbWV9PE9wY29kZVNpemU6Ok5hcnJv
dz4odmFsdWUsIGZ1bmMpOwpAQCAtODQsNyArODQsNyBAQCBjbGFzcyBBcmd1bWVudAogICAgIHsK
ICAgICAgICAgaWYgKCEje0ZpdHM6OmNoZWNrICJzaXplIiwgInZhbHVlIiwgQHR5cGV9KQogICAg
ICAgICAgICAgdmFsdWUgPSBmdW5jKCk7Ci0gICAgICAgIGF1dG8qIHN0cmVhbSA9IGJpdHdpc2Vf
Y2FzdDx0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGUqPihyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPih0aGlzKSArICN7QGluZGV4fSAqIHNpemUgKyBQYWRkaW5nQnlTaXpl
PHNpemU+Ojp2YWx1ZSArIC8qIE9wY29kZSBzaXplICovIDEpOworICAgICAgICBhdXRvKiBzdHJl
YW0gPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBl
Kj4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGhpcykgKyAje0BpbmRleH0gKiBzaXplICsg
UGFkZGluZ0J5U2l6ZTxzaXplPjo6dmFsdWUgKyBPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHJhaXRz
fSwgc2l6ZT46Om9wY29kZUlEU2l6ZSk7CiAgICAgICAgICpzdHJlYW0gPSAje0ZpdHM6OmNvbnZl
cnQgInNpemUiLCAidmFsdWUiLCBAdHlwZX07CiAgICAgfQogRU9GCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IDZmMGE4ZjFhODAzZTE1MTY0ZTk5NDQzNDdiYTMzNDQ5
NjU5ODYwOGQuLmU5MGY5OTQ2NjFhN2YzZWRlYWIwNzdiZDA0NWRhNGNhZDQ5ZmJlYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQmFzaWNCbG9ja0xvY2F0aW9uOwogCi12b2lkIGR1bXBC
eXRlY29kZShCeXRlY29kZUR1bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKK3ZvaWQgZHVtcEJ5dGVjb2RlKEJ5dGVjb2RlRHVt
cGVyQmFzZTxKU0luc3RydWN0aW9uU3RyZWFtPiogZHVtcGVyLCBKU0luc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLXZvaWQgZHVtcFdhc20oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RydWN0aW9uKik7Cit2b2lkIGR1bXBXYXNtKEJ5dGVj
b2RlRHVtcGVyQmFzZTxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+KiBkdW1wZXIsIFdhc21JbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0LCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qKTsKICNlbmRpZiAvLyBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKIEVPRgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9PcGNvZGUucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9y
L09wY29kZS5yYgppbmRleCAwNjFiNzZhODEzZDQ3MTEyY2M5MGI5OTM2OGViY2JjZWZlOGUyZTVk
Li5lZTY3ODdiMThlNGQ4ZDNhYmZmODkxMDJiYzVjY2E3NzAwYzAwZGEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgpAQCAtMTA4LDYgKzEwOCwxMCBAQCBjbGFz
cyBPcGNvZGUKICAgICAgIEBzZWN0aW9uLmlzX3dhc20/ID8gIldhc21PcGNvZGVUcmFpdHMiIDog
IkpTT3Bjb2RlVHJhaXRzIgogICAgIGVuZAogCisgICAgZGVmIHR5cGVfcHJlZml4CisgICAgICBA
c2VjdGlvbi5pc193YXNtPyA/ICJXYXNtIiA6ICJKUyIKKyAgICBlbmQKKwogICAgIGRlZiBtYXBf
ZmllbGRzX3dpdGhfc2l6ZShwcmVmaXgsIHNpemUsICZibG9jaykKICAgICAgICAgYXJncyA9IFtB
cmd1bWVudC5uZXcoIm9wY29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKV0KICAgICAgICAgYXJncyAr
PSBAYXJncy5kdXAgaWYgQGFyZ3MKQEAgLTEyOCw3ICsxMzIsNyBAQCBjbGFzcyBPcGNvZGUKIAog
ICAgIGRlZiBzdHJ1Y3QKICAgICAgICAgPDwtRU9GCi1zdHJ1Y3QgI3tjYXBpdGFsaXplZF9uYW1l
fSA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7CitzdHJ1Y3QgI3tjYXBpdGFsaXplZF9uYW1lfSA6IHB1
YmxpYyAje3R5cGVfcHJlZml4fUluc3RydWN0aW9uIHsKICAgICAje29wY29kZUlEfQogICAgICN7
bGVuZ3RoVmFsdWV9CiAgICAgI3t0ZW1wc30KQEAgLTE2Miw3ICsxNjYsNyBAQCBFT0YKICAgICBk
ZWYgY2hlY2twb2ludFNpemVBc3NlcnQKICAgICAgICAgcmV0dXJuIGlmIEBjaGVja3BvaW50cy5u
aWw/CiAKLSAgICAgICAgInN0YXRpY19hc3NlcnQoI3tjYXBpdGFsaXplZF9uYW1lfTo6bGVuZ3Ro
ID4gI3tjYXBpdGFsaXplZF9uYW1lfTo6bnVtYmVyT2ZDaGVja3BvaW50cywgXCJGdWxsQnl0ZWNv
ZGVMaXZlc3MgcmVsaWVzIG9uIHRoZSBsZW5ndGggb2YgI3tjYXBpdGFsaXplZF9uYW1lfSBiZWlu
ZyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBjaGVja3BvaW50c1wiKTsiCisgICAgICAgICJz
dGF0aWNfYXNzZXJ0KCN7Y2FwaXRhbGl6ZWRfbmFtZX06Omxlbmd0aCArIDEgPiAje2NhcGl0YWxp
emVkX25hbWV9OjpudW1iZXJPZkNoZWNrcG9pbnRzLCBcIkZ1bGxCeXRlY29kZUxpdmVzcyByZWxp
ZXMgb24gdGhlIGxlbmd0aCBvZiAje2NhcGl0YWxpemVkX25hbWV9IGJlaW5nIGdyZWF0ZXIgdGhh
biB0aGUgbnVtYmVyIG9mIGNoZWNrcG9pbnRzXCIpOyIKICAgICBlbmQKIAogICAgIGRlZiB0ZW1w
cwpAQCAtMjMyLDYgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICN7bWFwX2ZpZWxkc193aXRoX3NpemUoIiIsICJfX3Np
emUiLCAmOmZpdHNfY2hlY2spLmpvaW4gIlxuICAgICAgICAgICAgJiYgIn0KKyAgICAgICAgICAg
ICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gI3tBcmd1bWVudC5uZXcoIm9wY29k
ZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX2NoZWNrKFNpemU6Ok5hcnJvdyl9IDogI3tBcmd1
bWVudC5uZXcoIm9wY29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX2NoZWNrKFNpemU6Oldp
ZGUxNil9KQogICAgICAgICAgICAgJiYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYgPyAj
e29wX3dpZGUxNi5maXRzX2NoZWNrKFNpemU6Ok5hcnJvdyl9IDogdHJ1ZSkKICAgICAgICAgICAg
ICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyID8gI3tvcF93aWRlMzIuZml0c19jaGVj
ayhTaXplOjpOYXJyb3cpfSA6IHRydWUpOwogICAgIH0KQEAgLTI1MSw3ICsyNTYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICN7b3Bfd2lkZTE2LmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93
fQogICAgICAgICAgICAgZWxzZSBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUzMikKICAg
ICAgICAgICAgICAgICAje29wX3dpZGUzMi5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KLSAgICAg
ICAgICAgICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCkuZml0c193
cml0ZSBTaXplOjpOYXJyb3d9CisgICAgICAgICAgICAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQi
LCBvcGNvZGVJRFR5cGUsIDApLmZpdHNfd3JpdGUgIk9wY29kZUlEV2lkdGhCeVNpemU8I3t0eXBl
X3ByZWZpeH1PcGNvZGVUcmFpdHMsIF9fc2l6ZT46Om9wY29kZUlEU2l6ZSJ9CiAje21hcF9vcGVy
YW5kc193aXRoX3NpemUoIiAgICAgICAgICAgICIsICJfX3NpemUiLCAmOmZpdHNfd3JpdGUpLmpv
aW4gIlxuIn0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yNjQsNyAr
MjY5LDcgQEAgRU9GCiAKICAgICBkZWYgZHVtcGVyCiAgICAgICAgIDw8LUVPRgotICAgIHZvaWQg
ZHVtcChCeXRlY29kZUR1bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBfX2xvY2F0aW9uLCBpbnQgX19zaXplU2hpZnRBbW91bnQpCisgICAgdm9pZCBkdW1wKEJ5dGVj
b2RlRHVtcGVyQmFzZTwje3R5cGVfcHJlZml4fUluc3RydWN0aW9uU3RyZWFtPiogZHVtcGVyLCAj
e3R5cGVfcHJlZml4fUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgaW50IF9f
c2l6ZVNoaWZ0QW1vdW50KQogICAgIHsKICAgICAgICAgZHVtcGVyLT5wcmludExvY2F0aW9uQW5k
T3AoX19sb2NhdGlvbiwgJiIqKiN7QG5hbWV9IlsyIC0gX19zaXplU2hpZnRBbW91bnRdKTsKICN7
cHJpbnRfYXJncyB7IHxhcmd8CkBAIC0yODQsMzAgKzI4OSwzMCBAQCBFT0YKICAgICAje2NhcGl0
YWxpemVkX25hbWV9KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKICAgICAgICAgI3tpbml0LmNhbGwo
Ik9wY29kZVNpemU6Ok5hcnJvdyIpfQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJl
YW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQp
OworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RhdGljX2Nhc3Q8I3tvcGNvZGVJRFR5
cGV9PihiaXR3aXNlX2Nhc3Q8Y29uc3QgdHlwZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5
cGVfcHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6b3Bjb2RlVHlwZSo+
KHN0cmVhbSlbLTFdKSA9PSBvcGNvZGVJRCk7CiAgICAgfQogCiAgICAgI3tjYXBpdGFsaXplZF9u
YW1lfShjb25zdCB1aW50MTZfdCogc3RyZWFtKQogICAgICAgICAje2luaXQuY2FsbCgiT3Bjb2Rl
U2l6ZTo6V2lkZTE2Iil9CiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0
d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJlYW0pWy0xXSA9PSBvcGNvZGVJRCk7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBzdGF0aWNfY2FzdDwje29wY29kZUlEVHlwZX0+KGJp
dHdpc2VfY2FzdDxjb25zdCB0eXBlbmFtZSBPcGNvZGVJRFdpZHRoQnlTaXplPCN7dHlwZV9wcmVm
aXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMTY+OjpvcGNvZGVUeXBlKj4oc3RyZWFt
KVstMV0pID09IG9wY29kZUlEKTsKICAgICB9CiAKIAogICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0o
Y29uc3QgdWludDMyX3QqIHN0cmVhbSkKICAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6
OldpZGUzMiIpfQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIGJpdHdpc2Vf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQpOworICAgICAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RhdGljX2Nhc3Q8I3tvcGNvZGVJRFR5cGV9PihiaXR3aXNl
X2Nhc3Q8Y29uc3QgdHlwZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9w
Y29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTMyPjo6b3Bjb2RlVHlwZSo+KHN0cmVhbSlbLTFd
KSA9PSBvcGNvZGVJRCk7CiAgICAgfQogCiAgICAgc3RhdGljICN7Y2FwaXRhbGl6ZWRfbmFtZX0g
ZGVjb2RlKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKICAgICB7CiAgICAgICAgIC8vIEEgcG9pbnRl
ciBpcyBwb2ludGluZyB0byB0aGUgZmlyc3Qgb3BlcmFuZCAob3Bjb2RlIGFuZCBwcmVmaXggYXJl
IG5vdCBpbmNsdWRlZCkuCiAgICAgICAgIGlmICgqc3RyZWFtID09ICN7d2lkZTMyfSkKLSAgICAg
ICAgICAgIHJldHVybiB7IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50MzJfdCo+KHN0cmVhbSArIDIp
IH07CisgICAgICAgICAgICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDMyX3QqPihz
dHJlYW0gKyAvKiBwcmVmaXggKi8gMSArIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0eXBlX3ByZWZp
eH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29kZUlEU2l6ZSkgfTsKICAg
ICAgICAgaWYgKCpzdHJlYW0gPT0gI3t3aWRlMTZ9KQotICAgICAgICAgICAgcmV0dXJuIHsgYml0
d2lzZV9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc3RyZWFtICsgMikgfTsKLSAgICAgICAgcmV0dXJu
IHsgc3RyZWFtICsgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgYml0d2lzZV9jYXN0PGNvbnN0
IHVpbnQxNl90Kj4oc3RyZWFtICsgLyogcHJlZml4ICovIDEgKyBPcGNvZGVJRFdpZHRoQnlTaXpl
PCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMTY+OjpvcGNvZGVJ
RFNpemUpIH07CisgICAgICAgIHJldHVybiB7IHN0cmVhbSArIE9wY29kZUlEV2lkdGhCeVNpemU8
I3t0eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJvdz46Om9wY29kZUlE
U2l6ZSB9OwogICAgIH0KIEVPRgogICAgIGVuZApAQCAtMzYyLDE4ICszNjcsMTkgQEAgRU9GCiAg
ICAgZW5kCiAKICAgICBkZWYgbGVuZ3RoCi0gICAgICAgIDEgKyAoQGFyZ3MubmlsPyA/IDAgOiBA
YXJncy5sZW5ndGgpICsgKEBtZXRhZGF0YS5lbXB0eT8gPyAwIDogMSkKKyAgICAgICAgKEBhcmdz
Lm5pbD8gPyAwIDogQGFyZ3MubGVuZ3RoKSArIChAbWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEpCiAg
ICAgZW5kCiAKICAgICBkZWYgc2VsZi5kdW1wX2J5dGVjb2RlKG5hbWUsIG9wY29kZV90cmFpdHMs
IG9wY29kZXMpCisgICAgICAgIHR5cGVfcHJlZml4ID0gKG9wY29kZV90cmFpdHMgPT0gOkpTT3Bj
b2RlVHJhaXRzID8gIkpTIiA6IChvcGNvZGVfdHJhaXRzID09IDpXYXNtT3Bjb2RlVHJhaXRzID8g
Ildhc20iIDogIkVycm9yI3tvcGNvZGVfdHJhaXRzfSIpKQogICAgICAgICA8PC1FT0YuY2hvbXAK
LXZvaWQgZHVtcCN7bmFtZX0oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qIF9faW5zdHJ1Y3Rp
b24pCit2b2lkIGR1bXAje25hbWV9KEJ5dGVjb2RlRHVtcGVyQmFzZTwje3R5cGVfcHJlZml4fUlu
c3RydWN0aW9uU3RyZWFtPiogZHVtcGVyLCAje3R5cGVfcHJlZml4fUluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgI3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvbiogX19p
bnN0cnVjdGlvbikKIHsKLSAgICBzd2l0Y2ggKF9faW5zdHJ1Y3Rpb24tPm9wY29kZUlEPCN7b3Bj
b2RlX3RyYWl0c30+KCkpIHsKKyAgICBzd2l0Y2ggKF9faW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkp
IHsKICN7b3Bjb2Rlcy5tYXAgeyB8b3B8CiAgICAgICAgIDw8LUVPRi5jaG9tcAogICAgIGNhc2Ug
I3tvcC5uYW1lfToKLSAgICAgICAgX19pbnN0cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9u
YW1lfSwgI3tvcGNvZGVfdHJhaXRzfT4oKS5kdW1wKGR1bXBlciwgX19sb2NhdGlvbiwgX19pbnN0
cnVjdGlvbi0+c2l6ZVNoaWZ0QW1vdW50PCN7b3Bjb2RlX3RyYWl0c30+KCkpOworICAgICAgICBf
X2luc3RydWN0aW9uLT5hczwje29wLmNhcGl0YWxpemVkX25hbWV9PigpLmR1bXAoZHVtcGVyLCBf
X2xvY2F0aW9uLCBfX2luc3RydWN0aW9uLT5zaXplU2hpZnRBbW91bnQoKSk7CiAgICAgICAgIGJy
ZWFrOwogRU9GCiAgICAgfS5qb2luICJcbiJ9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0Fic3RyYWN0UEMuaAppbmRleCA3OTVkYTUyNGE2M2Y3NDkxMjA4NGIyY2UxYTk5
NWE5MDViMTA0ZjBjLi5jMzE5Yzc4NmE4YmU2NDQyMzcyMGY4MGQ0Yjk2NjQ4MTMwOTQyMzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgKQEAg
LTMxLDcgKzMxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNz
IFZNOwotc3RydWN0IEluc3RydWN0aW9uOwogCiBjbGFzcyBBYnN0cmFjdFBDIHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKaW5k
ZXggOWVkZjU5Yjk2ODZhNWFkNmNlYTgzODNmNzQzMzMzNjBhMTljNmQ0MS4uYTYxODNiMGQ3MjRm
OWZjZGZlNTQyZDQyZTlmMWFkNjZjNzFjMTgzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTEwOCwxMyArMTA4LDEzIEBAIFNVUFBS
RVNTX0FTQU4gQ2FsbFNpdGVJbmRleCBDYWxsRnJhbWU6OnVuc2FmZUNhbGxTaXRlSW5kZXgoKSBj
b25zdAogICAgIHJldHVybiBDYWxsU2l0ZUluZGV4Ojpmcm9tQml0cyh1bnNhZmVDYWxsU2l0ZUFz
UmF3Qml0cygpKTsKIH0KIAotY29uc3QgSW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6Y3VycmVudFZQ
QygpIGNvbnN0Citjb25zdCBKU0luc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBj
b25zdAogewogICAgIEFTU0VSVChjYWxsU2l0ZUJpdHNBcmVCeXRlY29kZU9mZnNldCgpKTsKICAg
ICByZXR1cm4gY29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmF0KGNhbGxTaXRlQml0c0FzQnl0
ZWNvZGVPZmZzZXQoKSkucHRyKCk7CiB9CiAKLXZvaWQgQ2FsbEZyYW1lOjpzZXRDdXJyZW50VlBD
KGNvbnN0IEluc3RydWN0aW9uKiB2cGMpCit2b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhj
b25zdCBKU0luc3RydWN0aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZShj
b2RlQmxvY2soKS0+Ynl0ZWNvZGVJbmRleCh2cGMpKTsKICAgICB0aGlzW3N0YXRpY19jYXN0PGlu
dD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpXS50YWcoKSA9IGNh
bGxTaXRlLmJpdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAppbmRleCA4ODI5OWY0NGQ2ZTBlMTkzODdhNmE5Y2Y3NzRmNTA3MTJhYjAwMmI0Li40
MTllZmIzNmE0MDk1ZGJlMWM4YTIwNDYxMjVlOGM1Yzc4MmYzMzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC00MCw4ICs0MCw2IEBAIG5h
bWVzcGFjZSBKU0MgIHsKICAgICBjbGFzcyBTb3VyY2VPcmlnaW47CiAgICAgY2xhc3MgVmlydHVh
bFJlZ2lzdGVyOwogCi0gICAgc3RydWN0IEluc3RydWN0aW9uOwotCiAgICAgY2xhc3MgQ2FsbFNp
dGVJbmRleCB7CiAgICAgcHVibGljOgogICAgICAgICBDYWxsU2l0ZUluZGV4KCkgPSBkZWZhdWx0
OwpAQCAtMTk5LDkgKzE5Nyw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKCkgY29uc3Q7CiAKICAgICAgICAgaW5saW5l
IFJlZ2lzdGVyKiB0b3BPZkZyYW1lKCk7Ci0gICAgCi0gICAgICAgIGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50VlBDKCkgY29uc3Q7IC8vIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0aGUgTExJ
bnQgYW5kIGJhc2VsaW5lLgotICAgICAgICB2b2lkIHNldEN1cnJlbnRWUEMoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKKworICAgICAgICBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29u
c3Q7IC8vIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0aGUgTExJbnQgYW5kIGJhc2VsaW5lLgor
ICAgICAgICB2b2lkIHNldEN1cnJlbnRWUEMoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogCiAgICAg
ICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSkgeyBjYWxsZXJGcmFtZUFu
ZFBDKCkuY2FsbGVyRnJhbWUgPSBmcmFtZTsgfQogICAgICAgICBpbmxpbmUgdm9pZCBzZXRTY29w
ZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCwgSlNTY29wZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzYyMDJkY2I1ZTkz
YmY1YTA1Y2JhNjY0OTQ5OGM3YzMzOTYzODNjZS4uZWQ2ODk1MmY2ZDZlYWVjYjUwOTEyMDkwN2Nm
NWRhMDk1MzFiMTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MTcsOSArNTE3LDkgQEAgQ2F0Y2hJbmZvOjpDYXRjaElu
Zm8oY29uc3QgSGFuZGxlckluZm8qIGhhbmRsZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQogICAg
ICAgICAvLyBhbmQgY2FuIGNhdXNlIGFuIG92ZXJmbG93LiBPU1IgZXhpdCBwcm9wZXJseSBleGl0
cyB0byBoYW5kbGVyLT50YXJnZXQKICAgICAgICAgLy8gaW4gdGhlIHByb3BlciBmcmFtZS4KICAg
ICAgICAgaWYgKCFKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkp
KQotICAgICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmF0KGhhbmRsZXItPnRhcmdldCkucHRyKCk7CisgICAgICAgICAgICBtX2NhdGNo
UENGb3JJbnRlcnByZXRlciA9IHsgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChoYW5kbGVy
LT50YXJnZXQpLnB0cigpIH07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY2F0Y2hQQ0Zv
ckludGVycHJldGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJl
dGVyID0geyBzdGF0aWNfY2FzdDxKU0luc3RydWN0aW9uKj4obnVsbHB0cikgfTsKICAgICB9CiB9
CiAKQEAgLTUzMSw5ICs1MzEsOSBAQCBDYXRjaEluZm86OkNhdGNoSW5mbyhjb25zdCBXYXNtOjpI
YW5kbGVySW5mbyogaGFuZGxlciwgY29uc3QgV2FzbTo6Q2FsbGVlKiBjYWxsZQogICAgICAgICBt
X3R5cGUgPSBIYW5kbGVyVHlwZTo6Q2F0Y2g7CiAgICAgICAgIG1fbmF0aXZlQ29kZSA9IGhhbmRs
ZXItPm1fbmF0aXZlQ29kZTsKICAgICAgICAgaWYgKGNhbGxlZS0+Y29tcGlsYXRpb25Nb2RlKCkg
PT0gV2FzbTo6Q29tcGlsYXRpb25Nb2RlOjpMTEludE1vZGUpCi0gICAgICAgICAgICBtX2NhdGNo
UENGb3JJbnRlcnByZXRlciA9IHN0YXRpY19jYXN0PGNvbnN0IFdhc206OkxMSW50Q2FsbGVlKj4o
Y2FsbGVlKS0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+bV90YXJnZXQpLnB0cigpOworICAg
ICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSB7IHN0YXRpY19jYXN0PGNvbnN0IFdh
c206OkxMSW50Q2FsbGVlKj4oY2FsbGVlKS0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+bV90
YXJnZXQpLnB0cigpIH07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY2F0Y2hQQ0Zvcklu
dGVycHJldGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVy
ID0geyBzdGF0aWNfY2FzdDxXYXNtSW5zdHJ1Y3Rpb24qPihudWxscHRyKSB9OwogICAgIH0KIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAppbmRleCBlNjQ2NDY1Njc5ZjIxZDEzZDM0NGNkNjg4MjM5MTcwNzZmY2NhYTExLi42MmJh
MDAxOTJlNjIzZjI4ZWI2YjhhOTI4M2E5NjI5OWY4OTEyOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiU3Rh
Y2tBbGlnbm1lbnQuaCIKKyNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKICNpZiBFTkFCTEUoQ19MT09QKQpAQCAtNjgsNyArNjksNiBAQCBzdHJ1Y3QgSGFuZGxl
ckluZm87CiAgICAgZW51bSBjbGFzcyBIYW5kbGVyVHlwZSA6IHVpbnQ4X3Q7CiAgICAgc3RydWN0
IENhbGxGcmFtZUNsb3N1cmU7CiAgICAgc3RydWN0IEhhbmRsZXJJbmZvOwotICAgIHN0cnVjdCBJ
bnN0cnVjdGlvbjsKICAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CiAKICAgICBlbnVtIERlYnVn
SG9va1R5cGUgewpAQCAtMTAyLDcgKzEwMiw4IEBAIHN0cnVjdCBIYW5kbGVySW5mbzsKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4gbV9uYXRpdmVDb2RlOwogI2VuZGlmCi0gICAgICAgIGNvbnN0IEluc3RydWN0aW9u
KiBtX2NhdGNoUENGb3JJbnRlcnByZXRlcjsKKworICAgICAgICBzdGQ6OnZhcmlhbnQ8Y29uc3Qg
SlNJbnN0cnVjdGlvbiosIGNvbnN0IFdhc21JbnN0cnVjdGlvbio+IG1fY2F0Y2hQQ0ZvckludGVy
cHJldGVyOwogICAgIH07CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKaW5kZXggNTE1Yjc5NmI4YWIzODk3ZmZhZDk4MjJiMDQyNWVlY2JiMDU0ZTA1
NC4uZTljMGVjYzMwZWFjYzY4YzU1OWY4YWM0NjNlMTA2MjIzMWRkZWI2YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKCkKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAg
ICBtX2Rpc2Fzc2VtYmxlci0+c2V0Rm9yQnl0ZWNvZGVNYWluUGF0aChtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCksIGxhYmVsKCkpOwotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAg
ICAgIGNvbnN0IGF1dG8qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChtX2J5
dGVjb2RlSW5kZXgpLnB0cigpOwogICAgICAgICBBU1NFUlQoY3VycmVudEluc3RydWN0aW9uLT5z
aXplKCkpOwogCiAgICAgICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0o
bGFiZWwoKSwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpKTsKQEAgLTU1MSw4ICs1NTEsOCBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiAgICAgICAgIEJ5dGVjb2Rl
SW5kZXggZmlyc3RUbyA9IG1fYnl0ZWNvZGVJbmRleDsKIAotICAgICAgICBjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYXQobV9ieXRlY29kZUluZGV4KS5wdHIoKTsKLSAgICAgICAgCisgICAgICAgIGNvbnN0
IGF1dG8qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CisKICAgICAgICAgaWYgKEpJVEludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1pdHRp
bmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25n
KWRlYnVnT2Zmc2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBjMjY1Y2NjMDQ3
OTg3YmY5Yzc3NDc4ODI0MWJlMDcyMWEwYTY1ZDFlLi5iOGZkYTVkMWI0MzE1ZTlmN2Q3MDRjNDZh
YWE1YTViMWJiMDM0NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTY2LDcgKzY2LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwogICAgIGNsYXNz
IFN0cnVjdHVyZVN0dWJJbmZvOwogCi0gICAgc3RydWN0IEluc3RydWN0aW9uOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOworICAgIHN0cnVjdCBKU09wY29k
ZVRyYWl0czsKKyAgICB1c2luZyBKU0luc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPEpTT3Bj
b2RlVHJhaXRzPjsKKwogICAgIHN0cnVjdCBPcGVyYW5kVHlwZXM7CiAgICAgc3RydWN0IFNpbXBs
ZUp1bXBUYWJsZTsKICAgICBzdHJ1Y3QgU3RyaW5nSnVtcFRhYmxlOwpAQCAtMjg5LDkgKzI5Miw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90KEp1bXAs
IGludCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgY29t
cGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4
KTsKKyAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCB1bnNp
Z25lZCBjYWxsTGlua0luZm9JbmRleCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICB2b2lkIGNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRl
eCk7CisgICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQgY2FsbExpbmtJ
bmZvSW5kZXgpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PApAQCAtMzA5LDEzICszMTIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgY29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wJiwgVW5saW5rZWRDYWxsTGlua0luZm8q
LCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgogICAgICAgICBib29sIGNvbXBpbGVDYWxsRXZhbChjb25zdCBPcCYpOwotICAgICAgICB2
b2lkIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGNvbXBpbGVDYWxsRXZhbFNs
b3dDYXNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIGVtaXRQ
dXRDYWxsUmVzdWx0KGNvbnN0IE9wJik7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4gdm9pZCBjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4gdm9pZCBjb21waWxlT3BTdHJp
Y3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4gdm9pZCBjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdm9pZCBj
b21waWxlT3BFcUNvbW1vbihWaXJ0dWFsUmVnaXN0ZXIgc3JjMSwgVmlydHVhbFJlZ2lzdGVyIHNy
YzIpOwogICAgICAgICB2b2lkIGNvbXBpbGVPcEVxU2xvd0NvbW1vbihWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CkBAIC0zNzUsMjU3ICszNzgsMjU3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChKU1ZhbHVlUmVncywg
VmlydHVhbFJlZ2lzdGVyKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiwgUmVsYXRpb25h
bENvbmRpdGlvbik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBKU0lu
c3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgICAgIHZvaWQgZW1pdF9jb21w
YXJlQW5kSnVtcEltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lzdGVyIG9wMiwg
dW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0X2NvbXBh
cmVVbnNpZ25lZChjb25zdCBKU0luc3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAg
ICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRJbXBsKFZpcnR1YWxSZWdpc3RlciBkc3Qs
IFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIFJlbGF0aW9uYWxDb25k
aXRpb24pOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBlbWl0
X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAgICB2b2lkIGVtaXRf
Y29tcGFyZVVuc2lnbmVkQW5kSnVtcEltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJl
Z2lzdGVyIG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIFNsb3dPcGVyYXRpb24+Ci0gICAgICAg
IHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29uc3QgSW5zdHJ1Y3Rpb24qLCBEb3VibGVD
b25kaXRpb24sIFNsb3dPcGVyYXRpb24sIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29u
c3QgSlNJbnN0cnVjdGlvbiosIERvdWJsZUNvbmRpdGlvbiwgU2xvd09wZXJhdGlvbiwgYm9vbCBp
bnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgU2xvd09wZXJhdGlvbj4KICAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRK
dW1wU2xvd0ltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lzdGVyIG9wMiwgdW5z
aWduZWQgdGFyZ2V0LCBzaXplX3QgaW5zdHJ1Y3Rpb25TaXplLCBEb3VibGVDb25kaXRpb24sIFNs
b3dPcGVyYXRpb24sIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgYXNzZXJ0U3RhY2tQb2ludGVyT2Zmc2V0KCk7
CiAKLSAgICAgICAgdm9pZCBlbWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfYml0YW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9iaXRvcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
Yml0eG9yKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iaXRub3Qo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NhbGwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJh
cmdzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Rl
bF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Vx
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iZWxvdyhjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3dlcShjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlw
ZV9vZihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9y
ZWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX292ZXJyaWRlc19o
YXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lu
c3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Vt
cHR5KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90eXBlb2ZfaXNf
dW5kZWZpbmVkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pc191
bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
aXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZGQo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYml0YW5kKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JpdG9yKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JpdHhvcihjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iaXRub3QoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfY2FsbF9ldmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2F0Y2goY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FyZ3VtZW50X2NvdW50KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxl
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lcShjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2JlbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2JlbG93ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlw
ZV9vZihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9p
ZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVf
bmFtZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNfcHJp
dmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9p
bml0X2xhenlfcmVnKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9pc19lbXB0eShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF90eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
ICNpZiBVU0UoQklHSU5UMzIpCi0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0
IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKICNlbHNlCi0gICAgICAgIE5PX1JFVFVSTiB2b2lkIGVtaXRfb3BfaXNf
YmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICBOT19SRVRVUk4gdm9pZCBlbWl0
X29wX2lzX2JpZ19pbnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogI2VuZGlmCi0gICAgICAgIHZv
aWQgZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfamZhbHNlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9q
bXAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2puZXFfbnVsbChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfanVuZGVmaW5lZF9vcl9u
dWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbnVuZGVmaW5l
ZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZXFf
cHRyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3MoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2psZXNzZXEoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9qbmdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX2puZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2puZXEoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pzdHJpY3RlcShjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamJlbG93KGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qYmVsb3dlcShjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX25vcChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc3Vw
ZXJfc2FtcGxlcl9iZWdpbihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfc3VwZXJfc2FtcGxlcl9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2xzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
bW9kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wb3coY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX21vdihjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
bmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19h
cnJheShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5
X3dpdGhfc2l6ZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3
X2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5j
X2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfYXN5bmNfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHAoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25vdChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2luYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHJv
ZmlsZV90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X3BhcmVudF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9pc19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
aXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfamVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfamZhbHNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pt
cChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxX251bGwo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfanVuZGVmaW5lZF9v
cl9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pudW5k
ZWZpbmVkX29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfamVxX3B0cihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9q
bmVxX3B0cihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbGVz
cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbGVzc2VxKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pncmVhdGVyKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pncmVhdGVyZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5sZXNzKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pubGVzc2VxKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2puZ3JlYXRlcihjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXJlcShjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9qYmVsb3coY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfamJlbG93ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfanRydWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbG9v
cF9oaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNr
X3RyYXBzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25vcChj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1wbGVy
X2JlZ2luKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N1cGVy
X3NhbXBsZXJfZW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2xzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9tb2Qo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcG93KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX21vdihjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9tdWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfbmVnYXRlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfYXJyYXkoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X2FycmF5X3dpdGhfc2l6ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfZnVuYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19nZW5lcmF0b3Jf
ZnVuYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5
bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9ub3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
bnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2Rl
Yyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pbmMoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfY29udHJvbF9m
bG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wYXJl
bnRfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3AgPSBPcFB1dEJ5VmFsPgotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0
ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3JldChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfZnVu
Y3Rpb25fbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc3Ry
aWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N1Yihjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWJlcihjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF90b19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX3RvX3ByaW1pdGl2ZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfdW5leHBlY3RlZF9sb2FkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF91bnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX3Byb3BlcnR5X2tleShj
b25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25z
dCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVj
dChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9n
ZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X3NldHRlcl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXQoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX3N0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3N1Yihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfdGVhcl9vZmZfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3Rocm93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3RvX251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX3RvX3N0cmluZyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF90b19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX3VuZXhwZWN0ZWRfbG9hZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF91bnNpZ25lZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWls
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RvX3Byb3BlcnR5
X2tleShjb25zdCBKU0luc3RydWN0aW9uKik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3Bjb2RlVHlwZT4KICAgICAgICAgdm9pZCBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3Qg
T3Bjb2RlVHlwZSYsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAotICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5
X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bjb2RlVHlw
ZSwgdHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+CiAgICAgICAgIHZvaWQgZW1pdF9lbnVt
ZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rp
b25UeXBlKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25f
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLQotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2FkZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3RhaWxfY2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX2V2YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2Fs
bF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50cyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2NhbGxlZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90cnlf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dl
dF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0
YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2psZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3MoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5n
cmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmVxKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbnN0cmljdGVxKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9j
aGVja190cmFwcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfcG93KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX211bChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0KLSAgICAgICAgdm9pZCBl
bWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VudW1l
cmF0b3JfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBKU0luc3RydWN0aW9uKik7CisK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9j
YWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdz
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Nv
bnN0cnVjdChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZ2V0X2NhbGxlZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5
X2lkX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja19wcml2
YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChj
b25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShj
b25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Cisg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3NlcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2pncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShjb25zdCBKU0lu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2pubGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pubGVzc2Vx
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5ncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3Bfam5ncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZXEoY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9qbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfanN0cmljdGVx
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2xvb3BfaGludChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Cisg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcG93
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
bmVnYXRlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfbmV3X29iamVjdChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAg
ICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYsIFNsb3dQYXRoRnVuY3Rpb24pOwogCi0gICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9v
cGVuKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lk
IGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aXRlcmF0b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogCiAgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lz
dGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9y
QnJhbmQsIEFjY2Vzc1R5cGUpOwogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nl
c3NUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBl
bWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRO
ZXdGdW5jQ29tbW9uKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcywgR1BSUmVnKTsKICAgICAgICAgdm9pZCBlbWl0VmFyUmVhZE9u
bHlDaGVjayhSZXNvbHZlVHlwZSwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgICAgICB2b2lkIGVt
aXROb3RpZnlXcml0ZVdhdGNocG9pbnQoR1BSUmVnIHBvaW50ZXJUb1NldCk7CkBAIC02NDMsMTQg
KzY0NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc09wZXJhbmRDb25zdGFu
dENoYXIoVmlydHVhbFJlZ2lzdGVyKTsKIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3As
IHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUg
Tm9uUHJvZmlsZWRGdW5jdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0TWF0aElDRmFzdChKSVRVbmFy
eU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9u
LCBOb25Qcm9maWxlZEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0TWF0aElDRmFzdChKSVRV
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIFByb2ZpbGVkRnVu
Y3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24pOwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5h
bWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0TWF0aElDRmFzdChKSVRC
aW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJvZmlsZWRGdW5j
dGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdE1hdGhJQ0Zhc3Qo
SklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBKU0luc3RydWN0aW9uKiwgUHJvZmls
ZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbik7CiAKICAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRjaEZ1
bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVuY3Rp
b24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRv
cj4qLCBjb25zdCBJbnN0cnVjdGlvbiosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxl
ZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVtaXRNYXRoSUNTbG93
KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIFByb2Zp
bGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24pOwog
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5
cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0TWF0aElDU2xvdyhKSVRV
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZFJlcGF0
Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uKTsKKyAgICAgICAg
dm9pZCBlbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSlNJ
bnN0cnVjdGlvbiosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uLCBS
ZXBhdGNoRnVuY3Rpb24pOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZXR1cm5Gcm9tQmFzZWxpbmVHZW5lcmF0b3Io
Vk0mKTsKQEAgLTgzMiwxMiArODM1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9Owog
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbmlwcGV0R2VuZXJhdG9y
PgotICAgICAgICB2b2lkIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBzaG91bGRFbWl0UHJvZmlsaW5n
ID0gUHJvZmlsaW5nUG9saWN5OjpOb1Byb2ZpbGluZyk7CisgICAgICAgIHZvaWQgZW1pdEJpdEJp
bmFyeU9wRmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQ
cm9maWxpbmdQb2xpY3kgc2hvdWxkRW1pdFByb2ZpbGluZyA9IFByb2ZpbGluZ1BvbGljeTo6Tm9Q
cm9maWxpbmcpOwogCi0gICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCk7CisgICAgICAgIHZvaWQg
ZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIE9wY29kZUlEKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgdm9pZCBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OlNoaWZ0VHlwZSk7CisgICAgICAg
IHZvaWQgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OlNoaWZ0VHlwZSk7CiAKICAgICAg
ICAgdm9pZCB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKIApAQCAtODQ4LDggKzg1MSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAvLyBMb2FkcyB0aGUgY2hhcmFjdGVyIHZhbHVlIG9mIGEgc2lu
Z2xlIGNoYXJhY3RlciBzdHJpbmcgaW50byBkc3QuCiAgICAgICAgIHZvaWQgZW1pdExvYWRDaGFy
YWN0ZXJTdHJpbmcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0LCBKdW1wTGlzdCYgZmFp
bHVyZXMpOwogCi0gICAgICAgIGludCBqdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiwgaW50
IHRhcmdldCk7Ci0gICAgICAgIAorICAgICAgICBpbnQganVtcFRhcmdldChjb25zdCBKU0luc3Ry
dWN0aW9uKiwgaW50IHRhcmdldCk7CisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9p
ZCBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwogI2Vsc2UKQEAgLTk0NSw4ICs5NDgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyIG1fcGNU
b0NvZGVPcmlnaW5NYXBCdWlsZGVyOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UENUb0NvZGVP
cmlnaW5NYXA+IG1fcGNUb0NvZGVPcmlnaW5NYXA7CiAKLSAgICAgICAgSGFzaE1hcDxjb25zdCBJ
bnN0cnVjdGlvbiosIHZvaWQqPiBtX2luc3RydWN0aW9uVG9NYXRoSUM7Ci0gICAgICAgIEhhc2hN
YXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCBVbmlxdWVSZWY8TWF0aElDR2VuZXJhdGlvblN0YXRlPj4g
bV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlOworICAgICAgICBIYXNoTWFwPGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qLCB2b2lkKj4gbV9pbnN0cnVjdGlvblRvTWF0aElDOworICAgICAg
ICBIYXNoTWFwPGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBVbmlxdWVSZWY8TWF0aElDR2VuZXJhdGlv
blN0YXRlPj4gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlOwogCiAgICAgICAg
IGJvb2wgbV9jYW5CZU9wdGltaXplZDsKICAgICAgICAgYm9vbCBtX3Nob3VsZEVtaXRQcm9maWxp
bmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRleCBm
NDI2MDc0ZjQ1YmFmNGZjNjBjODUyODVkMGRmY2IwYzFhNzU1ZWM5Li4wNTM3N2I4MjA1ODFlYWJm
YWU4MjllZjRmNWNiMDgyMDE5MTVhMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ0LDEwNyArNDQsMTA3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbGVzcz4o
Y3VycmVudEluc3RydWN0aW9uLCBMZXNzVGhhbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2ps
ZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2psZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbGVzc2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24s
IExlc3NUaGFuT3JFcXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qZ3Jl
YXRlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1p
dF9jb21wYXJlQW5kSnVtcDxPcEpncmVhdGVyPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJU
aGFuKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXJlcShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJl
QW5kSnVtcDxPcEpncmVhdGVyZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRlclRoYW5PckVx
dWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3MoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8
T3BKbmxlc3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRlclRoYW5PckVxdWFsKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pubGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSm5sZXNz
ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRlclRoYW4pOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9qbmdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2puZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpuZ3JlYXRlcj4oY3VycmVu
dEluc3RydWN0aW9uLCBMZXNzVGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9q
bmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3Bfam5ncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbmdyZWF0ZXJlcT4oY3VycmVu
dEluc3RydWN0aW9uLCBMZXNzVGhhbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVz
cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2psZXNzKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpsZXNz
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZCwgb3BlcmF0aW9u
Q29tcGFyZUxlc3MsIGZhbHNlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2ps
ZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVzc2Vx
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxP
cEpsZXNzZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3Jk
ZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcSwgZmFsc2UsIGl0ZXIpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9qZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9j
b21wYXJlQW5kSnVtcFNsb3c8T3BKZ3JlYXRlcj4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVH
cmVhdGVyVGhhbkFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyLCBmYWxzZSwgaXRl
cik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKZ3JlYXRlcmVxPihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIG9wZXJh
dGlvbkNvbXBhcmVHcmVhdGVyRXEsIGZhbHNlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2pubGVzcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2pubGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVt
cFNsb3c8T3BKbmxlc3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlR3JlYXRlclRoYW5PckVx
dWFsT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzLCB0cnVlLCBpdGVyKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSm5sZXNzZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwg
RG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcSwgdHJ1
ZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSm5ncmVhdGVyPihj
dXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBvcGVy
YXRpb25Db21wYXJlR3JlYXRlciwgdHJ1ZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9qbmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBh
cmVBbmRKdW1wU2xvdzxPcEpuZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxl
c3NUaGFuT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEsIHRydWUsIGl0ZXIp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iZWxvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYmVsb3coY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZVVuc2lnbmVkPE9wQmVs
b3c+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQmVsb3cpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9i
ZWxvd2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9iZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZDxPcEJlbG93ZXE+KGN1cnJlbnRJbnN0cnVjdGlv
biwgQmVsb3dPckVxdWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qYmVsb3co
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29t
cGFyZVVuc2lnbmVkQW5kSnVtcDxPcEpiZWxvdz4oY3VycmVudEluc3RydWN0aW9uLCBCZWxvdyk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2piZWxvd2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qYmVsb3dlcShjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlVW5zaWduZWRB
bmRKdW1wPE9wSmJlbG93ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQmVsb3dPckVxdWFsKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfdW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFVuc2lnbmVkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91
bnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit2
b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AxID0gYnl0
ZWNvZGUubV9saHM7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFu
ZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIHVuc2kK
IAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25l
ZEFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmRpdGlvbikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAoY29u
c3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1fbGhzOwpAQCAtMjQ1LDcgKzI0NSw3IEBA
IHZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3Rl
ciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9p
ZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit2b2lkIEpJVDo6ZW1pdF9jb21wYXJl
VW5zaWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZGl0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjc0
LDcgKzI3NCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEltcGwoVmlydHVhbFJl
Z2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlyCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIE9wLCB0eXBlbmFtZSBTbG93T3BlcmF0aW9uPgotdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFu
ZEp1bXBTbG93KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRG91YmxlQ29uZGl0aW9u
IGNvbmRpdGlvbiwgU2xvd09wZXJhdGlvbiBvcGVyYXRpb24sIGJvb2wgaW52ZXJ0LCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFu
ZEp1bXBTbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBEb3VibGVDb25kaXRp
b24gY29uZGl0aW9uLCBTbG93T3BlcmF0aW9uIG9wZXJhdGlvbiwgYm9vbCBpbnZlcnQsIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AxID0gYnl0ZWNv
ZGUubV9saHM7CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1
bXBTbG93SW1wbChWaXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLAogICAg
IGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywg
cmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pbmMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lu
Yyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbmM+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHNyY0RzdCA9IGJ5dGVjb2RlLm1fc3JjRHN0OwpAQCAtNDAyLDcgKzQwMiw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2luYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2RlYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZGVjKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cERlYz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjRHN0ID0gYnl0ZWNvZGUubV9zcmNEc3Q7
CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVjKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICNpZiBDUFUoWDg2XzY0KQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNb2Q+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNDUxLDcg
KzQ1MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCBqc1JlZ1Qx
MCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC00NjEsMTMg
KzQ2MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaQogCiAjZWxzZSAvLyBDUFUoWDg2XzY0
KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6
OmVtaXRfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X21vZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiB9CkBAIC00NzYsNyArNDc2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRU5EOiBPUF9NT0QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAK
LXZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFBvdz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcG93KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1
bHQsIHJlc3VsdFJlZ3MpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG93KGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9wb3coY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wb3coY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpCiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIFVuYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSAmbV91bmxpbmtlZENvZGVCbG9jay0+dW5hcnlBcml0aFBy
b2ZpbGUoY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4oKS5tX3Byb2ZpbGVJbmRleCk7
CiAgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9tYXRoSUNzLmFkZEpJVE5lZ0lDKGFyaXRoUHJv
ZmlsZSk7CkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BO
ZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFyaXRoTmVnYXRl
UHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX25l
Z2F0ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbmlwcGV0R2VuZXJhdG9yPgotdm9pZCBKSVQ6
OmVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBwcm9maWxpbmdQb2xpY3kpCit2b2lkIEpJVDo6ZW1pdEJp
dEJpbmFyeU9wRmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxpbmdQb2xpY3kgcHJvZmlsaW5nUG9saWN5KQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIEpJVDo6ZW1pdEJp
dEJpbmFyeU9wRmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
UHJvZmlsaQogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXBMaXN0KCkpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9iaXRub3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JpdG5vdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BCaXRub3Q+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2Rl
Lm1fZHN0OwpAQCAtNjA4LDI3ICs2MDgsMjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYml0bm90KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHQsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYml0YW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9iaXRhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoPE9wQml0YW5kLCBKSVRCaXRBbmRHZW5lcmF0b3I+KGN1
cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5OjpTaG91bGRFbWl0UHJvZmlsaW5nKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYml0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JpdG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxPcEJp
dG9yLCBKSVRCaXRPckdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xp
Y3k6OlNob3VsZEVtaXRQcm9maWxpbmcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iaXR4b3Io
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2JpdHhvcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGg8T3BCaXR4b3IsIEpJVEJpdFhvckdlbmVyYXRvcj4oY3Vy
cmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3k6OlNob3VsZEVtaXRQcm9maWxpbmcpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2xzaGlmdChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGg8T3BM
c2hpZnQsIEpJVExlZnRTaGlmdEdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQgb3Bjb2RlSUQpCit2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hp
ZnRGYXN0UGF0aChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIE9wY29k
ZUlEIG9wY29kZUlEKQogewogICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9yc2hpZnQgfHwgb3Bj
b2RlSUQgPT0gb3BfdXJzaGlmdCk7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewpAQCAtNjQ0LDcg
KzY0NCw3IEBAIHZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIE9wY29kZUlECiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6U2hpZnRUeXBlIHNu
aXBwZXRTaGlmdFR5cGUpCit2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6
OlNoaWZ0VHlwZSBzbmlwcGV0U2hpZnRUeXBlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBi
eXRlY29kZS5tX2RzdDsKQEAgLTY4MiwxNyArNjgyLDE3IEBAIHZvaWQgSklUOjplbWl0UmlnaHRT
aGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVFJp
Z2h0CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3JzaGlmdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfcnNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGN1cnJlbnRJbnN0cnVj
dGlvbiwgb3BfcnNoaWZ0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlmdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlm
dChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdFJp
Z2h0U2hpZnRGYXN0UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2FkZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmbV91
bmxpbmtlZENvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlKGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BBZGQ+KCkubV9wcm9maWxlSW5kZXgpOwogICAgIEpJVEFkZElDKiBhZGRJQyA9IG1fbWF0
aElDcy5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwpAQCAtNzAwLDcgKzcwMCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRNYXRoSUNGYXN0PE9wQWRkPihhZGRJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVy
YXRpb25WYWx1ZUFkZFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZUFkZCk7CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9hZGQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYWRkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJv
ZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KLXZvaWQgSklUOjpl
bWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRG
dW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1bmN0aW9uKQordm9pZCBK
SVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHBy
b2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC03NTUsNyArNzU1
LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4q
IG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGMKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9w
LCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1l
IE5vblByb2ZpbGVkRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5
TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1
bmN0aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklU
QmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIE5vblBy
b2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC04MjIsNyArODIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRN
YXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3Ry
dWN0aW9uKgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwg
dHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rp
b24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4KLXZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhK
SVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHByb2ZpbGVkUmVwYXRjaEZ1
bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlv
biByZXBhdGNoRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRo
SUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQ
cm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbiByZXBhdGNo
RnVuY3Rpb24pCiB7CiAgICAgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBtYXRoSUNHZW5lcmF0aW9u
U3RhdGUgPSBtX2luc3RydWN0aW9uVG9NYXRoSUNHZW5lcmF0aW9uU3RhdGUuZmluZChjdXJyZW50
SW5zdHJ1Y3Rpb24pLT52YWx1ZS5nZXQoKTsKICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xv
d1BhdGhTdGFydCA9IGxhYmVsKCk7CkBAIC04NjUsNyArODY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRN
YXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1
Y3Rpb24qIGMKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3Is
IHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0
aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3co
SklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24gcHJvZmlsZWRSZXBhdGNo
RnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0
aW9uIHJlcGF0Y2hGdW5jdGlvbikKK3ZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9u
LCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbiByZXBh
dGNoRnVuY3Rpb24pCiB7CiAgICAgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBtYXRoSUNHZW5lcmF0
aW9uU3RhdGUgPSBtX2luc3RydWN0aW9uVG9NYXRoSUNHZW5lcmF0aW9uU3RhdGUuZmluZChjdXJy
ZW50SW5zdHJ1Y3Rpb24pLT52YWx1ZS5nZXQoKTsKICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUu
c2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CkBAIC05MjUsNyArOTI1LDcgQEAgdm9pZCBKSVQ6OmVt
aXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IElu
c3RydWN0aW9uKgogICAgIH0pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Rpdihjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTgzLDcgKzk4Myw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIH0K
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gJm1fdW5saW5rZWRDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZShjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wTXVsPigpLm1fcHJvZmlsZUluZGV4KTsKICAgICBKSVRNdWxJQyogbXVsSUMg
PSBtX21hdGhJQ3MuYWRkSklUTXVsSUMoYXJpdGhQcm9maWxlKTsKQEAgLTk5MSw3ICs5OTEsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2UKICAgICBlbWl0TWF0aElDU2xvdzxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
b3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplLCBvcGVyYXRpb25WYWx1ZU11bFByb2Zp
bGVkLCBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
c3ViKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9zdWIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJm1fdW5saW5rZWRDb2RlQmxvY2st
PmJpbmFyeUFyaXRoUHJvZmlsZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1fcHJv
ZmlsZUluZGV4KTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX21hdGhJQ3MuYWRkSklUU3ViSUMo
YXJpdGhQcm9maWxlKTsKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N1
Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRNYXRoSUNG
YXN0PE9wU3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlBy
b2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9z
dWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9zdWIoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGM2OGU0N2VlOWM4OGIxNmU4MTYxNGZk
YzhkY2EwYzYwYzQyYzI4OTcuLjg5OTgwODcyZDJiNzI3NzRjNjk1NmIzOTExOTJlODcxODFiMzdl
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNDMsNyArNDMsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXQoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHN0YXRpY19hc3NlcnQo
bm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBjYWxsRnJhbWVSZWdpc3RlcikpOwogCkBAIC0xODgs
NyArMTg4LDcgQEAgYm9vbCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChjb25zdCBPcENhbGxFdmFsJiBi
eXRlY29kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZh
bFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2Fz
ZShjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0y
MzAsNyArMjMwLDcgQEAgYm9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcFRhaWxDYWxs
JiBieXRlY29kZSwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1bnMKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci12b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KQordm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5r
SW5mb0luZGV4KQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gT3A6Om9wY29kZUlEOwogICAg
IGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CkBAIC0zMDMsNyArMzAzLDcg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgdW5zaWduZWQpCit2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCB1bnNpZ25lZCkK
IHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5dGVj
b2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwpAQCAtMzI1LDg3ICszMjUsODcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUUKICAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Nh
bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBp
bGVPcENhbGw8T3BDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgr
Kyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9w
VGFpbENhbGw+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX2V2YWwoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BDYWxsRXZh
bD4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BDYWxsVmFyYXJn
cz4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8
T3BUYWlsQ2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BUYWlsQ2FsbEZvcndhcmRBcmd1
bWVudHM+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BD
YWxsPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5m
b0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NvbnN0cnVjdChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9w
Q2FsbDxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENhbGw+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRl
ciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Rh
aWxfY2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxf
Y2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNl
PE9wVGFpbENhbGw+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9u
LCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfdmFyYXJncyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfdmFyYXJncyhjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ2FsbFZhcmFy
Z3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcFRhaWxDYWxsVmFy
YXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxlT3BDYWxs
U2xvd0Nhc2U8T3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHM+KGN1cnJlbnRJbnN0cnVjdGlvbiwg
aXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNv
bXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlv
biwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2NvbnN0cnVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2NvbnN0cnVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNs
b3dDYXNlPE9wQ29uc3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bihjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOwogICAgIGF1dG8qIHRyeUZhc3RG
dW5jdGlvbiA9IChbJl0gKCkgewpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIGZhc3RD
YXNlLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVu
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck9wZW4+KCk7CiAKQEAgLTUwNyw3ICs1MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
QwogICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
bmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CiAgICAgYXV0
byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiAgICAgZmFzdENhc2UubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
RXhjZXB0aW9ucy5jcHAKaW5kZXggYjg2ZTlhNDEwM2M4NTA2YzNmZGJiYWM1NGQ3ZTk0ZTY2NjBh
YWQ5OS4uNzUxNjUwOGI2Zjg4ZDg2YWY4YzZkNTY2ZjE4MzMxNGNjNWI2YTY5MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC01NywxOCArNTcsMjIg
QEAgdm9pZCBnZW5lcmljVW53aW5kKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAg
Q2F0Y2hJbmZvIGhhbmRsZXIgPSB2bS5pbnRlcnByZXRlci0+dW53aW5kKHZtLCBjYWxsRnJhbWUs
IGV4Y2VwdGlvbik7IC8vIFRoaXMgbWF5IHVwZGF0ZSBjYWxsRnJhbWUuCiAKICAgICB2b2lkKiBj
YXRjaFJvdXRpbmU7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGNhdGNoUENGb3JJbnRlcnByZXRl
ciA9IG51bGxwdHI7CisgICAgSlNPcldhc21JbnN0cnVjdGlvbiBjYXRjaFBDRm9ySW50ZXJwcmV0
ZXIgPSB7IHN0YXRpY19jYXN0PEpTSW5zdHJ1Y3Rpb24qPihudWxscHRyKSB9OwogICAgIGlmICho
YW5kbGVyLm1fdmFsaWQpIHsKICAgICAgICAgY2F0Y2hQQ0ZvckludGVycHJldGVyID0gaGFuZGxl
ci5tX2NhdGNoUENGb3JJbnRlcnByZXRlcjsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBjYXRj
aFJvdXRpbmUgPSBoYW5kbGVyLm1fbmF0aXZlQ29kZS5leGVjdXRhYmxlQWRkcmVzcygpOwogI2Vs
c2UKLSAgICAgICAgaWYgKGNhdGNoUENGb3JJbnRlcnByZXRlci0+aXNXaWRlMzIoKSkKLSAgICAg
ICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyKGNhdGNoUENGb3JJ
bnRlcnByZXRlci0+b3Bjb2RlSUQoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGNhdGNoUENGb3JJbnRl
cnByZXRlci0+aXNXaWRlMTYoKSkKLSAgICAgICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50Ojpn
ZXRXaWRlMTZDb2RlUHRyKGNhdGNoUENGb3JJbnRlcnByZXRlci0+b3Bjb2RlSUQoKSk7CisjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQorI2Vycm9yIFdBU00gcmVxdWlyZXMgdGhlIEpJVCwgc28gdGhp
cyBzZWN0aW9uIGFzc3VtZXMgd2UgYXJlIGluIEpTCisjZW5kaWYKKyAgICAgICAgY29uc3QgYXV0
byogcGMgPSBzdGQ6OmdldDxjb25zdCBKU0luc3RydWN0aW9uKj4oY2F0Y2hQQ0ZvckludGVycHJl
dGVyKTsKKyAgICAgICAgaWYgKHBjLT5pc1dpZGUzMigpKQorICAgICAgICAgICAgY2F0Y2hSb3V0
aW5lID0gTExJbnQ6OmdldFdpZGUzMkNvZGVQdHIocGMtPm9wY29kZUlEKCkpOworICAgICAgICBl
bHNlIGlmIChwYy0+aXNXaWRlMTYoKSkKKyAgICAgICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50
OjpnZXRXaWRlMTZDb2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6OmdldENvZGVQdHIoY2F0Y2hQQ0ZvckludGVycHJl
dGVyLT5vcGNvZGVJRCgpKTsKKyAgICAgICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRD
b2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsKICNlbmRpZgogICAgIH0gZWxzZQogICAgICAgICBjYXRj
aFJvdXRpbmUgPSBMTEludDo6aGFuZGxlVW5jYXVnaHRFeGNlcHRpb24odm0pLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCAwMmUyZjhhZWEzYzkzNzk3YjRlNWQxMmYzYmRhMmFiNWIzNDBmNmNkLi5iZmZiMmY0YzMwMzBl
ZWVlMTRmODkwZWY4MWNhMGUzZTgxOTg3Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaApAQCAtMjIwLDcgKzIyMCw3IEBAIGlubGluZSBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgSklUOjpmYXN0UGF0aFJlc3VtZVBvaW50KCkgY29uc3QKICAgICBpZiAoaXRlciAhPSBtX2Zh
c3RQYXRoUmVzdW1lTGFiZWxzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAg
ICAgLy8gTmV4dCBpbnN0cnVjdGlvbiBpbiBzZXF1ZW5jZQotICAgIGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOworICAgIGNvbnN0IGF1dG8qIGN1cnJlbnRJbnN0
cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KG1fYnl0ZWNv
ZGVJbmRleCkucHRyKCk7CiAgICAgcmV0dXJuIG1fbGFiZWxzW21fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpXTsKIH0KIApAQCAtNDMyLDcgKzQzMiw3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChK
U1ZhbHVlUmVncyBqc1JlZywgVmlydHVhbFJlCiAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChqc1JlZyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgaW50IEpJVDo6anVtcFRhcmdldChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGludCB0YXJnZXQpCitBTFdBWVNfSU5MSU5F
IGludCBKSVQ6Omp1bXBUYXJnZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGlu
dCB0YXJnZXQpCiB7CiAgICAgaWYgKHRhcmdldCkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU2ZGZiODczNjUyM2E3
NWMzY2E1MTJjOGZjMThjMzEzMjQ2MDFkNjguLjViODVjN2FjNTE3YTcwMmRjZmQ3YTYyZWRmMDky
MTFhM2Q1ZDMzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApA
QCAtNDYsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bW92KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9tb3YoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTW92PigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfbW92KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgc3RvcmVWYWx1ZShqc1JlZ1QxMCwgYWRkcmVzc0Zvcihkc3QpKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9lbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW5k
PigpOwogICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBjYWxsRnJh
bWVSZWdpc3RlcikpOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXQoKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3Bfam1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9qbXAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Sm1wPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0
aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfam1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAK
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X29iamVjdChjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmplY3Q+KCk7CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFMKIH0KIAogCi12b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9v
dmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE92
ZXJyaWRlc0hhc0luc3RhbmNlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNf
aGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAK
IAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5jZW9mPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE5MiwxMCArMTkyLDEwIEBAIHZvaWQgSklUOjplbWl0
X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIAorCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5jZW9mPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2lzX2VtcHR5KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0eShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0VtcHR5PigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pc19lbXB0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHlwZW9mSXNVbmRlZmluZWQ+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjY4LDcgKzI2OCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNS
ZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNf
dW5kZWZpbmVkX29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNVbmRl
ZmluZWRPck51bGw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9u
dWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIAotdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BJc0Jvb2xlYW4+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xl
YW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc19u
dW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2lzX251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc051bWJl
cj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0zMjMs
NyArMzIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKICNpZiBVU0UoQklHSU5UMzIpCi12b2lkIEpJVDo6
ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcElzQmlnSW50PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKQEAgLTM0NiwxNCArMzQ2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikK
LU5PX1JFVFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9u
KikKK05PX1JFVFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKQogewogICAgIC8vIElmIHdlIG9ubHkgaGF2ZSBIZWFwQmlnSW50cywgdGhlbiB3ZSBl
bWl0IGlzQ2VsbFdpdGhUeXBlIGluc3RlYWQgb2YgaXNCaWdJbnQuCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbmRpZgogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxs
X3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxf
d2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SXNPYmplY3Q+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpA
QCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9f
cHJpbWl0aXZlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvUHJpbWl0aXZlPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTQwNCw3ICs0
MDQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qs
IGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b19w
cm9wZXJ0eV9rZXkoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9Qcm9wZXJ0eUtl
eT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC00MjEs
NyArNDIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NldF9mdW5jdGlvbl9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BT
ZXRGdW5jdGlvbk5hbWU+KCk7CiAKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lLCBnbG9iYWxPYmpl
Y3RHUFIsIGZ1bmN0aW9uR1BSLCBuYW1lSlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfbm90
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9ub3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTm90PigpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9vcGVyYW5kLCBqc1JlZ1QxMCk7CkBAIC00NDcs
NyArNDQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Rz
dCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pmYWxzZShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZmFsc2U+KCk7CiAgICAgdW5zaWduZWQgdGFy
Z2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFi
ZWwpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJ
c0ZhbHNleSIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIG1hc3F1ZXJhZGVzR2xvYmFsT2JqZWN0SXNGb3JlaWduLmxpbmsodGhpcyk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEpuZXFOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBi
eXRlY29kZS5tX3ZhbHVlOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2pu
ZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHdhc05v
dEltbWVkaWF0ZS5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qdW5kZWZpbmVk
X29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKdW5kZWZpbmVkT3JOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5
dGVjb2RlLm1fdmFsdWU7CkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanVu
ZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgYWRkSnVtcChicmFuY2hJZk51bGwoanNSZWdUMTApLCB0YXJnZXQpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpudW5kZWZpbmVkT3JOdWxsPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01NzAsNyArNTcwLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoSWZOb3ROdWxsKGpzUmVn
VDEwKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVxX3B0cihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamVxX3B0cihj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXFQdHI+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfamVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBzcmMgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXE+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX2xocywgcmVnVDApOwpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BKZXE+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1
Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2p0cnVlKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBU
YXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTY3
OCw3ICs2NzgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BOZXE+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2xocywgcmVn
VDApOwpAQCAtNjkwLDcgKzY5MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
am5lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwogICAgIHVuc2ln
bmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rh
cmdldExhYmVsKTsKQEAgLTcwMiw3ICs3MDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICNlbmRpZgogCi12b2lkIEpJ
VDo6ZW1pdF9vcF90aHJvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VGhyb3c+KCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CkBAIC03NTAsNyArNzUwLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogI2lmIFVT
RShKU1ZBTFVFNjQpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmNvbXBpbGVP
cFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTgyNSwxOCAr
ODI1LDE4IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N0cmlj
dGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgY29tcGlsZU9wU3RyaWN0RXE8T3BTdHJpY3RlcT4oY3VycmVudEluc3RydWN0aW9uKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0cmljdEVxPE9w
TnN0cmljdGVxPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLXZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIGludCB0YXJnZXQgPSBqdW1wVGFy
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC05MDUs
MTcgKzkwNSwxNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0cmljdEVxSnVtcDxPcEpzdHJpY3RlcT4oY3VycmVu
dEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5zdHJp
Y3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29t
cGlsZU9wU3RyaWN0RXFKdW1wPE9wSm5zdHJpY3RlcT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtOTI2LDcgKzkyNiw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5v
blplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCkBAIC05MzksNyArOTM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pu
c3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMK
IAogI2VuZGlmCiAKLXZvaWQgSklUOjplbWl0X29wX3RvX251bWJlcihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvTnVtYmVyPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3RWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05NTQsNyArOTU0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfdG9fbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJlZywganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFRvTnVtZXJpYz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTc1LDcgKzk3NSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3RWUmVnLCBqc1JlZ1QxMCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX3RvX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFRvU3RyaW5nPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3RWUmVn
ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05OTAsNyArOTkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
dG9fc3RyaW5nKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJlZywganNSZWdUMTApOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF90b19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3RvX29iamVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BUb09iamVjdD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fb2Jq
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJlZywganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9jYXRjaChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2F0Y2g+
KCk7CiAKQEAgLTEwNTIsMTIgKzEwNTIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKGNvbnN0
IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShj
b25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIGFueXRo
aW5nIGhlcmUuLi4KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3BhcmVudF9zY29wZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X3BhcmVudF9zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQYXJlbnRT
Y29wZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgY3VycmVudFNjb3BlID0gYnl0ZWNvZGUubV9z
Y29wZTsKQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wYXJlbnRf
c2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wU3dpdGNoSW1tPigpOwogICAgIHNpemVfdCB0YWJsZUluZGV4ID0gYnl0ZWNvZGUu
bV90YWJsZUluZGV4OwpAQCAtMTA5NCw3ICsxMDk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dp
dGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGZhckp1
bXAocmV0dXJuVmFsdWVHUFIsIEpTU3dpdGNoUHRyVGFnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3Bfc3dpdGNoX2NoYXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBmYXN0IHBhdGgu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDUyMQpA
QCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBmYXJKdW1wKHJldHVyblZhbHVl
R1BSLCBKU1N3aXRjaFB0clRhZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9zdHJp
bmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNo
U3RyaW5nPigpOwogICAgIHNpemVfdCB0YWJsZUluZGV4ID0gYnl0ZWNvZGUubV90YWJsZUluZGV4
OwpAQCAtMTE0Miw3ICsxMTQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGZhckp1bXAocmV0dXJu
VmFsdWVHUFIsIEpTU3dpdGNoUHRyVGFnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVs
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFcU51bGw+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTE3NCw3ICsxMTc0
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BOZXFOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHZvaWQgSklUOjplbWl0X29w
X25lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoY29u
c3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3QgdXNl
IHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRvIHph
cCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25naW5nCkBAIC0x
MzM1LDcgKzEzMzUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX2VudGVyX2hh
bmRsZXIiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0U2NvcGU+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTM0NSw3ICsxMzQ1LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BUb1RoaXM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyY0RzdCA9IGJ5dGVjb2Rl
Lm1fc3JjRHN0OwpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhp
cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKGpzUmVnVDEwLnBheWxvYWRHUFIoKSwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cENyZWF0ZVRoaXM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1f
Y2FsbGVlOwpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2NoZWNrX3Rkeihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcENoZWNrVGR6PigpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xNDA5LDcgKzE0MDksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogLy8gU2xvdyBjYXNlcwogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lcShjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTQyMCw3
ICsxNDIwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKQEAgLTE0MzIsNyArMTQzMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgcmV0dXJuVmFsdWVHUFIpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZQogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCBy
ZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbmVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTQ1
Niw3ICsxNDU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXMKIAogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1Zyhjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BEZWJ1Zz4oKTsKICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBub0RlYnVnZ2VyUmVxdWVzdHMubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfbG9vcF9oaW50KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2xvb3BfaGludChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsK
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0Zv
ckZ1enppbmcoKSAmJiBtX3VubGlua2VkQ29kZUJsb2NrLT5sb29wSGludHNBcmVFbGlnaWJsZUZv
ckZ1enppbmdFYXJseVJldHVybigpKSkgewogICAgICAgICB1aW50cHRyX3QqIHB0ciA9IHZtKCku
Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9uKTsKQEAgLTE0OTQsNyArMTQ5
NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBFbWl0IHRo
ZSBzbG93IHBhdGggZm9yIHRoZSBKSVQgb3B0aW1pemF0aW9uIGNoZWNrOgpAQCAtMTUyMSwyNiAr
MTUyMSwyNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogI2VuZGlmCiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0
X29wX2NoZWNrX3RyYXBzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFRlc3QzMihOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+dHJhcHMoKS50cmFw
Qml0c0FkZHJlc3MoKSksIFRydXN0ZWRJbW0zMihWTVRyYXBzOjpBc3luY0V2ZW50cykpKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3Bfbm9wKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjpl
bWl0X29wX25vcChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3Bfc3VwZXJfc2FtcGxlcl9iZWdpbihjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1p
dF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2luKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIGFk
ZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4o
Jmdfc3VwZXJTYW1wbGVyQ291bnQpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N1cGVyX3Nh
bXBsZXJfZW5kKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX3N1cGVyX3Nh
bXBsZXJfZW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIHN1YjMyKFRydXN0ZWRJbW0z
MigxKSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmdfc3VwZXJTYW1wbGVy
Q291bnQpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIApAQCAtMTU4MSw3ICsxNTgxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHYK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogb3BfY2hlY2tfdHJhcHNfaGFuZGxlciIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cE5ld1JlZ2V4cD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0xNTk0LDcgKzE1OTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotdm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKQEAgLTE2MTYsMjggKzE2MTYsMjggQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5j
Q29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgfQogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jQ29tbW9uPE9wTmV3RnVu
Yz4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jQ29tbW9uPE9wTmV3R2VuZXJhdG9yRnVu
Yz4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5j
X2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jQ29tbW9uPE9wTmV3
QXN5bmNHZW5lcmF0b3JGdW5jPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jQ29tbW9uPE9wTmV3QXN5
bmNGdW5jPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KLXZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE2NTksMjcgKzE2NTksMjcgQEAgdm9pZCBKSVQ6OmVt
aXROZXdGdW5jRXhwckNvbW1vbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19l
eHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRO
ZXdGdW5jRXhwckNvbW1vbjxPcE5ld0Z1bmNFeHA+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5ld0dlbmVyYXRvckZ1bmNFeHA+KGN1cnJlbnRJbnN0
cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2FzeW5jX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb248T3BOZXdBc3luY0Z1bmNFeHA+KGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiB9Ci0gICAgCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJh
dG9yX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCisKK3Zv
aWQgSklUOjplbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1v
bjxPcE5ld0FzeW5jR2VuZXJhdG9yRnVuY0V4cD4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLSAg
ICAKLXZvaWQgSklUOjplbWl0X29wX25ld19hcnJheShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXk+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRz
dCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTY5MSw3ICsxNjkxLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2FycmF5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlLCBkc3QsIGFyZ3VtZW50
R1BSMCwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIsIHNpemUpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0FycmF5V2l0aFNpemU+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZUFuZFByb2ZpbGUsIGRzdCwgZ2xvYmFsT2JqZWN0R1BSLCBwcm9maWxlR1BSLCBzaXplSlNS
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIG1faXNTaGFyZWFi
bGUgPSBmYWxzZTsKIApAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJv
ZmlsZV90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAganVt
cFRvRW5kLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hp
Y2tlbl9wcm9sb2d1ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLnNo
YWRvd0NoaWNrZW4oKSk7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CkBAIC0xNzg4LDcgKzE3
ODgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdAogICAgIGxvZ1NoYWRvd0NoaWNrZW5Qcm9s
b2d1ZVBhY2tldChzaGFkb3dQYWNrZXRSZWcsIHNjcmF0Y2gxUmVnLCByZWdUMyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNr
ZW5fdGFpbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQodm0oKS5zaGFkb3dDaGlja2VuKCkpOwogICAgIHVwZGF0ZVRvcENhbGxG
cmFtZSgpOwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRv
d19jaGlja2VuX3RhaWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBsb2dTaGFkb3dDaGlja2VuVGFpbFBhY2tldChzaGFkb3dQYWNrZXRSZWcsIGpzUmVnVDMyLCBy
ZWdUNCwgcmVnVDEsIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyhj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgbV9pc1NoYXJl
YWJsZSA9IGZhbHNlOwogCkBAIC0xODIxLDcgKzE4MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
cm9maWxlX2NvbnRyb2xfZmxvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9hcmd1bWVu
dF9jb3VudChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBcmd1bWVudENvdW50Pigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE4MzIsNyAr
MTgzMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qs
IHJlc3VsdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jl
c3RfbGVuZ3RoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFJlc3RMZW5ndGg+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTg1Miw3
ICsxODUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YXJndW1lbnQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QXJndW1lbnQ+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTg3MSw3ICsx
ODcxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpz
UmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3By
b3RvdHlwZV9vZihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcm90b3R5cGVP
Zj4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CmluZGV4IDQ0Mjk0ODUzNmU3MzFlYmUwNmE4YWU3MGY4MzY0M2ViMjM2MmY0MDIuLjgxOTk3ODBj
OTU2NzA4ZWRhYjZiNTk5MzY0ODU4MmI1ZDViZDFhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVPcEVxU2xvd0NvbW1vbihWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Vx
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVxPigpOwogCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdU
MTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BOZXE+KCk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXE+
KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24s
IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFk
ZEp1bXAoYnJhbmNoMzIoRXF1YWwsIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwganNSZWdUMzIucGF5
bG9hZEdQUigpKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwogICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2gzMihOb3RF
cXVhbCwganNSZWdUMTAucGF5bG9hZEdQUigpLCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJn
ZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFcT4oKTsKIApAQCAtMTI3
LDcgKzEyNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2RzdCwgcmV0dXJuVmFsdWVKU1IpOwogfQogCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE5lcT4oKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2RzdCwgcmV0dXJuVmFsdWVKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEplcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIo
Tm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pu
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFy
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0xNzUs
NyArMTc1LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxQ29tbW9uKFZpcnR1YWxSZWdp
c3RlciBzcmMxLCAgVmlydHVhbFJlZ2lzdGVyIHNyYzIpCiAgICAgZmlyc3RJc09iamVjdC5saW5r
KHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3RyaWN0ZXE+KCk7CiAgICAgY29tcGlsZU9wU3Ry
aWN0RXFDb21tb24oYnl0ZWNvZGUubV9saHMsIGJ5dGVjb2RlLm1fcmhzKTsKQEAgLTE4Niw3ICsx
ODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9k
c3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTnN0cmljdGVxPigpOwogICAgIGNv
bXBpbGVPcFN0cmljdEVxQ29tbW9uKGJ5dGVjb2RlLm1fbGhzLCBieXRlY29kZS5tX3Jocyk7CkBA
IC0xOTcsNyArMTk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2pzdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKc3RyaWN0ZXE+
KCk7CiAgICAgaW50IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRl
Y29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBh
ZGRKdW1wKGJyYW5jaDMyKEVxdWFsLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIGpzUmVnVDMyLnBh
eWxvYWRHUFIoKSksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puc3RyaWN0ZXEo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5zdHJpY3RlcT4o
KTsKICAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVj
b2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBh
ZGRKdW1wKGJyYW5jaDMyKE5vdEVxdWFsLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIGpzUmVnVDMy
LnBheWxvYWRHUFIoKSksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qc3Ry
aWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qc3RyaWN0
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGVtaXRK
dW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdl
dCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYzBjYjcyZmI2MGQ5MzUzNTM5ZTk0
MTdhY2JmODRlNTEwOGQzODUwMi4uZWZjOWEwZThiYjAyZTIyNTgxMTg0NjIzZDEwNjBhODkzNWNk
ZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC0yODI1LDcgKzI4MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dp
dGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSwg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0lu
c3RydWN0aW9uKiBwYykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI4Nzcs
NyArMjg3Nyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlU2Nv
cGVGb3JCYXNlbGluZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXNvbHZlZFNjb3BlKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI5MTksNyArMjkxOSw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqCiAgICAgfSkpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blB1dFRvU2NvcGUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFRv
U2NvcGUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0luc3Ry
dWN0aW9uKiBwYykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDVlOWY1YzcwNWE1ODkzOTA3MTFi
YWY3MzcwYjAwNGIyNjFmZGI4NC4uMmE1OWY2NGU4ODVhZDVhMjVlMTg2NzJmOTZjM2RkNWJiODY1
YmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTY4
LDcgKzY4LDEwIEBAIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAKIHN0cnVjdCBFQ01BTW9kZTsKIHN0
cnVjdCBJbmxpbmVDYWxsRnJhbWU7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3RlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOworc3RydWN0IEpTT3Bjb2RlVHJhaXRzOwor
dXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRyYWl0cz47CiAK
IHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogCkBAIC0yOTQsOSArMjk3LDkgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBFbmNv
ZGVkSlNWYWx1ZSwgKEoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNo
Q2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hh
ciosIChWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3Qg
bWluKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dp
dGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwotSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSwgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBKU0luc3RydWN0aW9uKiBieXRlY29kZVBDKSk7CiAKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvSGF2ZVBy
b3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHksIGNoYXIqLCAoVk0qLCBKU09iamVjdCop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZs
eVRvR3Jvd1Byb3BlcnR5U3RvcmFnZSwgY2hhciosIChWTSosIEpTT2JqZWN0Kiwgc2l6ZV90IG5l
d1NpemUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKaW5kZXggOGViMjEzOGExMWM5Y2I5Njk5ZmMzZmEyOWRhYTIyZTU1MmIxOWM4MS4uYzhi
OGIwYmYzZGUxZjNjZmI3YmRkOWIwMWMyN2E0NzY3OTk5MzdmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9i
eV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTIyLDcgKzEyMiw3IEBA
IHZvaWQgSklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QgT3Bjb2RlVHlwZSYgYnl0
ZWNvZGUsIFZlY3RvcjxTbG93Q2FzZUVuCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCksIGl0ZXIpOwogfQpAQCAtMTY1LDcg
KzE2NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5
X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAK
LXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIEFTU0VSVChoYXNBbnlTbG93Q2Fz
ZXMoaXRlcikpOwogCkBAIC0yNjAsNyArMjYwLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXIK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQ
cml2YXRlQnJhbmQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVC
YXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKQEAgLTMxOCw3ICszMTgsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVP
ZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAg
LTQxNywxNCArNDE3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2Us
IFNob3VsZEZpbHRlckJhc2UpOwogfQogCi10ZW1wbGF0ZSB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
YnlfdmFsPE9wUHV0QnlWYWw+KGNvbnN0IEluc3RydWN0aW9uKik7Cit0ZW1wbGF0ZSB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWw+KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
IAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29w
X3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZz
ZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC00ODMsNyArNDgzLDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xv
d09wZXJhdGlvblQKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
UHV0UHJpdmF0ZU5hbWU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0
ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9
PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtNTg0LDcgKzU4NCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNs
b3dPcGVyCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVy
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dEdldHRlckJ5SWQ+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYnl0
ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyQnlJZCwgcmVnVDIsIHJlZ1Qw
LCBtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmlt
cGwoKSwgb3B0aW9ucywgcmVnVDEpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVy
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFNldHRlckJ5SWQ+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYnl0
ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgcmVnVDIsIHJlZ1Qw
LCBtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmlt
cGwoKSwgb3B0aW9ucywgcmVnVDEpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVy
X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyU2V0dGVyQnlJZD4oKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyUGF5bG9hZChieXRlY29kZS5tX2Jhc2UsIHJlZ1QwKTsKQEAgLTYxNSw3ICs2MTUs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UHV0R2V0dGVyU2V0dGVyLCByZWdUMywgcmVnVDAsIG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuaW1wbCgpLCBhdHRyaWJ1dGUsIHJlZ1QxLCByZWdU
Mik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVy
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJCeVZhbD4o
KTsKIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRHZXR0ZXJCeVZhbCwgZ2xvYmFsT2JqZWN0R1JQLCBiYXNlR1BSLCBw
cm9wZXJ0eUpTUiwgYXR0cmlidXRlcywgc2V0dGVyR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dFNldHRlckJ5VmFsPigpOwogCkBAIC02NTMsNyArNjUzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFNldHRlckJ5
VmFsLCBnbG9iYWxPYmplY3RHUlAsIGJhc2VHUFIsIHByb3BlcnR5SlNSLCBhdHRyaWJ1dGVzLCBz
ZXR0ZXJHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKQEAgLTc2Miw3ICs3NjIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaAogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAg
LTg3NCw3ICs4NzQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVAogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BU
cnlHZXRCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUu
bV9kc3Q7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAg
LTkzNCw3ICs5MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTk5Myw3ICs5OTMsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2Fs
bCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1Ip
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRl
Y29kZUluZGV4KTsKQEAgLTExMDAsNyArMTEwMCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRo
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJ
ZFdpdGhUaGlzPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUu
bV9kc3Q7CkBAIC0xMTM4LDcgKzExMzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOwpAQCAtMTIwMSw3ICsxMjAxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxs
U2xvd08KICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtMTI0
Nyw3ICsxMjQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlVlJlZywg
U2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGgKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTM0
Miw3ICsxMzQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dFZSZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTEzNzAsNyArMTM3MCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE0MDYsNyArMTQwNiw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKQEAgLTE0ODYsMzEgKzE0ODYsMzEgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhB
Y2Nlc3NUeXBlIHR5cGUpCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNf
cHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVO
YW1lPigpOwogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jh
c2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKICAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVf
YnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigp
OwogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5
dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
ICAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BSZXNvbHZlU2NvcGU+KCk7CiAgICAgUmVzb2x2ZVR5
cGUgcHJvZmlsZWRSZXNvbHZlVHlwZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fcHJvZmlsZWRDb2Rl
QmxvY2spLm1fcmVzb2x2ZVR5cGU7CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9yZXNvbHZlX3Njb3BlR2VuZXJh
dG9yKFZNJiB2bQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3Jlc29sdmVfc2NvcGUiKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEZyb21TY29wZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xOTc0LDcgKzE5NzQsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVy
YXRvcihWTSYgdgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9mcm9tX3Njb3BlIik7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3Bl
ID0gYnl0ZWNvZGUubV9zY29wZTsKQEAgLTIxMTMsNyArMjExMyw3IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMjE3Myw3
ICsyMTczLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRf
dG9fc2NvcGUiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJv
bUFyZ3VtZW50cz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0yMTg2LDcgKzIxODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVu
dHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
dG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFB1dFRvQXJndW1lbnRzPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHMg
PSBieXRlY29kZS5tX2FyZ3VtZW50czsKQEAgLTIyMDEsNyArMjIwMSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGFyZ3VtZW50cywgdmFsdWUsIFNob3VsZEZpbHRl
clZhbHVlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
aW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0SW50ZXJu
YWxGaWVsZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBA
IC0yMjE1LDcgKzIyMTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfaW50
ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRJbnRlcm5hbEZpZWxkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwpAQCAtMjIzMSw3ICsyMjMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wR2V0UHJvcGVydHlFbnVtZXJhdG9yPigpOwogCkBAIC0yMjY1LDcgKzIyNjUs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yTmV4dD4oKTsKIApAQCAt
MjMyOCw3ICsyMzI4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZG9uZS5saW5rKHRoaXMpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0
QnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAt
MjQxNiw3ICsyNDE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgZ2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCksIGl0ZXIpOwogfQpAQCAtMjQ1OCw0OCArMjQ1OCw0OCBA
QCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgQnl0ZWNv
ZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bgogICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2Vu
dW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVy
YXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9o
YXNfb3duX3Byb3BlcnR5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wRW51bWVyYXRvckhhc093blByb3BlcnR5PigpLCBzbG93X3BhdGhfZW51bWVyYXRv
cl9oYXNfb3duX3Byb3BlcnR5KTsKIH0KIAogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24q
KQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSlNJbnN0
cnVjdGlvbiopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93
X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biopCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlv
biopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhf
ZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9p
ZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3du
X3Byb3BlcnR5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7
CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKaW5kZXggZDBiMzczODkyMWE0ZjAwMTUxMmU3ZGVlM2E4NDQzYzUxOTNiZDI2
Yy4uNjcwNzc1N2JjNWM0YTI2Y2UzOWVjMmE4NWM0YWFlNjg3Mzk1NzVhMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBp
bml0aWFsaXplKCkKIAogICAgIHN0YXRpY19hc3NlcnQobGxpbnRfdGhyb3dfZnJvbV9zbG93X3Bh
dGhfdHJhbXBvbGluZSA8IFVJTlQ4X01BWCk7CiAgICAgc3RhdGljX2Fzc2VydCh3YXNtX3Rocm93
X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUgPCBVSU5UOF9NQVgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpIHsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggKyAxOyArK2kpIHsKICAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldID0gbGxpbnRfdGhy
b3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQu
d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXSA9IHdhc21fdGhyb3dfZnJvbV9zbG93X3BhdGhf
dHJhbXBvbGluZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgK
aW5kZXggMzdjMWFmZTZkZTc2Yzg5MzVhYzc0NmQ2MGZiNDk3ZDMxZTZlN2NhOS4uYzAzMzNkMzQy
YjA5YjAzMDQwMTBmNDQ2Mjg0M2ZjMDg5NDgyOWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGZyaWVuZCB2b2lkIGluaXRpYWxpemUoKTsKIAotICAgIGZyaWVuZCBJbnN0cnVjdGlvbiogZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Ci0gICAgZnJpZW5kIEluc3RydWN0aW9uKiB3YXNtRXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zKCk7CisgICAgZnJpZW5kIEpTSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbklu
c3RydWN0aW9ucygpOworICAgIGZyaWVuZCBXYXNtSW5zdHJ1Y3Rpb24qIHdhc21FeGNlcHRpb25J
bnN0cnVjdGlvbnMoKTsKICAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVNYXAoKTsKICAgICBmcmll
bmQgT3Bjb2RlKiBvcGNvZGVNYXBXaWRlMTYoKTsKICAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVN
YXBXaWRlMzIoKTsKQEAgLTc0LDE0ICs3NCwxNCBAQCBwcml2YXRlOgogCiB2b2lkIGluaXRpYWxp
emUoKTsKIAotaW5saW5lIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQoraW5s
aW5lIEpTSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCiB7Ci0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPihnX2pzY0NvbmZpZy5sbGludC5leGNlcHRp
b25JbnN0cnVjdGlvbnMpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTSW5zdHJ1Y3Rp
b24qPihnX2pzY0NvbmZpZy5sbGludC5leGNlcHRpb25JbnN0cnVjdGlvbnMpOwogfQotICAgIAot
aW5saW5lIEluc3RydWN0aW9uKiB3YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKworaW5saW5l
IFdhc21JbnN0cnVjdGlvbiogd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucygpCiB7Ci0gICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KGdfanNjQ29uZmlnLmxsaW50Lndhc21FeGNl
cHRpb25JbnN0cnVjdGlvbnMpOworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V2FzbUluc3RydWN0
aW9uKj4oZ19qc2NDb25maWcubGxpbnQud2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucyk7CiB9CiAK
IGlubGluZSBPcGNvZGUqIG9wY29kZU1hcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwCmluZGV4IGU4ODMxNTMyOGNjYjhmODViM2Y1ZGY3MTU1
OGEwY2JjY2IzNTg1NmMuLmQyMWMxYTIxMDI4NDhmMGYzOTc1YjkyZDMzMDFhM2NiZTdmZmIxMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3Bw
CkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewog
Ci1JbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhWTSYgdm0pCitKU0luc3RydWN0aW9uKiByZXR1
cm5Ub1Rocm93KFZNJiB2bSkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogI2lmIExMSU5UX1RS
QUNJTkcKQEAgLTUwLDcgKzUwLDcgQEAgSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mIHZt
KQogICAgIHJldHVybiBMTEludDo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiB9CiAKLUluc3Ry
dWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhWTSYgdm0pCitXYXNtSW5zdHJ1Y3Rpb24qIHdhc21S
ZXR1cm5Ub1Rocm93KFZNJiB2bSkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogI2lmIExMSU5U
X1RSQUNJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
aAppbmRleCBlNWY5MDIxZmFkYjhlZmNiMjU4N2MwY2E2MDE3NmViZjFkY2JhYzRhLi5mZGEzNTMy
ZGNjMGE4ODVjNDE4ZTY2NzZhMjI5MmRjNDMzYjUzN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCkBAIC0zMywxNiArMzMsMTkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwotc3RydWN0IEluc3RydWN0
aW9uOwogdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOworc3RydWN0IEpTT3Bjb2Rl
VHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRy
YWl0cz47CisKIG5hbWVzcGFjZSBMTEludCB7CiAKIC8vIEdpdmVzIHlvdSBhIFBDIHRoYXQgeW91
IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZAog
Ly8gYmV0d2VlbiAxIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0
aGF0IHRocmVhZHMgdG8gdGhlCiAvLyBpbnRlcnByZXRlcidzIGV4Y2VwdGlvbiBoYW5kbGVyLgot
SW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mKTsKLUluc3RydWN0aW9uKiB3YXNtUmV0dXJu
VG9UaHJvdyhWTSYpOworSlNJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhWTSYpOworV2FzbUlu
c3RydWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhWTSYpOwogCiAvLyBVc2UgdGhpcyB3aGVuIHlv
dSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhj
ZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRvVGhyb3coVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDdhMGU3ZGZlNjU2YmY0MzQw
NGNlOGNlNmZhNTNlOThkZTExZmQ5ZTguLjBjNWJmOWUxZDYyMWU2YmJiN2MxYTk2MDY5MDA4YzNm
NTM4YzE0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7IHJldHVyCiAgICAg
KCh0YXJnZXRPZmZzZXQpID8gKHRhcmdldE9mZnNldCkgOiBjb2RlQmxvY2stPm91dE9mTGluZUp1
bXBPZmZzZXQocGMpKQogCiAjZGVmaW5lIEpVTVBfVE8odGFyZ2V0KSBkbyB7IFwKLSAgICAgICAg
cGMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocGMpICsgKHRhcmdldCkpOyBcCisgICAgICAgIHBjID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocGMpICsgKHRhcmdldCkpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZp
bmUgTExJTlRfQlJBTkNIKGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAgIFwKQEAgLTIy
MCw3ICsyMjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gdm9pZCBzbG93UGF0aExv
Z0YoY29uc3QgY2hhciosIGNvbnN0IFR5cGVzJi4uLikgeyB9CiAKICNlbmRpZiAvLyBMTElOVF9U
UkFDSU5HCiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJh
bmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgaW50IGZyb21X
aGVyZSwgaW50IG9wZXJhbmQpCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90
cmFjZV9vcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBw
YywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgaWYgKCFPcHRpb25zOjp0cmFj
ZUxMSW50RXhlY3V0aW9uKCkpCiAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7CkBAIC0yMzgsNyAr
MjM4LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFu
ZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW4KICAgICBMTElOVF9FTkQoKTsKIH0KIAot
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQpCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90
cmFjZV92YWx1ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMs
IGludCBmcm9tV2hlcmUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogewogICAgIGlmICghT3B0
aW9uczo6dHJhY2VMTEludEV4ZWN1dGlvbigpKQogICAgICAgICBMTElOVF9FTkRfSU1QTCgpOwpA
QCAtNzQ2LDcgKzc0Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
aWRfd2l0aF90aGlzKQogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCi1z
dGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
biogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorc3RhdGljIHZvaWQg
c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIEdl
dEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAKQEAgLTgwNCw3ICs4MDQsNyBAQCBz
dGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIENvZAogICAgIHZtLndyaXRlQmFycmllcihjb2RlQmxvY2spOwog
fQogCi1zdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9u
KiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVN
ZXRhZGF0YSYgbWV0YWRhdGEpCitzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC0yMDA2LDcgKzIwMDYsNyBAQCBlbnVtIGNsYXNzIFNldEFyZ3VtZW50c1dpdGgg
ewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT3AsIFNldEFyZ3VtZW50c1dpdGggc2V0PgotaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2YXJhcmdzU2V0dXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCkKK2lubGluZSBT
bG93UGF0aFJldHVyblR5cGUgdmFyYXJnc1NldHVwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25z
dCBKU0luc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCkKIHsKICAgICBMTElO
VF9CRUdJTl9OT19TRVRfUEMoKTsKIApAQCAtMjA1Niw3ICsyMDU2LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdz
U2V0dXA8T3BDb25zdHJ1Y3RWYXJhcmdzLCBTZXRBcmd1bWVudHNXaXRoOjpPYmplY3Q+KGNhbGxG
cmFtZSwgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
biogcGMsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkK
K2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENhbGxFdmFsPigpOwpAQCAtMjM3NiwxMyAr
MjM3NiwxMyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KFZNJiB2
bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsTwogICAgICAgICB2YWx1ZVJlZ2lzdGVy
ID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+dmFsdWUpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0
SW5zdHJ1Y3Rpb25EdXJpbmdFeGl0KFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBwYykKK2lubGluZSBTbG93UGF0aFJldHVyblR5
cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQoVGhyb3dTY29wZSYgc2NvcGUs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYgcGMpCiB7CiAg
ICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHJl
dHVyblRvVGhyb3coc2NvcGUudm0oKSksIG51bGxwdHIpOwogCiAgICAgaWYgKE9wdGlvbnM6OmZv
cmNlT1NSRXhpdFRvTExJbnQoKSB8fCBjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpJ
bnRlcnByZXRlclRodW5rKSB7Ci0gICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBuZXh0UEMgPSBw
Yy5uZXh0KCkucHRyKCk7CisgICAgICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIG5leHRQQyA9IHBj
Lm5leHQoKS5wdHIoKTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KG5leHRQQywgTExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA3ZWM4MDE1ZWU4YzVhZWM0YzUyOWQ2ZGM1MjgyYTM0
M2M3NGE0YmViLi43YmQxMDdiOTU1ZTVlOGM1NTk1MjUwZTUxYmNmZjdjNzZiODRjOWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtMjYsMjQg
KzI2LDI0IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgor
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1lOwotc3RydWN0IEluc3RydWN0aW9u
Owogc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgTExJbnQgewogCi1leHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSosIGNv
bnN0IEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpIFJFRkVSRU5DRURf
RlJPTV9BU007Ci1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1
ZShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kKSBSRUZFUkVOQ0VEX0ZST01fQVNNOworZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJhbWUqLCBjb25zdCBKU0luc3Ry
dWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpIFJFRkVSRU5DRURfRlJPTV9BU007
CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShDYWxsRnJh
bWUqLCBjb25zdCBKU0luc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQpIFJFRkVSRU5DRURfRlJPTV9BU007CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJu
VHlwZSBsbGludF9saW5rX2NhbGwoQ2FsbEZyYW1lKiwgSlNDZWxsKiwgQ2FsbExpbmtJbmZvKikg
UkVGRVJFTkNFRF9GUk9NX0FTTTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3ZpcnR1YWxfY2FsbChDYWxsRnJhbWUqLCBKU0NlbGwqLCBDYWxsTGlua0luZm8qKSBSRUZFUkVO
Q0VEX0ZST01fQVNNOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhD
YWxsRnJhbWUqLCBKU0NlbGwqKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKIAog
I2RlZmluZSBMTElOVF9TTE9XX1BBVEhfREVDTChuYW1lKSBcCi0gICAgZXh0ZXJuICJDIiBTbG93
UGF0aFJldHVyblR5cGUgbGxpbnRfIyNuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMpCisgICAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
IyNuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykKIAog
I2RlZmluZSBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wobmFtZSkgXAogICAgIExMSU5UX1NM
T1dfUEFUSF9ERUNMKG5hbWUpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggNGZhNGZiM2Q3OTFiMzM0NzgwZDhkODgwNmFiMDJkOGViY2Y3MDU4YS4uZDAzYzY2ZWU0
MTlhNzEzZWIzNWZlY2FjYTc0NGFlZGU4NDFiYThkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMzIwLDggKzMyMCwx
MCBAQCBlbmQKIAogIyBPcGNvZGUgb2Zmc2V0cwogY29uc3QgT3Bjb2RlSUROYXJyb3dTaXplID0g
MSAjIE9wY29kZUlECi1jb25zdCBPcGNvZGVJRFdpZGUxNlNpemUgPSAyICMgV2lkZTE2IFByZWZp
eCArIE9wY29kZUlECi1jb25zdCBPcGNvZGVJRFdpZGUzMlNpemUgPSAyICMgV2lkZTMyIFByZWZp
eCArIE9wY29kZUlECitjb25zdCBPcGNvZGVJRFdpZGUxNlNpemVKUyA9IDIgIyBXaWRlMTYgUHJl
Zml4ICsgT3Bjb2RlSUQKK2NvbnN0IE9wY29kZUlEV2lkZTMyU2l6ZUpTID0gMiAjIFdpZGUzMiBQ
cmVmaXggKyBPcGNvZGVJRAorY29uc3QgT3Bjb2RlSURXaWRlMTZTaXplV2FzbSA9IDMgIyBXaWRl
MTYgUHJlZml4ICsgT3Bjb2RlSUQoMSBieXRlKSAjIEZJWE1FOiBjaGFuZ2UgdGhpcyBiYWNrIG9u
Y2UgRVdTIHBhc3Nlcy4KK2NvbnN0IE9wY29kZUlEV2lkZTMyU2l6ZVdhc20gPSAzICMgV2lkZTMy
IFByZWZpeCArIE9wY29kZUlEKDEgYnl0ZSkgIyBGSVhNRTogY2hhbmdlIHRoaXMgYmFjayBvbmNl
IEVXUyBwYXNzZXMuCiAKIGlmIFg4Nl82NF9XSU4gb3IgQ19MT09QX1dJTgogICAgIGNvbnN0IEdp
Z2FjYWdlQ29uZmlnID0gX2dfZ2lnYWNhZ2VDb25maWcKQEAgLTM1OCwzNSArMzYwLDUxIEBAIG1h
Y3JvIGRpc3BhdGNoSW5kaXJlY3Qob2Zmc2V0UmVnKQogICAgIGRpc3BhdGNoKG9mZnNldFJlZykK
IGVuZAogCi1tYWNybyBnZW5lcmljRGlzcGF0Y2hPcChkaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFt
ZSkKK21hY3JvIGdlbmVyaWNEaXNwYXRjaE9wSlMoZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUp
CiAgICAgbWFjcm8gZGlzcGF0Y2hOYXJyb3coKQotICAgICAgICBkaXNwYXRjaCgoY29uc3RleHBy
ICVvcGNvZGVOYW1lJV9sZW5ndGggLSAxKSAqIDEgKyBPcGNvZGVJRE5hcnJvd1NpemUpCisgICAg
ICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCkgKiAxICsgT3Bjb2Rl
SUROYXJyb3dTaXplKQogICAgIGVuZAogCiAgICAgbWFjcm8gZGlzcGF0Y2hXaWRlMTYoKQotICAg
ICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGggLSAxKSAqIDIgKyBP
cGNvZGVJRFdpZGUxNlNpemUpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5h
bWUlX2xlbmd0aCkgKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplSlMpCiAgICAgZW5kCiAKICAgICBt
YWNybyBkaXNwYXRjaFdpZGUzMigpCi0gICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29k
ZU5hbWUlX2xlbmd0aCAtIDEpICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZSkKKyAgICAgICAgZGlz
cGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoKSAqIDQgKyBPcGNvZGVJRFdpZGUz
MlNpemVKUykKKyAgICBlbmQKKworICAgIHNpemUoZGlzcGF0Y2hOYXJyb3csIGRpc3BhdGNoV2lk
ZTE2LCBkaXNwYXRjaFdpZGUzMiwgbWFjcm8gKGRpc3BhdGNoKSBkaXNwYXRjaCgpIGVuZCkKK2Vu
ZAorCittYWNybyBnZW5lcmljRGlzcGF0Y2hPcFdhc20oZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5h
bWUpCisgICAgbWFjcm8gZGlzcGF0Y2hOYXJyb3coKQorICAgICAgICBkaXNwYXRjaCgoY29uc3Rl
eHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogMSArIE9wY29kZUlETmFycm93U2l6ZSkKKyAgICBl
bmQKKworICAgIG1hY3JvIGRpc3BhdGNoV2lkZTE2KCkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0
ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoKSAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVXYXNtKQor
ICAgIGVuZAorCisgICAgbWFjcm8gZGlzcGF0Y2hXaWRlMzIoKQorICAgICAgICBkaXNwYXRjaCgo
Y29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZVdh
c20pCiAgICAgZW5kCiAKICAgICBzaXplKGRpc3BhdGNoTmFycm93LCBkaXNwYXRjaFdpZGUxNiwg
ZGlzcGF0Y2hXaWRlMzIsIG1hY3JvIChkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQpCiBlbmQKIAog
bWFjcm8gZGlzcGF0Y2hPcChzaXplLCBvcGNvZGVOYW1lKQotICAgIGdlbmVyaWNEaXNwYXRjaE9w
KGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1lKQorICAgIGdlbmVyaWNEaXNwYXRjaE9wSlMoZGlz
cGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCiBlbmQKIAogCiBtYWNybyBnZXR1KHNpemUsIG9wY29k
ZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgc2l6ZShnZXR1T3BlcmFuZE5hcnJvdywgZ2V0
dU9wZXJhbmRXaWRlMTYsIGdldHVPcGVyYW5kV2lkZTMyLCBtYWNybyAoZ2V0dSkKKyAgICBzaXpl
KGdldHVPcGVyYW5kTmFycm93LCBnZXR1T3BlcmFuZFdpZGUxNkpTLCBnZXR1T3BlcmFuZFdpZGUz
MkpTLCBtYWNybyAoZ2V0dSkKICAgICAgICAgZ2V0dShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwg
ZHN0KQogICAgIGVuZCkKIGVuZAogCiBtYWNybyBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVs
ZE5hbWUsIGRzdCkKLSAgICBzaXplKGdldE9wZXJhbmROYXJyb3csIGdldE9wZXJhbmRXaWRlMTYs
IGdldE9wZXJhbmRXaWRlMzIsIG1hY3JvIChnZXQpCisgICAgc2l6ZShnZXRPcGVyYW5kTmFycm93
LCBnZXRPcGVyYW5kV2lkZTE2SlMsIGdldE9wZXJhbmRXaWRlMzJKUywgbWFjcm8gKGdldCkKICAg
ICAgICAgZ2V0KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgZW5kKQogZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAKaW5kZXggOTg3NmVmNmVmNzQyYWNlZWRhZTI2OWEyYWI0NTRjNWI2MmNkNTE2Yi4uZTdhNGQx
OTg4OGFiMzkxMmJkZDc3N2FiYWQwMGE4MGY0ODk5ZDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcApAQCAtMTYzLDcgKzE2
Myw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8T3Bjb2RlPihtX3ZhbHVlKTsgfQogCiAgICAgb3BlcmF0b3Ig
Q2FsbEZyYW1lKigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxDYWxsRnJhbWUqPihtX3ZhbHVlKTsg
fQotICAgIG9wZXJhdG9yIGNvbnN0IEluc3RydWN0aW9uKigpIHsgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjb25zdCBJbnN0cnVjdGlvbio+KG1fdmFsdWUpOyB9CisgICAgb3BlcmF0b3IgY29uc3QgSlNJ
bnN0cnVjdGlvbiooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgSlNJbnN0cnVjdGlvbio+
KG1fdmFsdWUpOyB9CiAgICAgb3BlcmF0b3IgSlNDZWxsKigpIHsgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxKU0NlbGwqPihtX3ZhbHVlKTsgfQogICAgIG9wZXJhdG9yIFByb3RvQ2FsbEZyYW1lKigpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxQcm90b0NhbGxGcmFtZSo+KG1fdmFsdWUpOyB9CiAgICAgb3Bl
cmF0b3IgUmVnaXN0ZXIqKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PFJlZ2lzdGVyKj4obV92YWx1
ZSk7IH0KQEAgLTI4Nyw3ICsyODcsNyBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9wY29kZUlE
IGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0sCiAgICAgICAg
IC8vIGluaXRpYWxpemVkIHRoZSBvcGNvZGVNYXAgYWJvdmUuIFRoaXMgaXMgYmVjYXVzZSBnZXRD
b2RlUHRyKCkKICAgICAgICAgLy8gY2FuIGRlcGVuZCBvbiB0aGUgb3Bjb2RlTWFwLgogICAgICAg
ICB1aW50OF90KiBleGNlcHRpb25JbnN0cnVjdGlvbnMgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihMTEludDo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkpOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggKyAxOyArK2kpCiAgICAg
ICAgICAgICBleGNlcHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3df
cGF0aF90cmFtcG9saW5lOwogCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCmluZGV4IDIyNzE2ZjgxYmJkOTA3OGM5NmZlZTExZGQ4YzQxMGUyYTU5YWQ0ZjIuLmFjZTg3
MTE2NzJlNzAyMTZkMzlhNDhkZjE1ZmQ2NmQ2YjU3YzQxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBA
IC0zNCwyMCArMzQsMjAgQEAgbWFjcm8gZ2V0T3BlcmFuZE5hcnJvdyhvcGNvZGVTdHJ1Y3QsIGZp
ZWxkTmFtZSwgZHN0KQogICAgIGxvYWRic2kgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVs
ZE5hbWUlX2luZGV4ICsgT3Bjb2RlSUROYXJyb3dTaXplW1BCLCBQQywgMV0sIGRzdAogZW5kCiAK
LW1hY3JvIGdldHVPcGVyYW5kV2lkZTE2KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0g
ICAgbG9hZGggY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiAr
IE9wY29kZUlEV2lkZTE2U2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldHVPcGVyYW5kV2lk
ZTE2SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaCBjb25zdGV4cHIg
JW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXpl
SlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0T3BlcmFuZFdpZGUxNihvcGNvZGVT
dHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRoc2kgY29uc3RleHByICVvcGNvZGVTdHJ1
Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZVtQQiwgUEMsIDFd
LCBkc3QKK21hY3JvIGdldE9wZXJhbmRXaWRlMTZKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwg
ZHN0KQorICAgIGxvYWRoc2kgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2lu
ZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1h
Y3JvIGdldHVPcGVyYW5kV2lkZTMyKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAg
bG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIE9w
Y29kZUlEV2lkZTMyU2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldHVPcGVyYW5kV2lkZTMy
SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaSBjb25zdGV4cHIgJW9w
Y29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplSlNb
UEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0T3BlcmFuZFdpZGUzMihvcGNvZGVTdHJ1
Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRpcyBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVf
JWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplW1BCLCBQQywgMV0sIGRz
dAorbWFjcm8gZ2V0T3BlcmFuZFdpZGUzMkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3Qp
CisgICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAq
IDQgKyBPcGNvZGVJRFdpZGUzMlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCiBtYWNybyBt
YWtlUmV0dXJuKGdldCwgZGlzcGF0Y2gsIGZuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBjNDUzMzUxZDQ5MjZj
Zjc0ZThkNmVmODU4NTk4NzRhNDViYWQ1OWZhLi41ZGU3YmNjN2ZkMGQ0ZjA0MGYyZGY5NGJkNDcz
NDVkODM1ODY5NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMzksMjAgKzM5LDM2IEBAIG1hY3JvIGdldE9w
ZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBsb2FkYnNxIGNv
bnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCArIE9wY29kZUlETmFycm93
U2l6ZVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZFdpZGUxNihvcGNv
ZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRoIGNvbnN0ZXhwciAlb3Bjb2RlU3Ry
dWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAx
XSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUxNkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1l
LCBkc3QpCisgICAgbG9hZGggY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2lu
ZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1h
Y3JvIGdldE9wZXJhbmRXaWRlMTYob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAgICBs
b2FkaHNxIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBP
cGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUx
Nldhc20ob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaCBjb25zdGV4cHIg
JW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXpl
V2FzbVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZFdpZGUzMihvcGNv
ZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2RlU3Ry
dWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVbUEIsIFBDLCAx
XSwgZHN0CittYWNybyBnZXRPcGVyYW5kV2lkZTE2SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUs
IGRzdCkKKyAgICBsb2FkaHNxIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9p
bmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1t
YWNybyBnZXRPcGVyYW5kV2lkZTMyKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAg
bG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBP
cGNvZGVJRFdpZGUzMlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXRPcGVyYW5kV2lkZTE2
V2FzbShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRoc3EgY29uc3RleHBy
ICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6
ZVdhc21bUEIsIFBDLCAxXSwgZHN0CitlbmQKKworbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzJKUyhv
cGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2Rl
U3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVKU1tQQiwg
UEMsIDFdLCBkc3QKK2VuZAorCittYWNybyBnZXR1T3BlcmFuZFdpZGUzMldhc20ob3Bjb2RlU3Ry
dWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVf
JWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplV2FzbVtQQiwgUEMsIDFd
LCBkc3QKK2VuZAorCittYWNybyBnZXRPcGVyYW5kV2lkZTMySlMob3Bjb2RlU3RydWN0LCBmaWVs
ZE5hbWUsIGRzdCkKKyAgICBsb2FkaXMgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5h
bWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAorZW5k
CisKK21hY3JvIGdldE9wZXJhbmRXaWRlMzJXYXNtKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBk
c3QpCisgICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRl
eCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVXYXNtW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKIG1h
Y3JvIG1ha2VSZXR1cm4oZ2V0LCBkaXNwYXRjaCwgZm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCAzZTUzNzkwNTIyNzE5ZDY2MGRkYWYyMmQzZWYz
ZWNmZjNlNTY2NWZmLi5mYmFlMmI0ZGZhYmRlZWMxYTAyODE0NmU3MzQ3NDVkMmY5NDVhZGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTEwMCwx
MyArMTAwLDEzIEBAIG1hY3JvIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kCiAKIG1hY3JvIHdh
c21OZXh0SW5zdHJ1Y3Rpb25XaWRlMTYoKQotICAgIGxvYWRiIE9wY29kZUlETmFycm93U2l6ZVtQ
QiwgUEMsIDFdLCB0MAorICAgIGxvYWRoIE9wY29kZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCB0
MCAjIEZJWE1FOiBjaGFuZ2UgdGhpcyBiYWNrIG9uY2UgRVdTIHBhc3Nlcy4KICAgICBsZWFwIF9n
X29wY29kZU1hcFdpZGUxNiwgdDEKICAgICBqbXAgTnVtYmVyT2ZKU09wY29kZUlEcyAqIFB0clNp
emVbdDEsIHQwLCBQdHJTaXplXSwgQnl0ZWNvZGVQdHJUYWcsIEFkZHJlc3NEaXZlcnNpZmllZAog
ZW5kCiAKIG1hY3JvIHdhc21OZXh0SW5zdHJ1Y3Rpb25XaWRlMzIoKQotICAgIGxvYWRiIE9wY29k
ZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCB0MAorICAgIGxvYWRoIE9wY29kZUlETmFycm93U2l6
ZVtQQiwgUEMsIDFdLCB0MCAjIEZJWE1FOiBjaGFuZ2UgdGhpcyBiYWNrIG9uY2UgRVdTIHBhc3Nl
cy4KICAgICBsZWFwIF9nX29wY29kZU1hcFdpZGUzMiwgdDEKICAgICBqbXAgTnVtYmVyT2ZKU09w
Y29kZUlEcyAqIFB0clNpemVbdDEsIHQwLCBQdHJTaXplXSwgQnl0ZWNvZGVQdHJUYWcsIEFkZHJl
c3NEaXZlcnNpZmllZAogZW5kCkBAIC00NjAsNyArNDYwLDcgQEAgZW5kCiAjIFdhc20gd3JhcHBl
ciBvZiBnZXQvZ2V0dSB0aGF0IG9wZXJhdGUgb24gY3R4CiBtYWNybyB3Z2V0cyhjdHgsIGZpZWxk
LCBkc3QpCiAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKLSAg
ICAgICAgc2l6ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZTE2LCBnZXRPcGVyYW5k
V2lkZTMyLCBtYWNybyAoZ2V0KQorICAgICAgICBzaXplKGdldE9wZXJhbmROYXJyb3csIGdldE9w
ZXJhbmRXaWRlMTZXYXNtLCBnZXRPcGVyYW5kV2lkZTMyV2FzbSwgbWFjcm8gKGdldCkKICAgICAg
ICAgICAgIGdldChvcGNvZGVTdHJ1Y3QsIGZpZWxkLCBkc3QpCiAgICAgICAgIGVuZCkKICAgICBl
bmQpCkBAIC00NjgsNyArNDY4LDcgQEAgZW5kCiAKIG1hY3JvIHdnZXR1KGN0eCwgZmllbGQsIGRz
dCkKICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzaXplKQotICAgICAg
ICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBnZXR1T3BlcmFuZFdpZGUxNiwgZ2V0dU9wZXJhbmRX
aWRlMzIsIG1hY3JvIChnZXR1KQorICAgICAgICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBnZXR1
T3BlcmFuZFdpZGUxNldhc20sIGdldHVPcGVyYW5kV2lkZTMyV2FzbSwgbWFjcm8gKGdldHUpCiAg
ICAgICAgICAgICBnZXR1KG9wY29kZVN0cnVjdCwgZmllbGQsIGRzdCkKICAgICAgICAgZW5kKQog
ICAgIGVuZCkKQEAgLTQ3OCw3ICs0NzgsNyBAQCBlbmQKIAogbWFjcm8gZGlzcGF0Y2goY3R4KQog
ICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNpemUpCi0gICAgICAgIGdl
bmVyaWNEaXNwYXRjaE9wKHdhc21EaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkKKyAgICAgICAg
Z2VuZXJpY0Rpc3BhdGNoT3BXYXNtKHdhc21EaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkKICAg
ICBlbmQpCiBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCmluZGV4IGNhMjRlNzU0MGFiNGRkZTUxMWE1OTY2YTE3MWQ2OTg5MzY1M2UxNWIuLjE2
YTIzMmZjYWMzMjZkYzNjNmUxYzJkMWVjNzgxMDFiOWVhZTRkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTk4Myw3ICs5ODMsNyBAQCBw
cml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRTdHJpbmdKdW1wVGFibGU+IG1fdW5saW5r
ZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAgIENhY2hlZFZlY3RvcjxFeHByZXNzaW9uUmFu
Z2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICBD
YWNoZWRIYXNoTWFwPHVuc2lnbmVkLCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6OlR5cGVQ
cm9maWxlckV4cHJlc3Npb25SYW5nZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwotICAgIENhY2hl
ZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93
Qnl0ZWNvZGVPZmZzZXRzOworICAgIENhY2hlZFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CiAg
ICAgQ2FjaGVkVmVjdG9yPENhY2hlZEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOwogICAgIENhY2hl
ZFZlY3RvcjxDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1w
bD4sIElkZW50aWZpZXJSZXBIYXNoPj4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogICAgIHVu
c2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwpAQCAtMTQzOSwxOCArMTQz
OSwxOCBAQCBwcml2YXRlOgogICAgIEVuY29kZWRUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIENh
Y2hlZEluc3RydWN0aW9uU3RyZWFtIDogcHVibGljIENhY2hlZE9iamVjdDxJbnN0cnVjdGlvblN0
cmVhbT4geworY2xhc3MgQ2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW0gOiBwdWJsaWMgQ2FjaGVkT2Jq
ZWN0PEpTSW5zdHJ1Y3Rpb25TdHJlYW0+IHsKIHB1YmxpYzoKLSAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgc3RyZWFtKQorICAgIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIHN0cmVh
bSkKICAgICB7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25zLmVuY29kZShlbmNvZGVyLCBzdHJlYW0u
bV9pbnN0cnVjdGlvbnMpOwogICAgIH0KIAotICAgIEluc3RydWN0aW9uU3RyZWFtKiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAgICBKU0luc3RydWN0aW9uU3RyZWFtKiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikgY29uc3QKICAgICB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90LCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYsIEluc3RydWN0aW9uU3RyZWFtTWFsbG9jPiBpbnN0
cnVjdGlvbnNWZWN0b3I7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25zLmRlY29kZShkZWNvZGVyLCBp
bnN0cnVjdGlvbnNWZWN0b3IpOwotICAgICAgICByZXR1cm4gbmV3IEluc3RydWN0aW9uU3RyZWFt
KFdURk1vdmUoaW5zdHJ1Y3Rpb25zVmVjdG9yKSk7CisgICAgICAgIHJldHVybiBuZXcgSlNJbnN0
cnVjdGlvblN0cmVhbShXVEZNb3ZlKGluc3RydWN0aW9uc1ZlY3RvcikpOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTE4NzksNyArMTg3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2smKTsKICAgICB2b2lkIGRlY29kZShEZWNvZGVy
JiwgVW5saW5rZWRDb2RlQmxvY2smKSBjb25zdDsKIAotICAgIEluc3RydWN0aW9uU3RyZWFtKiBp
bnN0cnVjdGlvbnMoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlv
bnMuZGVjb2RlKGRlY29kZXIpOyB9CisgICAgSlNJbnN0cnVjdGlvblN0cmVhbSogaW5zdHJ1Y3Rp
b25zKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmRlY29k
ZShkZWNvZGVyKTsgfQogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3RlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdGhpc1JlZ2lzdGVyOyB9CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVn
aXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0KQEAgLTE5NjYsMTEgKzE5
NjYsMTEgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4gbV9z
b3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCiAgICAgQ2FjaGVkUHRyPENhY2hlZEluc3RydWN0
aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsKLSAgICBDYWNoZWRWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBDYWNoZWRWZWN0b3I8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwogICAgIENhY2hlZFZl
Y3RvcjxDYWNoZWRKU1ZhbHVlPiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIENhY2hlZFZlY3Rv
cjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uOwogICAgIENhY2hlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvPiBtX2V4cHJlc3Np
b25JbmZvOwotICAgIENhY2hlZEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50
PiBtX291dE9mTGluZUp1bXBUYXJnZXRzOworICAgIENhY2hlZEhhc2hNYXA8dHlwZW5hbWUgSlNJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAK
ICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBD
YWNoZWRWZWN0b3I8Q2FjaGVkV3JpdGVCYXJyaWVyPENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+
IG1fZnVuY3Rpb25EZWNsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDhjZjEwZDI2NDZiZTNjZGYxYTNhMjM3MWM1NTE4NjFi
YTY0MmRjMWEuLjFlZWVlMmNiOWU0NmM0NGYxOWM4ZDRmMDJiNjUxMDdiMzNkNGE0MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMTEyLDEwICsxMTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENIRUNLX0VYQ0VQ
VElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChi
Q29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICBwYyA9IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwgXAotICAgICAgICAgICAgICAgID8g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHBjKSArIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpIFwKKyAgICAgICAgICAg
ICAgICA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpIFwKICAg
ICAgICAgICAgICAgICA6IGNvZGVCbG9jay0+b3V0T2ZMaW5lSnVtcFRhcmdldChwYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcGMgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4ocGMpICsgcGMtPnNpemUoKSk7IFwKKyAgICAgICAgICAgIHBjID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocGMpICsgcGMtPnNpemUoKSk7IFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkK
IApAQCAtNTUyLDcgKzU1Miw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfbmVnYXRlKQogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1zdGF0aWMgdm9pZCB1cGRhdGVB
cml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUg
bGVmdCwgSlNWYWx1ZSByaWdodCkKK3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJp
bmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
SlNJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUg
cmlnaHQpCiB7CiAgICAgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+
YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMocGMpOwogCkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayogY29kZUIKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMo
KTsKIH0KICNlbHNlCi1zdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBKU1Zh
bHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KK3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBjb25zdCBKU0lu
c3RydWN0aW9uKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSkgeyB9CiAjZW5kaWYKIAogSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90b19udW1iZXIpCkBAIC04NDYsNyAr
ODQ2LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pc19jb25zdHJ1
Y3RvcikKIH0KIAogdGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KLUFMV0FZU19JTkxJTkUgU2xv
d1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCitBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0
dXJuVHlwZSBpdGVyYXRvck9wZW5UcnlGYXN0SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tu
b3duV2lkdGg8T3BJdGVyYXRvck9wZW4sIHdpZHRoPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKQEAgLTg5Miw3ICs4OTIsNyBAQCBKU0NfREVG
SU5FX0NPTU1PTl9TTE9XX1BBVEgoaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIpCiB9CiAK
IHRlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+Ci1BTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJu
VHlwZSBpdGVyYXRvck5leHRUcnlGYXN0SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorQUxXQVlTX0lOTElO
RSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IHBjKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JO
ZXh0LCB3aWR0aD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCmluZGV4IDliMjQ3YjdlNTY5NjMxMmZjZmM0NmY5OGFhZjE3NTQ2ZmQ4NDk2YmEuLmRj
NmE4ZDEwOTMxNzNjYjEwNjA5MzFhMDAwNTY4OTcyYTZjMGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDgsMTMgKzI0OCwx
MiBAQCBpbmxpbmUgSlNBcnJheSogYWxsb2NhdGVOZXdBcnJheUJ1ZmZlcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0ltbXV0YWJsZQogfSAvLyBuYW1lc3BhY2UgQ29tbW9uU2xvd1Bh
dGhzCiAKIGNsYXNzIENhbGxGcmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIAogI2RlZmluZSBK
U0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKG5hbWUpIFwKLSAgICBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG5hbWUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSosIGNvbnN0IElu
c3RydWN0aW9uKikpCisgICAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihuYW1lLCBTbG93UGF0
aFJldHVyblR5cGUsIChDYWxsRnJhbWUqLCBjb25zdCBKU0luc3RydWN0aW9uKikpCiAKICNkZWZp
bmUgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKG5hbWUpIFwKLSAgICBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04obmFtZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykpCisgICAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG5hbWUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBK
U0luc3RydWN0aW9uKiBwYykpCiAKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX2NhbGxfYXJpdHlDaGVjayk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3df
cGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcAppbmRleCAxNzBm
MWE2MGRhYmIyNTY3MWMwZWQ2Y2QzNzVjMGI5YjEyOGQxNjY1Li4yNjk4ODZiZmMyMTI3ZDM0ZWUx
NDYwZDc3ODcxYWNhMzg1Zjg4NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKQEAgLTc1LDggKzc1
LDggQEAgU3BlY3VsYXRlZFR5cGUgRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlOjpnZXRQcmVkaWN0
aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBjb24KICAgICBWZWN0b3I8U3RyaW5nPiB1cmxQYXJ0
cyA9IHNvdXJjZVVSTC5zcGxpdCgnLycpOwogICAgIHByZWRpY3Rpb25UYXJnZXQuc291cmNlRmls
ZW5hbWUgPSB1cmxQYXJ0cy5pc0VtcHR5KCkgPyBzb3VyY2VVUkwgOiB1cmxQYXJ0cy5sYXN0KCk7
CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKTsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogYW5JbnN0cnVjdGlvbiA9
IGluc3RydWN0aW9ucy5hdChieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBjb25zdCBhdXRvJiBp
bnN0cnVjdGlvbnMgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1dG8q
IGFuSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAg
ICAgcHJlZGljdGlvblRhcmdldC5vcGNvZGVJZCA9IGFuSW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7
CiAKICAgICBpbnQgc3RhcnRMb2NhdGlvbiA9IHByZWRpY3Rpb25UYXJnZXQuZGl2b3QgLSBwcmVk
aWN0aW9uVGFyZ2V0LnN0YXJ0T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NDb25maWcuaAppbmRleCA5YjY5MTNmOTQwY2MyOTBiZWUyYzI2ZDRlNWFkYzc4YjliYzFiY2Fj
Li41NWI3YTBmOGMyMmE5OWRlNWI1YWM5MmI4MWIyZWY4MTNhMWRkMjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaApAQCAtMTAxLDggKzEwMSw4IEBAIHN0cnVj
dCBDb25maWcgewogICAgIHZvaWQgKCpzaGVsbFRpbWVvdXRDaGVja0NhbGxiYWNrKShWTSYpOwog
CiAgICAgc3RydWN0IHsKLSAgICAgICAgdWludDhfdCBleGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4
T3Bjb2RlTGVuZ3RoICsgMV07Ci0gICAgICAgIHVpbnQ4X3Qgd2FzbUV4Y2VwdGlvbkluc3RydWN0
aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKKyAgICAgICAgdWludDhfdCBleGNlcHRpb25JbnN0
cnVjdGlvbnNbbWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggKyAxXTsKKyAgICAgICAgdWludDhfdCB3
YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21heEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMV07CiAg
ICAgICAgIGNvbnN0IHZvaWQqIGdhdGVNYXBbbnVtYmVyT2ZHYXRlc107CiAgICAgfSBsbGludDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGU4YTRl
N2E2MjMzOWQzNmJlYTBmNzI1N2I0MTczNWVjODI0M2VmNTcuLjI5NDlkMDkyNWZjMDQ0NzRhNmRk
MjgwNzc1ZTRhMzU4ZjRjMGFlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKQEAgLTczLDcgKzczLDYgQEAgY2xhc3MgQ0xvb3A7CiAKIHN0cnVjdCBDbGFz
c0luZm87CiBzdHJ1Y3QgRHVtcENvbnRleHQ7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CiBzdHJ1Y3Qg
TWV0aG9kVGFibGU7CiBlbnVtIGNsYXNzIFVua25vd24geyB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmgKaW5kZXggYmZjMzhjNjUwOWQx
NTgxNWNkYzU0MTcwNDVjYzcyODdmZGMxOTY3Mi4uMzI2N2VhOTQ4ZjhkOGIzOTIzNjUxNzgzMDI1
MzJlM2U4YTIyZDA0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2xvd1BhdGhGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ns
b3dQYXRoRnVuY3Rpb24uaApAQCAtMzAsOCArMzAsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBDYWxsRnJhbWU7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247Cit0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5nIEpT
SW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwogCi11c2luZyBT
bG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKEpJVF9PUEVSQVRJT05fQVRUUklC
VVRFUyopKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKik7Cit1c2luZyBTbG93UGF0aEZ1
bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKENh
bGxGcmFtZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZjY2ZGFhYjhjNzExNTAxZTNmZTlk
MWYzN2YyMzYxMmQzYWE0MTA2NS4uZTMyZGNiMGFkMzRiMjNiY2RhMjQ3MWEwM2VlOTJjYjUyMzMz
ODIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTQ0NCw3ICsxNDQ0
LDcgQEAgdm9pZCBWTTo6c2V0Q3Jhc2hPblZNQ3JlYXRpb24oYm9vbCBzaG91bGRDcmFzaCkKICAg
ICB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBzaG91bGRDcmFzaDsKIH0KIAotdm9pZCBWTTo6YWRk
TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikK
K3ZvaWQgVk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb29wSGludEV4ZWN1dGlv
bkNvdW50TG9jayB9OwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb29wSGludEV4ZWN1dGlvbkNv
dW50cy5hZGQoaW5zdHJ1Y3Rpb24sIHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRy
PHVpbnRwdHJfdD4+KDAsIG51bGxwdHIpKTsKQEAgLTE0NTYsMTQgKzE0NTYsMTQgQEAgdm9pZCBW
TTo6YWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbikKICAgICArK2FkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3Q7CiB9CiAKLXVpbnRw
dHJfdCogVk06OmdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pCit1aW50cHRyX3QqIFZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIo
Y29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2sgfTsKICAgICBhdXRvIGl0ZXIgPSBtX2xvb3BI
aW50RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rpb24pOwogICAgIHJldHVybiBpdGVyLT52
YWx1ZS5zZWNvbmQuZ2V0KCk7CiB9CiAKLXZvaWQgVk06OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9u
Q291bnRlcihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2b2lkIFZNOjpyZW1vdmVM
b29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2sgfTsK
ICAgICBhdXRvIGl0ZXIgPSBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNzg2Y2Q2MDNmNGMzYTI3OWQ4
YmE4NWRjMTMyYTQ3M2NhNjhjMDBmZS4uZGM2ODM2M2NkNDY5MzY4NGE5Yzg2NWZmZmVlYmJkN2U4
ODk2ZDgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC01Myw2ICs1Myw3IEBA
CiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJWTVRyYXBzLmgiCiAjaW5j
bHVkZSAiV2FzbUNvbnRleHQuaCIKKyNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9C
dW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMTYxLDcgKzE2MiwxNCBAQCBjbGFzcyBTaWdu
YXR1cmU7CiB9CiAKIHN0cnVjdCBFbnRyeUZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOworCit0
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29k
ZVRyYWl0czsKK3N0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9
IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRyYWl0cz47Cit1c2luZyBXYXNtSW5zdHJ1Y3Rpb24g
PSBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZVRyYWl0cz47CisKK3VzaW5nIEpTT3JXYXNtSW5z
dHJ1Y3Rpb24gPSBzdGQ6OnZhcmlhbnQ8Y29uc3QgSlNJbnN0cnVjdGlvbiosIGNvbnN0IFdhc21J
bnN0cnVjdGlvbio+OwogCiBjbGFzcyBRdWV1ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShRdWV1ZWRUYXNrKTsKQEAgLTY2OSw3ICs2NzcsNyBAQCBwdWJsaWM6CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWVGb3JDYXRjaDsKICAgICBDYWxsZWVCaXRzIGNhbGxlZUZvcldhc21DYXRj
aDsKICAgICB2b2lkKiB0YXJnZXRNYWNoaW5lUENGb3JUaHJvdzsKLSAgICBjb25zdCBJbnN0cnVj
dGlvbiogdGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93OworICAgIEpTT3JXYXNtSW5zdHJ1Y3Rp
b24gdGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93OwogICAgIHVpbnQzMl90IG9zckV4aXRJbmRl
eDsKICAgICB2b2lkKiBvc3JFeGl0SnVtcERlc3RpbmF0aW9uOwogICAgIFJlZ0V4cCogbV9leGVj
dXRpbmdSZWdFeHAgeyBudWxscHRyIH07CkBAIC04NTUsOSArODYzLDkgQEAgcHVibGljOgogICAg
ICAgICBTZXRGb3JTY29wZTxFeGNlcHRpb24qPiBtX3NhdmVkTGFzdEV4Y2VwdGlvbjsKICAgICB9
OwogCi0gICAgdm9pZCBhZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICB1aW50cHRyX3QqIGdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgIHZvaWQgcmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgdm9pZCBhZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgIHVpbnRwdHJfdCogZ2V0TG9vcEhpbnRFeGVjdXRp
b25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHJlbW92ZUxvb3BIaW50
RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9uKik7CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSkgeyBoZWFwLndyaXRlQmFy
cmllcihmcm9tKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3Qg
SlNDZWxsKiBmcm9tLCBKU1ZhbHVlIHRvKSB7IGhlYXAud3JpdGVCYXJyaWVyKGZyb20sIHRvKTsg
fQpAQCAtMTAwMCw3ICsxMDA4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXhlY3V0aW9uRm9y
YmlkZGVuT25UZXJtaW5hdGlvbiB7IGZhbHNlIH07CiAKICAgICBMb2NrIG1fbG9vcEhpbnRFeGVj
dXRpb25Db3VudExvY2s7Ci0gICAgSGFzaE1hcDxjb25zdCBJbnN0cnVjdGlvbiosIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVpbnRwdHJfdD4+PiBtX2xvb3BIaW50RXhlY3V0
aW9uQ291bnRzOworICAgIEhhc2hNYXA8Y29uc3QgSlNJbnN0cnVjdGlvbiosIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVpbnRwdHJfdD4+PiBtX2xvb3BIaW50RXhlY3V0aW9u
Q291bnRzOwogCiAjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCiAgICAgRG9lc0dD
Q2hlY2sgbV9kb2VzR0M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3Bw
CmluZGV4IDY0MzI3ZTk5YzE1NDBlNmViZDYyMWE2NGQxYzFiOWU5NGJjN2I0NGUuLmEzMjFjNTJm
MTVlY2E1MjIxM2VjZDZlZTkyMTcyNzE5ODExYjMyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21DYWxsZWUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCisjaW5jbHVkZSAicnVudGltZS9WTS5oIgog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCkBAIC0xMDAsOSArMTAxLDkgQEAgTExJbnRDYWxs
ZWU6OkxMSW50Q2FsbGVlKEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yJiBnZW5lcmF0b3IsIHNp
emVfdCBpbmRleCwgc3QKICAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9uID0gKm1faW5zdHJ1
Y3Rpb25zLT5hdCh1bmxpbmtlZEhhbmRsZXIubV90YXJnZXQpLnB0cigpOwogICAgICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gdGFyZ2V0OwogICAgICAg
ICAgICAgaWYgKHVubGlua2VkSGFuZGxlci5tX3R5cGUgPT0gSGFuZGxlclR5cGU6OkNhdGNoKQot
ICAgICAgICAgICAgICAgIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+KExMSW50OjpoYW5kbGVXYXNtQ2F0Y2goaW5zdHJ1Y3Rpb24ud2lkdGg8V2FzbU9w
Y29kZVRyYWl0cz4oKSkuY29kZSgpKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBDb2RlTG9j
YXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6aGFuZGxlV2FzbUNhdGNo
KGluc3RydWN0aW9uLndpZHRoKCkpLmNvZGUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4oTExJbnQ6OmhhbmRsZVdhc21DYXRjaEFsbChpbnN0cnVjdGlvbi53aWR0aDxXYXNtT3Bjb2Rl
VHJhaXRzPigpKS5jb2RlKCkpOworICAgICAgICAgICAgICAgIHRhcmdldCA9IENvZGVMb2NhdGlv
bkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpoYW5kbGVXYXNtQ2F0Y2hBbGwo
aW5zdHJ1Y3Rpb24ud2lkdGgoKSkuY29kZSgpKTsKIAogICAgICAgICAgICAgaGFuZGxlci5pbml0
aWFsaXplKHVubGlua2VkSGFuZGxlciwgdGFyZ2V0KTsKICAgICAgICAgfQpAQCAtMTQ0LDEzICsx
NDUsMTMgQEAgc3RkOjp0dXBsZTx2b2lkKiwgdm9pZCo+IExMSW50Q2FsbGVlOjpyYW5nZSgpIGNv
bnN0CiAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9OwogfQogCi1JbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0IExMSW50Q2FsbGVlOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCitXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCBMTEludENhbGxlZTo6b3V0T2ZMaW5lSnVtcE9mZnNldChXYXNtSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAgICBBU1NFUlQobV9vdXRPZkxpbmVKdW1w
VGFyZ2V0cy5jb250YWlucyhieXRlY29kZU9mZnNldCkpOwogICAgIHJldHVybiBtX291dE9mTGlu
ZUp1bXBUYXJnZXRzLmdldChieXRlY29kZU9mZnNldCk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9u
KiBMTEludENhbGxlZTo6b3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogcGMp
Citjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIExMSW50Q2FsbGVlOjpvdXRPZkxpbmVKdW1wVGFyZ2V0
KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgaW50IG9mZnNldCA9IGJ5dGVjb2Rl
T2Zmc2V0KHBjKTsKICAgICBpbnQgdGFyZ2V0ID0gb3V0T2ZMaW5lSnVtcE9mZnNldChvZmZzZXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCmluZGV4IGIxODRjNzliMDA5
ODBmNzA5Yjg0MGZiMGM4MTkyMzY4NDRmNjA3MzEuLjFkMzcxYjQzZjBhMDU2N2E0YjQ4Y2JmZjkw
Y2VhZmQxMGMxYWVmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21DYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgK
QEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgbnVtQXJndW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1Bcmd1bWVudHM7IH0KICAgICBjb25zdCBGaXhlZFZlY3RvcjxU
eXBlPiYgY29uc3RhbnRUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRUeXBlczsgfQog
ICAgIGNvbnN0IEZpeGVkVmVjdG9yPHVpbnQ2NF90PiYgY29uc3RhbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9jb25zdGFudHM7IH0KLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gKm1faW5zdHJ1Y3Rpb25zOyB9CisgICAgY29uc3QgV2FzbUlu
c3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0cnVj
dGlvbnM7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdWludDY0X3QgZ2V0Q29uc3RhbnQoVmlydHVh
bFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNbcmVnLnRvQ29uc3RhbnRJ
bmRleCgpXTsgfQogICAgIEFMV0FZU19JTkxJTkUgVHlwZSBnZXRDb25zdGFudFR5cGUoVmlydHVh
bFJlZ2lzdGVyIHJlZykgY29uc3QKQEAgLTI0NSwyMCArMjQ1LDIwIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fY29uc3RhbnRUeXBlc1tyZWcudG9Db25zdGFudEluZGV4KCldOwogICAgIH0K
IAotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIHsg
cmV0dXJuIG1fanVtcFRhcmdldHMuc2l6ZSgpOyB9Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCBsYXN0SnVtcFRhcmdldCgpIHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9Cisg
ICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1wVGFy
Z2V0cygpIHsgcmV0dXJuIG1fanVtcFRhcmdldHMuc2l6ZSgpOyB9CisgICAgdHlwZW5hbWUgV2Fz
bUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBUYXJnZXQoKSB7IHJldHVybiBtX2p1
bXBUYXJnZXRzLmxhc3QoKTsgfQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG91dE9mTGluZUp1
bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0gICAg
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAgIGNvbnN0IFdhc21JbnN0cnVjdGlv
biogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qKTsKKyAgICB0eXBl
bmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KHR5
cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICB0eXBlbmFtZSBXYXNt
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IHR5cGVu
YW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKICAgICB7CiAgICAg
ICAgIHJldHVybiBvdXRPZkxpbmVKdW1wT2Zmc2V0KGluc3RydWN0aW9uLm9mZnNldCgpKTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNl
dChjb25zdCBJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKKyAgICBpbmxpbmUgdHlwZW5hbWUg
V2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgV2FzbUlu
c3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgIHsKICAgICAgICAgY29uc3QgYXV0byogaW5z
dHJ1Y3Rpb25zQmVnaW4gPSBtX2luc3RydWN0aW9ucy0+YXQoMCkucHRyKCk7Ci0gICAgICAgIGNv
bnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1
Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsg
bV9pbnN0cnVjdGlvbnMtPnNpemUoKSk7CisgICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
c0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2FzbUluc3RydWN0aW9uKj4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIG1faW5zdHJ1Y3Rpb25zLT5z
aXplKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0
aW9uc0JlZ2luICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnNFbmQpOwogICAgICAgICBy
ZXR1cm4gcmV0dXJuQWRkcmVzcyAtIGluc3RydWN0aW9uc0JlZ2luOwogICAgIH0KQEAgLTI4Nyw3
ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICB1c2luZyBPdXRPZkxpbmVK
dW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAg
ICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8dHlwZW5hbWUgV2FzbUluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CiAKIHByaXZhdGU6CiAgICAgTExJbnRDYWxsZWUo
RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3ImLCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25z
dCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJik7CkBAIC0zMDEsOSArMzAxLDkgQEAgcHJp
dmF0ZToKICAgICB1aW50MzJfdCBtX251bUFyZ3VtZW50cyB7IDAgfTsKICAgICBGaXhlZFZlY3Rv
cjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7CiAgICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+IG1fY29u
c3RhbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVj
dGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21JbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0
cnVjdGlvbnM7CiAgICAgY29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVs
bHB0ciB9OwotICAgIEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVt
cFRhcmdldHM7CisgICAgRml4ZWRWZWN0b3I8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgRml4ZWRWZWN0b3I8Y29uc3QgU2lnbmF0dXJl
Kj4gbV9zaWduYXR1cmVzOwogICAgIE91dE9mTGluZUp1bXBUYXJnZXRzIG1fb3V0T2ZMaW5lSnVt
cFRhcmdldHM7CiAgICAgTExJbnRUaWVyVXBDb3VudGVyIG1fdGllclVwQ291bnRlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2Rl
QmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4IDQxNzQ5MTNkNjhjYjY1YzgxZTY4MTI3Nzk1ZDMwMmEw
YTg3NmJiMzcuLjljMzI2ZDYyMTYxOTE3ZDc4MTIyOWZkZDExYTkzMDUzODUzZGNjZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9u
Q29kZUJsb2NrR2VuZXJhdG9yLmNwcApAQCAtMzMsMTkgKzMzLDE5IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLXZvaWQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6
OnNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGluc3Ry
dWN0aW9ucykKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OnNldEluc3RydWN0aW9u
cyhzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCiB7
CiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAgICAgbV9pbnN0
cnVjdGlvbnNSYXdQb2ludGVyID0gbV9pbnN0cnVjdGlvbnMtPnJhd1BvaW50ZXIoKTsKIH0KIAot
dm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkT3V0T2ZMaW5lSnVtcFRhcmdldChJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0LCBpbnQgdGFyZ2V0KQordm9p
ZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkT3V0T2ZMaW5lSnVtcFRhcmdldCh0eXBl
bmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwgaW50IHRh
cmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0YXJnZXQpOwogICAgIG1fb3V0T2ZMaW5lSnVt
cFRhcmdldHMuc2V0KGJ5dGVjb2RlT2Zmc2V0LCB0YXJnZXQpOwogfQogCi1JbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0IEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpvdXRPZkxpbmVKdW1wT2Zm
c2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCit0eXBlbmFtZSBX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6
b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBieXRlY29kZU9mZnNldCkKIHsKICAgICBBU1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5j
b250YWlucyhieXRlY29kZU9mZnNldCkpOwogICAgIHJldHVybiBtX291dE9mTGluZUp1bXBUYXJn
ZXRzLmdldChieXRlY29kZU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDdlNGE0
MGJmNDUwODZkZjc3OGEzMzMxMDk1MjFhYmE3ZjczZmM3OWUuLjg1NThiMGU3NmNiZTk5NDgxNDM1
NzNhMGMxZDMwNTkxNzMwYmI4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC04MSw3ICs4
MSw4IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBudW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVy
biBtX251bUFyZ3VtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxUeXBlPiYgY29uc3RhbnRUeXBl
cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRUeXBlczsgfQogICAgIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGNvbnN0YW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9Ci0gICAg
Y29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICpt
X2luc3RydWN0aW9uczsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNvbnN0YW50UmVn
aXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0KKyAgICBjb25zdCBXYXNtSW5z
dHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptX2luc3RydWN0
aW9uczsgfQogCiAgICAgdm9pZCBzZXROdW1WYXJzKHVuc2lnbmVkIG51bVZhcnMpIHsgbV9udW1W
YXJzID0gbnVtVmFyczsgfQogICAgIHZvaWQgc2V0TnVtQ2FsbGVlTG9jYWxzKHVuc2lnbmVkIG51
bUNhbGxlZUxvY2FscykgeyBtX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsgfQpA
QCAtOTMsMjcgKzk0LDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29uc3RhbnRUeXBl
c1tyZWcudG9Db25zdGFudEluZGV4KCldOwogICAgIH0KIAotICAgIHZvaWQgc2V0SW5zdHJ1Y3Rp
b25zKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4pOwotICAgIHZvaWQgYWRkSnVt
cFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGp1bXBUYXJnZXQpIHsgbV9qdW1wVGFy
Z2V0cy5hcHBlbmQoanVtcFRhcmdldCk7IH0KLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IG51bWJlck9mSnVtcFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsgfQot
ICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBUYXJnZXQoKSB7IHJldHVybiBt
X2p1bXBUYXJnZXRzLmxhc3QoKTsgfQorICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6dW5p
cXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+KTsKKyAgICB2b2lkIGFkZEp1bXBUYXJnZXQo
dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQganVtcFRhcmdldCkgeyBtX2p1
bXBUYXJnZXRzLmFwcGVuZChqdW1wVGFyZ2V0KTsgfQorICAgIHR5cGVuYW1lIFdhc21JbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IG51bWJlck9mSnVtcFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBU
YXJnZXRzLnNpemUoKTsgfQorICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IGxhc3RKdW1wVGFyZ2V0KCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAot
ICAgIHZvaWQgYWRkT3V0T2ZMaW5lSnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
LCBpbnQgdGFyZ2V0KTsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1
bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpS
ZWYmIGluc3RydWN0aW9uKQorICAgIHZvaWQgYWRkT3V0T2ZMaW5lSnVtcFRhcmdldCh0eXBlbmFt
ZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7CisgICAgdHlwZW5h
bWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBl
bmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7CisgICAgdHlwZW5hbWUgV2FzbUlu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCB0eXBlbmFt
ZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewogICAgICAg
ICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAg
fQogCi0gICAgaW5saW5lIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCisgICAgaW5saW5lIHR5cGVuYW1lIFdh
c21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IFdhc21JbnN0
cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAgICAgIGNvbnN0IGF1dG8qIGluc3Ry
dWN0aW9uc0JlZ2luID0gbV9pbnN0cnVjdGlvbnMtPmF0KDApLnB0cigpOwotICAgICAgICBjb25z
dCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0
aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIG1f
aW5zdHJ1Y3Rpb25zLT5zaXplKCkpOworICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNF
bmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFdhc21JbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikgKyBtX2luc3RydWN0aW9ucy0+c2l6
ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlv
bnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zRW5kKTsKICAgICAgICAgcmV0
dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsKICAgICB9CiAKLSAgICBIYXNo
TWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50
cnlEYXRhPiYgdGllclVwQ291bnRlcigpIHsgcmV0dXJuIG1fdGllclVwQ291bnRlcjsgfQorICAg
IEhhc2hNYXA8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50VGll
clVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiYgdGllclVwQ291bnRlcigpIHsgcmV0dXJuIG1fdGll
clVwQ291bnRlcjsgfQogCiAgICAgdW5zaWduZWQgYWRkU2lnbmF0dXJlKGNvbnN0IFNpZ25hdHVy
ZSYpOwogCkBAIC0xMjUsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhjZXB0aW9u
SGFuZGxlcihjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyKSB7IG1fZXhjZXB0aW9u
SGFuZGxlcnMuYXBwZW5kKGhhbmRsZXIpOyB9CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgT3V0T2ZM
aW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47
CisgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPHR5cGVuYW1lIFdhc21J
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCiAgICAgdWludDMyX3QgbV9mdW5jdGlv
bkluZGV4OwogCkBAIC0xMzYsMTIgKzEzNywxMiBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1f
bnVtQXJndW1lbnRzIHsgMCB9OwogICAgIFZlY3RvcjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7CiAg
ICAgVmVjdG9yPHVpbnQ2NF90PiBtX2NvbnN0YW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
dHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNt
SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAgIGNvbnN0IHZvaWQqIG1faW5z
dHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51bGxwdHIgfTsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgV2FzbUlu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgVmVjdG9yPGNvbnN0
IFNpZ25hdHVyZSo+IG1fc2lnbmF0dXJlczsKICAgICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBtX291
dE9mTGluZUp1bXBUYXJnZXRzOwotICAgIEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCwgTExJbnRUaWVyVXBDb3VudGVyOjpPU1JFbnRyeURhdGE+IG1fdGllclVwQ291bnRlcjsKKyAg
ICBIYXNoTWFwPHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBMTEludFRp
ZXJVcENvdW50ZXI6Ok9TUkVudHJ5RGF0YT4gbV90aWVyVXBDb3VudGVyOwogICAgIFZlY3RvcjxK
dW1wVGFibGU+IG1fanVtcFRhYmxlczsKICAgICBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4g
bV9leGNlcHRpb25IYW5kbGVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtR2VuZXJhdG9yVHJhaXRzLmgKaW5kZXggNmE4OGJiNGQwYjhhN2FmZjgxZDk4MDcwZGE2
MjdhNTM5Njg2ZWQwMS4uNzA4MjNjODE2OTM0NzU1NTI5YzA4YTY2Yzk3ODY4ZjIyMWIyYzAwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdlbmVyYXRvclRyYWl0
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMu
aApAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgR2VuZXJhdG9yVHJhaXRzIHsKICAgICB1c2luZyBP
cGNvZGVJRCA9IFdhc21PcGNvZGVJRDsKICAgICB1c2luZyBPcE5vcCA9IFdhc21Ob3A7CiAgICAg
dXNpbmcgQ29kZUJsb2NrID0gc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJh
dG9yPjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblR5cGUgPSBXYXNtSW5zdHJ1Y3Rpb247CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBvcGNvZGVGb3JEaXNhYmxpbmdPcHRpbWl6YXRpb25z
ID0gd2FzbV91bnJlYWNoYWJsZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IGI0MGU3MjFmOTc1MzRlMTI0YTU4ZDIy
NGQ2ZGE1YTIzZGNhNzE1NGUuLmUzOThjNmU0MDRlM2JlOTc0MjE3Zjk5NzE4YzY5MWMwMmY5Zjhi
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJh
dG9yLmNwcApAQCAtNDc0LDcgKzQ3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZVBy
ZXZpb3VzQmxvY2tGb3JDYXRjaChDb250cm9sVHlwZSYsIFN0YWNrJik7CiAKICAgICBzdHJ1Y3Qg
U3dpdGNoRW50cnkgewotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldDsK
KyAgICAgICAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0OwogICAgICAgICBp
bnQqIGp1bXBUYXJnZXQ7CiAgICAgfTsKIApAQCAtNTEwLDcgKzUxMCw3IEBAIEV4cGVjdGVkPHN0
ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcj4sIFN0cmluZz4gcGFyc2VB
bmRDb21waWxlQnl0CiB9CiAKIAotdXNpbmcgQnVmZmVyID0gSW5zdHJ1Y3Rpb25TdHJlYW06Oklu
c3RydWN0aW9uQnVmZmVyOwordXNpbmcgQnVmZmVyID0gdHlwZW5hbWUgV2FzbUluc3RydWN0aW9u
U3RyZWFtOjpJbnN0cnVjdGlvbkJ1ZmZlcjsKIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCdWZmZXI+
KiB0aHJlYWRTcGVjaWZpY0J1ZmZlclB0cjsKIAogc3RhdGljIFRocmVhZFNwZWNpZmljPEJ1ZmZl
cj4mIHRocmVhZFNwZWNpZmljQnVmZmVyKCkKQEAgLTEyMjgsNyArMTIyOCw3IEBAIGF1dG8gTExJ
bnRHZW5lcmF0b3I6OmFkZFN3aXRjaChFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIGNvbnN0IFZl
Y3RvcjxDb250cm9sVHlwCiAgICAgV2FzbVN3aXRjaDo6ZW1pdCh0aGlzLCBjb25kaXRpb24sIHRh
YmxlSW5kZXgpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQgb2Zmc2V0ID0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7CisgICAgV2Fz
bUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0ID0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zm
c2V0KCk7CiAKICAgICBhdXRvIGFkZFRhcmdldCA9IFsmXShDb250cm9sVHlwZSYgdGFyZ2V0KSB7
CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGFyZ2V0TGFiZWwgPSB0YXJnZXQudGFyZ2V0TGFiZWxG
b3JCcmFuY2goKTsKQEAgLTE4NTAsMTMgKzE4NTAsMTMgQEAgdm9pZCBHZW5lcmljTGFiZWw8V2Fz
bTo6R2VuZXJhdG9yVHJhaXRzPjo6c2V0TG9jYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFdh
c20KIAogI2RlZmluZSBDQVNFKF9fb3ApIFwKICAgICBjYXNlIF9fb3A6Om9wY29kZUlEOiAgXAot
ICAgICAgICBpbnN0cnVjdGlvbi0+Y2FzdDxfX29wLCBXYXNtT3Bjb2RlVHJhaXRzPigpLT5zZXRU
YXJnZXRMYWJlbChCb3VuZExhYmVsKHRhcmdldCksIFsmXSgpIHsgXAorICAgICAgICBpbnN0cnVj
dGlvbi0+Y2FzdDxfX29wPigpLT5zZXRUYXJnZXRMYWJlbChCb3VuZExhYmVsKHRhcmdldCksIFsm
XSgpIHsgXAogICAgICAgICAgICAgZ2VuZXJhdG9yLm1fY29kZUJsb2NrLT5hZGRPdXRPZkxpbmVK
dW1wVGFyZ2V0KGluc3RydWN0aW9uLm9mZnNldCgpLCB0YXJnZXQpOyBcCiAgICAgICAgICAgICBy
ZXR1cm4gQm91bmRMYWJlbCgpOyBcCiAgICAgICAgIH0pOyBcCiAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEPFdhc21PcGNvZGVUcmFpdHM+KCkp
IHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBD
QVNFKFdhc21KbXApCiAgICAgICAgIENBU0UoV2FzbUp0cnVlKQogICAgICAgICBDQVNFKFdhc21K
ZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRU
aWVyVXBDb3VudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRp
ZXJVcENvdW50ZXIuY3BwCmluZGV4IDA3NWM5YWFiY2Y4YzFiOTZmOWNlMzgwOWNjYjM2MzczYzAy
NWIwZGIuLjZhYzlkNWQ3ZWJiMmJiZDhjZTdjY2RkMWRiNDVjMzlmODY1OTdkZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIu
Y3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNt
IHsKIAotdm9pZCBMTEludFRpZXJVcENvdW50ZXI6OmFkZE9TUkVudHJ5RGF0YUZvckxvb3AoSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQsIE9TUkVudHJ5RGF0YSYmIGRhdGEpCit2b2lk
IExMSW50VGllclVwQ291bnRlcjo6YWRkT1NSRW50cnlEYXRhRm9yTG9vcCh0eXBlbmFtZSBXYXNt
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQsIE9TUkVudHJ5RGF0YSYmIGRhdGEpCiB7
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX29zckVudHJ5RGF0YS5hZGQob2Zmc2V0LCBXVEZNb3Zl
KGRhdGEpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCi1hdXRvIExMSW50VGllclVwQ291bnRlcjo6b3NyRW50cnlEYXRhRm9yTG9vcChJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkgY29uc3QgLT4gY29uc3QgT1NSRW50cnlE
YXRhJgorYXV0byBMTEludFRpZXJVcENvdW50ZXI6Om9zckVudHJ5RGF0YUZvckxvb3AodHlwZW5h
bWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdCAtPiBjb25zdCBP
U1JFbnRyeURhdGEmCiB7CiAgICAgYXV0byBlbnRyeSA9IG1fb3NyRW50cnlEYXRhLmZpbmQob2Zm
c2V0KTsKICAgICBSRUxFQVNFX0FTU0VSVChlbnRyeSAhPSBtX29zckVudHJ5RGF0YS5lbmQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBD
b3VudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3Vu
dGVyLmgKaW5kZXggMTQwYTgyYzhlNGEzMTg3OTNjY2ZiODMyMWMwMjUwMTk2YzgzNGVmYi4uMDI4
YWI3ODE0YzgxMDI0Y2I0NjJhNTQyNjIxZGY4ZjM3ODUyZjQ0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50VGllclVwQ291bnRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IHZhbHVlczsK
ICAgICB9OwogCi0gICAgTExJbnRUaWVyVXBDb3VudGVyKEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCwgT1NSRW50cnlEYXRhPiYmIG9zckVudHJ5RGF0YSkKKyAgICBMTEludFRpZXJV
cENvdW50ZXIoSGFzaE1hcDx0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
T1NSRW50cnlEYXRhPiYmIG9zckVudHJ5RGF0YSkKICAgICAgICAgOiBtX29zckVudHJ5RGF0YShX
VEZNb3ZlKG9zckVudHJ5RGF0YSkpCiAgICAgewogICAgICAgICBvcHRpbWl6ZUFmdGVyV2FybVVw
KCk7CkBAIC03NiwxNCArNzYsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgc2V0TmV3VGhyZXNo
b2xkKE9wdGlvbnM6OnRocmVzaG9sZEZvck9NR09wdGltaXplU29vbigpKTsKICAgICB9CiAKLSAg
ICB2b2lkIGFkZE9TUkVudHJ5RGF0YUZvckxvb3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
T1NSRW50cnlEYXRhJiYpOworICAgIHZvaWQgYWRkT1NSRW50cnlEYXRhRm9yTG9vcCh0eXBlbmFt
ZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhJiYpOwogCi0gICAg
Y29uc3QgT1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGFGb3JMb29wKEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQpIGNvbnN0OworICAgIGNvbnN0IE9TUkVudHJ5RGF0YSYgb3NyRW50cnlEYXRhRm9y
TG9vcCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Q7CiAKICAg
ICBMb2NrIG1fbG9jazsKICAgICBDb21waWxhdGlvblN0YXR1cyBtX2NvbXBpbGF0aW9uU3RhdHVz
IHsgQ29tcGlsYXRpb25TdGF0dXM6Ok5vdENvbXBpbGVkIH07CiAgICAgQ29tcGlsYXRpb25TdGF0
dXMgbV9sb29wQ29tcGlsYXRpb25TdGF0dXMgeyBDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGls
ZWQgfTsKLSAgICBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0
YT4gbV9vc3JFbnRyeURhdGE7CisgICAgSGFzaE1hcDx0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhPiBtX29zckVudHJ5RGF0YTsKIH07CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
bG93UGF0aHMuY3BwCmluZGV4IGNmMjdmZWEzMjkwZDMwODBjMDJmNDJiYTU5NmVjMjhiMmY4OTU0
ZGIuLjJhODY3ZDZjNzNmZGVmM2U5MTg3MDZhM2YwNzJjMGQ1ODI5OTNjZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC0yODksMTMgKzI4OSwx
MyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogICAgIGlmICghT3B0aW9uczo6dHJhY2VM
TEludEV4ZWN1dGlvbigpKQogICAgICAgICBXQVNNX0VORF9JTVBMKCk7CiAKLSAgICBXYXNtT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBwYy0+b3Bjb2RlSUQ8V2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBX
YXNtT3Bjb2RlSUQgb3Bjb2RlSUQgPSBwYy0+b3Bjb2RlSUQoKTsKICAgICBkYXRhTG9nRigiPCVw
PiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAlcywgcGMgPSAlcFxuIiwKICAgICAgICAgJlRo
cmVhZDo6Y3VycmVudCgpLAogICAgICAgICBDQUxMRUUoKSwKICAgICAgICAgY2FsbEZyYW1lLAog
ICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oQ0FMTEVFKCktPmJ5dGVjb2RlT2Zmc2V0KHBj
KSksCi0gICAgICAgIHBjLT5uYW1lPFdhc21PcGNvZGVUcmFpdHM+KCksCisgICAgICAgIHBjLT5u
YW1lKCksCiAgICAgICAgIHBjKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gd2FzbV9lbnRlcikgewog
ICAgICAgICBkYXRhTG9nRigiRnJhbWUgd2lsbCBldmVudHVhbGx5IHJldHVybiB0byAlcFxuIiwg
Y2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCkpOwpAQCAtMzE4LDEzICszMTgsMTMgQEAgV0FT
TV9TTE9XX1BBVEhfREVDTChvdXRfb2ZfbGluZV9qdW1wX3RhcmdldCkKIAogV0FTTV9TTE9XX1BB
VEhfREVDTChyZWZfZnVuYykKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21S
ZWZGdW5jLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbVJlZkZ1bmM+KCk7CiAgICAgV0FTTV9SRVRVUk4oV2FzbTo6b3BlcmF0aW9uV2FzbVJl
ZkZ1bmMoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCkpOwogfQogCiBXQVNN
X1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dldCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21UYWJsZUdldCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21UYWJsZUdldD4oKTsKICAgICBpbnQzMl90IGluZGV4ID0gUkVBRChp
bnN0cnVjdGlvbi5tX2luZGV4KS51bmJveGVkSW50MzIoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBy
ZXN1bHQgPSBXYXNtOjpvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50KGluc3RhbmNlLCBpbnN0
cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluZGV4KTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTMzNCw3
ICszMzQsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dldCkKIAogV0FTTV9TTE9XX1BB
VEhfREVDTCh0YWJsZV9zZXQpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNt
VGFibGVTZXQsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBj
LT5hczxXYXNtVGFibGVTZXQ+KCk7CiAgICAgdWludDMyX3QgaW5kZXggPSBSRUFEKGluc3RydWN0
aW9uLm1faW5kZXgpLnVuYm94ZWRVSW50MzIoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSA9
IFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1ZSkuZW5jb2RlZEpTVmFsdWUoKTsKICAgICBpZiAoIVdh
c206Om9wZXJhdGlvblNldFdhc21UYWJsZUVsZW1lbnQoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1f
dGFibGVJbmRleCwgaW5kZXgsIHZhbHVlKSkKQEAgLTM0NCw3ICszNDQsNyBAQCBXQVNNX1NMT1df
UEFUSF9ERUNMKHRhYmxlX3NldCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9pbml0KQog
ewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlSW5pdCwgV2FzbU9wY29k
ZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUluaXQ+
KCk7CiAgICAgdWludDMyX3QgZHN0T2Zmc2V0ID0gUkVBRChpbnN0cnVjdGlvbi5tX2RzdE9mZnNl
dCkudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90IHNyY09mZnNldCA9IFJFQUQoaW5zdHJ1
Y3Rpb24ubV9zcmNPZmZzZXQpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBsZW5ndGgg
PSBSRUFEKGluc3RydWN0aW9uLm1fbGVuZ3RoKS51bmJveGVkVUludDMyKCk7CkBAIC0zNTcsMjAg
KzM1NywyMCBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKGVsZW1fZHJvcCkKIHsKICAgICBVTlVTRURf
UEFSQU0oY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUVs
ZW1Ecm9wLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbUVsZW1Ecm9wPigpOwogICAgIFdhc206Om9wZXJhdGlvbldhc21FbGVtRHJvcChpbnN0
YW5jZSwgaW5zdHJ1Y3Rpb24ubV9lbGVtZW50SW5kZXgpOwogICAgIFdBU01fRU5EKCk7CiB9CiAK
IFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfc2l6ZSkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9u
ID0gcGMtPmFzPFdhc21UYWJsZVNpemUsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBp
bnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVTaXplPigpOwogICAgIFdBU01fUkVUVVJOKFdh
c206Om9wZXJhdGlvbkdldFdhc21UYWJsZVNpemUoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fdGFi
bGVJbmRleCkpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2ZpbGwpCiB7Ci0gICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVGaWxsLCBXYXNtT3Bjb2RlVHJhaXRz
PigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlRmlsbD4oKTsKICAg
ICB1aW50MzJfdCBvZmZzZXQgPSBSRUFEKGluc3RydWN0aW9uLm1fb2Zmc2V0KS51bmJveGVkVUlu
dDMyKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUgZmlsbCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9maWxs
KS5lbmNvZGVkSlNWYWx1ZSgpOwogICAgIHVpbnQzMl90IHNpemUgPSBSRUFEKGluc3RydWN0aW9u
Lm1fc2l6ZSkudW5ib3hlZFVJbnQzMigpOwpAQCAtMzgxLDcgKzM4MSw3IEBAIFdBU01fU0xPV19Q
QVRIX0RFQ0wodGFibGVfZmlsbCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9jb3B5KQog
ewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlQ29weSwgV2FzbU9wY29k
ZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUNvcHk+
KCk7CiAgICAgaW50MzJfdCBkc3RPZmZzZXQgPSBSRUFEKGluc3RydWN0aW9uLm1fZHN0T2Zmc2V0
KS51bmJveGVkSW50MzIoKTsKICAgICBpbnQzMl90IHNyY09mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rp
b24ubV9zcmNPZmZzZXQpLnVuYm94ZWRJbnQzMigpOwogICAgIGludDMyX3QgbGVuZ3RoID0gUkVB
RChpbnN0cnVjdGlvbi5tX2xlbmd0aCkudW5ib3hlZEludDMyKCk7CkBAIC0zOTIsNyArMzkyLDcg
QEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9jb3B5KQogCiBXQVNNX1NMT1dfUEFUSF9ERUNM
KHRhYmxlX2dyb3cpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVH
cm93LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbVRhYmxlR3Jvdz4oKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBmaWxsID0gUkVBRChpbnN0cnVj
dGlvbi5tX2ZpbGwpLmVuY29kZWRKU1ZhbHVlKCk7CiAgICAgdWludDMyX3Qgc2l6ZSA9IFJFQUQo
aW5zdHJ1Y3Rpb24ubV9zaXplKS51bmJveGVkVUludDMyKCk7CiAgICAgV0FTTV9SRVRVUk4oV2Fz
bTo6b3BlcmF0aW9uV2FzbVRhYmxlR3JvdyhpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV90YWJsZUlu
ZGV4LCBmaWxsLCBzaXplKSk7CkBAIC00MDAsMTQgKzQwMCwxNCBAQCBXQVNNX1NMT1dfUEFUSF9E
RUNMKHRhYmxlX2dyb3cpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0woZ3Jvd19tZW1vcnkpCiB7Ci0g
ICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtR3Jvd01lbW9yeSwgV2FzbU9wY29kZVRy
YWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21Hcm93TWVtb3J5Pigp
OwogICAgIGludDMyX3QgZGVsdGEgPSBSRUFEKGluc3RydWN0aW9uLm1fZGVsdGEpLnVuYm94ZWRJ
bnQzMigpOwogICAgIFdBU01fUkVUVVJOKFdhc206Om9wZXJhdGlvbkdyb3dNZW1vcnkoY2FsbEZy
YW1lLCBpbnN0YW5jZSwgZGVsdGEpKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlf
ZmlsbCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlGaWxsLCBX
YXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1l
bW9yeUZpbGw+KCk7CiAgICAgdWludDMyX3QgZHN0QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24u
bV9kc3RBZGRyZXNzKS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3QgdGFyZ2V0VmFsdWUg
PSBSRUFEKGluc3RydWN0aW9uLm1fdGFyZ2V0VmFsdWUpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1
aW50MzJfdCBjb3VudCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9jb3VudCkudW5ib3hlZFVJbnQzMigp
OwpAQCAtNDE4LDcgKzQxOCw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2ZpbGwpCiAK
IFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2NvcHkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtTWVtb3J5Q29weSwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRv
IGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlDb3B5PigpOwogICAgIHVpbnQzMl90IGRz
dEFkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fZHN0QWRkcmVzcykudW5ib3hlZFVJbnQzMigp
OwogICAgIHVpbnQzMl90IHNyY0FkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fc3JjQWRkcmVz
cykudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90IGNvdW50ID0gUkVBRChpbnN0cnVjdGlv
bi5tX2NvdW50KS51bmJveGVkVUludDMyKCk7CkBAIC00MjksNyArNDI5LDcgQEAgV0FTTV9TTE9X
X1BBVEhfREVDTChtZW1vcnlfY29weSkKIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfaW5p
dCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlJbml0LCBXYXNt
T3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9y
eUluaXQ+KCk7CiAgICAgdWludDMyX3QgZHN0QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9k
c3RBZGRyZXNzKS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3Qgc3JjQWRkcmVzcyA9IFJF
QUQoaW5zdHJ1Y3Rpb24ubV9zcmNBZGRyZXNzKS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMy
X3QgbGVuZ3RoID0gUkVBRChpbnN0cnVjdGlvbi5tX2xlbmd0aCkudW5ib3hlZFVJbnQzMigpOwpA
QCAtNDQyLDcgKzQ0Miw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0woZGF0YV9kcm9wKQogewogICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtRGF0YURyb3AsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtRGF0YURyb3A+KCk7CiAgICAgV2FzbTo6b3BlcmF0aW9uV2FzbURhdGFE
cm9wKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2RhdGFTZWdtZW50SW5kZXgpOwogICAgIFdBU01f
RU5EKCk7CiB9CkBAIC00NzQsNyArNDc0LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsKQog
ewogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtQ2FsbCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21DYWxsPigpOwogICAgIHJldHVybiBkb1dhc21DYWxsKGluc3RhbmNl
LCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOwogfQogCkBAIC00ODIsNyArNDgyLDcgQEAg
V0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX25vX3RscykKIHsKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxOb1Rscywg
V2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21D
YWxsTm9UbHM+KCk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGwoaW5zdGFuY2UsIGluc3RydWN0aW9u
Lm1fZnVuY3Rpb25JbmRleCk7CiB9CiAKQEAgLTUxMSwxNCArNTExLDE0IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgZG9XYXNtQ2FsbEluZGlyZWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBX
YXNtOjpJbnN0YW5jCiAKIFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9pbmRpcmVjdCkKIHsKLSAg
ICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsSW5kaXJlY3QsIFdhc21PcGNvZGVU
cmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbEluZGlyZWN0
PigpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1fZnVu
Y3Rpb25JbmRleCkudW5ib3hlZEludDMyKCk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVj
dChjYWxsRnJhbWUsIGluc3RhbmNlLCBmdW5jdGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxl
SW5kZXgsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOwogfQogCiBXQVNNX1NMT1dfUEFU
SF9ERUNMKGNhbGxfaW5kaXJlY3Rfbm9fdGxzKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBw
Yy0+YXM8V2FzbUNhbGxJbmRpcmVjdE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxJbmRpcmVjdE5vVGxzPigpOwogICAgIHVu
c2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCku
dW5ib3hlZEludDMyKCk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVjdChjYWxsRnJhbWUs
IGluc3RhbmNlLCBmdW5jdGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluc3Ry
dWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOwogfQpAQCAtNTQ4LDM1ICs1NDgsMzUgQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBkb1dhc21DYWxsUmVmKENhbGxGcmFtZSogY2FsbEZyYW1lLCBX
YXNtOjpJbnN0YW5jZSogY2EKIAogV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZikKIHsKLSAg
ICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsUmVmLCBXYXNtT3Bjb2RlVHJhaXRz
PigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWY+KCk7CiAgICAg
SlNWYWx1ZSByZWZlcmVuY2UgPSBKU1ZhbHVlOjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5tX2Z1
bmN0aW9uUmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gZG9XYXNtQ2Fs
bFJlZihjYWxsRnJhbWUsIGluc3RhbmNlLCByZWZlcmVuY2UsIGluc3RydWN0aW9uLm1fc2lnbmF0
dXJlSW5kZXgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfcmVmX25vX3RscykKIHsK
LSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsUmVmTm9UbHMsIFdhc21PcGNv
ZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJlZk5v
VGxzPigpOwogICAgIEpTVmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5z
dHJ1Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0
dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlLCBpbnN0cnVj
dGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xv
YmFsX3JlZikKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxS
ZWYsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtU2V0R2xvYmFsUmVmPigpOwogICAgIGluc3RhbmNlLT5zZXRHbG9iYWwoaW5zdHJ1Y3Rpb24u
bV9nbG9iYWxJbmRleCwgUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVlKS5qc1ZhbHVlKCkpOwogICAg
IFdBU01fRU5EX0lNUEwoKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3Jl
Zl9wb3J0YWJsZV9iaW5kaW5nKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2Fz
bVNldEdsb2JhbFJlZlBvcnRhYmxlQmluZGluZywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBh
dXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWZQb3J0YWJsZUJpbmRpbmc+
KCk7CiAgICAgaW5zdGFuY2UtPnNldEdsb2JhbChpbnN0cnVjdGlvbi5tX2dsb2JhbEluZGV4LCBS
RUFEKGluc3RydWN0aW9uLm1fdmFsdWUpLmpzVmFsdWUoKSk7CiAgICAgV0FTTV9FTkRfSU1QTCgp
OwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9hdG9taWNfd2FpdDMyKQogewotICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUF0b21pY1dhaXQzMiwgV2FzbU9w
Y29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlB
dG9taWNXYWl0MzI+KCk7CiAgICAgdW5zaWduZWQgYmFzZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9w
b2ludGVyKS51bmJveGVkSW50MzIoKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBpbnN0cnVjdGlv
bi5tX29mZnNldDsKICAgICB1aW50MzJfdCB2YWx1ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1
ZSkudW5ib3hlZEludDMyKCk7CkBAIC01ODksNyArNTg5LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVD
TChtZW1vcnlfYXRvbWljX3dhaXQzMikKIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfYXRv
bWljX3dhaXQ2NCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlB
dG9taWNXYWl0NjQsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtTWVtb3J5QXRvbWljV2FpdDY0PigpOwogICAgIHVuc2lnbmVkIGJhc2UgPSBS
RUFEKGluc3RydWN0aW9uLm1fcG9pbnRlcikudW5ib3hlZEludDMyKCk7CiAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gaW5zdHJ1Y3Rpb24ubV9vZmZzZXQ7CiAgICAgdWludDY0X3QgdmFsdWUgPSBSRUFE
KGluc3RydWN0aW9uLm1fdmFsdWUpLnVuYm94ZWRJbnQ2NCgpOwpAQCAtNjAyLDcgKzYwMiw3IEBA
IFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2F0b21pY193YWl0NjQpCiAKIFdBU01fU0xPV19Q
QVRIX0RFQ0wobWVtb3J5X2F0b21pY19ub3RpZnkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtTWVtb3J5QXRvbWljTm90aWZ5LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUF0b21pY05vdGlmeT4oKTsKICAg
ICB1bnNpZ25lZCBiYXNlID0gUkVBRChpbnN0cnVjdGlvbi5tX3BvaW50ZXIpLnVuYm94ZWRJbnQz
MigpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IGluc3RydWN0aW9uLm1fb2Zmc2V0OwogICAgIGlu
dDMyX3QgY291bnQgPSBSRUFEKGluc3RydWN0aW9uLm1fY291bnQpLnVuYm94ZWRJbnQzMigpOwpA
QCAtNjIxLDcgKzYyMSw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wodGhyb3cpCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGhyb3cs
IFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNt
VGhyb3c+KCk7CiAgICAgY29uc3QgV2FzbTo6VGFnJiB0YWcgPSBpbnN0YW5jZS0+dGFnKGluc3Ry
dWN0aW9uLm1fZXhjZXB0aW9uSW5kZXgpOwogCiAgICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+IHZh
bHVlcyh0YWcucGFyYW1ldGVyQ291bnQoKSk7CkBAIC02NTUsNyArNjU1LDcgQEAgV0FTTV9TTE9X
X1BBVEhfREVDTChyZXRocm93KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJldGhyb3csIFdhc21PcGNvZGVUcmFpdHM+KCk7Cisg
ICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0aHJvdz4oKTsKICAgICBKU1ZhbHVl
IGV4Y2VwdGlvbiA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9leGNlcHRpb24pLmpzVmFsdWUoKTsKICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CiAK
QEAgLTY5OSwxNCArNjk5LDE0IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wocmV0cmlldmVfYW5kX2Ns
ZWFyX2V4Y2VwdGlvbikKICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGluc3RydWN0aW9u
Lm1fZXhjZXB0aW9uKSA9IHRocm93blZhbHVlOwogICAgIH07CiAKLSAgICBpZiAocGMtPmlzPFdh
c21DYXRjaCwgV2FzbU9wY29kZVRyYWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFz
PFdhc21DYXRjaCwgV2FzbU9wY29kZVRyYWl0cz4oKSk7Ci0gICAgZWxzZSBpZiAocGMtPmlzPFdh
c21DYXRjaEFsbCwgV2FzbU9wY29kZVRyYWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2hBbGwo
cGMtPmFzPFdhc21DYXRjaEFsbCwgV2FzbU9wY29kZVRyYWl0cz4oKSk7Ci0gICAgZWxzZSBpZiAo
cGMtPmlzPFdhc21DYXRjaE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpKQotICAgICAgICBoYW5k
bGVDYXRjaChwYy0+YXM8V2FzbUNhdGNoTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCkpOwotICAg
IGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hBbGxOb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKSkK
LSAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbE5vVGxzLCBXYXNtT3Bj
b2RlVHJhaXRzPigpKTsKKyAgICBpZiAocGMtPmlzPFdhc21DYXRjaD4oKSkKKyAgICAgICAgaGFu
ZGxlQ2F0Y2gocGMtPmFzPFdhc21DYXRjaD4oKSk7CisgICAgZWxzZSBpZiAocGMtPmlzPFdhc21D
YXRjaEFsbD4oKSkKKyAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbD4o
KSk7CisgICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaE5vVGxzPigpKQorICAgICAgICBoYW5k
bGVDYXRjaChwYy0+YXM8V2FzbUNhdGNoTm9UbHM+KCkpOworICAgIGVsc2UgaWYgKHBjLT5pczxX
YXNtQ2F0Y2hBbGxOb1Rscz4oKSkKKyAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21D
YXRjaEFsbE5vVGxzPigpKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAKQEAgLTcxNywxOSArNzE3LDE5IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wocmV0
cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbikKICAgICBXQVNNX1JFVFVSTl9UV08ocGMsIHBheWxv
YWQpOwogfQogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90
aHJvd19leGNlcHRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBw
YywgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlIGV4Y2VwdGlv
blR5cGUpCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90aHJv
d19leGNlcHRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IFdhc21JbnN0cnVjdGlvbiog
cGMsIFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSBleGNlcHRp
b25UeXBlKQogewogICAgIFVOVVNFRF9QQVJBTShwYyk7CiAgICAgV0FTTV9SRVRVUk5fVFdPKG9w
ZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKGNhbGxGcmFtZSwgZXhjZXB0aW9uVHlwZSwgaW5zdGFu
Y2UpLCBudWxscHRyKTsKIH0KIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19w
YXRoX3dhc21fcG9wY291bnQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50MzJfdCB4KQorZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnQoY29uc3Qg
V2FzbUluc3RydWN0aW9uKiBwYywgdWludDMyX3QgeCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihfX2J1aWx0aW5fcG9wY291
bnQoeCkpKTsKICAgICBXQVNNX1JFVFVSTl9UV08ocGMsIHJlc3VsdCk7CiB9CiAKLWV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCB4KQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
c2xvd19wYXRoX3dhc21fcG9wY291bnRsbChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCB1aW50
NjRfdCB4KQogewogICAgIHZvaWQqIHJlc3VsdCA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KF9fYnVpbHRpbl9wb3Bjb3VudGxsKHgpKSk7CiAgICAgV0FTTV9SRVRV
Uk5fVFdPKHBjLCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQ
YXRocy5oCmluZGV4IGI2NGNlN2NkZTQxYWFhMDY4OTdlOGZmZmVkODJhOGQwNjQzMmRmZDAuLjQ2
MDllMzZiMDM5MjRkMTBlYTAyNzQ1NjEwZjBmMmZlNGU4MzFmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKQEAgLTM0LDkgKzM0LDEyIEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0
IFByb3RvQ2FsbEZyYW1lOwogCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVj
dGlvbjsKK3N0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzOwordXNpbmcgV2FzbUluc3RydWN0aW9uID0g
QmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVUcmFpdHM+OworCiBuYW1lc3BhY2UgV2FzbSB7CiBj
bGFzcyBJbnN0YW5jZTsKIH0KQEAgLTQ0LDcgKzQ3LDcgQEAgY2xhc3MgSW5zdGFuY2U7CiBuYW1l
c3BhY2UgTExJbnQgewogCiAjZGVmaW5lIFdBU01fU0xPV19QQVRIX0RFQ0wobmFtZSkgXAotICAg
IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtXyMjbmFtZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSog
aW5zdGFuY2UpCisgICAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dh
c21fIyNuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBj
LCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UpCiAKICNkZWZpbmUgV0FTTV9TTE9XX1BBVEhfSElE
REVOX0RFQ0wobmFtZSkgXAogICAgIFdBU01fU0xPV19QQVRIX0RFQ0wobmFtZSkgUkVGRVJFTkNF
RF9GUk9NX0FTTSBXVEZfSU5URVJOQUwKQEAgLTg3LDkgKzkwLDkgQEAgV0FTTV9TTE9XX1BBVEhf
SElEREVOX0RFQ0wodGhyb3cpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0aHJvdyk7
CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChyZXRyaWV2ZV9hbmRfY2xlYXJfZXhjZXB0aW9u
KTsKIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fdGhyb3df
ZXhjZXB0aW9uKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiwgV2FzbTo6SW5zdGFuY2Uq
IGluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9J
TlRFUk5BTDsKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3Bv
cGNvdW50KGNvbnN0IEluc3RydWN0aW9uKiBwYywgdWludDMyX3QpIFJFRkVSRU5DRURfRlJPTV9B
U00gV1RGX0lOVEVSTkFMOwotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRo
X3dhc21fcG9wY291bnRsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIHVpbnQ2NF90KSBSRUZFUkVO
Q0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IHNsb3dfcGF0aF93YXNtX3Rocm93X2V4Y2VwdGlvbihDYWxsRnJhbWUqLCBjb25zdCBXYXNtSW5z
dHJ1Y3Rpb24qLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUp
IFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOworZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnQoY29uc3QgV2FzbUluc3RydWN0aW9uKiBw
YywgdWludDMyX3QpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOworZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnRsbChjb25zdCBXYXNt
SW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJO
QUw7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453625</attachid>
            <date>2022-03-02 09:17:42 -0800</date>
            <delta_ts>2022-03-02 10:23:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237347-20220302091741.patch</filename>
            <type>text/plain</type>
            <size>374255</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDBlZmU2YjYzNDkzM2Q3NzkxM2Y3MzU5MmNmNWY5MjJiY2NhYWJkLi44MDYzY2ZmNTdhMzE3ODRm
YjAyM2M3MDBiOGJhZDhjNzMwNzM3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NjIgQEAKKzIwMjItMDMtMDEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE9wY29kZVRyYWl0cyB0byBzdXBwb3J0IHRo
ZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgMi1ieXRlIFdBU00gb3Bjb2RlIGlkcyBpbiBieXRlY29k
ZSBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzczNDcKKworICAgICAgICBUaGUgbnVtYmVyIG9mIFdBU00gb3Bjb2RlcyB3aWxsIGluY3Jl
YXNlIGJleW9uZCAyNTUgd2hlbiBXQVNNIFNJTUQgaXMgaW1wbGVtZW50ZWQsIGFuZCBzbyB0aGlz
IHBhdGNoCisgICAgICAgIGNoYW5nZXMgT3Bjb2RlVHJhaXRzIHRvIGFsbG93IGZvciB0aGUgcG9z
c2liaWxpdHkgb2YgaGF2aW5nIHR3by1ieXRlIFdBU00gb3Bjb2RlcyB3aXRob3V0IHJlZ3Jlc3Np
bmcKKyAgICAgICAgSlMuIFdlIGhhdmUgdG8gdGhyZWFkIHRoZXNlIE9wY29kZVRyYWl0cyBldmVy
eXdoZXJlIHRoYXQgdGhleSBhcmUgdXNlZCBzbyB0aGF0IGNvZGUgY2FuIHJlYWQgdGhlCisgICAg
ICAgIGNvcnJlY3QgdmFsdWUgd2hlbiBkZWNvZGluZyBhbiBpbnN0cnVjdGlvbiBzdHJlYW0uIFRo
aXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIHRoZSBzaXplIG9mIFdBU00gb3Bjb2RlcworICAgICAg
ICB5ZXQsIGFsdGhvdWdoIEkgaGF2ZSB0ZXN0ZWQgdGhhdCB0aGUgdGVzdCBzdWl0ZSBzdGlsbCBw
YXNzZXMgaWYgd2UgZG8gaW5jcmVhc2UgdGhlIG9wY29kZSBzaXplLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OkJ5dGVjb2RlQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjphZGRMZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2lj
QmxvY2s8T3Bjb2RlVHJhaXRzPjo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjppc0p1bXBU
YXJnZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6
Y29tcHV0ZUltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVU
cmFpdHM+Ojpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRl
Y29kZUJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmFkZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25B
bmRPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVh
bVR5cGU+OjpkdW1wVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
Om91dE9mTGluZUp1bXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAg
IChKU0M6Oldhc206OkJ5dGVjb2RlRHVtcGVyOjpyZWdpc3Rlck5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCBjb25zdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppbnN0cnVjdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4p
OgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3Jb
XSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmR1bXApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBoKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRl
TG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEluc3Ry
dWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5M
aXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjpyZXBsYWNlQnl0ZWNvZGVXaXRoRnJhZ21lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjphZGp1c3RBYnNvbHV0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdEp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFu
ZENvbHVtbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdV
cGRhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5h
cnlBcml0aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0
aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlv
bkF0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAo
SlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om9wY29kZUlEIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
Ojppc1dpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aXNXaWRl
MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNNZXRhZGF0YSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om51bWJlck9mQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OnNpemVTaGlmdEFtb3VudCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURXaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6b3Bjb2RlSURCeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0
cnVjdGlvbjo6aXMgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmNhc3QpOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OmNhc3QgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rp
b246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHA6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5CeXRlcyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaDoKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6Om9wZXJhdG9yLT4gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6QmFzZVJlZjo6cHRyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6OnVud3JhcCBjb25zdCk6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6cHRyKToK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6OnB0ciBjb25zdCk6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjp1bndyYXApOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6dW53cmFwIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Oml0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVy
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OnN3YXApOgorICAgICAgICAoSlND
OjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNPcGNvZGVTaGFwZSk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlU2l6ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6Cisg
ICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6anVtcFRh
cmdldEZvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6ZXh0cmFjdFN0b3JlZEp1bXBUYXJn
ZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjp1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0
c0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OmR1bXBMaW5lQ29sdW1uRW50cnkpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
bnN0cnVjdGlvbkF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6
b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6d2l0aFdyaXRlcik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjpyZWNvcmRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRlT3Bjb2RlMTYp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6YWxpZ25XaWRl
T3Bjb2RlMzIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
Lmg6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAg
ICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMpOgorICAgICAgICAo
SlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVW
YXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJl
Y3Vyc2l2ZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0
eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJl
dHVyblBDKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
b21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToK
KyAgICAgICAgKiBnZW5lcmF0b3IvQXJndW1lbnQucmI6CisgICAgICAgICogZ2VuZXJhdG9yL0RT
TC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvT3Bjb2RlLnJiOgorICAgICAgICAqIGludGVycHJl
dGVyL0Fic3RyYWN0UEMuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmN1cnJlbnRWUEMgY29uc3QpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2F0Y2hJbmZvOjpDYXRjaEluZm8pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGht
ZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbGVzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pn
cmVhdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pncmVhdGVyZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5sZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2pubGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZ3JlYXRlcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3Bfamxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2psZXNz
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9qbmxlc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pubGVz
c2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2JlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JlbG93ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamJlbG93KToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2piZWxvd2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Bvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcG93KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0
aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRub3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdHhvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Vyc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9z
dWIpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jYWxsX2V2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2FsbF92
YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1bWVQb2ludCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpJVDo6anVtcFRhcmdldCk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW92KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbXApOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfZW1wdHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191
bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X2NlbGxfd2l0aF90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3NldF9mdW5jdGlvbl9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2plcV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5l
cV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9z
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5zdHJpY3Rl
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmlj
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zd2l0Y2hfY2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5n
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRl
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVidWcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19yZWdleHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Fz
eW5jX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhf
c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1l
bnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2plcSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9zdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pz
dHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcSk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
dHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGly
ZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRl
X2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpMTEludDo6d2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgor
ICAgICAgICAoSlNDOjpMTEludDo6d2FzbVJldHVyblRvVGhyb3cpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50
R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTEludDo6ZGlzcGF0
Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkNMb29w
UmVnaXN0ZXI6Om9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKToKKyAgICAgICAgKEpTQzo6
Q0xvb3A6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpDTG9vcFJlZ2lzdGVyOjpvcGVyYXRvciBj
b25zdCBJbnN0cnVjdGlvbiopOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZEluc3RydWN0aW9uU3RyZWFt
OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFz
dEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6Cisg
ICAgICAgIChKU0M6OlZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAo
SlNDOjpWTTo6cmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRDYWxsZWU6OkxMSW50Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRDYWxsZWU6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTElu
dENhbGxlZTo6b3V0T2ZMaW5lSnVtcFRhcmdldCk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVl
Lmg6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6c2V0SW5zdHJ1
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6
OmFkZE91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgICogd2FzbS9X
YXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVu
Y3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OmNvbnN0YW50UmVnaXN0ZXJzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6Omluc3RydWN0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjph
ZGRKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5l
cmF0b3I6Om51bWJlck9mSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlv
bkNvZGVCbG9ja0dlbmVyYXRvcjo6bGFzdEp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNt
OjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAg
ICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpieXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjp0aWVy
VXBDb3VudGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50R2VuZXJhdG9yOjphZGRTd2l0Y2gpOgorICAgICAgICAoSlNDOjpHZW5lcmljTGFiZWw8V2Fz
bTo6R2VuZXJhdG9yVHJhaXRzPjo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIHdhc20vV2FzbUxM
SW50VGllclVwQ291bnRlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50VGllclVwQ291
bnRlcjo6YWRkT1NSRW50cnlEYXRhRm9yTG9vcCk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50
VGllclVwQ291bnRlcjo6b3NyRW50cnlEYXRhRm9yTG9vcCBjb25zdCBjb25zdCk6CisgICAgICAg
ICogd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmg6CisgICAgICAgIChKU0M6Oldhc206OkxM
SW50VGllclVwQ291bnRlcjo6TExJbnRUaWVyVXBDb3VudGVyKToKKyAgICAgICAgKiB3YXNtL1dh
c21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6V0FTTV9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24p
OgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fcG9wY291bnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fcG9wY291bnRsbCk6CisgICAgICAgICogd2Fz
bS9XYXNtU2xvd1BhdGhzLmg6CisKIDIwMjItMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQXBwbGVXaW5dIFN0YXJ0IHVzaW5nIFZp
c3VhbCBTdHVkaW8gMjAyMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3NWE0N2JjZTVjMTA0ZWQ3OWQ2NzM5ZTk4
ZGVhNDhhZGI0ZWQxNjIxLi5iODIyYmI0ZWY4ZjE2ZjNhZDdhOWJmNGI3ZTk2Y2MxODdmNzcxMjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcApAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5F
X0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihCeXRlY29kZUJhc2ljQmxvY2spOwogCi1C
eXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayhjb25zdCBJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgYmxvY2tJbmRleCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK0J5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpC
eXRlY29kZUJhc2ljQmxvY2soY29uc3QgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpS
ZWYmIGluc3RydWN0aW9uLCB1bnNpZ25lZCBibG9ja0luZGV4KQogICAgIDogbV9sZWFkZXJPZmZz
ZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpCiAgICAgLCBtX3RvdGFsTGVuZ3RoKDApCiAgICAgLCBt
X2luZGV4KGJsb2NrSW5kZXgpCkBAIC00MiwyNiArNDMsMzAgQEAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjpCeXRlY29kZUJhc2ljQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1
Y3Rpb24KICAgICBhZGRMZW5ndGgoaW5zdHJ1Y3Rpb24tPnNpemUoKSk7CiB9CiAKLUJ5dGVjb2Rl
QmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jazo6U3BlY2lh
bEJsb2NrVHlwZSBibG9ja1R5cGUsIHVuc2lnbmVkIGJsb2NrSW5kZXgpCi0gICAgOiBtX2xlYWRl
ck9mZnNldChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6
IFVJTlRfTUFYKQotICAgICwgbV90b3RhbExlbmd0aChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6IFVJTlRfTUFYKQordGVtcGxhdGU8dHlwZW5hbWUgT3Bj
b2RlVHJhaXRzPgorQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkJ5dGVjb2RlQmFz
aWNCbG9jayh0eXBlbmFtZSBCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6U3BlY2lh
bEJsb2NrVHlwZSBibG9ja1R5cGUsIHVuc2lnbmVkIGJsb2NrSW5kZXgpCisgICAgOiBtX2xlYWRl
ck9mZnNldChibG9ja1R5cGUgPT0gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVu
dHJ5QmxvY2sgPyAwIDogVUlOVF9NQVgpCisgICAgLCBtX3RvdGFsTGVuZ3RoKGJsb2NrVHlwZSA9
PSBCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jayA/IDAgOiBVSU5U
X01BWCkKICAgICAsIG1faW5kZXgoYmxvY2tJbmRleCkKIHsKIH0KIAotdm9pZCBCeXRlY29kZUJh
c2ljQmxvY2s6OmFkZExlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0
cz46OmFkZExlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkKIHsKICAgICBtX2RlbHRhLmFw
cGVuZChieXRlY29kZUxlbmd0aCk7CiAgICAgbV90b3RhbExlbmd0aCArPSBieXRlY29kZUxlbmd0
aDsKIH0KIAotdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkKK3RlbXBsYXRl
PHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz46OnNocmlua1RvRml0KCkKIHsKICAgICBtX2RlbHRhLnNocmlua1RvRml0KCk7CiAgICAg
bV9zdWNjZXNzb3JzLnNocmlua1RvRml0KCk7CiB9CiAKLXN0YXRpYyBib29sIGlzSnVtcFRhcmdl
dChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordGVtcGxhdGU8
dHlwZW5hbWUgT3Bjb2RlVHJhaXRzPgorc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KHR5cGVuYW1l
IE9wY29kZVRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3Rvcjx0eXBlbmFtZSBC
eXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpP
ZmZzZXQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9jYXRjaCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02OSwx
NCArNzQsMTUgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnMKICAgICByZXR1cm4gc3RkOjpiaW5h
cnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29k
ZU9mZnNldCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KIHRlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrPgotYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+
IEJhc2ljQmxvY2tWZWN0b3IKK2F1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46
OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlw
ZSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCiB7CiAgICAgQmFzaWNCbG9ja1Zl
Y3RvciBiYXNpY0Jsb2NrczsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
MzI+IGp1bXBUYXJnZXRzOworICAgIFZlY3Rvcjx0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5
cGU6Ok9mZnNldCwgMzI+IGp1bXBUYXJnZXRzOwogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGp1bXBUYXJnZXRzKTsKIAotICAgIGF1dG8gbGlu
a0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBmcm9tLCBCeXRlY29kZUJhc2ljQmxv
Y2smIHRvKSB7CisgICAgYXV0byBsaW5rQmxvY2tzID0gWyZdIChCeXRlY29kZUJhc2ljQmxvY2s8
T3Bjb2RlVHJhaXRzPiYgZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz4mIHRv
KSB7CiAgICAgICAgIGZyb20uYWRkU3VjY2Vzc29yKHRvKTsKICAgICB9OwogCkBAIC04NSwyNSAr
OTEsMjUgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBiYXNpY0Jsb2Nrcy5yZXNl
cnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIC8vIEVudHJ5IGJsb2NrLgotICAgICAgICAgICAgYmFzaWNCbG9ja3MuY29uc3RydWN0QW5k
QXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgp
KTsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChCeXRlY29kZUJh
c2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgpKTsK
ICAgICAgICAgICAgIC8vIEZpcnN0IGJsb2NrLgotICAgICAgICAgICAgYmFzaWNCbG9ja3MuY29u
c3RydWN0QW5kQXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jaywgYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChC
eXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6RW50cnlCbG9jaywgYmFzaWNCbG9ja3Mu
c2l6ZSgpKTsKICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmFzaWNCbG9ja3NbMF0sIGJhc2ljQmxv
Y2tzWzFdKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVu
dCA9ICZiYXNpY0Jsb2Nrcy5sYXN0KCk7Ci0gICAgICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0g
KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKSAtPiBCeXRlY29kZUJh
c2ljQmxvY2sqIHsKKyAgICAgICAgYXV0byogY3VycmVudCA9ICZiYXNpY0Jsb2Nrcy5sYXN0KCk7
CisgICAgICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKGNvbnN0IHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6UmVmJiBpbnN0cnVjdGlvbikgLT4gQnl0ZWNvZGVCYXNpY0Jsb2NrPE9w
Y29kZVRyYWl0cz4qIHsKICAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVu
ZChpbnN0cnVjdGlvbiwgYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAm
YmFzaWNCbG9ja3MubGFzdCgpOwogICAgICAgICB9OwogICAgICAgICBib29sIG5leHRJbnN0cnVj
dGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rp
b24gOiBpbnN0cnVjdGlvbnMpIHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVPZmZzZXQgPSBp
bnN0cnVjdGlvbi5vZmZzZXQoKTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCk7CisgICAgICAgICAgICBhdXRvIG9wY29kZUlEID0gaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAKICAgICAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFs
c2U7CiAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGp1bXAgdGFy
Z2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgotICAgICAg
ICAgICAgaWYgKG5leHRJbnN0cnVjdGlvbklzTGVhZGVyIHx8IGlzSnVtcFRhcmdldChvcGNvZGVJ
RCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgaWYgKG5leHRJ
bnN0cnVjdGlvbklzTGVhZGVyIHx8IGlzSnVtcFRhcmdldDxPcGNvZGVUcmFpdHM+KG9wY29kZUlE
LCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgY3VycmVu
dCA9IGFwcGVuZEJsb2NrKGluc3RydWN0aW9uKTsKICAgICAgICAgICAgICAgICBjcmVhdGVkQmxv
Y2sgPSB0cnVlOwogICAgICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFs
c2U7CkBAIC0xMjAsNyArMTI2LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICAg
ICAgY3VycmVudC0+YWRkTGVuZ3RoKGluc3RydWN0aW9uLT5zaXplKCkpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIEV4aXQgYmxvY2suCi0gICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFw
cGVuZChCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jaywgYmFzaWNCbG9ja3Muc2l6ZSgpKTsK
KyAgICAgICAgYmFzaWNCbG9ja3MuY29uc3RydWN0QW5kQXBwZW5kKEJ5dGVjb2RlQmFzaWNCbG9j
azxPcGNvZGVUcmFpdHM+OjpFeGl0QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAg
IGJhc2ljQmxvY2tzLnNocmlua1RvRml0KCk7CiAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2Nrcy5s
YXN0KCkuaXNFeGl0QmxvY2soKSk7CiAgICAgfQpAQCAtMTI4LDE1ICsxMzQsMTUgQEAgYXV0byBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJgogCiAgICAgLy8gTGluayBiYXNpYyBibG9ja3MgdG9nZXRoZXIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXTsKKyAgICAg
ICAgYXV0byYgYmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXTsKIAogICAgICAgICBpZiAoYmxvY2suaXNF
bnRyeUJsb2NrKCkgfHwgYmxvY2suaXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCB2aXNpdGVkTGVuZ3RoID0gMDsgdmlzaXRlZExlbmd0aCA8IGJsb2NrLnRvdGFsTGVuZ3Ro
KCk7KSB7Ci0gICAgICAgICAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGluc3RydWN0aW9uID0g
aW5zdHJ1Y3Rpb25zLmF0KGJsb2NrLmxlYWRlck9mZnNldCgpICsgdmlzaXRlZExlbmd0aCk7Ci0g
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwor
ICAgICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChibG9jay5sZWFk
ZXJPZmZzZXQoKSArIHZpc2l0ZWRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBvcGNvZGVJRCA9
IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCiAgICAgICAgICAgICB2aXNpdGVkTGVuZ3RoICs9
IGluc3RydWN0aW9uLT5zaXplKCk7CiAKQEAgLTE3MSw3ICsxNzcsNyBAQCBhdXRvIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mCiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGJyYW5jaCwgbGluayB0byB0
aGUgYmxvY2socykgdGhhdCB3ZSBqdW1wIHRvLgogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9w
Y29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbi5vZmZzZXQoKSAr
IGluc3RydWN0aW9uLT5zaXplKCkgPT0gYmxvY2subGVhZGVyT2Zmc2V0KCkgKyBibG9jay50b3Rh
bExlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87CisgICAgICAgICAgICAgICAgVmVjdG9y
PHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0LCAxPiBieXRlY29kZU9mZnNl
dHNKdW1wZWRUbzsKICAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlv
bihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAg
ICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyT2ZKdW1wVGFyZ2V0cyA9IGJ5dGVjb2RlT2Zmc2V0
c0p1bXBlZFRvLnNpemUoKTsKQEAgLTIwMCw3ICsyMDYsNyBAQCBhdXRvIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mCiAgICAgICAgIC8vIElmIHdlIGZhbGwgdGhyb3VnaCB0aGVuIGxpbmsgdG8gdGhlIG5leHQg
YmxvY2sgaW4gcHJvZ3JhbSBvcmRlci4KICAgICAgICAgaWYgKGZhbGxzVGhyb3VnaCkgewogICAg
ICAgICAgICAgQVNTRVJUKGkgKyAxIDwgYmFzaWNCbG9ja3Muc2l6ZSgpKTsKLSAgICAgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayYgbmV4dEJsb2NrID0gYmFzaWNCbG9ja3NbaSArIDFdOworICAg
ICAgICAgICAgYXV0byYgbmV4dEJsb2NrID0gYmFzaWNCbG9ja3NbaSArIDFdOwogICAgICAgICAg
ICAgbGlua0Jsb2NrcyhibG9jaywgbmV4dEJsb2NrKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIx
NCwxMiArMjIwLDE0IEBAIGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICByZXR1cm4gYmFzaWNC
bG9ja3M7CiB9CiAKLWF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNp
Y0Jsb2NrVmVjdG9yCit0ZW1wbGF0ZTw+CithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29k
ZVRyYWl0cz46OmNvbXB1dGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucykgLT4gQmFzaWNCbG9ja1ZlY3RvcgogewogICAgIHJldHVy
biBjb21wdXRlSW1wbChjb2RlQmxvY2ssIGluc3RydWN0aW9ucyk7CiB9CiAKLWF1dG8gQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxv
Y2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tW
ZWN0b3IKK3RlbXBsYXRlPD4KK2F1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrPEpTT3Bjb2RlVHJhaXRz
Pjo6Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCBK
U0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tWZWN0b3IKIHsK
ICAgICByZXR1cm4gY29tcHV0ZUltcGwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5o
CmluZGV4IGQwYTg4MmQ1NDYzMjI5MTFjMzdlZWFiZGMwYWZkMzBmNWFlZjczNGEuLmQ3NjQzZDE5
ZjgyY2Q0YzYyZGIzNmY4YzZjMTUyNGVkYWJiMDY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTM3LDIxICszNywy
NCBAQCBjbGFzcyBCeXRlY29kZUdyYXBoOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKLXN0cnVjdCBJ
bnN0cnVjdGlvbjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIERF
Q0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEJ5dGVjb2RlQmFzaWNCbG9jayk7
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVRyYWl0cz4KIGNsYXNzIEJ5dGVjb2RlQmFzaWNC
bG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUJhc2ljQmxvY2spOwogICAgIGZyaWVu
ZCBjbGFzcyBCeXRlY29kZUdyYXBoOwogcHVibGljOgogICAgIHVzaW5nIEJhc2ljQmxvY2tWZWN0
b3IgPSBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywg
MTYsIEJ5dGVjb2RlQmFzaWNCbG9ja01hbGxvYz47Ci0gICAgc3RhdGljX2Fzc2VydChtYXhPcGNv
ZGVMZW5ndGggPD0gVUlOVDhfTUFYKTsKKyAgICB1c2luZyBJbnN0cnVjdGlvblR5cGUgPSBCYXNl
SW5zdHJ1Y3Rpb248T3Bjb2RlVHJhaXRzPjsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVR5
cGUgPSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OworICAgIHN0YXRpY19hc3Nl
cnQobWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPD0gVUlOVDhfTUFYKTsKICAgICBlbnVtIFNwZWNp
YWxCbG9ja1R5cGUgeyBFbnRyeUJsb2NrLCBFeGl0QmxvY2sgfTsKLSAgICBpbmxpbmUgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmLCB1bnNpZ25lZCBibG9j
a0luZGV4KTsKKyAgICBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrKGNvbnN0IHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZTo6UmVmJiwgdW5zaWduZWQgYmxvY2tJbmRleCk7CiAgICAgaW5s
aW5lIEJ5dGVjb2RlQmFzaWNCbG9jayhTcGVjaWFsQmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0lu
ZGV4KTsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrJiYpID0gZGVm
YXVsdDsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRy
YWl0cz4mJikgPSBkZWZhdWx0OwogCiAKICAgICBib29sIGlzRW50cnlCbG9jaygpIHsgcmV0dXJu
ICFtX2xlYWRlck9mZnNldCAmJiAhbV90b3RhbExlbmd0aDsgfQpAQCAtNzIsMTIgKzc1LDEyIEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBPbmx5IGNhbGxlZCBmcm9tIEJ5dGVjb2RlR3Jh
cGguCi0gICAgc3RhdGljIEJhc2ljQmxvY2tWZWN0b3IgY29tcHV0ZShDb2RlQmxvY2sqLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKTsKLSAgICBzdGF0aWMgQmFzaWNCbG9j
a1ZlY3RvciBjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+
IHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpOworICAgIHN0YXRpYyBCYXNpY0Js
b2NrVmVjdG9yIGNvbXB1dGUoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
JiBpbnN0cnVjdGlvbnMpOworICAgIHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGUoVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGlu
c3RydWN0aW9ucyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+IHN0YXRpYyBCYXNpY0Js
b2NrVmVjdG9yIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtVHlwZSYgaW5zdHJ1Y3Rpb25zKTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKLSAg
ICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrKQorICAgIHZvaWQg
YWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiBibG9jaykKICAg
ICB7CiAgICAgICAgIGlmICghbV9zdWNjZXNzb3JzLmNvbnRhaW5zKGJsb2NrLmluZGV4KCkpKQog
ICAgICAgICAgICAgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jay5pbmRleCgpKTsKQEAgLTg1LDcg
Kzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSB2b2lkIGFkZExlbmd0aCh1bnNpZ25lZCk7
CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OworICAgIHR5
cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OwogICAg
IHVuc2lnbmVkIG1fdG90YWxMZW5ndGg7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKIApAQCAtOTYs
NCArOTksNyBAQCBwcml2YXRlOgogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCit1c2lu
ZyBKU0J5dGVjb2RlQmFzaWNCbG9jayA9IEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29kZVRyYWl0
cz47Cit1c2luZyBXYXNtQnl0ZWNvZGVCYXNpY0Jsb2NrID0gQnl0ZWNvZGVCYXNpY0Jsb2NrPFdh
c21PcGNvZGVUcmFpdHM+OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDViZjY3YjYxYjYy
YmMxMmUwNGMyZmE3Y2E5MzQzYzBjN2FkZTY3MDAuLjA2MWQ3YmQxNDJkYjQ5ZWYwM2M5ZjMwNTY4
NGVmNzE2OTQ0MjVlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtNDEsMzEgKzQxLDM0IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi12b2lkIEJ5dGVjb2RlRHVtcGVyQmFzZTo6cHJpbnRMb2NhdGlvbkFuZE9wKEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKQordGVtcGxhdGU8dHlw
ZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgordm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SW5z
dHJ1Y3Rpb25TdHJlYW1UeXBlPjo6cHJpbnRMb2NhdGlvbkFuZE9wKHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBt
X2N1cnJlbnRMb2NhdGlvbiA9IGxvY2F0aW9uOwogICAgIG1fb3V0LnByaW50ZigiWyU0dV0gJS0x
OHMgIiwgbG9jYXRpb24sIG9wKTsKIH0KIAotdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OmR1bXBW
YWx1ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25T
dHJlYW1UeXBlPgordm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
Pjo6ZHVtcFZhbHVlKFZpcnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgbV9vdXQucHJpbnRmKCIl
cyIsIHJlZ2lzdGVyTmFtZShyZWcpLmRhdGEoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIElu
c3RydWN0aW9uU3RyZWFtVHlwZT4KIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgQnl0
ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8VHJhaXRzPiBsYWJl
bCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46OmR1bXBW
YWx1ZShHZW5lcmljQm91bmRMYWJlbDxUcmFpdHM+IGxhYmVsKQogewogICAgIGludCB0YXJnZXQg
PSBsYWJlbC50YXJnZXQoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgdGFyZ2V0ID0gb3V0
T2ZMaW5lSnVtcE9mZnNldChtX2N1cnJlbnRMb2NhdGlvbik7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCB0YXJnZXRPZmZzZXQgPSB0YXJnZXQgKyBtX2N1cnJlbnRMb2NhdGlvbjsKKyAg
ICBhdXRvIHRhcmdldE9mZnNldCA9IHRhcmdldCArIG1fY3VycmVudExvY2F0aW9uOwogICAgIG1f
b3V0LnByaW50KHRhcmdldCwgIigtPiIsIHRhcmdldE9mZnNldCwgIikiKTsKIH0KIAotdGVtcGxh
dGUgdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxK
U0dlbmVyYXRvclRyYWl0cz4pOwordGVtcGxhdGUgdm9pZCBCeXRlY29kZUR1bXBlckJhc2U8SlNJ
bnN0cnVjdGlvblN0cmVhbT46OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxKU0dlbmVyYXRv
clRyYWl0cz4pOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotdGVtcGxhdGUgdm9pZCBCeXRl
Y29kZUR1bXBlckJhc2U6OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxXYXNtOjpHZW5lcmF0
b3JUcmFpdHM+KTsKK3RlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPFdhc21JbnN0cnVj
dGlvblN0cmVhbT46OmR1bXBWYWx1ZShHZW5lcmljQm91bmRMYWJlbDxXYXNtOjpHZW5lcmF0b3JU
cmFpdHM+KTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKIHRlbXBsYXRlPGNsYXNz
IEJsb2NrPgpAQCAtNzgsNyArODEsNyBAQCBDU3RyaW5nIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdpc3RlciByKSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgQmxvY2s+Ci1pbnQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpvdXRPZkxpbmVKdW1wT2Zmc2V0
KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAoraW50IEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6b3V0T2ZMaW5lSnVtcE9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAogewogICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxp
bmVKdW1wT2Zmc2V0KG9mZnNldCk7CiB9CkBAIC05MSwxNCArOTQsMTQgQEAgQ1N0cmluZyBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElD
U3RhdHVzTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoY29u
c3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNN
YXAmKQogewogICAgIDo6SlNDOjpkdW1wQnl0ZWNvZGUodGhpcywgaXQub2Zmc2V0KCksIGl0LnB0
cigpKTsKICAgICB0aGlzLT5tX291dC5wcmludCgiXG4iKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBi
bG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlw
ZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0
YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIG91dCk7CiAgICAg
ZHVtcGVyLmR1bXBCeXRlY29kZShpdCwgc3RhdHVzTWFwKTsKQEAgLTIxMCw3ICsyMTMsNyBAQCB2
b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN0cmluZ1N3aXRjaEp1bXBU
YWJsZXMoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmxvY2s+Ci1zdGF0aWMgdm9pZCBkdW1w
SGVhZGVyKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgUHJpbnRTdHJlYW0mIG91dCkKK3N0YXRpYyB2b2lkIGR1bXBIZWFkZXIoQmxvY2sqIGJsb2Nr
LCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFByaW50U3RyZWFtJiBv
dXQpCiB7CiAgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwogICAgIHNpemVfdCB3aWRl
MTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKQEAgLTI1Miw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBk
dW1wRm9vdGVyKER1bXBlciYgZHVtcGVyKQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZv
aWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQordm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAm
IHN0YXR1c01hcCkKIHsKICAgICBkdW1wSGVhZGVyKGJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7
CiAKQEAgLTI2Niw3ICsyNjksNyBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJsb2NrKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rp
b25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0
dXNNYXAmIGljU3RhdHVzTWFwKQordm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBHcmFwaChCbG9jayogYmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElD
U3RhdHVzTWFwJiBpY1N0YXR1c01hcCkKIHsKICAgICBkdW1wSGVhZGVyKGJsb2NrLCBpbnN0cnVj
dGlvbnMsIG91dCk7CiAKQEAgLTI4NSw3ICsyODgsNyBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25T
dAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2Nr
IDogZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogZ3JhcGgpIHsKICAgICAgICAgaWYg
KGJsb2NrLmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApAQCAtMzE3LDYgKzMyMCw4IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0
CiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIAordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1w
ZXJCYXNlPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+OwordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1w
ZXJCYXNlPFdhc21JbnN0cnVjdGlvblN0cmVhbT47CiB0ZW1wbGF0ZSBjbGFzcyBCeXRlY29kZUR1
bXBlcjxDb2RlQmxvY2s+OwogdGVtcGxhdGUgY2xhc3MgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+OwogdGVtcGxhdGUgY2xhc3MgQ29kZUJsb2NrQnl0
ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjsKQEAgLTMzMSw3ICszMzYsNyBAQCB2b2lkIEJ5dGVjb2Rl
RHVtcGVyOjpkdW1wQmxvY2soRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBjb25z
dCBNb2R1bGVJbgogICAgIHNpemVfdCB3aWRlMTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKICAgICBz
aXplX3Qgd2lkZTMySW5zdHJ1Y3Rpb25Db3VudCA9IDA7CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBi
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgaXQgIT0gYmxvY2stPmluc3RydWN0aW9ucygp
LmVuZCgpOyBpdCArPSBpdC0+c2l6ZTxXYXNtT3Bjb2RlVHJhaXRzPigpKSB7CisgICAgZm9yIChh
dXRvIGl0ID0gYmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5lbmQoKTsgaXQgKz0gaXQtPnNpemUoKSkgewogICAgICAgICBpZiAoaXQtPmlz
V2lkZTE2KCkpCiAgICAgICAgICAgICArK3dpZGUxNkluc3RydWN0aW9uQ291bnQ7CiAgICAgICAg
IGVsc2UgaWYgKGl0LT5pc1dpZGUzMigpKQpAQCAtMzU5LDcgKzM2NCw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI6OmR1bXBCbG9jayhGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2ssIGNv
bnN0IE1vZHVsZUluCiAgICAgICAgIGJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSk7CiAKICAgICBC
eXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIG91dCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gYmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5l
bmQoKTsgaXQgKz0gaXQtPnNpemU8V2FzbU9wY29kZVRyYWl0cz4oKSkgeworICAgIGZvciAoYXV0
byBpdCA9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1
Y3Rpb25zKCkuZW5kKCk7IGl0ICs9IGl0LT5zaXplKCkpIHsKICAgICAgICAgZHVtcFdhc20oJmR1
bXBlciwgaXQub2Zmc2V0KCksIGl0LnB0cigpKTsKICAgICAgICAgb3V0LnByaW50KCJcbiIpOwog
ICAgIH0KQEAgLTQxNiw2ICs0MjEsMTkgQEAgQ1N0cmluZyBCeXRlY29kZUR1bXBlcjo6Zm9ybWF0
Q29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRfdCBjb25zdGFudCkgY29uc3QKICAgICB9CiB9CiAK
K0NTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6OnJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIgcikg
Y29uc3QKK3sKKyAgICBpZiAoci5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBjb25zdGFu
dE5hbWUocik7CisKKyAgICByZXR1cm4gdG9DU3RyaW5nKHIpOworfQorCitpbnQgQnl0ZWNvZGVE
dW1wZXI6Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgb2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxpbmVK
dW1wT2Zmc2V0KG9mZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdhc20KIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmgKaW5kZXggMjE2ZTZlNjdlYTBkMmRjN2Q5M2FhNDUxMjhlOWEwNjJk
M2Q2M2I5Yi4uNWRlMTVlOGNjYTIyNGQyNjAyOWYwYmE0ZGE3ZmVjNWEwYmY5YzEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTI2
LDkgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Js
b2NrLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCkBAIC0zNywxNSArMzksMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlR3JhcGg7CiAKLXN0cnVjdCBJbnN0cnVj
dGlvbjsKLQordGVtcGxhdGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgogY2xhc3Mg
Qnl0ZWNvZGVEdW1wZXJCYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CeXRlY29kZUR1bXBl
ckJhc2UoKQogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHByaW50TG9jYXRpb25BbmRPcChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CisgICAgdm9p
ZCBwcmludExvY2F0aW9uQW5kT3AodHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZz
ZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgdm9pZCBkdW1wT3BlcmFuZChjb25zdCBjaGFyKiBvcGVyYW5kTmFtZSwgVCBvcGVyYW5k
LCBib29sIGlzRmlyc3QgPSBmYWxzZSkKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBDU3RyaW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0KSBjb25zdCA9
IDA7CiAKICAgICBCeXRlY29kZUR1bXBlckJhc2UoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAg
OiBtX291dChvdXQpCkBAIC03NSwxMyArNzYsMTMgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAg
IFByaW50U3RyZWFtJiBtX291dDsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fY3Vy
cmVudExvY2F0aW9uIHsgMCB9OworICAgIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6
T2Zmc2V0IG1fY3VycmVudExvY2F0aW9uIHsgMCB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgQmxv
Y2s+Ci1jbGFzcyBCeXRlY29kZUR1bXBlciA6IHB1YmxpYyBCeXRlY29kZUR1bXBlckJhc2Ugewor
Y2xhc3MgQnl0ZWNvZGVEdW1wZXIgOiBwdWJsaWMgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1
Y3Rpb25TdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxv
Y2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVt
cEJ5dGVjb2RlKEJsb2NrKiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAKICAg
ICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAg
IDogQnl0ZWNvZGVEdW1wZXJCYXNlKG91dCkKQEAgLTk0LDEwICs5NSwxMCBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgQmxvY2sqIGJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jazsgfQog
Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSlNJbnN0
cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKIAogICAgIENTdHJp
bmcgcmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdpc3RlcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50
IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpIGNv
bnN0IG92ZXJyaWRlOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBD
U3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIpIGNvbnN0OwpAQCAtMTA4LDggKzEw
OSw4IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIGNsYXNzIENvZGVCbG9ja0J5
dGVjb2RlRHVtcGVyIGZpbmFsIDogcHVibGljIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW0mLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01h
cCgpKTsKLSAgICBzdGF0aWMgdm9pZCBkdW1wR3JhcGgoQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmls
ZSgpLCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGlj
IHZvaWQgZHVtcEdyYXBoKEJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVj
b2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpLCBjb25zdCBJQ1N0
YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKIAogICAgIHZvaWQgZHVtcElkZW50aWZpZXJzKCk7
CiAgICAgdm9pZCBkdW1wQ29uc3RhbnRzKCk7CkBAIC0xMzIsMTYgKzEzMywyOSBAQCBuYW1lc3Bh
Y2UgV2FzbSB7CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjsKIHN0cnVjdCBNb2R1
bGVJbmZvcm1hdGlvbjsKIAotY2xhc3MgQnl0ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpCeXRlY29kZUR1bXBlcjxGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcj4geworY2xhc3MgQnl0
ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpCeXRlY29kZUR1bXBlckJhc2U8V2FzbUlu
c3RydWN0aW9uU3RyZWFtPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEZ1
bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBQcmlu
dFN0cmVhbSYgb3V0KTsKIAotcHJpdmF0ZToKLSAgICB1c2luZyBKU0M6OkJ5dGVjb2RlRHVtcGVy
PEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPjo6Qnl0ZWNvZGVEdW1wZXI7CisgICAgQnl0ZWNv
ZGVEdW1wZXIoRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBQcmludFN0cmVhbSYg
b3V0KQorICAgICAgICA6IEJ5dGVjb2RlRHVtcGVyQmFzZShvdXQpCisgICAgICAgICwgbV9ibG9j
ayhibG9jaykKKyAgICB7CisgICAgfQogCisgICAgfkJ5dGVjb2RlRHVtcGVyKCkgb3ZlcnJpZGUg
eyB9CisKKyAgICBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2soKSBjb25zdCB7IHJl
dHVybiBtX2Jsb2NrOyB9CisKKyAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0
ZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CiAgICAgdm9p
ZCBkdW1wQ29uc3RhbnRzKCk7Ci0gICAgQ1N0cmluZyBjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lz
dGVyIGluZGV4KSBjb25zdCBmaW5hbDsKKyAgICBDU3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFs
UmVnaXN0ZXIgaW5kZXgpIGNvbnN0OwogICAgIENTdHJpbmcgZm9ybWF0Q29uc3RhbnQoVHlwZSwg
dWludDY0X3QpIGNvbnN0OworCisgICAgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIG1fYmxv
Y2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApp
bmRleCBmNjAzNmIxYjgyZGEyZWZkOGNkYzczYzgwZjkxNTYwNTU4Y2Y5YzZjLi4wMTI1NDk2OTQz
MzQwMThkZTM1NTUxYzcyYmRjMjkwNWZmZWQ5ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgWWllbGREYXRh
IHsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IHBvaW50IHsgMCB9OworICAgIHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBwb2ludCB7IDAgfTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYXJndW1lbnQgeyAwIH07CiAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKIH07
CkBAIC01MiwxNCArNTIsMTQgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0
YT4gWWllbGRzOwogCiAgICAgc3RydWN0IEdlbmVyYXRvckZyYW1lRGF0YSB7Ci0gICAgICAgIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbV9wb2ludDsKKyAgICAgICAgdHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fcG9pbnQ7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBt
X2RzdDsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGU7CiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBtX3N5bWJvbFRhYmxlOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9pbml0aWFs
VmFsdWU7CiAgICAgfTsKIAotICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucywgU3ltYm9s
VGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5l
cmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29k
ZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KQogICAgICAgICA6IG1fYnl0ZWNvZGVHZW5lcmF0b3IoYnl0ZWNvZGVHZW5lcmF0
b3IpCiAgICAgICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICAgICAsIG1faW5zdHJ1
Y3Rpb25zKGluc3RydWN0aW9ucykKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3lpZWxkczsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGVu
dGVyUG9pbnQoKSBjb25zdAorICAgIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBl
bnRlclBvaW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5h
dChtX2VudGVyUG9pbnQpOwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2dlbmVyYXRvckZyYW1lRGF0YTsKICAgICB9CiAKLSAgICBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QKKyAgICBjb25zdCBKU0luc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW5zdHJ1Y3Rpb25zOwogICAgIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHByaXZhdGU6CiAgICAg
fQogCiAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7Ci0gICAgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2VudGVyUG9pbnQ7CisgICAgdHlwZW5hbWUgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fZW50ZXJQb2ludDsKICAgICBzdGQ6Om9wdGlvbmFsPEdl
bmVyYXRvckZyYW1lRGF0YT4gbV9nZW5lcmF0b3JGcmFtZURhdGE7CiAgICAgVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IqIG1fY29kZUJsb2NrOwotICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVy
JiBtX2luc3RydWN0aW9uczsKKyAgICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX2luc3Ry
dWN0aW9uczsKICAgICBCeXRlY29kZUdyYXBoIG1fZ3JhcGg7CiAgICAgVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CiAgICAgWWllbGRzIG1feWllbGRzOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBydW4oVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIm
IGluc3RydWN0aW9ucykKKyAgICB2b2lkIHJ1bihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciog
Y29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMpCiAgICAg
ewogICAgICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVy
bWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4KICAgICAgICAg
Ly8gVGhpcyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBxdWVzdGlv
biwgIndoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4KQEAgLTI4
Niw3ICsyODYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAg
IHJld3JpdGVyLmV4ZWN1dGUoKTsKIH0KIAotdm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9u
KEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9u
cywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgpCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0
ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvciogY29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMs
IFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4KQogewogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0
ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9uKCkpKSB7CiAgICAgICAgIGRhdGFMb2dMbigi
Qnl0ZWNvZGVzIGJlZm9yZSBnZW5lcmF0b3JpZmljYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKaW5kZXggODMwMWQ0MDU3YTMzZDIxYmEzOGMzOGM5YzkyMGY1NDkzNGRiYmI4NS4uYzlmMWE5
ZTUxNjViNDEwNGZmODkwNzI0ODYxMzZiYTRmOTkxMjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKQEAgLTI5LDExICsyOSwxNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2Rl
R2VuZXJhdG9yOwotY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CiBjbGFzcyBTeW1ib2xU
YWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOwogY2xhc3MgU3ltYm9sVGFi
bGU7CiAKLXZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRvciYs
IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImLCBT
eW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCk7CitzdHJ1Y3QgSlNPcGNvZGVUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1
Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciA9
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyPEpTSW5zdHJ1Y3Rpb24+OworCit2b2lkIHBlcmZvcm1H
ZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3ImLCBVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvciosIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKaW5kZXggYzhkNGE1MTYxOGM3OGM4NGEzM2IxYWEzYmZjMjlhYWY0
OTgyYTllMC4uZDI4M2NiNjVlZjAwN2FiODE3ZWQ2YWMyNjY4ZjA3MGU0MzczZTBjNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0zNCwz
MSArMzQsMzEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9j
azsKLQogY2xhc3MgQnl0ZWNvZGVHcmFwaCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVHcmFwaCk7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgQmFzaWNCbG9ja3NWZWN0b3IgPSBCeXRlY29kZUJhc2ljQmxvY2s6OkJhc2ljQmxvY2tW
ZWN0b3I7CisgICAgdXNpbmcgQmFzaWNCbG9ja1R5cGUgPSBKU0J5dGVjb2RlQmFzaWNCbG9jazsK
KyAgICB1c2luZyBCYXNpY0Jsb2Nrc1ZlY3RvciA9IHR5cGVuYW1lIEJhc2ljQmxvY2tUeXBlOjpC
YXNpY0Jsb2NrVmVjdG9yOworICAgIHVzaW5nIEluc3RydWN0aW9uU3RyZWFtVHlwZSA9IHR5cGVu
YW1lIEJhc2ljQmxvY2tUeXBlOjpJbnN0cnVjdGlvblN0cmVhbVR5cGU7CiAKICAgICB0eXBlZGVm
IFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3JhcGg+IGl0ZXJhdG9yOwog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci0gICAgaW5saW5lIEJ5dGVj
b2RlR3JhcGgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJik7CisgICAg
aW5saW5lIEJ5dGVjb2RlR3JhcGgoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtVHlwZSYpOwogCiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpy
ZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCks
IG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBibG9ja0Nv
bnRhaW5zQnl0ZWNvZGVPZmZzZXQoY29uc3QgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaywgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBzdGF0aWMgYm9vbCBi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoY29uc3QgQmFzaWNCbG9ja1R5cGUmIGJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBieXRlY29kZU9mZnNldCkKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLmxlYWRlck9mZnNldCgp
OwogICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVj
b2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2sudG90YWxMZW5ndGgoKTsKICAgICB9CiAK
LSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBCYXNpY0Jsb2Nr
VHlwZSogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU6Ok9mZnNldCBieXRlY29kZU9mZnNldCkKICAgICB7CiAgICAgICAgIC8qCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7
IGkrKykgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgKi8KIAotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2sgPSBh
cHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxCeXRlY29kZUJhc2ljQmxvY2ssIHVuc2lnbmVkPihtX2Jh
c2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChCeXRl
Y29kZUJhc2ljQmxvY2sqIGJhc2ljQmxvY2spIHsgcmV0dXJuIGJhc2ljQmxvY2stPmxlYWRlck9m
ZnNldCgpOyB9KTsKKyAgICAgICAgQmFzaWNCbG9ja1R5cGUqIGJhc2ljQmxvY2sgPSBhcHByb3hp
bWF0ZUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrVHlwZSwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3Ms
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKEJhc2ljQmxvY2tUeXBl
KiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsgfSk7CiAg
ICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgogICAgICAg
ICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCpiYXNpY0Jsb2NrLCBieXRlY29kZU9m
ZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9jazsKQEAgLTg2LDIzICs4NiwyMyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmYmFzaWNCbG9ja1sxXTsKICAgICB9CiAKLSAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKKyAgICBCYXNpY0Jsb2NrVHlwZSogZmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlw
ZTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0cnlCaW5hcnlT
ZWFyY2g8Qnl0ZWNvZGVCYXNpY0Jsb2NrLCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNp
Y0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKEJ5dGVjb2RlQmFzaWNCbG9jayogYmFz
aWNCbG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0KCk7IH0pOworICAgICAg
ICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2tUeXBlLCB1bnNpZ25lZD4obV9iYXNp
Y0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKEJhc2ljQmxv
Y2tUeXBlKiBiYXNpY0Jsb2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsg
fSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNC
bG9ja3Muc2l6ZSgpOyB9Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBhdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxCeXRlY29kZUdyYXBoKj4odGhpcyktPm1fYmFz
aWNCbG9ja3NbaW5kZXhdOyB9Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKyAgICBCYXNpY0Jsb2Nr
VHlwZSYgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Qnl0ZWNv
ZGVHcmFwaCo+KHRoaXMpLT5tX2Jhc2ljQmxvY2tzW2luZGV4XTsgfQorICAgIEJhc2ljQmxvY2tU
eXBlJiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7
IH0KIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9
CiAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0K
LSAgICBCeXRlY29kZUJhc2ljQmxvY2smIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KLSAgICBC
eXRlY29kZUJhc2ljQmxvY2smIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorICAg
IEJhc2ljQmxvY2tUeXBlJiBmaXJzdCgpIHsgcmV0dXJuIGF0KDApOyB9CisgICAgQmFzaWNCbG9j
a1R5cGUmIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQogCiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLSAgICB2b2lkIGR1bXAoQ29kZUJsb2NrVHlwZSog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxPcGVyYW5kczxTcGVjdWxhdGVkVHlwZT4+PiBzcGVjdWxhdGlvbkF0SGVh
ZCwgUHJpbnRTdHJlYW0mIHByaW50ZXIgPSBXVEY6OmRhdGFGaWxlKCkpCisgICAgdm9pZCBkdW1w
KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlJiBp
bnN0cnVjdGlvbnMsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE9wZXJhbmRzPFNwZWN1bGF0ZWRUeXBl
Pj4+IHNwZWN1bGF0aW9uQXRIZWFkLCBQcmludFN0cmVhbSYgcHJpbnRlciA9IFdURjo6ZGF0YUZp
bGUoKSkKICAgICB7CiAgICAgICAgIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPENvZGVCbG9ja1R5
cGU+OjpkdW1wR3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsICp0aGlzLCBzcGVjdWxhdGlv
bkF0SGVhZCwgcHJpbnRlcik7CiAgICAgfQpAQCAtMTEzLDggKzExMyw4IEBAIHByaXZhdGU6CiAK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLUJ5dGVjb2RlR3JhcGg6OkJ5dGVj
b2RlR3JhcGgoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVh
bSYgaW5zdHJ1Y3Rpb25zKQotICAgIDogbV9iYXNpY0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGUoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpKQorQnl0ZWNvZGVHcmFwaDo6Qnl0ZWNv
ZGVHcmFwaChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
VHlwZSYgaW5zdHJ1Y3Rpb25zKQorICAgIDogbV9iYXNpY0Jsb2NrcyhCYXNpY0Jsb2NrVHlwZTo6
Y29tcHV0ZShjb2RlQmxvY2ssIGluc3RydWN0aW9ucykpCiB7CiAgICAgQVNTRVJUKG1fYmFzaWNC
bG9ja3Muc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggZTg2Y2UxODc3MTA3
NThmNjgzYTEyN2M4OWQxNjJiNjVmYjQ0NWNlZS4uMjA3ZTQ2MjczNjc4YjkxMjNmYmI4MDY3Y2Y4
MjI1MWEwYjYwMmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTUwLDEwICs1MCwxMCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbgogICAgIHNpemVfdCBzaXplID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEZ1bGxC
eXRlY29kZUxpdmVuZXNzPihzaXplKTsKIAotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBi
bG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgZm9yIChh
dXRvJiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAg
ICAgIGlmIChibG9jay5pc0VudHJ5QmxvY2soKSB8fCBibG9jay5pc0V4aXRCbG9jaygpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIG91dCA9IGJsb2NrLm91dCgp
OwogCiAgICAgICAgIGF1dG8gdXNlID0gWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewpAQCAtOTYs
OSArOTYsOSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkJsb2NrcyA9IG1fZ3Jh
cGguc2l6ZSgpOwogICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBwcmVkZWNlc3NvcnMobnVtYmVy
T2ZCbG9ja3MpOwotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgp
CisgICAgZm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpCiAgICAgICAgIHByZWRlY2Vzc29yc1ti
bG9jay5pbmRleCgpXS5yZXNpemUobnVtYmVyT2ZCbG9ja3MpOwotICAgIGZvciAoQnl0ZWNvZGVC
YXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgpIHsKKyAgICBmb3IgKGF1dG8mIGJsb2NrIDogbV9n
cmFwaCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHN1Y2Nlc3NvckluZGV4IDogYmxvY2suc3Vj
Y2Vzc29ycygpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBibG9ja0luZGV4ID0gYmxvY2suaW5k
ZXgoKTsKICAgICAgICAgICAgIHByZWRlY2Vzc29yc1tzdWNjZXNzb3JJbmRleF1bYmxvY2tJbmRl
eF0gPSB0cnVlOwpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpkdW1wUmVzdWx0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgfQogICAgIH07
CiAKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBtX2dyYXBoKSB7CisgICAg
Zm9yIChhdXRvJiBibG9jayA6IG1fZ3JhcGgpIHsKICAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNv
ZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCAm
YmxvY2ssIGJsb2NrLmxlYWRlck9mZnNldCgpLCBibG9jay50b3RhbExlbmd0aCgpKTsKIAogICAg
ICAgICBkYXRhTG9nRigiUHJlZGVjZXNzb3JzOiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGU1
MDk0NzVhOTliMWVkZTk0YWE5MjI4YTk1NTc4NjNhN2ZhYTUyMmQuLjgxNjkyYWUzNDc4ZjE3MzNk
YWNmNDRhYjMwZGFkYWM3YTVkOTk2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTUxLDIzICs1
MSwyMyBAQCBlbnVtIGNsYXNzIExpdmVuZXNzQ2FsY3VsYXRpb25Qb2ludCA6IHVpbnQ4X3Qgewog
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgotICAgIHN0YXRp
YyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5z
dHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNl
RnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2Rl
QmxvY2tUeXBlKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVw
T3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSosIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNv
bnN0IFVzZUZ1bmN0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhV
c2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIERlZkZ1bmN0
b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5
cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUlu
ZGV4LCBjb25zdCBEZWZGdW5jdG9yJik7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29k
ZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgQnl0
ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IERlZkZ1bmN0b3ImKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVu
YW1lIERlZkZ1bmN0b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4KENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOworICAg
IHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiwgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25z
dCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZT4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBC
eXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiBvdXQpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0m
LCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9u
cz4KLSAgICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENv
ZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVCYXNpY0Jsb2NrJiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KTsKKyAg
ICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGVCbG9j
a1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgSlNCeXRlY29kZUJh
c2ljQmxvY2smLCBCeXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgot
ICAgIHN0YXRpYyBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlw
ZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxv
Y2smKTsKKyAgICBzdGF0aWMgYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVC
bG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBoJiwgSlNCeXRlY29k
ZUJhc2ljQmxvY2smKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5
cGVuYW1lIEluc3RydWN0aW9ucz4KICAgICBzdGF0aWMgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVz
c0luZm9BdEluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBC
eXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAppbmRleCA2NDhjNGI1ZTk2MzA4NTFkODk4MTcxZDFkMDc3NTY2MjRlYTY1NTVjLi41Njc2
NGNlNjFlZjBkNDg0YzhiM2E1NWM0NmFmYTRmZmIxYzI4MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNJbmxpbmVzLmgKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lz
dGVyRm9yTGl2ZW5lc3MoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IERl
ZkZ1bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6
c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgYXV0
byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAg
ICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KApAQCAtNzEsNyArNzEsNyBAQCBpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERl
ZihDb2RlQmxvY2tUeXBlKgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0
eXBlbmFtZSBVc2VGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UpCitpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVz
ZShDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
Y29uc3QgVXNlRnVuY3RvciYgdXNlKQogewogICAgIGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1
Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVJbmRleCgKQEAgLTgzLDEyICs4MywxMiBAQCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgot
aW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2Rl
SW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKK2lubGluZSB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRp
b25IYW5kbGVyKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKIHsKLSAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlv
biBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8g
SWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJp
YWJsZXMgb2YgdGhlCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVk
ZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIEJ5dGVjb2RlSW5kZXguCiAgICAg
aWYgKGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZUluZGV4KGJ5
dGVjb2RlSW5kZXgpKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2Nr
ID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7
CisgICAgICAgIGF1dG8qIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOwogICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2Nr
KTsKICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKICAgICB9
CkBAIC05Nyw3ICs5Nyw3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kCiAvLyBTaW1wbGlmaWVk
IGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmly
c3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4g
dGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VG
dW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQ
cm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhl
Y3V0ZXMgdGhlIEJ5dGVjb2RlSW5kZXggaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxs
eSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRo
aXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2Ug
YW5kIGRlZiB0aGUgc2FtZQpAQCAtMTIwLDcgKzEyMCw3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUq
IGNvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci1pbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2Nr
VHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBGYXN0Qml0
VmVjdG9yJiBvdXQpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBKU0luc3Ry
dWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsKICAgICBhdXRvIG51
bWJlck9mQ2hlY2twb2ludHMgPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCktPm51bWJl
ck9mQ2hlY2twb2ludHMoKTsKICAgICBmb3IgKENoZWNrcG9pbnQgY2hlY2twb2ludCA9IG51bWJl
ck9mQ2hlY2twb2ludHM7IGNoZWNrcG9pbnQtLTspIHsKQEAgLTEzOCw3ICsxMzgsNyBAQCBpbmxp
bmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrVHlwZSogY29kZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlw
ZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVH
cmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2ssIEJ5dGVjb2RlSW5kZXggdGFy
Z2V0SW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK2lubGluZSBib29sIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgSlNCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBCeXRlY29k
ZUluZGV4IHRhcmdldEluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFibG9jay5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLmlzRW50cnlCbG9jaygp
KTsKQEAgLTE1OSw3ICsxNTksNyBAQCBpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFn
YXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxp
bmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2soQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxv
Y2spCitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEpTQnl0ZWNvZGVCYXNp
Y0Jsb2NrJiBibG9jaykKIHsKICAgICBpZiAoYmxvY2suaXNFeGl0QmxvY2soKSB8fCBibG9jay5p
c0VudHJ5QmxvY2soKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcwLDcgKzE3MCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4K
IGlubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Z2V0TGl2
ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWJ5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpLCAiZ2V0TGl2ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbiBjYW4ndCBi
ZSB1c2VkIHRvIGFzayBxdWVzdGlvbnMgYWJvdXQgY2hlY2twb2ludHMiKTsKLSAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsKKyAgICBhdXRvKiBibG9jayA9IGdyYXBoLmZpbmRC
YXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSk7CiAgICAg
QVNTRVJUKGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAg
QVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgogaW5saW5l
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpydW5MaXZlbmVzc0ZpeHBvaW50KENv
ZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMs
IEJ5dGVjb2RlR3JhcGgmIGdyYXBoKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVz
ID0gY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKTsKLSAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayYgYmxvY2sgOiBncmFwaCkgeworICAgIGZvciAoYXV0byYgYmxvY2sgOiBncmFwaCkgewog
ICAgICAgICBibG9jay5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJs
b2NrLm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLmluKCku
Y2xlYXJBbGwoKTsKQEAgLTE5MiwxNyArMTkyLDE3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjo6cnVuTGl2ZW5lc3NGaXhwb2ludChDb2RlQmxvY2tUeXBlKiBjb2Rl
CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgbGFz
dEJsb2NrID0gZ3JhcGgubGFzdCgpOworICAgIGF1dG8mIGxhc3RCbG9jayA9IGdyYXBoLmxhc3Qo
KTsKICAgICBsYXN0QmxvY2suaW4oKS5jbGVhckFsbCgpOwogICAgIGxhc3RCbG9jay5vdXQoKS5j
bGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwogICAgIG5ld091dC5yZXNpemUo
bGFzdEJsb2NrLm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0g
ZmFsc2U7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IGdyYXBoLmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGJsb2NrIDog
Z3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAgICBuZXdPdXQu
Y2xlYXJBbGwoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2tJbmRleCA6IGJsb2Nr
LnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayYgc3Vj
Y2Vzc29yID0gZ3JhcGhbYmxvY2tJbmRleF07CisgICAgICAgICAgICAgICAgYXV0byYgc3VjY2Vz
c29yID0gZ3JhcGhbYmxvY2tJbmRleF07CiAgICAgICAgICAgICAgICAgbmV3T3V0IHw9IHN1Y2Nl
c3Nvci5pbigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYmxvY2sub3V0KCkgPSBuZXdP
dXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVS
ZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdy
aXRlci5jcHAKaW5kZXggODEwMjZhYjNjNzg0ZjFhYzNlMTQ0NDAwMWYzNzJiODJkNGNhYmY3ZS4u
NGFkMDYyY2JiNzY5Mjg4ODI2YjdmYWJlZWM5MTJiMmE0NzQxY2Q4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5GcmFn
bWVudCh1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aQogICAgIH0KIH0KIAotdm9pZCBCeXRl
Y29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGluc2VydGlvblBvaW50LCBJ
bmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiYgd3Jp
dGVyKQordm9pZCBCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGlu
c2VydGlvblBvaW50LCBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIEpTSW5zdHJ1Y3Rpb25T
dHJlYW1Xcml0ZXImJiB3cml0ZXIpCiB7CiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50LnBvc2l0
aW9uID09IFBvc2l0aW9uOjpCZWZvcmUgfHwgaW5zZXJ0aW9uUG9pbnQucG9zaXRpb24gPT0gUG9z
aXRpb246OkFmdGVyKTsKICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbiB7CkBAIC0x
MTQsMTEgKzExNCwxMSBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRz
KCkKICAgICBhdXRvIG91dE9mTGluZUp1bXBUYXJnZXRzID0gbV9jb2RlQmxvY2stPnJlcGxhY2VP
dXRPZkxpbmVKdW1wVGFyZ2V0cygpOwogCiAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgZm9yIChJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwgbV93cml0ZXIuc2l6ZSgpOykgewor
ICAgIGZvciAodHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwg
bV93cml0ZXIuc2l6ZSgpOykgewogICAgICAgICBpbnQgYmVmb3JlID0gMDsKICAgICAgICAgaW50
IGFmdGVyID0gMDsKICAgICAgICAgaW50IHJlbW92ZSA9IDA7Ci0gICAgICAgIHdoaWxlIChjdXJy
ZW50SW5zZXJ0aW9uICE9IG1faW5zZXJ0aW9ucy5lbmQoKSAmJiBzdGF0aWNfY2FzdDxJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0PihjdXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNl
dCkgPT0gaSkgeworICAgICAgICB3aGlsZSAoY3VycmVudEluc2VydGlvbiAhPSBtX2luc2VydGlv
bnMuZW5kKCkgJiYgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0PihjdXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNldCkgPT0gaSkgewogICAg
ICAgICAgICAgYXV0byBzaXplID0gY3VycmVudEluc2VydGlvbi0+bGVuZ3RoKCk7CiAgICAgICAg
ICAgICBpZiAoY3VycmVudEluc2VydGlvbi0+dHlwZSA9PSBJbnNlcnRpb246OlR5cGU6OlJlbW92
ZSkKICAgICAgICAgICAgICAgICByZW1vdmUgKz0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCmluZGV4IDBkY2ViZTc5MzkwYjRm
ZjBiNWQ4YmIwMmI1NTJmOGZlMjQ2YTJlNWEuLjViZGY3N2QwNzM0YWU4MjgyZGJlNjI2NjRkNWUy
YWU4YThkYzBlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVJld3JpdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlUmV3cml0ZXIuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDMy
X3QgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOwogCi0gICAgICAg
IEluc2VydGlvblBvaW50KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBQb3NpdGlv
biBwb3MpCisgICAgICAgIEluc2VydGlvblBvaW50KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBvZmZzZXQsIFBvc2l0aW9uIHBvcykKICAgICAgICAgICAgIDogYnl0ZWNvZGVP
ZmZzZXQob2Zmc2V0KQogICAgICAgICAgICAgLCBwb3NpdGlvbihwb3MpCiAgICAgICAgIHsKQEAg
LTEzMiwxNCArMTMyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFR5cGUgdHlwZTsKICAgICAgICAg
SW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoOwogICAgICAgICBzaXplX3QgcmVtb3ZlTGVuZ3Ro
OwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBpbnN0cnVjdGlvbnM7CisgICAgICAg
IEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgaW5zdHJ1Y3Rpb25zOwogICAgIH07CiAKIHB1Ymxp
YzoKICAgICBjbGFzcyBGcmFnbWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhZ21l
bnQpOwogICAgIHB1YmxpYzoKLSAgICAgICAgRnJhZ21lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5
dGVjb2RlR2VuZXJhdG9yLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgd3JpdGVyLCBJbmNsdWRl
QnJhbmNoJiBpbmNsdWRlQnJhbmNoKQorICAgICAgICBGcmFnbWVudChCeXRlY29kZUdlbmVyYXRv
ciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlciwg
SW5jbHVkZUJyYW5jaCYgaW5jbHVkZUJyYW5jaCkKICAgICAgICAgICAgIDogbV9ieXRlY29kZUdl
bmVyYXRvcihieXRlY29kZUdlbmVyYXRvcikKICAgICAgICAgICAgICwgbV93cml0ZXIod3JpdGVy
KQogICAgICAgICAgICAgLCBtX2luY2x1ZGVCcmFuY2goaW5jbHVkZUJyYW5jaCkKQEAgLTE3MSwx
MSArMTcxLDExIEBAIHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBtX2J5dGVjb2RlR2VuZXJhdG9yOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciYgbV93cml0ZXI7CisgICAgICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1fd3Jp
dGVyOwogICAgICAgICBJbmNsdWRlQnJhbmNoJiBtX2luY2x1ZGVCcmFuY2g7CiAgICAgfTsKIAot
ICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9y
LCBCeXRlY29kZUdyYXBoJiBncmFwaCwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlcikKKyAgICBCeXRlY29kZVJld3Jp
dGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgQnl0ZWNvZGVHcmFwaCYg
Z3JhcGgsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIEpTSW5zdHJ1Y3Rp
b25TdHJlYW1Xcml0ZXImIHdyaXRlcikKICAgICAgICAgOiBtX2J5dGVjb2RlR2VuZXJhdG9yKGJ5
dGVjb2RlR2VuZXJhdG9yKQogICAgICAgICAsIG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9j
b2RlQmxvY2soY29kZUJsb2NrKQpAQCAtMTg0LDEwICsxODQsMTAgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRC
ZWZvcmUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9u
IGZ1bmN0aW9uKQorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRCZWZvcmUoY29uc3QgdHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24p
CiAgICAgewogICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2ggPSBJbmNsdWRlQnJh
bmNoOjpObzsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgd3JpdGVyOworICAgICAg
ICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyIHdyaXRlcjsKICAgICAgICAgRnJhZ21lbnQgZnJh
Z21lbnQobV9ieXRlY29kZUdlbmVyYXRvciwgd3JpdGVyLCBpbmNsdWRlQnJhbmNoKTsKICAgICAg
ICAgZnVuY3Rpb24oZnJhZ21lbnQpOwogICAgICAgICBmcmFnbWVudC5hbGlnbigpOwpAQCAtMTk1
LDEwICsxOTUsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0
aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcihjb25zdCBJbnN0cnVjdGlvblN0cmVh
bTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24sIHNpemVfdCBhbGlnbkNvbmdy
dWVudCA9IDApCisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKGNvbnN0IHR5cGVuYW1lIEpT
SW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uLCBz
aXplX3QgYWxpZ25Db25ncnVlbnQgPSAwKQogICAgIHsKICAgICAgICAgSW5jbHVkZUJyYW5jaCBp
bmNsdWRlQnJhbmNoID0gSW5jbHVkZUJyYW5jaDo6Tm87Ci0gICAgICAgIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyIHdyaXRlcjsKKyAgICAgICAgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciB3cml0
ZXI7CiAgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1fYnl0ZWNvZGVHZW5lcmF0b3IsIHdyaXRl
ciwgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKICAgICAgICAg
ZnJhZ21lbnQuYWxpZ24oYWxpZ25Db25ncnVlbnQpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAgICB2b2lkIHJlcGxh
Y2VCeXRlY29kZVdpdGhGcmFnbWVudChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0
cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgdm9pZCByZXBsYWNlQnl0ZWNvZGVXaXRo
RnJhZ21lbnQoY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVj
dGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCiAgICAgewogICAgICAgICAvLyBOb3RlOiBUaGlzIGZ1
bmN0aW9uIHByZXNlcnZlcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBzdWJzZXF1ZW50IGJ5dGVjb2Rl
IChvbiB0YXJnZXRzIHdoZXJlIHRoaXMgbWF0dGVycykKICAgICAgICAgbV9pbnNlcnRpb25zLmFw
cGVuZChJbnNlcnRpb24geyBJbnNlcnRpb25Qb2ludChpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9z
aXRpb246Ok9yaWdpbmFsQnl0ZWNvZGVQb2ludCksIEluc2VydGlvbjo6VHlwZTo6UmVtb3ZlLCBJ
bmNsdWRlQnJhbmNoOjpObywgaW5zdHJ1Y3Rpb24tPnNpemUoKSwgeyB9IH0pOwpAQCAtMjE3LDEy
ICsyMTcsMTIgQEAgcHVibGljOgogCiAgICAgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgoKSB7IHJldHVy
biBtX2dyYXBoOyB9CiAKLSAgICBpbnQzMl90IGFkanVzdEFic29sdXRlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYWJzb2x1dGVPZmZzZXQpCisgICAgaW50MzJfdCBhZGp1c3RBYnNv
bHV0ZU9mZnNldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYWJzb2x1dGVP
ZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Q
b2ludCgwLCBQb3NpdGlvbjo6RW50cnlQb2ludCksIEluc2VydGlvblBvaW50KGFic29sdXRlT2Zm
c2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCkpOwogICAgIH0KIAotICAgIGludDMyX3QgYWRqdXN0
SnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9yaWdpbmFsQnl0ZWNvZGVPZmZz
ZXQsIGludDMyX3Qgb3JpZ2luYWxKdW1wVGFyZ2V0KQorICAgIGludDMyX3QgYWRqdXN0SnVtcFRh
cmdldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29k
ZU9mZnNldCwgaW50MzJfdCBvcmlnaW5hbEp1bXBUYXJnZXQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludChvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0
LCBQb3NpdGlvbjo6TGFiZWxQb2ludCksIEluc2VydGlvblBvaW50KG9yaWdpbmFsSnVtcFRhcmdl
dCwgUG9zaXRpb246OkxhYmVsUG9pbnQpKTsKICAgICB9CkBAIC0yMzAsNyArMjMwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRqdXN0SnVtcFRhcmdldHMoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2gsIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyJiYgZnJhZ21lbnQpOworICAgIHZvaWQgaW5zZXJ0SW1wbChJbnNlcnRpb25Qb2lu
dCwgSW5jbHVkZUJyYW5jaCwgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYmIGZyYWdtZW50KTsK
IAogICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjsKICAgICB2b2lk
IGFwcGx5TW9kaWZpY2F0aW9uKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICBC
eXRlY29kZUdlbmVyYXRvciYgbV9ieXRlY29kZUdlbmVyYXRvcjsKICAgICBCeXRlY29kZUdyYXBo
JiBtX2dyYXBoOwogICAgIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBtX2NvZGVCbG9jazsK
LSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgbV93cml0ZXI7CisgICAgSlNJbnN0cnVjdGlv
blN0cmVhbVdyaXRlciYgbV93cml0ZXI7CiAgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKaW5kZXggZmI1NmQ0Y2JiNWM5ZTg3MmE5NzRmNTI1NGU2MWFiMGYwZTk3
ZmRmYi4uZDljNzJiMThkOWE3ZTdmYzM4YzMxYWYxMzljZmRhNTJjOGQzNGEzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBVU0VTIFVTRVNfT1JfREVGUwog
I2RlZmluZSBERUZTIFVTRVNfT1JfREVGUwogCi12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJ
bmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSlNJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgU2NvcGVk
TGFtYmRhPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lk
KFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBDaGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1
YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQogewogCiAgICAgYXV0byBkZWZBdCA9IFsmXSAoQ2hlY2tw
b2ludCB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDdiNTJhMzkwZWNjNTM4
ZmNiNmI2MWI3NTRjMDdiZDEzODNlNzRiZmYuLjk4OGU2YzMwNjg5OGYxOGE3NTM2ZWMyYWEyMjc0
OWE2YTg5NWIxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIsIGNvbnN0
IEluc3RydWN0aW9uKiwgQ2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmlydHVh
bFJlZ2lzdGVyKT4mKTsKLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNp
Z25lZCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBDaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYpOwordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciwgY29uc3QgSlNJbnN0cnVjdGlvbiosIENoZWNrcG9pbnQs
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rlcik+Jik7Cit2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBDaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYp
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2lu
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
c3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiAo
Y29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgY29kZUJsb2Nr
LT51c2VzQ2FsbEV2YWwoKSkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgp
KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hlY2twb2ludCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKIHsKICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKGNv
ZGVCbG9jay0+bnVtVmFycygpLCBpbnN0cnVjdGlvbiwgY2hlY2twb2ludCwgc2NvcGVkTGFtYmRh
PHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4oZnVuY3RvcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwZTU3OWY5MjkwM2I4YzhlYTc3NTU2
MTM2ZDZlNTE2YTFlNGNhNmYyLi5iMzc5Yzk3YzlkZTk3ZDcwZmY0ZjA5MTdkNzIxMDY4NmZiZDRi
ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCkKICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wR3Jh
cGgodGhpcywgaW5zdHJ1Y3Rpb25zKCksIGdyYXBoLCBvdXQsIHN0YXR1c01hcCk7CiB9CiAKLXZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAg
ICAgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJ5dGVjb2RlKHRoaXMsIG91dCwgaXQs
IHN0YXR1c01hcCk7CiB9CkBAIC00NzQsMTAgKzQ3NCwxMSBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICBicmVhazsgXAogICAgIH0KIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1dG8m
IGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9uU3RyZWFtKSB7CiAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgIG1fYnl0ZWNvZGVDb3N0
ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOworICAgICAgICBzdGF0aWNfYXNzZXJ0KE9wY29k
ZUlEV2lkdGhCeVNpemU8SlNPcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29k
ZUlEU2l6ZSA9PSAxKTsKKyAgICAgICAgbV9ieXRlY29kZUNvc3QgKz0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gKyAxOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgICAgIExJTkso
T3BHZXRCeVZhbCwgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdldFByaXZhdGVOYW1lLCBwcm9m
aWxlKQpAQCAtMjA4MCw3ICsyMDgxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5n
ZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBpbnQKIAogYm9v
bCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbikKIHsKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKKyAgICBjb25zdCBhdXRv
JiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOwogICAgIGZvciAoY29uc3QgYXV0
byYgaXQgOiBpbnN0cnVjdGlvblN0cmVhbSkgewogICAgICAgICBpZiAoaXQtPmlzPE9wRGVidWc+
KCkpIHsKICAgICAgICAgICAgIGludCB1bnVzZWQ7CkBAIC0zMDcyLDcgKzMwNzMsNyBAQCB2b2lk
IENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKQogICAgICAgICByZXR1cm4g
c3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKTsKICAgICB9OwogCi0gICAgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAg
c3dpdGNoIChvcGNvZGVJRCkgewpAQCAtMzI2Miw4ICszMjYzLDggQEAgdm9pZCBDb2RlQmxvY2s6
OnZhbGlkYXRlKCkKICAgICAgICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
blN0cmVhbSA9IGluc3RydWN0aW9ucygpOworCisgICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25T
dHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9u
IDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIGlmICghIWJhc2VsaW5lQWx0ZXJuYXRpdmUoKS0+
aGFuZGxlckZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleChpbnN0cnVjdGlvbi5vZmZzZXQo
KSkpKSB7CkBAIC0zMzExLDEzICszMzEyLDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRTdGVwcGlu
Z01vZGUoQ29kZUJsb2NrOjpTdGVwcGluZ01vZGUgbW9kZSkKICAgICAgICAgamV0dGlzb24oUHJv
ZmlsZXI6OkpldHRpc29uRHVlVG9EZWJ1Z2dlclN0ZXBwaW5nKTsKIH0KIAotaW50IENvZGVCbG9j
azo6b3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCitpbnQgQ29kZUJs
b2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAg
IGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChwYyk7CiAgICAgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9u
KiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQor
Y29uc3QgSlNJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChw
Yyk7CiAgICAgaW50IHRhcmdldCA9IG1fdW5saW5rZWRDb2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0
KG9mZnNldCk7CkBAIC0zMzM0LDcgKzMzMzUsNyBAQCBVbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJs
b2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieQog
ICAgIHJldHVybiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKIH0KIAotQmluYXJ5QXJpdGhQcm9maWxlKiBDb2Rl
QmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK0Jp
bmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7CiAg
ICAgY2FzZSBvcF9hZGQ6CkBAIC0zMzUyLDcgKzMzNTMsNyBAQCBCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1VbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2Nr
Ojp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJp
dGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewogICAgIGNhc2Ug
b3BfbmVnYXRlOgpAQCAtMzM5MSw5ICszMzkyLDkgQEAgdm9pZCBDb2RlQmxvY2s6Omluc2VydEJh
c2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAgICAgaWYgKCF1
bmxpbmtlZENvZGVCbG9jaygpLT5oYXNPcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
cygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgRml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9w
UHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CisgICAgY29uc3QgRml4ZWRWZWN0
b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgYnl0ZWNvZGVPZmZzZXRzID0gdW5saW5r
ZWRDb2RlQmxvY2soKS0+b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgb2Zmc2V0c0xlbmd0aCA9IGJ5dGVjb2RlT2Zmc2V0cy5zaXpl
KCk7IGkgPCBvZmZzZXRzTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgLy8gQmVjYXVzZSBvcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgYmFz
aWMgYmxvY2ssIGZpbmRpbmcgCisgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBm
aW5kaW5nCiAgICAgICAgIC8vIHRoZSBuZXh0IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93IHdpbGwg
Z2l2ZSB1cyB0aGUgdGV4dCByYW5nZSBvZiBhIHNpbmdsZSBiYXNpYyBibG9jay4KICAgICAgICAg
c2l6ZV90IHN0YXJ0SWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2ldOwogICAgICAgICBhdXRvIGluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoc3RhcnRJZHgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDQ5MWJiOGVlMDViMTU5NzNkNTlkZDM2M2E4
NDA1NjQ1YjZjMmMxZGQuLmNjN2UyY2RkMGI2MzQ4NzBmZDVjZDI2MzRhOWU1N2IwNDVkY2I1NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIxNSwx
MiArMjE1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKCk7CiAgICAgdm9p
ZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9
IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRT
dHJlYW0mKTsKLSAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgdm9pZCBwcmludFN0cnVjdHVyZShQcmludFN0cmVhbSYsIGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOworICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwgY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IHZvaWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBKU0luc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOwogCiAgICAgdm9pZCBkdW1wTWF0aElDU3Rh
dHMoKTsKIApAQCAtMjg4LDMyICsyODgsMzIgQEAgcHVibGljOgogICAgIHZvaWQgbGlua0luY29t
aW5nUG9seW1vcnBoaWNDYWxsKENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIFBvbHltb3JwaGljQ2Fs
bE5vZGUqKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKTsKLSAgICBpbnQgb3V0
T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKKyAgICBj
b25zdCBKU0luc3RydWN0aW9uKiBvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIHBjKTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5v
dXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiAgICAgfQotICAgIGludCBvdXRPZkxpbmVKdW1w
T2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYyk7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZz
ZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgaW50IG91
dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpOworICAgIGludCBvdXRP
ZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rp
b24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlv
bi5wdHIoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNv
bnN0IEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChjb25zdCBKU0luc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgIHsKICAg
ICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5hdCgw
KS5wdHIoKTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihp
bnN0cnVjdGlvbnNCZWdpbikgKyBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICBjb25z
dCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuQWRk
cmVzcyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25z
RW5kKTsKICAgICAgICAgcmV0dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KGNvbnN0IElu
c3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGluZSBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXgoY29uc3QgSlNJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAg
ICAgIHJldHVybiBCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KHJldHVybkFkZHJlc3MpKTsK
ICAgICB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmluc3RydWN0aW9ucygpOyB9Ci0gICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9CisgICAgY29uc3QgSlNJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmluc3RydWN0aW9ucygpOyB9CisgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25BdChCeXRlY29kZUluZGV4IGluZGV4KSBjb25zdCB7IHJldHVybiBpbnN0cnVjdGlvbnMoKS5h
dChpbmRleCkucHRyKCk7IH0KIAogICAgIHNpemVfdCBwcmVkaWN0ZWRNYWNoaW5lQ29kZVNpemUo
KTsKIApAQCAtNDI4LDggKzQyOCw4IEBAIHB1YmxpYzoKIAogICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKICAg
ICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5
dGVjb2RlSW5kZXgpOwotICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmgKaW5kZXggNTFmMWQwMmUxODI1NThjOWMyOTEyZDg0MGM1ODgxMDQ4
Y2E4MDFkOS4uNTBkNzJhNDQxZTMxYThjYTYxZTAzMzA0NDQ3ZDY3N2MzNThmMDFhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTQwLDYgKzQw
LDcgQEAgc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gOjpKU0M6Om9wY29kZUxlbmd0aHM7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCogb3Bjb2RlTmFtZXMgPSA6OkpTQzo6b3Bj
b2RlTmFtZXM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNoZWNrcG9pbnRDb3VudFRhYmxl
ID0gYnl0ZWNvZGVDaGVja3BvaW50Q291bnRUYWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9w
Y29kZVNpemUgbWF4T3Bjb2RlSURXaWR0aCA9IG1heEpTT3Bjb2RlSURXaWR0aDsKIH07CiAKIHN0
cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKQEAgLTUyLDEyICs1MywxMiBAQCBzdHJ1Y3QgV2FzbU9w
Y29kZVRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2Rl
TGVuZ3RocyA9IHdhc21PcGNvZGVMZW5ndGhzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
Y2hhciogY29uc3QqIG9wY29kZU5hbWVzID0gd2FzbU9wY29kZU5hbWVzOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjaGVja3BvaW50Q291bnRUYWJsZSA9IHdhc21DaGVja3BvaW50Q291bnRU
YWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgbWF4T3Bjb2RlSURXaWR0aCA9
IG1heFdhc21PcGNvZGVJRFdpZHRoOwogfTsKIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGU+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uIHsKLQog
ICAgIHN0cnVjdCBNZXRhZGF0YSB7IH07CiAKIHByb3RlY3RlZDoKQEAgLTY4LDEyMSArNjksMTI0
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBXaWR0aD4KICAgICBjbGFzcyBJ
bXBsIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgICAgICB0eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEIG9wY29kZUlE
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRD4o
bV9vcGNvZGUpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBUeXBlQnlTaXpl
PE9wY29kZVNpemU6Ok5hcnJvdz46OnVuc2lnbmVkVHlwZSBtX29wY29kZTsKKyAgICAgICAgdHlw
ZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIFdpZHRoPjo6b3Bjb2RlVHlwZSBtX29w
Y29kZTsKICAgICB9OwogCiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0g
SlNPcGNvZGVUcmFpdHM+CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpPcGNvZGVJRCBvcGNvZGVJRCgp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRzPigpKQotICAgICAgICAg
ICAgcmV0dXJuIHdpZGUzMjxUcmFpdHM+KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKTsK
LSAgICAgICAgaWYgKGlzV2lkZTE2PFRyYWl0cz4oKSkKLSAgICAgICAgICAgIHJldHVybiB3aWRl
MTY8VHJhaXRzPigpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCk7Ci0gICAgICAgIHJldHVy
biBuYXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpOworICAgICAgICBpZiAoaXNX
aWRlMzIoKSkKKyAgICAgICAgICAgIHJldHVybiB3aWRlMzIoKS0+b3Bjb2RlSUQoKTsKKyAgICAg
ICAgaWYgKGlzV2lkZTE2KCkpCisgICAgICAgICAgICByZXR1cm4gd2lkZTE2KCktPm9wY29kZUlE
KCk7CisgICAgICAgIHJldHVybiBuYXJyb3coKS0+b3Bjb2RlSUQoKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBUcmFpdHM6Om9wY29kZU5hbWVz
W29wY29kZUlEPFRyYWl0cz4oKV07CisgICAgICAgIHJldHVybiBUcmFpdHM6Om9wY29kZU5hbWVz
W29wY29kZUlEKCldOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaXNXaWRlMTYoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3
aWRlMTY7CisgICAgICAgIHJldHVybiBuYXJyb3coKS0+b3Bjb2RlSUQoKSA9PSBUcmFpdHM6Ondp
ZGUxNjsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGlzV2lkZTMyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBu
YXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRyYWl0czo6d2lkZTMyOwor
ICAgICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAg
ICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8
VHJhaXRzPigpKQorICAgICAgICBpZiAoaXNXaWRlMzIoKSkKICAgICAgICAgICAgIHJldHVybiBP
cGNvZGVTaXplOjpXaWRlMzI7Ci0gICAgICAgIHJldHVybiBpc1dpZGUxNjxUcmFpdHM+KCkgPyBP
cGNvZGVTaXplOjpXaWRlMTYgOiBPcGNvZGVTaXplOjpOYXJyb3c7CisgICAgICAgIHJldHVybiBp
c1dpZGUxNigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93OwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAg
IGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wY29kZUlE
PFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CisgICAg
ICAgIHJldHVybiBvcGNvZGVJRCgpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRh
ZGF0YTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aENo
ZWNrcG9pbnRzOworICAgICAgICByZXR1cm4gb3Bjb2RlSUQoKSA8IFRyYWl0czo6bnVtYmVyT2ZC
eXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGVja3BvaW50
cygpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0NoZWNrcG9pbnRzPFRyYWl0cz4oKSkK
KyAgICAgICAgaWYgKCFoYXNDaGVja3BvaW50cygpKQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRhYmxlW29wY29kZUlEPFRyYWl0
cz4oKV07CisgICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRhYmxlW29wY29k
ZUlEKCldOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2Rl
VHJhaXRzPgogICAgIGludCBzaXplU2hpZnRBbW91bnQoKSBjb25zdAogICAgIHsKLSAgICAgICAg
aWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMjsKLSAgICAgICAgaWYgKGlzV2lkZTE2PFRyYWl0cz4oKSkKKyAgICAgICAg
aWYgKGlzV2lkZTE2KCkpCiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+
CisgICAgT3Bjb2RlU2l6ZSBvcGNvZGVJRFdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChpc1dpZGUzMigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJh
aXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJRFNpemU7CisgICAgICAgIGlmIChpc1dp
ZGUxNigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBP
cGNvZGVTaXplOjpXaWRlMTY+OjpvcGNvZGVJRFNpemU7CisgICAgICAgIHJldHVybiBPcGNvZGVJ
RFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6b3Bjb2RlSURTaXplOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIG9wY29kZUlEQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICh1bnNpZ25lZCkgb3Bjb2RlSURXaWR0aCgpOworICAgIH0KKwogICAgIHNpemVf
dCBzaXplKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gc2l6ZVNoaWZ0QW1vdW50ID0gdGhp
cy0+c2l6ZVNoaWZ0QW1vdW50PFRyYWl0cz4oKTsKKyAgICAgICAgYXV0byBzaXplU2hpZnRBbW91
bnQgPSB0aGlzLT5zaXplU2hpZnRBbW91bnQoKTsKICAgICAgICAgc2l6ZV90IHByZWZpeFNpemUg
PSBzaXplU2hpZnRBbW91bnQgPyAxIDogMDsKICAgICAgICAgc2l6ZV90IG9wZXJhbmRTaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBzaXplU2hpZnRBbW91bnQ7Ci0gICAgICAgIHNpemVf
dCBzaXplT2ZCeXRlY29kZSA9IDE7Ci0gICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIChU
cmFpdHM6Om9wY29kZUxlbmd0aHNbb3Bjb2RlSUQ8VHJhaXRzPigpXSAtIDEpICogb3BlcmFuZFNp
emUgKyBwcmVmaXhTaXplOworICAgICAgICBzaXplX3Qgc2l6ZU9mQnl0ZWNvZGUgPSBvcGNvZGVJ
REJ5dGVzKCk7CisgICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIFRyYWl0czo6b3Bjb2Rl
TGVuZ3Roc1tvcGNvZGVJRCgpXSAqIG9wZXJhbmRTaXplICsgcHJlZml4U2l6ZTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4K
KyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIGJvb2wgaXMoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUOjpvcGNvZGVJRDsKKyAgICAgICAgcmV0
dXJuIG9wY29kZUlEKCkgPT0gVDo6b3Bjb2RlSUQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xh
c3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8Y2xh
c3MgVD4KICAgICBUIGFzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoaXM8VCwgVHJh
aXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAgICByZXR1cm4gVDo6
ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRoLCB0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRo
PgogICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoaXM8
VCwgVHJhaXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAgICByZXR1
cm4gVChyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB0eXBlbmFtZSBUeXBlQnlTaXplPHdpZHRo
Pjo6dW5zaWduZWRUeXBlKj4odGhpcyArICh3aWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cgPyAx
IDogMikpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFQqIGNhc3QoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgQVNTRVJU
KChpczxUPigpKSk7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KHRoaXMpOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJh
aXRzPgorICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgY29uc3QgVCogY2FzdCgpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAgICAgICBBU1NFUlQo
KGlzPFQ+KCkpKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHRo
aXMpOwogICAgIH0KIApAQCAtMTkxLDI5ICsxOTUsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6Ok5hcnJvdz4qPih0aGlz
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0
cz4KICAgICBjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qIHdpZGUxNigpIGNvbnN0CiAg
ICAgewotCi0gICAgICAgIEFTU0VSVChpc1dpZGUxNjxUcmFpdHM+KCkpOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZigqdGhpcykgPT0gMSwgIlBvaW50ZXIgbWF0aCIpOworICAgICAgICBB
U1NFUlQoaXNXaWRlMTYoKSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBjb25zdCBJbXBsPE9w
Y29kZVNpemU6OldpZGUzMj4qIHdpZGUzMigpIGNvbnN0CiAgICAgewotCi0gICAgICAgIEFTU0VS
VChpc1dpZGUzMjxUcmFpdHM+KCkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZigqdGhp
cykgPT0gMSwgIlBvaW50ZXIgbWF0aCIpOworICAgICAgICBBU1NFUlQoaXNXaWRlMzIoKSk7CiAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lk
ZTMyPio+KHRoaXMgKyAxKTsKICAgICB9CiB9OwogCi1zdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJs
aWMgQmFzZUluc3RydWN0aW9uPE9wY29kZUlEPiB7Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2Yo
SW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBt
YXRoIik7Ci0KLXN0cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdh
c21PcGNvZGVJRD4gewotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0g
MSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKK3VzaW5nIEpT
SW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgV2Fz
bUluc3RydWN0aW9uICA9IEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2RlVHJhaXRzPjsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKEpTSW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMg
dGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAKaW5k
ZXggMzhjYWY5NWZkOWUwNjEwNTNlMTM1YTU5ZmUxYTNjNzVmODVhODVkMy4uNTM1NDI5N2NkZmE2
Yjc5ZDA2NmFhMTM3MWZlODA2OGRiMTQ1ZTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBAIC0zMCwyMCArMzAsNCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihJbnN0cnVjdGlvblN0cmVhbSk7CiAKLUluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0
cmVhbShJbnN0cnVjdGlvbkJ1ZmZlciYmIGluc3RydWN0aW9ucykKLSAgICA6IG1faW5zdHJ1Y3Rp
b25zKFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSkKLXsgfQotCi1zaXplX3QgSW5zdHJ1Y3Rpb25TdHJl
YW06OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6
ZSgpOwotfQotCi1ib29sIEluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyhJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pIGNvbnN0Ci17Ci0KLSAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gYml0
d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnN0cnVjdGlvbik7Ci0gICAgcmV0dXJuIHBvaW50
ZXIgPj0gbV9pbnN0cnVjdGlvbnMuZGF0YSgpICYmIHBvaW50ZXIgPCAobV9pbnN0cnVjdGlvbnMu
ZGF0YSgpICsgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAppbmRleCAzZTk3OGQz
MzJkNThkNzBhNTI5ZDI4ZjA1MjY2NDQ4Y2ZmNzZlYjEwLi4zOTJjOWNlZTg4Y2NmYTI0ZGQxNDk1
Nzg4NjA1Y2EwMjBkZWQ5YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaApAQCAtMzQsMTUgKzM0LDE5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihJbnN0cnVjdGlv
blN0cmVhbSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KIGNsYXNzIElu
c3RydWN0aW9uU3RyZWFtIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGZy
aWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwogICAgIGZyaWVuZCBjbGFz
cyBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTsKIHB1YmxpYzoKICAgICB1c2luZyBJbnN0cnVjdGlv
bkJ1ZmZlciA9IFZlY3Rvcjx1aW50OF90LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYsIElu
c3RydWN0aW9uU3RyZWFtTWFsbG9jPjsKIAotICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
OworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9pbnN0cnVjdGlvbnMuc2l6ZSgpOworICAgIH0KIAogICAgIHVzaW5nIE9mZnNldCA9IHVuc2ln
bmVkOwogCkBAIC01MSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgQmFzZVJlZiB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFz
cyBJbnN0cnVjdGlvblN0cmVhbTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgQmFzZVJlZihjb25z
dCBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiYgb3RoZXIpCkBAIC02NSw4ICs2OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX2luZGV4ID0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQog
Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIHVud3JhcCgpOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogcHRy
KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IEluc3Ry
dWN0aW9uVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAg
ICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHB0cigpIGNvbnN0IHsgcmV0dXJuIHVu
d3JhcCgpOyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJhc2VSZWY8SW5zdHJ1
Y3Rpb25CdWZmZXI+JiBvdGhlcikgY29uc3QKICAgICAgICAgewpAQCAtODcsNyArOTEsNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlu
bGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5k
ZXhdKTsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBCYXNlUmVmKEluc3RydWN0aW9uQnVm
ZmVyJiBpbnN0cnVjdGlvbnMsIHNpemVfdCBpbmRleCkKQEAgLTEwMywzMyArMTA3LDM2IEBAIHB1
YmxpYzoKICAgICB1c2luZyBSZWYgPSBCYXNlUmVmPGNvbnN0IEluc3RydWN0aW9uQnVmZmVyPjsK
IAogICAgIGNsYXNzIE11dGFibGVSZWYgOiBwdWJsaWMgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZl
cj4gewotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0
ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVzaW5nIEJhc2VSZWY8SW5zdHJ1Y3Rpb25C
dWZmZXI+OjpCYXNlUmVmOworICAgICAgICB1c2luZyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVy
Pjo6bV9pbmRleDsKKyAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj46Om1f
aW5zdHJ1Y3Rpb25zOwogCiAgICAgcHVibGljOgogICAgICAgICBSZWYgZnJlZXplKCkgY29uc3Qg
IHsgcmV0dXJuIFJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX2luZGV4IH07IH0KLSAgICAgICAgaW5s
aW5lIEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gdW53cmFwKCk7IH0KLSAgICAg
ICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
dW53cmFwKCk7IH0KLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiBwdHIoKSB7IHJldHVybiB1
bndyYXAoKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHB0cigpIGNvbnN0
IHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlubGluZSBJbnN0cnVjdGlvblR5cGUqIG9w
ZXJhdG9yLT4oKSB7IHJldHVybiB1bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgY29uc3QgSW5z
dHJ1Y3Rpb25UeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAg
ICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlwZSogcHRyKCkgeyByZXR1cm4gdW53cmFwKCk7IH0K
KyAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uVHlwZSogcHRyKCkgY29uc3QgeyByZXR1
cm4gdW53cmFwKCk7IH0KICAgICAgICAgaW5saW5lIG9wZXJhdG9yIFJlZigpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBSZWYgeyBtX2luc3RydWN0aW9ucywgbV9pbmRleCB9OwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIHVud3Jh
cCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlv
bnNbbV9pbmRleF0pOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogdW53cmFw
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KCZt
X2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0KKyAgICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlw
ZSogdW53cmFwKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvblR5cGUqPigm
bV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CisgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVj
dGlvblR5cGUqIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
SW5zdHJ1Y3Rpb25UeXBlKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5kZXhdKTsgfQogICAgIH07CiAK
IHByaXZhdGU6CiAgICAgY2xhc3MgaXRlcmF0b3IgOiBwdWJsaWMgUmVmIHsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4g
ZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOwogCiAgICAgcHVibGljOgogICAgICAgICB1
c2luZyBSZWY6OlJlZjsKKyAgICAgICAgdXNpbmcgUmVmOjptX2luZGV4OwogCiAgICAgICAgIFJl
ZiYgb3BlcmF0b3IqKCkKICAgICAgICAgewpAQCAtMTQ0LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpcyAr
PSB0aGlzLT5wdHIoKS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMTc2LDE5ICsx
ODMsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuZGF0YSgpOwog
ICAgIH0KIAotICAgIGJvb2wgY29udGFpbnMoSW5zdHJ1Y3Rpb24qKSBjb25zdDsKKyAgICBib29s
IGNvbnRhaW5zKEluc3RydWN0aW9uVHlwZSogaW5zdHJ1Y3Rpb24pIGNvbnN0CisgICAgeworICAg
ICAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBwb2ludGVyID49IG1faW5zdHJ1Y3Rpb25z
LmRhdGEoKSAmJiBwb2ludGVyIDwgKG1faW5zdHJ1Y3Rpb25zLmRhdGEoKSArIG1faW5zdHJ1Y3Rp
b25zLnNpemUoKSk7CisgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSW5zdHJ1Y3Rp
b25TdHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJik7CisgICAgZXhwbGljaXQgSW5zdHJ1Y3Rpb25T
dHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJiBpbnN0cnVjdGlvbnMpCisgICAgICAgIDogbV9pbnN0
cnVjdGlvbnMoV1RGTW92ZShpbnN0cnVjdGlvbnMpKQorICAgIHsgfQogCiAgICAgSW5zdHJ1Y3Rp
b25CdWZmZXIgbV9pbnN0cnVjdGlvbnM7CiB9OwogCi1jbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciA6IHB1YmxpYyBJbnN0cnVjdGlvblN0cmVhbSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0
cnVjdGlvblR5cGU+CitjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciA6IHB1YmxpYyBJbnN0
cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+IHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNv
ZGVSZXdyaXRlcjsKIHB1YmxpYzoKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVj
dGlvblR5cGU+OjpJbnN0cnVjdGlvblN0cmVhbTsKKyAgICB1c2luZyB0eXBlbmFtZSBJbnN0cnVj
dGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpJbnN0cnVjdGlvbkJ1ZmZlcjsKKyAgICB1c2lu
ZyB0eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+OjpNdXRhYmxlUmVm
OworICAgIHVzaW5nIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46
Ok9mZnNldDsKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+Ojpt
X2luc3RydWN0aW9uczsKKwogICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyKCkKLSAgICAgICAg
OiBJbnN0cnVjdGlvblN0cmVhbSh7IH0pCisgICAgICAgIDogSW5zdHJ1Y3Rpb25TdHJlYW08SW5z
dHJ1Y3Rpb25UeXBlPih7IH0pCiAgICAgeyB9CiAKICAgICB2b2lkIHNldEluc3RydWN0aW9uQnVm
ZmVyKEluc3RydWN0aW9uQnVmZmVyJiYgYnVmZmVyKQpAQCAtMjYxLDE0ICsyODEsMTQgQEAgcHVi
bGljOgogICAgICAgICBtX3Bvc2l0aW9uID0gcmVmLm9mZnNldCgpOwogICAgIH0KIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gZmluYWxpemUoKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiBmaW5hbGl6ZSgpCiAg
ICAgewogICAgICAgICBtX2ZpbmFsaXplZCA9IHRydWU7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25z
LnNocmlua1RvRml0KCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rp
b25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtKFdURk1vdmUobV9pbnN0cnVjdGlvbnMp
KSB9OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPElu
c3RydWN0aW9uVHlwZT4+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT4o
V1RGTW92ZShtX2luc3RydWN0aW9ucykpIH07CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEluc3RydWN0aW9uU3RyZWFtPiBmaW5hbGl6ZShJbnN0cnVjdGlvbkJ1ZmZlciYgdXNlZEJ1ZmZl
cikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBl
Pj4gZmluYWxpemUoSW5zdHJ1Y3Rpb25CdWZmZXImIHVzZWRCdWZmZXIpCiAgICAgewogICAgICAg
ICBtX2ZpbmFsaXplZCA9IHRydWU7CiAKQEAgLTI3OCw3ICsyOTgsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgdXNlZEJ1ZmZlciA9IFdURk1vdmUobV9pbnN0cnVjdGlvbnMpOwogCi0gICAgICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9u
U3RyZWFtKFdURk1vdmUocmVzdWx0QnVmZmVyKSkgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiB7IG5ldyBJbnN0cnVj
dGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+KFdURk1vdmUocmVzdWx0QnVmZmVyKSkgfTsKICAg
ICB9CiAKICAgICBNdXRhYmxlUmVmIHJlZigpCkBAIC0yODYsNyArMzA2LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gTXV0YWJsZVJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX3Bvc2l0aW9uIH07
CiAgICAgfQogCi0gICAgdm9pZCBzd2FwKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBvdGhlcikK
KyAgICB2b2lkIHN3YXAoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI8SW5zdHJ1Y3Rpb25UeXBlPiYg
b3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9maW5hbGl6ZWQsIG90aGVyLm1fZmlu
YWxpemVkKTsKICAgICAgICAgc3RkOjpzd2FwKG1fcG9zaXRpb24sIG90aGVyLm1fcG9zaXRpb24p
OwpAQCAtMjk0LDExICszMTQsMTIgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBj
bGFzcyBpdGVyYXRvciA6IHB1YmxpYyBNdXRhYmxlUmVmIHsKLSAgICAgICAgZnJpZW5kIGNsYXNz
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOworICAgIGNsYXNzIGl0ZXJhdG9yIDogcHVibGljIElu
c3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46Ok11dGFibGVSZWYgeworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB1c2luZyBNdXRhYmxlUmVmOjpNdXRhYmxlUmVmOwor
ICAgICAgICB1c2luZyBNdXRhYmxlUmVmOjptX2luZGV4OwogCiAgICAgcHVibGljOgogICAgICAg
ICBNdXRhYmxlUmVmJiBvcGVyYXRvciooKQpAQCAtMzE0LDcgKzMzNSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpcyAr
PSB0aGlzLT5wdHIoKS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMzM0LDUgKzM1
NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpbmFsaXplZCB7IGZhbHNlIH07CiB9OwogCit1
c2luZyBKU0luc3RydWN0aW9uU3RyZWFtID0gSW5zdHJ1Y3Rpb25TdHJlYW08SlNJbnN0cnVjdGlv
bj47Cit1c2luZyBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyID0gSW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXI8SlNJbnN0cnVjdGlvbj47Cit1c2luZyBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0gPSBJbnN0
cnVjdGlvblN0cmVhbTxXYXNtSW5zdHJ1Y3Rpb24+OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAppbmRleCA2YzA3M2NmNjc2YWJkNjgw
YmYzYzNmNzRjMWUxZjEwNDQ4ODlkNzdhLi45ZDE0YzI4Zjg3ZGYxNWMyZmNmNGQ1Y2JlMzhhYTE5
ODJhNjFlOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0z
MSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJCeXRlY29kZXMuaCIKICNpbmNsdWRlICJMTEludE9w
Y29kZS5oIgorI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTg4LDEwICs4OSwxNCBAQCBleHRlcm4gY29uc3QgdW5z
aWduZWQgd2FzbU9wY29kZUxlbmd0aHNbXTsKICAgICBGT1JfRUFDSF9XQVNNX0lEKE9QQ09ERV9J
RF9MRU5HVEhTKTsKICN1bmRlZiBPUENPREVfSURfTEVOR1RIUwogCi1zdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1heEpTT3Bjb2RlTGVuZ3RoID0gLyogT3Bjb2RlICovIDEgKyAvKiBXaWRlMzIg
T3Bjb2RlICovIDEgKyAvKiBPcGVyYW5kcyAqLyAoTUFYX0xFTkdUSF9PRl9CWVRFQ09ERV9JRFMg
LSAxKSAqIDQ7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFdhc21PcGNvZGVMZW5ndGgg
PSAvKiBPcGNvZGUgKi8gMSArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8qIE9wZXJhbmRzICov
IChNQVhfTEVOR1RIX09GX1dBU01fSURTIC0gMSkgKiA0Owotc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBtYXhPcGNvZGVMZW5ndGggPSBzdGQ6Om1heChtYXhKU09wY29kZUxlbmd0aCwgbWF4V2Fz
bU9wY29kZUxlbmd0aCk7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4
T3Bjb2RlTGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIobWF4T3Bjb2RlTGVuZ3RoKSAr
IDE7CitzdGF0aWNfYXNzZXJ0KE5VTUJFUl9PRl9CWVRFQ09ERV9JRFMgPCAyNTUpOworc3RhdGlj
IGNvbnN0ZXhwciBPcGNvZGVTaXplIG1heEpTT3Bjb2RlSURXaWR0aCA9IE9wY29kZVNpemU6Ok5h
cnJvdzsKK3N0YXRpY19hc3NlcnQoTlVNQkVSX09GX1dBU01fSURTIDwgMjU1KTsKK3N0YXRpYyBj
b25zdGV4cHIgT3Bjb2RlU2l6ZSBtYXhXYXNtT3Bjb2RlSURXaWR0aCA9IE9wY29kZVNpemU6Ok5h
cnJvdzsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4SlNCeXRlY29kZVN0cnVjdExlbmd0
aCA9IC8qIE9wY29kZSAqLyBtYXhKU09wY29kZUlEV2lkdGggKyAvKiBXaWRlMzIgT3Bjb2RlICov
IDEgKyAvKiBPcGVyYW5kcyAqLyBNQVhfTEVOR1RIX09GX0JZVEVDT0RFX0lEUyAqIDQ7CitzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFdhc21CeXRlY29kZVN0cnVjdExlbmd0aCA9IC8qIE9w
Y29kZSAqLyBtYXhXYXNtT3Bjb2RlSURXaWR0aCArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8q
IE9wZXJhbmRzICovIE1BWF9MRU5HVEhfT0ZfV0FTTV9JRFMgKiA0Oworc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBtYXhCeXRlY29kZVN0cnVjdExlbmd0aCA9IHN0ZDo6bWF4KG1heEpTQnl0ZWNv
ZGVTdHJ1Y3RMZW5ndGgsIG1heFdhc21CeXRlY29kZVN0cnVjdExlbmd0aCk7CitzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPSBXVEY6
OmdldE1TQlNldENvbnN0ZXhwcihtYXhCeXRlY29kZVN0cnVjdExlbmd0aCkgKyAxOwogCiAjZGVm
aW5lIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUobWFjcm8pIFwKICAgICBtYWNy
byhPcENhbGxWYXJhcmdzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZUlubGluZXMuaAppbmRleCA0YTJhZjZhMTA2YTQ3OTQ2Yzg4YzA5ZGU4YzVjMWQwMTkxZWY2
MWU3Li44YjdjNjNmNWRhNzJhMTJlOTdlYmQ2Y2Q3YjVmOTc2M2RhMGRiNGQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmgKQEAgLTU0LDcgKzU0
LDcgQEAgaW5saW5lIGJvb2wgaXNPcGNvZGVTaGFwZShPcGNvZGVJRCBvcGNvZGVJRCkKIH0KIAog
dGVtcGxhdGU8T3Bjb2RlU2hhcGUgc2hhcGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxz
aGFwZSAhPSBBbnlPcGNvZGVTaGFwZT4+Ci1pbmxpbmUgYm9vbCBpc09wY29kZVNoYXBlKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK2lubGluZSBib29sIGlzT3Bjb2RlU2hhcGUoY29u
c3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgcmV0dXJuIGlzT3Bjb2RlU2hh
cGU8c2hhcGU+KGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVTaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCmluZGV4IDI0YjE2MmI5M2Y3OWU4NGEwZDE4NjQy
MzFhY2RiZDczZTU5YWEwNjMuLmE2NTNhOTZiODc4MmZiZWViNGMxZmRjNGM3ZTI4YTZiZWU4ZDM0
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVTaXpl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaApAQCAt
MjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgor
CiBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBPcGNvZGVTaXplIHsKQEAgLTcyLDQgKzc0LDI1IEBA
IHN0cnVjdCBQYWRkaW5nQnlTaXplPE9wY29kZVNpemU6OldpZGUzMj4gewogICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCB2YWx1ZSA9IDE7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHMsIE9wY29kZVNpemU+CitzdHJ1Y3QgT3Bjb2RlSURXaWR0aEJ5U2l6ZTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVHJhaXRzPgorc3RydWN0IE9wY29kZUlEV2lkdGhCeVNpemU8VHJhaXRzLCBPcGNv
ZGVTaXplOjpOYXJyb3c+IHsKKyAgICB1c2luZyBvcGNvZGVUeXBlID0gdWludDhfdDsKKyAgICBz
dGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgb3Bjb2RlSURTaXplID0gT3Bjb2RlU2l6ZTo6TmFy
cm93OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgorc3RydWN0IE9wY29kZUlEV2lk
dGhCeVNpemU8VHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMTY+IHsKKyAgICB1c2luZyBvcGNvZGVU
eXBlID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxUcmFpdHM6Om1heE9wY29kZUlEV2lkdGgg
PT0gT3Bjb2RlU2l6ZTo6TmFycm93LCB1aW50OF90LCB1aW50MTZfdD46OnR5cGU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBPcGNvZGVTaXplIG9wY29kZUlEU2l6ZSA9IHN0YXRpY19jYXN0PE9wY29k
ZVNpemU+KHNpemVvZihvcGNvZGVUeXBlKSk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHM+CitzdHJ1Y3QgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6OldpZGUz
Mj4geworICAgIHVzaW5nIG9wY29kZVR5cGUgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPFRy
YWl0czo6bWF4T3Bjb2RlSURXaWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3csIHVpbnQ4X3QsIHVp
bnQxNl90Pjo6dHlwZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZVNpemUgb3Bjb2RlSURT
aXplID0gc3RhdGljX2Nhc3Q8T3Bjb2RlU2l6ZT4oc2l6ZW9mKG9wY29kZVR5cGUpKTsKK307CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBkMmU4NTA2YzRjNDI2YmJiN2FiNTQ1
ODQ3YzkyMzQwMzM0NGQ5YjE2Li5kOGE3NjEwZjczZTM3Y2Y3Mzg0NzM2YjBhZjc5MzA2MTEyM2Ri
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lz
ZUp1bXBUYXJnZXRzLmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHRl
bXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2s+Ci1zdGF0aWMgdm9pZCBn
ZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgdmVjdG9yU2l6ZT4mIG91dCkKK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9y
SW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlv
blN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBleHRyYWN0U3RvcmVkSnVt
cFRhcmdldHNGb3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBbJl0oaW50MzJf
dCByZWxhdGl2ZU9mZnNldCkgewogICAgICAgICBvdXQuYXBwZW5kKGluc3RydWN0aW9uLm9mZnNl
dCgpICsgcmVsYXRpdmVPZmZzZXQpOwpAQCAtNTQsNyArNTQsNyBAQCBlbnVtIGNsYXNzIENvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIHsKIH07CiAKIHRlbXBsYXRlPENvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCBzaXplX3QgdmVjdG9yU2l6ZT4K
LXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCB2ZWN0b3JTaXplPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsK
IApAQCAtODgsMzIgKzg4LDMyIEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVy
bmFsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtCiAgICAgb3V0LnNo
cmlua0NhcGFjaXR5KHRvSW5kZXgpOwogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
LCAzMj4mIG91dCkKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+
JiBvdXQpCiB7CiAgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLCBvdXQpOwogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
JiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91
dCkKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCkKIHsKICAgICBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZv
bGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgb3V0KTsKIH0KIAot
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
KiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rv
cjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCkKK3ZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25z
dCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0eXBlbmFtZSBKU0lu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQogewogICAgIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93
Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogfQogCi12b2lk
IHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIG91dCkKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0IEpT
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldD4mIG91dCkKIHsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvcmNlQ29tcHV0ZT4o
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRz
Rm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
MT4mIG91dCkKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1
Y3Rpb24sIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBv
dXQpCiB7CiAgICAgZ2V0SnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvdXQpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKFVu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
MT4mIG91dCkKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCwgMT4mIG91dCkKIHsKICAgICBnZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9u
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG91dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggZjE3NWUyY2NhN2Rh
MTI4ZWE0NWIyYjEzN2EzYjliODA2NjUxNjJiMC4uZDhlYTBmZGM0ZTk0ZjM3MTk3ZjA2NzlmMjVm
MGIwYWM5ZmE3NmVjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuaApAQCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiAKIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9m
IGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAuCi12b2lk
IGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KTsKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
cyhDb2RlQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0
b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwotdm9pZCBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQp
Owordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx0eXBl
bmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFt
JiBpbnN0cnVjdGlvbnMsIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvciosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBWZWN0b3I8dHlw
ZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7CiAKLXZvaWQgcmVj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4m
IG91dCk7Cit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvciosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBWZWN0b3I8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3V0KTsKIAotdm9pZCBmaW5kSnVtcFRhcmdl
dHNGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVm
JiwgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpOwotdm9pZCBmaW5k
SnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciosIGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKENvZGVC
bG9jayosIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYsIFZlY3Rvcjx0
eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpOwordm9pZCBmaW5k
SnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciosIGNv
bnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYsIFZlY3Rvcjx0eXBlbmFtZSBK
U0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lz
ZUp1bXBUYXJnZXRzSW5saW5lcy5oCmluZGV4IDBiZDQwMzk4NDUyZDljZWY2NTBjODQ5ZWE3ZTJl
M2RjNzM2NjRkYzUuLmY3ZWZhYmJkOTQzOGQwOGZiMDY0MzMzODkzNDRmNGFhYzkyYTI3YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0c0lubGluZXMuaApAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KLWlubGluZSBpbnQganVtcFRhcmdldEZvckluc3Ry
dWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGlu
c3RydWN0aW9uLCB1bnNpZ25lZCB0YXJnZXQpCitpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0
cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpSZWYmIGluc3RydWN0aW9uLCB1bnNpZ25lZCB0YXJnZXQpCiB7CiAgICAgaWYgKHRhcmdl
dCkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKQEAgLTk4LDcgKzk4LDcgQEAgaW5saW5lIGludCBq
dW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW06OlIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaE1hcD4KLWlubGluZSBpbnQg
anVtcFRhcmdldEZvckluc3RydWN0aW9uKEhhc2hNYXAmIG91dE9mTGluZUp1bXBUYXJnZXRzLCBj
b25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgdGFyZ2V0
KQoraW5saW5lIGludCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oSGFzaE1hcCYgb3V0T2ZMaW5l
SnVtcFRhcmdldHMsIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5z
dHJ1Y3Rpb24sIHVuc2lnbmVkIHRhcmdldCkKIHsKICAgICBpZiAodGFyZ2V0KQogICAgICAgICBy
ZXR1cm4gdGFyZ2V0OwpAQCAtMTA3LDE0ICsxMDcsMTQgQEAgaW5saW5lIGludCBqdW1wVGFyZ2V0
Rm9ySW5zdHJ1Y3Rpb24oSGFzaE1hcCYgb3V0T2ZMaW5lSnVtcFRhcmdldHMsIGNvbnN0IEluc3Ry
dWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEJsb2NrPgotaW5saW5lIGlu
dCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIGNvbnN0IEluc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQoraW5saW5lIGludCBqdW1wVGFyZ2V0Rm9y
SW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIGNvbnN0IHR5cGVuYW1lIEpTSW5zdHJ1Y3Rp
b25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3Ry
dWN0aW9uLT5hczxPcD4oKTsKICAgICByZXR1cm4ganVtcFRhcmdldEZvckluc3RydWN0aW9uKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rpb24+Ci1pbmxpbmUgdm9pZCBleHRy
YWN0U3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uJiBm
dW5jdGlvbikKK2lubGluZSB2b2lkIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKEJsb2NrJiYgY29kZUJsb2NrLCBjb25zdCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFt
OjpSZWYmIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdGlvbiYgZnVuY3Rpb24pCiB7CiAjZGVmaW5l
IENBU0VfT1AoX19vcCkgXAogICAgIGNhc2UgX19vcDo6b3Bjb2RlSUQ6IFwKQEAgLTEzNSw3ICsx
MzUsNyBAQCBTV0lUQ0hfSk1QKENBU0VfT1AsIFNXSVRDSF9DQVNFLCBTV0lUQ0hfREVGQVVMVF9P
RkZTRVQpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdGlvbiwg
dHlwZW5hbWUgQ29kZUJsb2NrT3JIYXNoTWFwPgotaW5saW5lIHZvaWQgdXBkYXRlU3RvcmVkSnVt
cFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgdW5zaWduZWQgZmluYWxP
ZmZzZXQsIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uLCBjb25zdCBG
dW5jdGlvbiYgZnVuY3Rpb24sIENvZGVCbG9ja09ySGFzaE1hcCYgY29kZUJsb2NrT3JIYXNoTWFw
KQoraW5saW5lIHZvaWQgdXBkYXRlU3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9j
ayYmIGNvZGVCbG9jaywgdW5zaWduZWQgZmluYWxPZmZzZXQsIHR5cGVuYW1lIEpTSW5zdHJ1Y3Rp
b25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlv
biwgQ29kZUJsb2NrT3JIYXNoTWFwJiBjb2RlQmxvY2tPckhhc2hNYXApCiB7CiAjZGVmaW5lIENB
U0VfT1AoX19vcCkgXAogICAgIGNhc2UgX19vcDo6b3Bjb2RlSUQ6IHsgXApAQCAtMTcxLDcgKzE3
MSw3IEBAIFNXSVRDSF9KTVAoQ0FTRV9PUCwgU1dJVENIX0NBU0UsIFNXSVRDSF9ERUZBVUxUX09G
RlNFVCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0aW9uPgot
aW5saW5lIHZvaWQgdXBkYXRlU3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayog
Y29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFi
bGVSZWYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uKQoraW5saW5lIHZvaWQgdXBkYXRl
U3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBmaW5hbE9mZnNldCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBp
bnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgdXBkYXRlU3RvcmVkSnVtcFRh
cmdldHNGb3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGZpbmFsT2Zmc2V0LCBpbnN0cnVjdGlvbiwg
ZnVuY3Rpb24sIGNvZGVCbG9jayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBhYzU3MTI3YmNmODkwNzJiZTAz
ODQxNmRhMTM5YjQxZjE2NGFlNjE0Li5hOWFmN2NmNDMxZmQ0YzNmNTA1Y2U4MGMwZmY1YTI0MzI0
MjE1NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBpbmxpbmUgdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6Z2V0TGluZUFuZENvbHVtbihjb25zdCBFeHByZXNzaW9uUmFuZ2VJbmZvJiBp
bmZvLAogfQogCiAjaWZuZGVmIE5ERUJVRwotc3RhdGljIHZvaWQgZHVtcExpbmVDb2x1bW5FbnRy
eShzaXplX3QgaW5kZXgsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvblN0cmVh
bSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNv
bHVtbikKK3N0YXRpYyB2b2lkIGR1bXBMaW5lQ29sdW1uRW50cnkoc2l6ZV90IGluZGV4LCBjb25z
dCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvblN0cmVhbSwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25PZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbikKIHsKICAgICBjb25z
dCBhdXRvIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25TdHJlYW0uYXQoaW5zdHJ1Y3Rpb25PZmZz
ZXQpOwogICAgIGNvbnN0IGNoYXIqIGV2ZW50ID0gIiI7CkBAIC0yOTQsNyArMjk0LDcgQEAgVW5s
aW5rZWRDb2RlQmxvY2s6On5VbmxpbmtlZENvZGVCbG9jaygpCiAgICAgfQogfQogCi1jb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0
Citjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rp
b25zKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9pbnN0cnVjdGlvbnMuZ2V0KCkpOwogICAgIHJl
dHVybiAqbV9pbnN0cnVjdGlvbnM7CkBAIC0zMzIsNyArMzMyLDcgQEAgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzJiBVbmxpbmtlZENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJs
b2NrKiBjb2QKICAgICByZXR1cm4gKm1fbGl2ZW5lc3M7CiB9CiAKLWludCBVbmxpbmtlZENvZGVC
bG9jazo6b3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVj
b2RlT2Zmc2V0KQoraW50IFVubGlua2VkQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KHR5
cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAg
ICBBU1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5jb250YWlucyhieXRlY29kZU9mZnNldCkp
OwogICAgIHJldHVybiBtX291dE9mTGluZUp1bXBUYXJnZXRzLmdldChieXRlY29kZU9mZnNldCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCmluZGV4IDFjNTkwNDJlMGQwYzM4MTFiM2M5YmUyMTU4Y2RjNTRjMDFkYmI4MWMuLjk0MWJm
M2E5YmZkMjJjNjljZDZlYmZlODZmOGQyOWRkZTUxZjdlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0yMTEsMTIgKzIx
MSwxMiBAQCBwdWJsaWM6CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAgICAg
SlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxKU1BhcnNlclNjcmlwdE1vZGU+KG1fc2NyaXB0TW9kZSk7IH0KIAotICAgIGNvbnN0IEluc3Ry
dWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdDsKLSAgICBjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25BdChCeXRlY29kZUluZGV4IGluZGV4KSBjb25zdCB7IHJldHVybiBpbnN0
cnVjdGlvbnMoKS5hdChpbmRleCkucHRyKCk7IH0KLSAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCisgICAgY29uc3QgSlNJbnN0cnVjdGlv
blN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3Q7CisgICAgY29uc3QgSlNJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25BdChCeXRlY29kZUluZGV4IGluZGV4KSBjb25zdCB7IHJldHVybiBpbnN0cnVj
dGlvbnMoKS5hdChpbmRleCkucHRyKCk7IH0KKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChj
b25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IGF1
dG8qIGluc3RydWN0aW9uc0JlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYXQoMCkucHRyKCk7Ci0gICAg
ICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
SW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVn
aW4pICsgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1
Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0aW9uKj4ocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSArIGluc3RydWN0aW9ucygp
LnNpemUoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluc3RydWN0aW9uID49IGluc3RydWN0
aW9uc0JlZ2luICYmIGluc3RydWN0aW9uIDwgaW5zdHJ1Y3Rpb25zRW5kKTsKICAgICAgICAgcmV0
dXJuIGluc3RydWN0aW9uIC0gaW5zdHJ1Y3Rpb25zQmVnaW47CiAgICAgfQpAQCAtMjc4LDcgKzI3
OCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29sdW1uOyB9CiAKLSAgICBjb25zdCBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0PiYgb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSBjb25z
dAorICAgIGNvbnN0IEZpeGVkVmVjdG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4mIG9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX3JhcmVEYXRhKTsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CkBAIC00MzgsOSArNDM4LDkg
QEAgcHJpdmF0ZToKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3VyY2VVUkxEaXJl
Y3RpdmU7CiAgICAgUGFja2VkUmVmUHRyPFN0cmluZ0ltcGw+IG1fc291cmNlTWFwcGluZ1VSTERp
cmVjdGl2ZTsKIAotICAgIEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1f
anVtcFRhcmdldHM7CisgICAgRml4ZWRWZWN0b3I8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwogICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+
IG1fbWV0YWRhdGE7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBtX2lu
c3RydWN0aW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNJbnN0cnVjdGlvblN0cmVhbT4gbV9p
bnN0cnVjdGlvbnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cz4gbV9saXZlbmVzczsKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNDc0LDcgKzQ3NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHVuc2lnbmVkIG1fZW5kRGl2b3Q7CiAgICAgICAgIH07CiAg
ICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gbV90
eXBlUHJvZmlsZXJJbmZvTWFwOwotICAgICAgICBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOworICAgICAg
ICBGaXhlZFZlY3RvcjxKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29u
dHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CiAgICAgICAgIEZpeGVkVmVjdG9yPEJpdFZlY3Rvcj4g
bV9iaXRWZWN0b3JzOwogICAgICAgICBGaXhlZFZlY3RvcjxJZGVudGlmaWVyU2V0PiBtX2NvbnN0
YW50SWRlbnRpZmllclNldHM7CiAKQEAgLTQ4MiwxMiArNDgyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgfTsKIAotICAg
IGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOwotICAg
IGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGlu
c3RydWN0aW9uKQorICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KHR5cGVuYW1lIEpTSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCk7CisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3Qg
dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBvdXRPZkxpbmVKdW1wT2Zmc2V0KGluc3RydWN0aW9uLm9mZnNldCgpKTsK
ICAgICB9Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
KQorICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSB0aGlzLT5ieXRlY29kZU9m
ZnNldChwYyk7CiAgICAgICAgIHJldHVybiBvdXRPZkxpbmVKdW1wT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KTsKQEAgLTQ5OSw3ICs0OTksNyBAQCBwdWJsaWM6CiAgICAgQmFzZWxpbmVFeGVjdXRpb25D
b3VudGVyJiBsbGludEV4ZWN1dGVDb3VudGVyKCkgeyByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3Vu
dGVyOyB9CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNo
TWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CisgICAgdXNpbmcgT3V0T2ZMaW5l
SnVtcFRhcmdldHMgPSBIYXNoTWFwPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCwgaW50PjsKIAogICAgIE91dE9mTGluZUp1bXBUYXJnZXRzIG1fb3V0T2ZMaW5lSnVtcFRhcmdl
dHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvci5jcHAKaW5kZXggNmQ3YmVhMWYzOTQwYzM3NjNiOTg0OGExZTY4MmYyNDE5MjBh
NGM4OS4uOWRhZDc4YjZmN2Y2NGU0ZDk5NmZhY2I4ZTBiZjU1YzBjZTNhNjIxYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBVbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvcjo6YWRkVHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5z
dHJ1Y3QKICAgICBtX3R5cGVQcm9maWxlckluZm9NYXAuc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBy
YW5nZSk7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKHN0
ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gaW5zdHJ1Y3Rpb25zKQordm9pZCBVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUoc3RkOjp1bmlxdWVfcHRyPEpTSW5zdHJ1
Y3Rpb25TdHJlYW0+IGluc3RydWN0aW9ucykKIHsKICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25zKTsK
ICAgICB7CkBAIC0xNzAsNyArMTcwLDcgQEAgVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwKICAgICBy
ZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4PFVubGlua2VkSGFuZGxl
ckluZm8+KG1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOwogfQog
Ci12b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphcHBseU1vZGlmaWNhdGlvbihCeXRl
Y29kZVJld3JpdGVyJiByZXdyaXRlciwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0
aW9ucykKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9u
KEJ5dGVjb2RlUmV3cml0ZXImIHJld3JpdGVyLCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBp
bnN0cnVjdGlvbnMpCiB7CiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3ZSBh
ZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQsIHRo
ZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKICAgICAvLyB0aGUgaW5zZXJ0aW9uIGlu
Zm9ybWF0aW9uLgpAQCAtMjA1LDEzICsyMDUsMTMgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvcjo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYgcmV3cml0ZXIsIEkK
ICAgICByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHModGhpcywgaW5zdHJ1Y3Rpb25zLCBtX2p1
bXBUYXJnZXRzKTsKIH0KIAotdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YWRkT3V0
T2ZMaW5lSnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0
LCBpbnQgdGFyZ2V0KQordm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YWRkT3V0T2ZM
aW5lSnVtcFRhcmdldCh0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNv
ZGVPZmZzZXQsIGludCB0YXJnZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodGFyZ2V0KTsKICAg
ICBtX291dE9mTGluZUp1bXBUYXJnZXRzLnNldChieXRlY29kZU9mZnNldCwgdGFyZ2V0KTsKIH0K
IAotaW50IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCitpbnQgVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgSlNJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIEFTU0VSVChtX291dE9mTGlu
ZUp1bXBUYXJnZXRzLmNvbnRhaW5zKGJ5dGVjb2RlT2Zmc2V0KSk7CiAgICAgcmV0dXJuIG1fb3V0
T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
LmgKaW5kZXggNjBhMzU0MWRkZDIyMjFlOWZlNzhiMWJhOWJmNTY4NTczY2VlOTc0NC4uYjNkNTBi
OGY5NmY2Y2VjZTllOWIwZWViNmFmM2E1Yjc4M2UyMmYyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFVubGlua2VkTWV0YWRhdGFUYWJsZSYg
bWV0YWRhdGEoKSB7IHJldHVybiBtX2NvZGVCbG9jay0+bWV0YWRhdGEoKTsgfQogICAgIHZvaWQg
YWRkRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIGludCBkaXZvdCwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBj
b2x1bW4pOwogICAgIHZvaWQgYWRkVHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8odW5zaWduZWQg
aW5zdHJ1Y3Rpb25PZmZzZXQsIHVuc2lnbmVkIHN0YXJ0RGl2b3QsIHVuc2lnbmVkIGVuZERpdm90
KTsKLSAgICB2b2lkIGFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXQoSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpCisgICAgdm9pZCBhZGRPcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBv
ZmZzZXQpCiAgICAgewogICAgICAgICBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZz
ZXRzLmFwcGVuZChvZmZzZXQpOwogICAgIH0KQEAgLTE3NiwxMCArMTc2LDEwIEBAIHB1YmxpYzoK
ICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKGludCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyc1tpbmRleF07IH0KICAgICB2b2lkIGFkZElkZW50aWZpZXIoY29uc3Qg
SWRlbnRpZmllciYgaSkgeyByZXR1cm4gbV9pZGVudGlmaWVycy5hcHBlbmQoaSk7IH0KIAotICAg
IHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCBpbnQ+OwotICAgIHZvaWQgYWRkT3V0T2ZMaW5lSnVtcFRhcmdldChJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCBpbnQgdGFyZ2V0KTsKLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNl
dChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNl
dChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKKyAgICB1c2luZyBP
dXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8dHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCBpbnQ+OworICAgIHZvaWQgYWRkT3V0T2ZMaW5lSnVtcFRhcmdldCh0eXBlbmFt
ZSBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludCB0YXJnZXQpOworICAgIGludCBvdXRP
ZkxpbmVKdW1wT2Zmc2V0KHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Cisg
ICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0
cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBvdXRPZkxpbmVK
dW1wT2Zmc2V0KGluc3RydWN0aW9uLm9mZnNldCgpKTsKICAgICB9CkBAIC0xOTQsOSArMTk0LDkg
QEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRMaW5lQW5kQ29sdW1uKGNvbnN0IEV4cHJlc3Npb25S
YW5nZUluZm8mLCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikgY29uc3Q7CiAKLSAg
ICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0ZXImLCBJbnN0cnVjdGlvblN0
cmVhbVdyaXRlciYpOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRl
ciYsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImKTsKIAotICAgIHZvaWQgZmluYWxpemUoc3Rk
Ojp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPik7CisgICAgdm9pZCBmaW5hbGl6ZShzdGQ6
OnVuaXF1ZV9wdHI8SlNJbnN0cnVjdGlvblN0cmVhbT4pOwogCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIFZNJiBt
X3ZtOwogICAgIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgLy8g
SW4gbm9uLVJhcmVEYXRhLgotICAgIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBt
X2p1bXBUYXJnZXRzOworICAgIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmll
cnM7CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9jb25zdGFudFJlZ2lzdGVy
czsKICAgICBWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiBtX2NvbnN0YW50c1NvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbjsKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBU
YWJsZXM7CiAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4
cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFVubGlua2Vk
Q29kZUJsb2NrOjpSYXJlRGF0YTo6VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQ
cm9maWxlckluZm9NYXA7Ci0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1f
b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CisgICAgVmVjdG9yPHR5cGVuYW1l
IEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0czsKICAgICBWZWN0b3I8Qml0VmVjdG9yPiBtX2JpdFZlY3RvcnM7CiAgICAgVmVj
dG9yPElkZW50aWZpZXJTZXQ+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNpZ25l
ZCBtX251bUJpbmFyeUFyaXRoUHJvZmlsZXMgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggOWRkZmQz
NGJmNzlkOGY0YjE5ZmRkZTU2YjJhNDExYjNiY2IxNjA4MC4uNWRiOWFiYTk4OTBjYTA3MDkwYTI5
OWY2Y2M0OTY5OGFkZGNiYTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzM0LDYgKzMzNCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB1c2luZyBPcGNvZGVJRCA9IDo6SlNDOjpPcGNvZGVJRDsK
ICAgICAgICAgdXNpbmcgT3BOb3AgPSA6OkpTQzo6T3BOb3A7CiAgICAgICAgIHVzaW5nIENvZGVC
bG9jayA9IHN0ZDo6dW5pcXVlX3B0cjxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj47CisgICAg
ICAgIHVzaW5nIEluc3RydWN0aW9uVHlwZSA9IEpTSW5zdHJ1Y3Rpb247CiAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgT3Bjb2RlSUQgb3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0aW9ucyA9IG9w
X2VuZDsKICAgICB9OwogCkBAIC0xMDkwLDcgKzEwOTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEp1bXBPcD4KLSAgICAgICAgdm9pZCBzZXRUYXJnZXRGb3JKdW1wSW5zdHJ1Y3Rpb24o
SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmLCBpbnQgdGFyZ2V0KTsKKyAgICAgICAgdm9p
ZCBzZXRUYXJnZXRGb3JKdW1wSW5zdHJ1Y3Rpb24odHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiYsIGludCB0YXJnZXQpOwogCiAgICAgICAgIHVzaW5nIEJpZ0ludE1hcEVu
dHJ5ID0gc3RkOjp0dXBsZTxVbmlxdWVkU3RyaW5nSW1wbCosIHVpbnQ4X3QsIGJvb2w+OwogCkBA
IC0xMTg4LDcgKzExODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBhZGRC
aWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCwgYm9vbCBzaWdu
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogYWRkVGVtcGxhdGVPYmplY3RDb25zdGFudChSZWY8VGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yPiYmLCBpbnQpOwogCi0gICAgICAgIGNvbnN0IEluc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQorICAg
ICAgICBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX3dyaXRlcjsgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUaHJvd0V4
cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAKQEAgLTEyMDQsNyArMTIwNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlc3RvcmVURFpTdGFjayhjb25zdCBQcmVzZXJ2ZWRU
RFpTdGFjayYpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgICAgIHZv
aWQgd2l0aFdyaXRlcihJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgd3JpdGVyLCBjb25zdCBGdW5j
JiBmbikKKyAgICAgICAgdm9pZCB3aXRoV3JpdGVyKEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIm
IHdyaXRlciwgY29uc3QgRnVuYyYgZm4pCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gcHJl
dkxhc3RPcGNvZGVJRCA9IG1fbGFzdE9wY29kZUlEOwogICAgICAgICAgICAgYXV0byBwcmV2TGFz
dEluc3RydWN0aW9uID0gbV9sYXN0SW5zdHJ1Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2UuaAppbmRl
eCAwZjkxOTkzN2I1ZTQ2ZTc4ZTYxMTc2MjQwZGJlYTEzNzhmN2VlNThjLi4xOGQ4NjIzZmRiYzk0
Yzg3ZmU3YTFlZDk5OWU2YjdiZDg5ZGVlYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgKQEAgLTQ2
LDYgKzQ2LDkgQEAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlIHsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRvcj4KICAgICBmcmllbmQgY2xhc3MgR2VuZXJpY0xhYmVs
OwogCisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXJUeXBlID0gSW5zdHJ1Y3Rpb25T
dHJlYW1Xcml0ZXI8dHlwZW5hbWUgVHJhaXRzOjpJbnN0cnVjdGlvblR5cGU+OworICAgIHVzaW5n
IEluc3RydWN0aW9uU3RyZWFtVHlwZSA9IEluc3RydWN0aW9uU3RyZWFtPHR5cGVuYW1lIFRyYWl0
czo6SW5zdHJ1Y3Rpb25UeXBlPjsKKwogcHVibGljOgogICAgIEJ5dGVjb2RlR2VuZXJhdG9yQmFz
ZSh0eXBlbmFtZSBUcmFpdHM6OkNvZGVCbG9jaywgdWludDMyX3QgdmlydHVhbFJlZ2lzdGVyQ291
bnRGb3JDYWxsZWVTYXZlcyk7CiAKQEAgLTc3LDEyICs4MCwxMiBAQCBwdWJsaWM6CiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCByZWNsYWltRnJlZVJlZ2lzdGVycygpOwogCi0gICAgSW5zdHJ1Y3Rpb25T
dHJlYW1Xcml0ZXIgbV93cml0ZXI7CisgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXJUeXBlIG1f
d3JpdGVyOwogICAgIHR5cGVuYW1lIFRyYWl0czo6Q29kZUJsb2NrIG1fY29kZUJsb2NrOwogCiAg
ICAgYm9vbCBtX291dE9mTWVtb3J5RHVyaW5nQ29uc3RydWN0aW9uIHsgZmFsc2UgfTsKICAgICB0
eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEIG1fbGFzdE9wY29kZUlEID0gVHJhaXRzOjpvcGNvZGVG
b3JEaXNhYmxpbmdPcHRpbWl6YXRpb25zOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxl
UmVmIG1fbGFzdEluc3RydWN0aW9uIHsgbV93cml0ZXIucmVmKCkgfTsKKyAgICB0eXBlbmFtZSBJ
bnN0cnVjdGlvblN0cmVhbVR5cGU6Ok11dGFibGVSZWYgbV9sYXN0SW5zdHJ1Y3Rpb24geyBtX3dy
aXRlci5yZWYoKSB9OwogCiAgICAgU2VnbWVudGVkVmVjdG9yPEdlbmVyaWNMYWJlbDxUcmFpdHM+
LCAzMj4gbV9sYWJlbHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMyPiBtX2Nh
bGxlZUxvY2FsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKaW5kZXggYmQ3ODkw
ZDVmYWI5ZTE1ZTdiZTVlM2IwN2ZkODE4ZDQyMjUwYjZhNy4uOGRjNjJiYjYyMDM5NTRlMmVjZDky
YmQ4Njk4MTdiMTI5OTYzOWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgK
QEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6ZW1p
dExhYmVsKEdlbmVyaWNMYWJlbDxUcmFpdHM+JiBsYWJlbCkKIHRlbXBsYXRlPHR5cGVuYW1lIFRy
YWl0cz4KIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFRyYWl0cz46OnJlY29yZE9wY29kZSh0
eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEIG9wY29kZUlEKQogewotICAgIEFTU0VSVChtX2xhc3RP
cGNvZGVJRCA9PSBUcmFpdHM6Om9wY29kZUZvckRpc2FibGluZ09wdGltaXphdGlvbnMgfHwgKG1f
bGFzdE9wY29kZUlEID09IG1fbGFzdEluc3RydWN0aW9uLT5vcGNvZGVJRDx0eXBlbmFtZSBUcmFp
dHM6Ok9wY29kZVRyYWl0cz4oKSAmJiBtX3dyaXRlci5wb3NpdGlvbigpID09IG1fbGFzdEluc3Ry
dWN0aW9uLm9mZnNldCgpICsgbV9sYXN0SW5zdHJ1Y3Rpb24tPnNpemU8dHlwZW5hbWUgVHJhaXRz
OjpPcGNvZGVUcmFpdHM+KCkpKTsKKyAgICBBU1NFUlQobV9sYXN0T3Bjb2RlSUQgPT0gVHJhaXRz
OjpvcGNvZGVGb3JEaXNhYmxpbmdPcHRpbWl6YXRpb25zIHx8IChtX2xhc3RPcGNvZGVJRCA9PSBt
X2xhc3RJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSAmJiBtX3dyaXRlci5wb3NpdGlvbigpID09IG1f
bGFzdEluc3RydWN0aW9uLm9mZnNldCgpICsgbV9sYXN0SW5zdHJ1Y3Rpb24tPnNpemUoKSkpOwog
ICAgIG1fbGFzdEluc3RydWN0aW9uID0gbV93cml0ZXIucmVmKCk7CiAgICAgbV9sYXN0T3Bjb2Rl
SUQgPSBvcGNvZGVJRDsKIH0KQEAgLTEwMiw2ICsxMDIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
cmFpdHM+CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+OjphbGlnbldpZGVPcGNv
ZGUxNigpCiB7CiAjaWYgQ1BVKE5FRURTX0FMSUdORURfQUNDRVNTKQorICAgIHN0YXRpY19hc3Nl
cnQoVHJhaXRzOjpPcGNvZGVUcmFpdHM6Om1heE9wY29kZUlEV2lkdGggPT0gT3Bjb2RlU2l6ZTo6
TmFycm93KTsKICAgICBzaXplX3Qgb3Bjb2RlU2l6ZSA9IDE7CiAgICAgc2l6ZV90IHByZWZpeEFu
ZE9wY29kZVNpemUgPSBvcGNvZGVTaXplICsgUGFkZGluZ0J5U2l6ZTxPcGNvZGVTaXplOjpXaWRl
MTY+Ojp2YWx1ZTsKICAgICB3aGlsZSAoKG1fd3JpdGVyLnBvc2l0aW9uKCkgKyBwcmVmaXhBbmRP
cGNvZGVTaXplKSAlIE9wY29kZVNpemU6OldpZGUxNikKQEAgLTExMyw2ICsxMTQsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHM+CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxUcmFpdHM+
OjphbGlnbldpZGVPcGNvZGUzMigpCiB7CiAjaWYgQ1BVKE5FRURTX0FMSUdORURfQUNDRVNTKQor
ICAgIHN0YXRpY19hc3NlcnQoVHJhaXRzOjpPcGNvZGVUcmFpdHM6Om1heE9wY29kZUlEV2lkdGgg
PT0gT3Bjb2RlU2l6ZTo6TmFycm93KTsKICAgICBzaXplX3Qgb3Bjb2RlU2l6ZSA9IDE7CiAgICAg
c2l6ZV90IHByZWZpeEFuZE9wY29kZVNpemUgPSBvcGNvZGVTaXplICsgUGFkZGluZ0J5U2l6ZTxP
cGNvZGVTaXplOjpXaWRlMzI+Ojp2YWx1ZTsKICAgICB3aGlsZSAoKG1fd3JpdGVyLnBvc2l0aW9u
KCkgKyBwcmVmaXhBbmRPcGNvZGVTaXplKSAlIE9wY29kZVNpemU6OldpZGUzMikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFs
eXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0
eUFuYWx5c2lzLmgKaW5kZXggODc1N2QzYTBkNTRmYzg5ZmIwZDk3YWM4Yjk5ZTg2YTM0MWViNmQ3
NC4uMzc1NTA0ZTFmMTEyMjc1MmQ4YzJjMTdlN2I4N2QzNWU0OTRiMTE4NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0
eUFuYWx5c2lzLmgKQEAgLTMzLDkgKzMzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBSZWZlcmVu
Y2UgY291bnQgaW5kaWNhdGVzIG51bWJlciBvZiBsaXZlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRo
aXMgb2JqZWN0LgogY2xhc3MgU3RhdGljUHJvcGVydHlBbmFseXNpcyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXM+IGNyZWF0ZShJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJl
ZiYmIGluc3RydWN0aW9uUmVmKQorICAgIHN0YXRpYyBSZWY8U3RhdGljUHJvcGVydHlBbmFseXNp
cz4gY3JlYXRlKHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmJiBpbnN0
cnVjdGlvblJlZikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRpY1By
b3BlcnR5QW5hbHlzaXMoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpKTsgCisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMoV1RGTW92ZShpbnN0cnVjdGlv
blJlZikpKTsKICAgICB9CiAKICAgICB2b2lkIGFkZFByb3BlcnR5SW5kZXgodW5zaWduZWQgcHJv
cGVydHlJbmRleCkgeyBtX3Byb3BlcnR5SW5kZXhlcy5hZGQocHJvcGVydHlJbmRleCk7IH0KQEAg
LTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgaW50IHByb3BlcnR5SW5kZXhDb3VudCgpIHsg
cmV0dXJuIG1fcHJvcGVydHlJbmRleGVzLnNpemUoKTsgfQogCiBwcml2YXRlOgotICAgIFN0YXRp
Y1Byb3BlcnR5QW5hbHlzaXMoSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmJiBpbnN0cnVj
dGlvblJlZikKKyAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKHR5cGVuYW1lIEpTSW5zdHJ1Y3Rp
b25TdHJlYW06Ok11dGFibGVSZWYmJiBpbnN0cnVjdGlvblJlZikKICAgICAgICAgOiBtX2luc3Ry
dWN0aW9uUmVmKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKQogICAgIHsKICAgICB9CiAKLSAgICBJ
bnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBtX2luc3RydWN0aW9uUmVmOworICAgIHR5cGVu
YW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgbV9pbnN0cnVjdGlvblJlZjsKICAg
ICB0eXBlZGVmIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBQcm9wZXJ0eUluZGV4U2V0
OwogICAgIFByb3BlcnR5SW5kZXhTZXQgbV9wcm9wZXJ0eUluZGV4ZXM7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5
emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIuaAppbmRleCA1ZjllNzM4NjJhNGFjZDMwN2IxMDFiZDFjZDZmMjNmYzUxNzUyZDNi
Li5hZTQ5YjAyNzczYzY3MjBlM2NmMzMxNTFjMTY5YTFlYmYyZTA4MTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIuaApAQCAtMzUsOCArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGlzIHVuZGVy
c3Rvb2QgdG8gYmUgbG9zc3ksIGFuZCBpdCdzIE9LIGlmIGl0IHR1cm5zIG91dCB0byBiZSB3cm9u
ZyBzb21ldGltZXMuCiBjbGFzcyBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsKIHB1YmxpYzoKLSAg
ICB2b2lkIGNyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0
YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7Ci0gICAgdm9pZCBuZXdPYmplY3QoUmVnaXN0ZXJJRCog
ZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7CisgICAg
dm9pZCBjcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0
cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7CisgICAgdm9pZCBuZXdPYmplY3QoUmVn
aXN0ZXJJRCogZHN0LCB0eXBlbmFtZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGlu
c3RydWN0aW9uUmVmKTsKICAgICB2b2lkIHB1dEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25l
ZCBwcm9wZXJ0eUluZGV4KTsgLy8gcHJvcGVydHlJbmRleCBpcyBhbiBpbmRleCBpbnRvIGEgdW5p
cXVlZCBzZXQgb2Ygc3RyaW5ncy4KICAgICB2b2lkIG1vdihSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHNyYyk7CiAKQEAgLTUwLDE0ICs1MCwxNCBAQCBwcml2YXRlOgogICAgIEFuYWx5c2lz
TWFwIG1fYW5hbHlzZXM7CiB9OwogCi1pbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVy
OjpjcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVS
ZWYgaW5zdHJ1Y3Rpb25SZWYpCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpj
cmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCwgdHlwZW5hbWUgSlNJbnN0cnVjdGlvblN0cmVhbTo6
TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZikKIHsKICAgICBBbmFseXNpc01hcDo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKAogICAgICAgICBkc3QtPmluZGV4KCksIFN0YXRp
Y1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZShXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkpOwogICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7IC8vIENhbid0
IGhhdmUgdHdvICd0aGlzJyBpbiB0aGUgc2FtZSBjb25zdHJ1Y3Rvci4KIH0KIAotaW5saW5lIHZv
aWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpCitpbmxpbmUgdm9pZCBT
dGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCB0eXBlbmFt
ZSBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKQogewogICAg
IGF1dG8gYW5hbHlzaXMgPSBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUoV1RGTW92ZShp
bnN0cnVjdGlvblJlZikpOwogICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0g
bV9hbmFseXNlcy5hZGQoZHN0LT5pbmRleCgpLCBhbmFseXNpcy5jb3B5UmVmKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlYWNi
YzBjZTI3MmY2N2JlODJjNzkzNzJhYTdmNzI4ODhiNmYyMTVmLi4wNTc4ZTRmY2M3ODdhYzM5Mjk5
NDMwOTAyMWRkY2EwNTk3YzZhYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTgyLDkgKzE4Miw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgRUNNQU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENhbGxPcD4KLSAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJ
bmRleCk7CisgICAgVGVybWluYWxpdHkgaGFuZGxlQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBw
YywgTm9kZVR5cGUgb3AsIENhbGxNb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCk7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgotICAgIFRlcm1pbmFsaXR5IGhhbmRsZVZhcmFy
Z3NDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlKTsKKyAg
ICBUZXJtaW5hbGl0eSBoYW5kbGVWYXJhcmdzQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywg
Tm9kZVR5cGUgb3AsIENhbGxNb2RlKTsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxs
VmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsK
ICAgICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7
CkBAIC0yNDYsNyArMjQ2LDcgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBzdG9yZShOb2RlKiBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBQdXRCeVZhcmlhbnQmLCBOb2RlKiB2YWx1ZSk7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICB2b2lkIHBhcnNlR2V0QnlJZChjb25z
dCBJbnN0cnVjdGlvbiopOworICAgIHZvaWQgcGFyc2VHZXRCeUlkKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKICAgICB2b2lkIHNpbXBsaWZ5R2V0QnlTdGF0dXMoTm9kZSogYmFzZSwgR2V0QnlTdGF0
dXMmKTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBk
ZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCBC
eXRlY29kZUluZGV4IG9zckV4aXRJbmRleCk7CkBAIC0xMjU0LDEwICsxMjU0LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIE5vZGUqIG1fdmFsdWUgeyBudWxscHRyIH07CiAgICAgICAgIFNldE1vZGUg
bV9zZXRNb2RlOwogICAgIH07Ci0gICAgCisKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAy
PiBtX3NldExvY2FsUXVldWU7CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9jdXJyZW50SW5z
dHJ1Y3Rpb247CisgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247
CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzQW55Rm9yY2VP
U1JFeGl0cyB7IGZhbHNlIH07CiB9OwpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6YWRkSnVtcFRvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENhbGxPcD4KLUJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxs
TW9kZSBjYWxsTW9kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpCitCeXRlQ29kZVBhcnNl
cjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSlNJbnN0cnVj
dGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZXgpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7CiAg
ICAgTm9kZSogY2FsbFRhcmdldCA9IGdldChjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fY3VycmVudElu
ZGV4LmNoZWNrcG9pbnQoKSkpOwpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgQnl0ZUNvZGVQYXJzZXI6
OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDYWxsT3A+Ci1CeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3As
IENhbGxNb2RlIGNhbGxNb2RlKQorQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVWYXJhcmdzQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTm9kZVR5
cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
Q2FsbE9wPigpOwogICAgIGludCBmaXJzdEZyZWVSZWcgPSBieXRlY29kZS5tX2ZpcnN0RnJlZS5v
ZmZzZXQoKTsKQEAgLTE1MzUsMTQgKzE1MzUsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50IGMK
ICAgICAgICAgQnl0ZWNvZGVJbmRleCBvbGRJbmRleCA9IG1fY3VycmVudEluZGV4OwogICAgICAg
ICBhdXRvIG9sZFN0YWNrVG9wID0gbV9pbmxpbmVTdGFja1RvcDsKICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcCA9IHN0YWNrRW50cnk7Ci0gICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJ
bmRleChvcGNvZGVMZW5ndGhzW29wX2VudGVyXSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoT3Bj
b2RlSURXaWR0aEJ5U2l6ZTxKU09wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTMyPjo6b3Bj
b2RlSURTaXplID09IDEpOworICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgo
b3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl0gKyAxKTsKICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwog
ICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOwogICAgICAgICBtX2N1cnJlbnRJbmRleCA9
IG9sZEluZGV4OwogICAgICAgICBtX2lubGluZVN0YWNrVG9wID0gb2xkU3RhY2tUb3A7CiAgICAg
ICAgIG1fZXhpdE9LID0gZmFsc2U7CiAKLSAgICAgICAgQmFzaWNCbG9jayoqIGVudHJ5QmxvY2tQ
dHIgPSB0cnlCaW5hcnlTZWFyY2g8QmFzaWNCbG9jayosIEJ5dGVjb2RlSW5kZXg+KHN0YWNrRW50
cnktPm1fYmxvY2tMaW5raW5nVGFyZ2V0cywgc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJn
ZXRzLnNpemUoKSwgQnl0ZWNvZGVJbmRleChvcGNvZGVMZW5ndGhzW29wX2VudGVyXSksIGdldEJ5
dGVjb2RlQmVnaW5Gb3JCbG9jayk7CisgICAgICAgIEJhc2ljQmxvY2sqKiBlbnRyeUJsb2NrUHRy
ID0gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2sqLCBCeXRlY29kZUluZGV4PihzdGFja0VudHJ5
LT5tX2Jsb2NrTGlua2luZ1RhcmdldHMsIHN0YWNrRW50cnktPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cy5zaXplKCksIEJ5dGVjb2RlSW5kZXgob3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl0gKyAxKSwgZ2V0
Qnl0ZWNvZGVCZWdpbkZvckJsb2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW50cnlCbG9j
a1B0cik7CiAgICAgICAgIGFkZEp1bXBUbygqZW50cnlCbG9ja1B0cik7CiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTY1NCw3ICsxNjU1LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6Omlu
bGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKIHRl
bXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQg
Y2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJs
b2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7Ci0gICAgY29uc3QgSW5z
dHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247
CisgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1
cnJlbnRJbnN0cnVjdGlvbjsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwog
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCkt
PmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CkBAIC01MzQ1LDcgKzUz
NDYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjbGVhckNhY2hlcygpCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VHZXRCeUlkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUdldEJ5SWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CkBAIC01NDcxLDEyICs1NDcy
LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAgICAgYWRkSnVtcFRvKG1fY3VycmVudEluZGV4Lm9mZnNldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICAvLyBTd2l0Y2gg
b24gdGhlIGN1cnJlbnQgYnl0ZWNvZGUgb3Bjb2RlLgotICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1fY3VycmVudEluZGV4KS5w
dHIoKTsKKyAgICAgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0g
aW5zdHJ1Y3Rpb25zLmF0KG1fY3VycmVudEluZGV4KS5wdHIoKTsKICAgICAgICAgbV9jdXJyZW50
SW5zdHJ1Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb247IC8vIFNvbWUgbWV0aG9kcyB3YW50IHRv
IHVzZSB0aGlzLCBhbmQgd2UnZCByYXRoZXIgbm90IHRocmVhZCBpdCB0aHJvdWdoIGNhbGxzLgog
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQo
KTsKLSAgICAgICAgCisKICAgICAgICAgVkVSQk9TRV9MT0coIiAgICBwYXJzaW5nICIsIGN1cnJl
bnRDb2RlT3JpZ2luKCksICI6ICIsIG9wY29kZUlELCAiXG4iKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKSB7CkBAIC04ODAwLDggKzg4MDEs
OCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgIGRhdGFM
b2dMbigpOwogICAgICAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNv
ZGUoKTsKICAgICB9Ci0gICAgCi0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQs
IDMyPiBqdW1wVGFyZ2V0czsKKworICAgIFZlY3Rvcjx0eXBlbmFtZSBKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQsIDMyPiBqdW1wVGFyZ2V0czsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMpOwogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpk
dW1wQnl0ZWNvZGVBdERGR1RpbWUoKSkpIHsKICAgICAgICAgZGF0YUxvZygiSnVtcCB0YXJnZXRz
OiAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCA1ZTMyZDJkMjRmMWIzZWQ4NzBjMzMwZjJlZjIzZDg1ZTRlY2U0ODM3Li41ODJhYWY1ZmQx
OTY0YTQ0N2UxMTQ0MjE0YmY4MjBkMTFkYWQyMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgaW5saW5lIHZv
aWQgZGVidWdGYWlsKENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgQ2Fw
YWJpbGl0eUxldmVsIHIKICAgICAgICAgZGF0YUxvZygiREZHIHJlamVjdGluZyBvcGNvZGUgaW4g
IiwgKmNvZGVCbG9jaywgIiBiZWNhdXNlIG9mIG9wY29kZSAiLCBvcGNvZGVOYW1lc1tvcGNvZGVJ
RF0sICJcbiIpOwogfQogCi1DYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlE
IG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQor
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIFVOVVNFRF9Q
QVJBTShjb2RlQmxvY2spOyAvLyBUaGlzIGZ1bmN0aW9uIGRvZXMgc29tZSBieXRlY29kZSBwYXJz
aW5nLiBPcmRpbmFyaWx5IGJ5dGVjb2RlIHBhcnNpbmcgcmVxdWlyZXMgdGhlIG93bmluZyBDb2Rl
QmxvY2suIEl0J3Mgc29ydCBvZiBzdHJhbmdlIHRoYXQgd2UgZG9uJ3QgdXNlIGl0IGhlcmUgcmln
aHQgbm93LgogICAgIFVOVVNFRF9QQVJBTShwYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuaAppbmRleCA0ZGE4OWFiNzQyM2EwZDgwOTllZDBjNTI5MDQ1YWJi
MjVjMWI0ZGFlLi44ZTViMTAzMGQ1OTQ4NDRkNmExOGExZWRmZDg1Mjk4M2EwOTNmYTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKik7
CiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKik7CiBib29s
IGNhblVzZU9TUkV4aXRGdXp6aW5nKENvZGVCbG9jayopOwogCi1pbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKTsKK2lubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlE
LCBDb2RlQmxvY2sqLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYyk7CiAKIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoQ29kZUJsb2NrKik7CiAjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkK
QEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNsb3N1
cmVDYWxsKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgYm9vbCBtaWdodElu
bGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CiBp
bmxpbmUgYm9vbCBjYW5Vc2VPU1JFeGl0RnV6emluZyhDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxz
ZTsgfQogCi1pbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCwg
Q29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb24qKSB7IHJldHVybiBDYW5ub3RDb21waWxlOyB9
CitpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCwgQ29kZUJs
b2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvbiopIHsgcmV0dXJuIENhbm5vdENvbXBpbGU7IH0KIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayopIHsgcmV0dXJu
IENhbm5vdENvbXBpbGU7IH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggODlhZTczZjIzZGE1N2M3M2VlMTA1
NjE0YmM2NzQ3ZWQwMTkyNTVkMy4uYjI0M2M2NzQ3OTUwY2VmZDZiNTJkOGRlNTNhNWFhZWExNDhi
YjBmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zMzMs
NyArMzMzLDcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwg
Vk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVP
cmlnaW4pOwogICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gY29k
ZUJsb2NrLT5nZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpKSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7Cisg
ICAgICAgICAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmF0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2tpcFByb2ZpbGU7CiAgICAgICAgICAgICAgICAg
aWYgKGluc3RydWN0aW9uLT5pczxPcEdldEJ5SWQ+KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKGNv
ZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggMTgyMjIzOTZjZjQ1ZTdhZTdjM2IxMDNjNGVmYTk2
ZmFhNzQxOGY3OS4uNTg0ZmZkODg1NmIxOGM3NzY4YmNhMmQzNzk1ZTkwZTgzMzFlMjEwOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvCiAK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldDsKIAot
ICAgIGNvbnN0IEluc3RydWN0aW9uJiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxv
Y2tGb3JDYWxsZXItPmluc3RydWN0aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsK
KyAgICBjb25zdCBhdXRvJiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JD
YWxsZXItPmluc3RydWN0aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBp
ZiAoY2FsbGVySXNMTEludCkgewogI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkg
TExJbnQ6OnJldHVybkxvY2F0aW9uVGh1bmsobmFtZSMjX3JldHVybl9sb2NhdGlvbiwgY2FsbElu
c3RydWN0aW9uLndpZHRoKCkpLmNvZGUoKQogCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBhZGp1
c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhp
dEJhc2UmIGV4aXQpCiAgICAgYm9vbCBleGl0VG9MTEludCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhp
dFRvTExJbnQoKSB8fCBjb2RlQmxvY2tGb3JFeGl0LT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50
ZXJwcmV0ZXJUaHVuazsKICAgICBpZiAoZXhpdFRvTExJbnQpIHsKICAgICAgICAgYXV0byBieXRl
Y29kZUluZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBj
b25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gKmNvZGVCbG9ja0ZvckV4aXQt
Pmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOworICAgICAgICBjb25zdCBh
dXRvJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAqY29kZUJsb2NrRm9yRXhpdC0+aW5zdHJ1Y3Rpb25z
KCkuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPiBkZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpKQogICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Y2hlY2twb2lu
dE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9p
ZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
T1NSRXhpdEJhc2UmIGV4aXQpCiAKICAgICAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVy
KCkpIHsKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigm
Y3VycmVudEluc3RydWN0aW9uKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0LnN0
b3JlUHRyKEdQUkluZm86OnJlZ1QyLCAmdm0udGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93KTsK
KyAgICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMiwgJnN0ZDo6Z2V0PGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qPih2bS50YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2Rl
QmxvY2tGb3JFeGl0LT5tZXRhZGF0YVRhYmxlKCkpLCBMTEludDo6UmVnaXN0ZXJzOjptZXRhZGF0
YVRhYmxlR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggZmMzYTZjNGZkYWUzZGQ4OTY3OGM2YmI5YTY1NjkwYjQ4ZjdmYWQ3YS4u
MzYwZTE4MTgzZWNiYTFlMGNjMDVkNzZjNzJjZGYxMjE5ZWNjYjE2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIxMDAsNyArMjEw
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludChOb2RlKiBub2RlKQog
ICAgICAgICBpZiAoZW1pdEVhcmx5UmV0dXJuKSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAg
IGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKKyAgICAgICAgICAg
IGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOwogCiAgICAgICAgICAgICB1aW50
cHRyX3QqIHB0ciA9IHZtKCkuZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9u
KTsKICAgICAgICAgICAgIG1faml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDllNTk5YmZm
ZWM4YjkwMGZkNzIzOGVkYzYzOWNlYjU2NDk0M2E5YzguLjhjNDRkNjRiODk1ZTgyNmZjYTRjMzcz
YTRjNDY2Y2IzMjE2YWM5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTE2Mjc0LDcgKzE2Mjc0LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5J
TkdTX0VORAogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2dyYXBo
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgp
OwotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCk7Cisg
ICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOwogICAgICAgICBWTSog
dm0gPSAmdGhpcy0+dm0oKTsKICAgICAgICAgdWludHB0cl90KiBwdHIgPSB2bS0+Z2V0TG9vcEhp
bnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IGZlNzlmNzhkMzc1MGQ2MzRk
ZTIzMjNjYWRkYjA2ZDQxN2U4ODNiZTcuLmE4MjRmN2E1MTljZTQ1ZjRhNzQyNTU1OGUzNDRkMmYy
N2Q0ZGQzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihW
TSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAog
ICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JF
eGl0UHJvZmlsZTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pOwogICAgICAgICAgICAgaWYgKEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlID0gY29kZUJsb2NrLT5nZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4KCkpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgoKSkucHRyKCk7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCgpKS5wdHIoKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2tpcFByb2Zp
bGU7CiAgICAgICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uLT5pczxPcEdldEJ5SWQ+KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BH
ZXRCeUlkPigpLm1ldGFkYXRhKGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCAyYWI2YTgwOTA4NmJjYjI1ZDA5MTZlZTE1NzZkMGVl
YzgxMGJiMzBmLi5iOTVlNzQzYTI2NWQ2NzNjNDFjMTczOTVlM2YzN2FmYWUzYzAyZWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTU3NSw3ICs1
NzUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmpl
Y3RJbk9TUiwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZQogICAgICAgICAvLyBGb3Igbm93LCB3ZSB1
c2UgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlIGluIHRoZSBhY3R1YWwgQ29kZUJsb2NrLiBJdCBp
cyBPSyBzaW5jZSBjdXJyZW50IE5ld0FycmF5QnVmZmVyCiAgICAgICAgIC8vIGFuZCBQaGFudG9t
TmV3QXJyYXlCdWZmZXIgYXJlIGFsd2F5cyBib3VuZCB0byBhIHNwZWNpZmljIG9wX25ld19hcnJh
eV9idWZmZXIuCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxv
Y2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigp
LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpOwotICAgICAg
ICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5hdChtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSku
cHRyKCk7CisgICAgICAgIGNvbnN0IGF1dG8qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYXQobWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5ieXRlY29kZUlu
ZGV4KCkpLnB0cigpOwogICAgICAgICBpZiAoIWN1cnJlbnRJbnN0cnVjdGlvbi0+aXM8T3BOZXdB
cnJheUJ1ZmZlcj4oKSkgewogICAgICAgICAgICAgLy8gVGhpcyBjYXNlIGNhbiBoYXBwZW4gaWYg
T2JqZWN0LmtleXMsIGFuIE9wQ2FsbCBpcyBmaXJzdCBjb252ZXJ0ZWQgaW50byBhIE5ld0FycmF5
QnVmZmVyIHdoaWNoIGlzIHRoZW4gY29udmVydGVkIGludG8gYSBQaGFudG9tTmV3QXJyYXlCdWZm
ZXIuCiAgICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuZWVkIHRvIHVwZGF0ZSB0aGUgYXJyYXkg
YWxsb2NhdGlvbiBwcm9maWxlIGluIHRoYXQgY2FzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJndW1lbnQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL0FyZ3VtZW50LnJiCmluZGV4IGQ0ZDhjNjY4ZjQzMWI5ZmM2M2EwNmM0NmRmNGZh
NTJlMTMzNzU0YzMuLjFmNWFmZWQ2Y2FkMzZmMWQ4YmVmZjZmODZlZDA1YTQ3ZmZhMTBiMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJndW1lbnQucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9Bcmd1bWVudC5yYgpAQCAtNzEsOSAr
NzEsOSBAQCBjbGFzcyBBcmd1bWVudAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAg
ICAgdm9pZCBzZXQje2NhcGl0YWxpemVkX25hbWV9KCN7QHR5cGUudG9fc30gdmFsdWUsIEZ1bmN0
b3IgZnVuYykKICAgICB7Ci0gICAgICAgIGlmIChpc1dpZGUzMjwje3RyYWl0c30+KCkpCisgICAg
ICAgIGlmIChpc1dpZGUzMigpKQogICAgICAgICAgICAgc2V0I3tjYXBpdGFsaXplZF9uYW1lfTxP
cGNvZGVTaXplOjpXaWRlMzI+KHZhbHVlLCBmdW5jKTsKLSAgICAgICAgZWxzZSBpZiAoaXNXaWRl
MTY8I3t0cmFpdHN9PigpKQorICAgICAgICBlbHNlIGlmIChpc1dpZGUxNigpKQogICAgICAgICAg
ICAgc2V0I3tjYXBpdGFsaXplZF9uYW1lfTxPcGNvZGVTaXplOjpXaWRlMTY+KHZhbHVlLCBmdW5j
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2V0I3tjYXBpdGFsaXplZF9uYW1lfTxPcGNv
ZGVTaXplOjpOYXJyb3c+KHZhbHVlLCBmdW5jKTsKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgQXJn
dW1lbnQKICAgICB7CiAgICAgICAgIGlmICghI3tGaXRzOjpjaGVjayAic2l6ZSIsICJ2YWx1ZSIs
IEB0eXBlfSkKICAgICAgICAgICAgIHZhbHVlID0gZnVuYygpOwotICAgICAgICBhdXRvKiBzdHJl
YW0gPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBl
Kj4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGhpcykgKyAje0BpbmRleH0gKiBzaXplICsg
UGFkZGluZ0J5U2l6ZTxzaXplPjo6dmFsdWUgKyAvKiBPcGNvZGUgc2l6ZSAqLyAxKTsKKyAgICAg
ICAgYXV0byogc3RyZWFtID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46
OnVuc2lnbmVkVHlwZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgI3tAaW5k
ZXh9ICogc2l6ZSArIFBhZGRpbmdCeVNpemU8c2l6ZT46OnZhbHVlICsgT3Bjb2RlSURXaWR0aEJ5
U2l6ZTwje3RyYWl0c30sIHNpemU+OjpvcGNvZGVJRFNpemUpOwogICAgICAgICAqc3RyZWFtID0g
I3tGaXRzOjpjb252ZXJ0ICJzaXplIiwgInZhbHVlIiwgQHR5cGV9OwogICAgIH0KIEVPRgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA2ZjBhOGYxYTgwM2UxNTE2NGU5
OTQ0MzQ3YmEzMzQ0OTY1OTg2MDhkLi5lOTBmOTk0NjYxYTdmM2VkZWFiMDc3YmQwNDVkYTRjYWQ0
OWZiZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQ5LDEw
ICsxNDksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJhc2ljQmxvY2tMb2NhdGlvbjsK
IAotdm9pZCBkdW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RydWN0aW9uKik7Cit2b2lkIGR1bXBCeXRlY29k
ZShCeXRlY29kZUR1bXBlckJhc2U8SlNJbnN0cnVjdGlvblN0cmVhbT4qIGR1bXBlciwgSlNJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBjb25zdCBKU0luc3RydWN0aW9uKik7CiAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCi12b2lkIGR1bXBXYXNtKEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVy
LCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBjb25zdCBJbnN0cnVjdGlvbiopOwordm9pZCBk
dW1wV2FzbShCeXRlY29kZUR1bXBlckJhc2U8V2FzbUluc3RydWN0aW9uU3RyZWFtPiogZHVtcGVy
LCBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgV2FzbUluc3RydWN0aW9uKik7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogCiBFT0YKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlLnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9PcGNvZGUucmIKaW5kZXggMDYxYjc2YTgxM2Q0NzExMmNjOTBiOTkzNjhl
YmNiY2VmZThlMmU1ZC4uZWU2Nzg3YjE4ZTRkOGQzYWJmZjg5MTAyYmM1Y2NhNzcwMGMwMGRhMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIKQEAgLTEwOCw2ICsx
MDgsMTAgQEAgY2xhc3MgT3Bjb2RlCiAgICAgICBAc2VjdGlvbi5pc193YXNtPyA/ICJXYXNtT3Bj
b2RlVHJhaXRzIiA6ICJKU09wY29kZVRyYWl0cyIKICAgICBlbmQKIAorICAgIGRlZiB0eXBlX3By
ZWZpeAorICAgICAgQHNlY3Rpb24uaXNfd2FzbT8gPyAiV2FzbSIgOiAiSlMiCisgICAgZW5kCisK
ICAgICBkZWYgbWFwX2ZpZWxkc193aXRoX3NpemUocHJlZml4LCBzaXplLCAmYmxvY2spCiAgICAg
ICAgIGFyZ3MgPSBbQXJndW1lbnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCldCiAg
ICAgICAgIGFyZ3MgKz0gQGFyZ3MuZHVwIGlmIEBhcmdzCkBAIC0xMjgsNyArMTMyLDcgQEAgY2xh
c3MgT3Bjb2RlCiAKICAgICBkZWYgc3RydWN0CiAgICAgICAgIDw8LUVPRgotc3RydWN0ICN7Y2Fw
aXRhbGl6ZWRfbmFtZX0gOiBwdWJsaWMgSW5zdHJ1Y3Rpb24geworc3RydWN0ICN7Y2FwaXRhbGl6
ZWRfbmFtZX0gOiBwdWJsaWMgI3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvbiB7CiAgICAgI3tvcGNv
ZGVJRH0KICAgICAje2xlbmd0aFZhbHVlfQogICAgICN7dGVtcHN9CkBAIC0xNjIsNyArMTY2LDcg
QEAgRU9GCiAgICAgZGVmIGNoZWNrcG9pbnRTaXplQXNzZXJ0CiAgICAgICAgIHJldHVybiBpZiBA
Y2hlY2twb2ludHMubmlsPwogCi0gICAgICAgICJzdGF0aWNfYXNzZXJ0KCN7Y2FwaXRhbGl6ZWRf
bmFtZX06Omxlbmd0aCA+ICN7Y2FwaXRhbGl6ZWRfbmFtZX06Om51bWJlck9mQ2hlY2twb2ludHMs
IFwiRnVsbEJ5dGVjb2RlTGl2ZXNzIHJlbGllcyBvbiB0aGUgbGVuZ3RoIG9mICN7Y2FwaXRhbGl6
ZWRfbmFtZX0gYmVpbmcgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgY2hlY2twb2ludHNcIik7
IgorICAgICAgICAic3RhdGljX2Fzc2VydCgje2NhcGl0YWxpemVkX25hbWV9OjpsZW5ndGggKyAx
ID4gI3tjYXBpdGFsaXplZF9uYW1lfTo6bnVtYmVyT2ZDaGVja3BvaW50cywgXCJGdWxsQnl0ZWNv
ZGVMaXZlc3MgcmVsaWVzIG9uIHRoZSBsZW5ndGggb2YgI3tjYXBpdGFsaXplZF9uYW1lfSBiZWlu
ZyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBjaGVja3BvaW50c1wiKTsiCiAgICAgZW5kCiAK
ICAgICBkZWYgdGVtcHMKQEAgLTIzMiw2ICsyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAje21hcF9maWVsZHNfd2l0aF9z
aXplKCIiLCAiX19zaXplIiwgJjpmaXRzX2NoZWNrKS5qb2luICJcbiAgICAgICAgICAgICYmICJ9
CisgICAgICAgICAgICAmJiAoX19zaXplID09IE9wY29kZVNpemU6Ok5hcnJvdyA/ICN7QXJndW1l
bnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCkuZml0c19jaGVjayhTaXplOjpOYXJy
b3cpfSA6ICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCkuZml0c19j
aGVjayhTaXplOjpXaWRlMTYpfSkKICAgICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6
ZTo6V2lkZTE2ID8gI3tvcF93aWRlMTYuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6IHRydWUp
CiAgICAgICAgICAgICAmJiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUzMiA/ICN7b3Bfd2lk
ZTMyLmZpdHNfY2hlY2soU2l6ZTo6TmFycm93KX0gOiB0cnVlKTsKICAgICB9CkBAIC0yNTEsNyAr
MjU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAje29wX3dpZGUxNi5maXRzX3dyaXRl
IFNpemU6Ok5hcnJvd30KICAgICAgICAgICAgIGVsc2UgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXpl
OjpXaWRlMzIpCiAgICAgICAgICAgICAgICAgI3tvcF93aWRlMzIuZml0c193cml0ZSBTaXplOjpO
YXJyb3d9Ci0gICAgICAgICAgICAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNvZGVJRFR5
cGUsIDApLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorICAgICAgICAgICAgI3tBcmd1bWVudC5u
ZXcoIm9wY29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX3dyaXRlICJPcGNvZGVJRFdpZHRo
QnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBfX3NpemU+OjpvcGNvZGVJRFNpemUi
fQogI3ttYXBfb3BlcmFuZHNfd2l0aF9zaXplKCIgICAgICAgICAgICAiLCAiX19zaXplIiwgJjpm
aXRzX3dyaXRlKS5qb2luICJcbiJ9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMjY0LDcgKzI2OSw3IEBAIEVPRgogCiAgICAgZGVmIGR1bXBlcgogICAgICAgICA8PC1F
T0YKLSAgICB2b2lkIGR1bXAoQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgaW50IF9fc2l6ZVNoaWZ0QW1vdW50KQorICAgIHZv
aWQgZHVtcChCeXRlY29kZUR1bXBlckJhc2U8I3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvblN0cmVh
bT4qIGR1bXBlciwgI3t0eXBlX3ByZWZpeH1JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9j
YXRpb24sIGludCBfX3NpemVTaGlmdEFtb3VudCkKICAgICB7CiAgICAgICAgIGR1bXBlci0+cHJp
bnRMb2NhdGlvbkFuZE9wKF9fbG9jYXRpb24sICYiKioje0BuYW1lfSJbMiAtIF9fc2l6ZVNoaWZ0
QW1vdW50XSk7CiAje3ByaW50X2FyZ3MgeyB8YXJnfApAQCAtMjg0LDMwICsyODksMzAgQEAgRU9G
CiAgICAgI3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgICAg
ICN7aW5pdC5jYWxsKCJPcGNvZGVTaXplOjpOYXJyb3ciKX0KICAgICB7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoc3RyZWFtLCBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmVhbSlbLTFd
ID09IG9wY29kZUlEKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIHN0YXRpY19jYXN0
PCN7b3Bjb2RlSURUeXBlfT4oYml0d2lzZV9jYXN0PGNvbnN0IHR5cGVuYW1lIE9wY29kZUlEV2lk
dGhCeVNpemU8I3t0eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJvdz46
Om9wY29kZVR5cGUqPihzdHJlYW0pWy0xXSkgPT0gb3Bjb2RlSUQpOwogICAgIH0KIAogICAgICN7
Y2FwaXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDE2X3QqIHN0cmVhbSkKICAgICAgICAgI3tpbml0
LmNhbGwoIk9wY29kZVNpemU6OldpZGUxNiIpfQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChzdHJlYW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bj
b2RlSUQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RhdGljX2Nhc3Q8I3tvcGNv
ZGVJRFR5cGV9PihiaXR3aXNlX2Nhc3Q8Y29uc3QgdHlwZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6
ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTE2Pjo6b3Bjb2Rl
VHlwZSo+KHN0cmVhbSlbLTFdKSA9PSBvcGNvZGVJRCk7CiAgICAgfQogCiAKICAgICAje2NhcGl0
YWxpemVkX25hbWV9KGNvbnN0IHVpbnQzMl90KiBzdHJlYW0pCiAgICAgICAgICN7aW5pdC5jYWxs
KCJPcGNvZGVTaXplOjpXaWRlMzIiKX0KICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3Ry
ZWFtLCBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlE
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIHN0YXRpY19jYXN0PCN7b3Bjb2RlSURU
eXBlfT4oYml0d2lzZV9jYXN0PGNvbnN0IHR5cGVuYW1lIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0
eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29kZVR5cGUq
PihzdHJlYW0pWy0xXSkgPT0gb3Bjb2RlSUQpOwogICAgIH0KIAogICAgIHN0YXRpYyAje2NhcGl0
YWxpemVkX25hbWV9IGRlY29kZShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgewogICAgICAg
ICAvLyBBIHBvaW50ZXIgaXMgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IG9wZXJhbmQgKG9wY29kZSBh
bmQgcHJlZml4IGFyZSBub3QgaW5jbHVkZWQpLgogICAgICAgICBpZiAoKnN0cmVhbSA9PSAje3dp
ZGUzMn0pCi0gICAgICAgICAgICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihzdHJlYW0gKyAyKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgYml0d2lzZV9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oc3RyZWFtICsgLyogcHJlZml4ICovIDEgKyBPcGNvZGVJRFdpZHRoQnlTaXpl
PCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+OjpvcGNvZGVJ
RFNpemUpIH07CiAgICAgICAgIGlmICgqc3RyZWFtID09ICN7d2lkZTE2fSkKLSAgICAgICAgICAg
IHJldHVybiB7IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50MTZfdCo+KHN0cmVhbSArIDIpIH07Ci0g
ICAgICAgIHJldHVybiB7IHN0cmVhbSArIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IGJpdHdp
c2VfY2FzdDxjb25zdCB1aW50MTZfdCo+KHN0cmVhbSArIC8qIHByZWZpeCAqLyAxICsgT3Bjb2Rl
SURXaWR0aEJ5U2l6ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lk
ZTE2Pjo6b3Bjb2RlSURTaXplKSB9OworICAgICAgICByZXR1cm4geyBzdHJlYW0gKyBPcGNvZGVJ
RFdpZHRoQnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpOYXJy
b3c+OjpvcGNvZGVJRFNpemUgfTsKICAgICB9CiBFT0YKICAgICBlbmQKQEAgLTM2MiwxOCArMzY3
LDE5IEBAIEVPRgogICAgIGVuZAogCiAgICAgZGVmIGxlbmd0aAotICAgICAgICAxICsgKEBhcmdz
Lm5pbD8gPyAwIDogQGFyZ3MubGVuZ3RoKSArIChAbWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEpCisg
ICAgICAgIChAYXJncy5uaWw/ID8gMCA6IEBhcmdzLmxlbmd0aCkgKyAoQG1ldGFkYXRhLmVtcHR5
PyA/IDAgOiAxKQogICAgIGVuZAogCiAgICAgZGVmIHNlbGYuZHVtcF9ieXRlY29kZShuYW1lLCBv
cGNvZGVfdHJhaXRzLCBvcGNvZGVzKQorICAgICAgICB0eXBlX3ByZWZpeCA9IChvcGNvZGVfdHJh
aXRzID09IDpKU09wY29kZVRyYWl0cyA/ICJKUyIgOiAob3Bjb2RlX3RyYWl0cyA9PSA6V2FzbU9w
Y29kZVRyYWl0cyA/ICJXYXNtIiA6ICJFcnJvciN7b3Bjb2RlX3RyYWl0c30iKSkKICAgICAgICAg
PDwtRU9GLmNob21wCi12b2lkIGR1bXAje25hbWV9KEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVy
LCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9u
KiBfX2luc3RydWN0aW9uKQordm9pZCBkdW1wI3tuYW1lfShCeXRlY29kZUR1bXBlckJhc2U8I3t0
eXBlX3ByZWZpeH1JbnN0cnVjdGlvblN0cmVhbT4qIGR1bXBlciwgI3t0eXBlX3ByZWZpeH1JbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGNvbnN0ICN7dHlwZV9wcmVmaXh9SW5z
dHJ1Y3Rpb24qIF9faW5zdHJ1Y3Rpb24pCiB7Ci0gICAgc3dpdGNoIChfX2luc3RydWN0aW9uLT5v
cGNvZGVJRDwje29wY29kZV90cmFpdHN9PigpKSB7CisgICAgc3dpdGNoIChfX2luc3RydWN0aW9u
LT5vcGNvZGVJRCgpKSB7CiAje29wY29kZXMubWFwIHsgfG9wfAogICAgICAgICA8PC1FT0YuY2hv
bXAKICAgICBjYXNlICN7b3AubmFtZX06Ci0gICAgICAgIF9faW5zdHJ1Y3Rpb24tPmFzPCN7b3Au
Y2FwaXRhbGl6ZWRfbmFtZX0sICN7b3Bjb2RlX3RyYWl0c30+KCkuZHVtcChkdW1wZXIsIF9fbG9j
YXRpb24sIF9faW5zdHJ1Y3Rpb24tPnNpemVTaGlmdEFtb3VudDwje29wY29kZV90cmFpdHN9Pigp
KTsKKyAgICAgICAgX19pbnN0cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9uYW1lfT4oKS5k
dW1wKGR1bXBlciwgX19sb2NhdGlvbiwgX19pbnN0cnVjdGlvbi0+c2l6ZVNoaWZ0QW1vdW50KCkp
OwogICAgICAgICBicmVhazsKIEVPRgogICAgIH0uam9pbiAiXG4ifQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgKaW5kZXggNzk1ZGE1MjRhNjNmNzQ5
MTIwODRiMmNlMWE5OTVhOTA1YjEwNGYwYy4uYzMxOWM3ODZhOGJlNjQ0MjM3MjBmODBkNGI5NjY0
ODEzMDk0MjMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0Fic3RyYWN0UEMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJz
dHJhY3RQQy5oCkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBWTTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIAogY2xhc3MgQWJzdHJhY3RQ
QyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuY3BwCmluZGV4IDllZGY1OWI5Njg2YTVhZDZjZWE4MzgzZjc0MzMzMzYwYTE5YzZkNDEu
LmE2MTgzYjBkNzI0ZjlmY2RmZTU0MmQ0MmU5ZjFhZDY2YzcxYzE4MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC0xMDgsMTMgKzEw
OCwxMyBAQCBTVVBQUkVTU19BU0FOIENhbGxTaXRlSW5kZXggQ2FsbEZyYW1lOjp1bnNhZmVDYWxs
U2l0ZUluZGV4KCkgY29uc3QKICAgICByZXR1cm4gQ2FsbFNpdGVJbmRleDo6ZnJvbUJpdHModW5z
YWZlQ2FsbFNpdGVBc1Jhd0JpdHMoKSk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9uKiBDYWxsRnJh
bWU6OmN1cnJlbnRWUEMoKSBjb25zdAorY29uc3QgSlNJbnN0cnVjdGlvbiogQ2FsbEZyYW1lOjpj
dXJyZW50VlBDKCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2FsbFNpdGVCaXRzQXJlQnl0ZWNvZGVP
ZmZzZXQoKSk7CiAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5hdChjYWxs
U2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCkpLnB0cigpOwogfQogCi12b2lkIENhbGxGcmFtZTo6
c2V0Q3VycmVudFZQQyhjb25zdCBJbnN0cnVjdGlvbiogdnBjKQordm9pZCBDYWxsRnJhbWU6OnNl
dEN1cnJlbnRWUEMoY29uc3QgSlNJbnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUoY29kZUJsb2NrKCktPmJ5dGVjb2RlSW5kZXgodnBjKSk7CiAgICAgdGhpc1tz
dGF0aWNfY2FzdDxpbnQ+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KV0udGFnKCkgPSBjYWxsU2l0ZS5iaXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKaW5kZXggODgyOTlmNDRkNmUwZTE5Mzg3YTZhOWNmNzc0ZjUw
NzEyYWIwMDJiNC4uNDE5ZWZiMzZhNDA5NWRiZTFjOGEyMDQ2MTI1ZThjNWM3ODJmMzMwZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApAQCAtNDAs
OCArNDAsNiBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgY2xhc3MgU291cmNlT3JpZ2luOwogICAg
IGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIAotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKLQogICAg
IGNsYXNzIENhbGxTaXRlSW5kZXggewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FsbFNpdGVJbmRl
eCgpID0gZGVmYXVsdDsKQEAgLTE5OSw5ICsxOTcsOSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENvZGVPcmlnaW4gY29kZU9yaWdpbigpIGNvbnN0OwogCiAg
ICAgICAgIGlubGluZSBSZWdpc3RlciogdG9wT2ZGcmFtZSgpOwotICAgIAotICAgICAgICBjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0OyAvLyBUaGlzIG9ubHkgbWFrZXMgc2Vu
c2UgaW4gdGhlIExMSW50IGFuZCBiYXNlbGluZS4KLSAgICAgICAgdm9pZCBzZXRDdXJyZW50VlBD
KGNvbnN0IEluc3RydWN0aW9uKik7CisKKyAgICAgICAgY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudFZQQygpIGNvbnN0OyAvLyBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIExMSW50IGFu
ZCBiYXNlbGluZS4KKyAgICAgICAgdm9pZCBzZXRDdXJyZW50VlBDKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogZnJhbWUpIHsg
Y2FsbGVyRnJhbWVBbmRQQygpLmNhbGxlckZyYW1lID0gZnJhbWU7IH0KICAgICAgICAgaW5saW5l
IHZvaWQgc2V0U2NvcGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQsIEpTU2NvcGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDM2MjAyZGNiNWU5M2JmNWEwNWNiYTY2NDk0OThjN2MzMzk2MzgzY2UuLmVkNjg5NTJmNmQ2ZWFl
Y2I1MDkxMjA5MDdjZjVkYTA5NTMxYjE3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTE3LDkgKzUxNyw5IEBAIENhdGNo
SW5mbzo6Q2F0Y2hJbmZvKGNvbnN0IEhhbmRsZXJJbmZvKiBoYW5kbGVyLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKICAgICAgICAgLy8gYW5kIGNhbiBjYXVzZSBhbiBvdmVyZmxvdy4gT1NSIGV4aXQg
cHJvcGVybHkgZXhpdHMgdG8gaGFuZGxlci0+dGFyZ2V0CiAgICAgICAgIC8vIGluIHRoZSBwcm9w
ZXIgZnJhbWUuCiAgICAgICAgIGlmICghSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9j
ay0+aml0VHlwZSgpKSkKLSAgICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChoYW5kbGVyLT50YXJnZXQpLnB0cigpOworICAgICAg
ICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSB7IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYXQoaGFuZGxlci0+dGFyZ2V0KS5wdHIoKSB9OwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2NhdGNo
UENGb3JJbnRlcnByZXRlciA9IHsgc3RhdGljX2Nhc3Q8SlNJbnN0cnVjdGlvbio+KG51bGxwdHIp
IH07CiAgICAgfQogfQogCkBAIC01MzEsOSArNTMxLDkgQEAgQ2F0Y2hJbmZvOjpDYXRjaEluZm8o
Y29uc3QgV2FzbTo6SGFuZGxlckluZm8qIGhhbmRsZXIsIGNvbnN0IFdhc206OkNhbGxlZSogY2Fs
bGUKICAgICAgICAgbV90eXBlID0gSGFuZGxlclR5cGU6OkNhdGNoOwogICAgICAgICBtX25hdGl2
ZUNvZGUgPSBoYW5kbGVyLT5tX25hdGl2ZUNvZGU7CiAgICAgICAgIGlmIChjYWxsZWUtPmNvbXBp
bGF0aW9uTW9kZSgpID09IFdhc206OkNvbXBpbGF0aW9uTW9kZTo6TExJbnRNb2RlKQotICAgICAg
ICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBXYXNtOjpM
TEludENhbGxlZSo+KGNhbGxlZSktPmluc3RydWN0aW9ucygpLmF0KGhhbmRsZXItPm1fdGFyZ2V0
KS5wdHIoKTsKKyAgICAgICAgICAgIG1fY2F0Y2hQQ0ZvckludGVycHJldGVyID0geyBzdGF0aWNf
Y2FzdDxjb25zdCBXYXNtOjpMTEludENhbGxlZSo+KGNhbGxlZSktPmluc3RydWN0aW9ucygpLmF0
KGhhbmRsZXItPm1fdGFyZ2V0KS5wdHIoKSB9OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2NhdGNoUENGb3JJbnRlcnByZXRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2NhdGNoUENG
b3JJbnRlcnByZXRlciA9IHsgc3RhdGljX2Nhc3Q8V2FzbUluc3RydWN0aW9uKj4obnVsbHB0cikg
fTsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKaW5kZXggZTY0NjQ2NTY3OWYyMWQxM2QzNDRjZDY4ODIzOTE3MDc2
ZmNjYWExMS4uNjJiYTAwMTkyZTYyM2YyOGViNmI4YTkyODNhOTYyOTlmODkxMjllZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgog
I2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCisjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogCiAjaWYgRU5BQkxFKENfTE9PUCkKQEAgLTY4LDcgKzY5LDYgQEAg
c3RydWN0IEhhbmRsZXJJbmZvOwogICAgIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgOiB1aW50OF90
OwogICAgIHN0cnVjdCBDYWxsRnJhbWVDbG9zdXJlOwogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsK
LSAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCiAg
ICAgZW51bSBEZWJ1Z0hvb2tUeXBlIHsKQEAgLTEwMiw3ICsxMDIsOCBAQCBzdHJ1Y3QgSGFuZGxl
ckluZm87CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IG1fbmF0aXZlQ29kZTsKICNlbmRpZgotICAgICAgICBjb25z
dCBJbnN0cnVjdGlvbiogbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CisKKyAgICAgICAgc3RkOjp2
YXJpYW50PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qPiBtX2Nh
dGNoUENGb3JJbnRlcnByZXRlcjsKICAgICB9OwogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDUxNWI3OTZiOGFiMzg5N2ZmYWQ5ODIyYjA0
MjVlZWNiYjA1NGUwNTQuLmU5YzBlY2MzMGVhY2M2OGM1NTlmOGFjNDYzZTEwNjIyMzFkZGViNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVy
KQogICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldEZvckJ5dGVjb2RlTWFpblBhdGgobV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpLCBsYWJlbCgpKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChtX2J5dGVjb2RlSW5kZXgp
LnB0cigpOworICAgICAgICBjb25zdCBhdXRvKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVj
dGlvbnMuYXQobV9ieXRlY29kZUluZGV4KS5wdHIoKTsKICAgICAgICAgQVNTRVJUKGN1cnJlbnRJ
bnN0cnVjdGlvbi0+c2l6ZSgpKTsKIAogICAgICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRl
ci5hcHBlbmRJdGVtKGxhYmVsKCksIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSk7CkBAIC01
NTEsOCArNTUxLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKIAogICAg
ICAgICBCeXRlY29kZUluZGV4IGZpcnN0VG8gPSBtX2J5dGVjb2RlSW5kZXg7CiAKLSAgICAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7Ci0gICAgICAgIAor
ICAgICAgICBjb25zdCBhdXRvKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3VubGlua2VkQ29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOworCiAgICAgICAg
IGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxp
bmUgSklUIGVtaXR0aW5nIHNsb3cgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9m
ZnNldCAiLCAobG9uZylkZWJ1Z09mZnNldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggYzI2NWNjYzA0Nzk4N2JmOWM3NzQ3ODgyNDFiZTA3MjFhMGE2NWQxZS4uYjhmZGE1ZDFiNDMx
NWU5ZjdkNzA0YzQ2YWFhNWE1YjFiYjAzNDRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC02Niw3ICs2NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFp
bjsKICAgICBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAotICAgIHN0cnVjdCBJbnN0cnVjdGlv
bjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKKyAgICBz
dHJ1Y3QgSlNPcGNvZGVUcmFpdHM7CisgICAgdXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0
cnVjdGlvbjxKU09wY29kZVRyYWl0cz47CisKICAgICBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogICAg
IHN0cnVjdCBTaW1wbGVKdW1wVGFibGU7CiAgICAgc3RydWN0IFN0cmluZ0p1bXBUYWJsZTsKQEAg
LTI4OSw5ICsyOTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNs
b3dUb0hvdChKdW1wLCBpbnQpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAg
ICAgICB2b2lkIGNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBjYWxs
TGlua0luZm9JbmRleCk7CisgICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbChjb25zdCBKU0luc3Ry
dWN0aW9uKiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQgY2Fs
bExpbmtJbmZvSW5kZXgpOworICAgICAgICB2b2lkIGNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIHVuc2ln
bmVkIGNhbGxMaW5rSW5mb0luZGV4KTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
ICAgICAgICAgc3RkOjplbmFibGVfaWZfdDwKQEAgLTMwOSwxMyArMzEyLDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIGNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcCYsIFVubGlua2Vk
Q2FsbExpbmtJbmZvKiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgYm9vbCBjb21waWxlQ2FsbEV2YWwoY29uc3QgT3Am
KTsKLSAgICAgICAgdm9pZCBjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBjb21w
aWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAg
ICAgdm9pZCBlbWl0UHV0Q2FsbFJlc3VsdChjb25zdCBPcCYpOwogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXEo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+IHZvaWQg
Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPiB2b2lkIGNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0
RXFKdW1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgICAgIHZvaWQgY29tcGlsZU9wRXFDb21tb24oVmlydHVhbFJlZ2lzdGVyIHNyYzEsIFZpcnR1
YWxSZWdpc3RlciBzcmMyKTsKICAgICAgICAgdm9pZCBjb21waWxlT3BFcVNsb3dDb21tb24oVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtMzc1LDI1NyArMzc4LDI1NyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
SlNWYWx1ZVJlZ3MsIFZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBJbnN0cnVjdGlv
biosIFJlbGF0aW9uYWxDb25kaXRpb24pOworICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1
bXAoY29uc3QgSlNJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAgICB2
b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxS
ZWdpc3RlciBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2ln
bmVkKGNvbnN0IEluc3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgICAgIHZv
aWQgZW1pdF9jb21wYXJlVW5zaWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxD
b25kaXRpb24pOwogICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkSW1wbChWaXJ0dWFs
UmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCBS
ZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAg
ICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiwg
UmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRB
bmRKdW1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAg
ICAgdm9pZCBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBv
cDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVsYXRpb25hbENvbmRp
dGlvbik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbG93T3BlcmF0
aW9uPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEluc3RydWN0
aW9uKiwgRG91YmxlQ29uZGl0aW9uLCBTbG93T3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFu
ZEp1bXBTbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBEb3VibGVDb25kaXRpb24sIFNsb3dPcGVy
YXRpb24sIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNsb3dPcGVyYXRpb24+CiAgICAgICAgIHZvaWQgZW1p
dF9jb21wYXJlQW5kSnVtcFNsb3dJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdp
c3RlciBvcDIsIHVuc2lnbmVkIHRhcmdldCwgc2l6ZV90IGluc3RydWN0aW9uU2l6ZSwgRG91Ymxl
Q29uZGl0aW9uLCBTbG93T3BlcmF0aW9uLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICAKKwogICAgICAgICB2b2lkIGFzc2VydFN0YWNrUG9p
bnRlck9mZnNldCgpOwogCi0gICAgICAgIHZvaWQgZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JpdGFuZChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfYml0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX2JpdHhvcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfYml0bm90KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9j
YWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfZXZhbChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9j
b25zdHJ1Y3RfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfY2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0
cnVjdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYXJndW1lbnRfY291bnQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2Zp
bGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9lcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
ZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JlbG93ZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9h
cmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9wcm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2hhc19w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2hh
c19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9pbml0X2xhenlfcmVnKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9pc19lbXB0eShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfdHlwZW9mX2lzX3VuZGVmaW5lZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfYWRkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2JpdGFuZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iaXRv
cihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iaXR4b3IoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYml0bm90KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NhbGwoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVj
dF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2Nh
dGNoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVj
dChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhp
cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudChj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hcmd1bWVudF9jb3Vu
dChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9s
ZW5ndGgoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tf
dGR6KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lkZW50aXR5
X3dpdGhfcHJvZmlsZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9kZWJ1Zyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxf
YnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Rl
bF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lk
IGVtaXRfb3BfZGl2KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2VuZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGUoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZXEoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVsbChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iZWxvdyhjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9iZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9wcm90b3R5cGVfb2YoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfaW5fYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2hhc19wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfdHlwZW9mX2lzX3VuZGVmaW5lZChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihjb25zdCBKU0lu
c3RydWN0aW9uKik7CiAjaWYgVVNFKEJJR0lOVDMyKQotICAgICAgICB2b2lkIGVtaXRfb3BfaXNf
YmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmln
X2ludChjb25zdCBKU0luc3RydWN0aW9uKik7CiAjZWxzZQotICAgICAgICBOT19SRVRVUk4gdm9p
ZCBlbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgTk9fUkVU
VVJOIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICNlbmRp
ZgotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2pmYWxzZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3Bfam1wKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9qbmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2p1
bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfam51bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfamVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2ps
ZXNzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbGVzc2VxKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcihjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamdyZWF0ZXJlcShjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5sZXNzKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qc3Ry
aWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2puc3RyaWN0
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2piZWxvdyhjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamJlbG93ZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9ub3AoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX3N1cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9sc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfcG93KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9tb3YoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX211bChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX25lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfYXJyYXkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX25ld19hcnJheV93aXRoX3NpemUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19mdW5jKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfZnVuY19leHAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1
bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2Jq
ZWN0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhw
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGVjKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9pbmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2plcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2pmYWxzZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9qbXAoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfam5lcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2p1bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2plcV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3Bfamxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfamxlc3NlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9q
Z3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZ3Jl
YXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pubGVz
cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmxlc3NlcShj
b25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXIoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyZXEoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfamVxKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfamJlbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2piZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2p0cnVlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2xvb3BfaGludChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9jaGVja190cmFwcyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9ub3AoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
c3VwZXJfc2FtcGxlcl9iZWdpbihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9sc2hpZnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3Bvdyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9tb3YoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbXVsKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25lZ2F0ZShjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfbmVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19hcnJheV93aXRoX3NpemUoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5j
X2V4cChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5
bmNfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX25zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfaW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Byb2Zp
bGVfdHlwZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX3B1dF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wID0gT3BQdXRCeVZhbD4KLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92
YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX3JzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3Bfc2V0X2Z1bmN0aW9uX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3N0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRj
aF9jaGFyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hf
aW1tKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfc3Ry
aW5nKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90ZWFyX29mZl9h
cmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Rocm93
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19udW1iZXIoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWVyaWMoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX3N0cmluZyhjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fb2JqZWN0KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3VuZXhwZWN0ZWRfbG9hZChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Vyc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hp
Y2tlbl90YWlsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19w
cm9wZXJ0eV9rZXkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1
dF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X2J5X3ZhbF9kaXJlY3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcmV0KGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3JzaGlmdChjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdHJpY3RlcShjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdWIoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90aHJvdyhjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19udW1iZXIoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19zdHJpbmcoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfdG9fb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3RvX3ByaW1pdGl2ZShjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF91bmV4cGVjdGVkX2xvYWQoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfdW5zaWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfdXJzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1
ZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb2dfc2hhZG93
X2NoaWNrZW5fdGFpbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF90b19wcm9wZXJ0eV9rZXkoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wY29kZVR5cGU+CiAgICAgICAgIHZvaWQgZ2VuZXJhdGVHZXRCeVZhbFNs
b3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJh
dG9yKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0
b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wY29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgogICAgICAgICB2
b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IE9wY29kZVR5cGUmLCBT
bG93UGF0aEZ1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2lu
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVy
YXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKik7Ci0KLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF90YWlsX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF9ldmFs
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0X3ZhcmFy
Z3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9jYWxsZWUoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9qbGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pncmVhdGVy
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3df
b3Bfam5sZXNzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2puZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXJlcShj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5lcShj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
am5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbW9kKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tdWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lcShjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotCi0g
ICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworCisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRkKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfY2FsbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbChjb25z
dCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2NhbGxfZXZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdz
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Cisg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9lcShjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2dldF9jYWxsZWUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90
cnlfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBKU0luc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlf
dmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0lu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1
bWVudF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBKU0lu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19w
cml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChj
b25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSlNJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9qbGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzZXEoY29uc3QgSlNJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9qZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pncmVhdGVy
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9qbmxlc3NlcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRlcihjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
amVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2pzdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9sb29wX2hpbnQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9j
aGVja190cmFwcyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX21vZChjb25zdCBKU0luc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3Bvdyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX211bChjb25zdCBKU0luc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lk
IGVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lcShjb25zdCBK
U0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9w
dXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3N1Yihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworCisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBKU0lu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29u
c3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50
cyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3Rv
X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAotICAgICAgICB2b2lkIGVtaXRf
b3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4
dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRl
KFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0
ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKICAgICAgICAgdm9pZCBlbWl0SGFzUHJp
dmF0ZVNsb3coQWNjZXNzVHlwZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0g
ICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1v
bihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1v
bihjb25zdCBKU0luc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFZhckluamVjdGlvbkNo
ZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIEdQUlJlZyk7CiAgICAgICAgIHZvaWQg
ZW1pdFZhclJlYWRPbmx5Q2hlY2soUmVzb2x2ZVR5cGUsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAg
ICAgICAgdm9pZCBlbWl0Tm90aWZ5V3JpdGVXYXRjaHBvaW50KEdQUlJlZyBwb2ludGVyVG9TZXQp
OwpAQCAtNjQzLDE0ICs2NDYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNP
cGVyYW5kQ29uc3RhbnRDaGFyKFZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rp
b24sIHR5cGVuYW1lIE5vblByb2ZpbGVkRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJ
Q0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJv
ZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdE1h
dGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBQcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uKTsKICAgICAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVu
Y3Rpb24sIHR5cGVuYW1lIE5vblByb2ZpbGVkRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1h
dGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBJbnN0cnVjdGlvbios
IFByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVt
aXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSlNJbnN0cnVj
dGlvbiosIFByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24pOwogCiAgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9m
aWxlZFJlcGF0Y2hGdW5jdGlvbiwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUg
UmVwYXRjaEZ1bmN0aW9uPgotICAgICAgICB2b2lkIGVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1h
dGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZFJlcGF0Y2hGdW5j
dGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBl
bWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRj
aEZ1bmN0aW9uKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5l
cmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxl
ZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1h
dGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwg
UHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlv
bik7CisgICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9y
PiosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmls
ZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmV0dXJuRnJvbUJhc2Vs
aW5lR2VuZXJhdG9yKFZNJik7CkBAIC04MzIsMTIgKzgzNSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgU25p
cHBldEdlbmVyYXRvcj4KLSAgICAgICAgdm9pZCBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3kgc2hvdWxk
RW1pdFByb2ZpbGluZyA9IFByb2ZpbGluZ1BvbGljeTo6Tm9Qcm9maWxpbmcpOworICAgICAgICB2
b2lkIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5IHNob3VsZEVtaXRQcm9maWxpbmcgPSBQcm9maWxp
bmdQb2xpY3k6Ok5vUHJvZmlsaW5nKTsKIAotICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFz
dFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQpOwor
ICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5
cGUpOworICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5
cGUpOwogCiAgICAgICAgIHZvaWQgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CiAKQEAgLTg0OCw4ICs4
NTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gTG9hZHMgdGhlIGNoYXJhY3RlciB2
YWx1ZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5nIGludG8gZHN0LgogICAgICAgICB2b2lk
IGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwg
SnVtcExpc3QmIGZhaWx1cmVzKTsKIAotICAgICAgICBpbnQganVtcFRhcmdldChjb25zdCBJbnN0
cnVjdGlvbiosIGludCB0YXJnZXQpOwotICAgICAgICAKKyAgICAgICAgaW50IGp1bXBUYXJnZXQo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIGludCB0YXJnZXQpOworCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgIHZvaWQgZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKTsKICNlbHNlCkBAIC05
NDUsOCArOTQ4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBDVG9Db2RlT3JpZ2luTWFw
QnVpbGRlciBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjsKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFBDVG9Db2RlT3JpZ2luTWFwPiBtX3BjVG9Db2RlT3JpZ2luTWFwOwogCi0gICAgICAgIEhh
c2hNYXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCB2b2lkKj4gbV9pbnN0cnVjdGlvblRvTWF0aElDOwot
ICAgICAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0aW9uKiwgVW5pcXVlUmVmPE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZT4+IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQ0dlbmVyYXRpb25TdGF0ZTsKKyAgICAg
ICAgSGFzaE1hcDxjb25zdCBKU0luc3RydWN0aW9uKiwgdm9pZCo+IG1faW5zdHJ1Y3Rpb25Ub01h
dGhJQzsKKyAgICAgICAgSGFzaE1hcDxjb25zdCBKU0luc3RydWN0aW9uKiwgVW5pcXVlUmVmPE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZT4+IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQ0dlbmVyYXRpb25TdGF0
ZTsKIAogICAgICAgICBib29sIG1fY2FuQmVPcHRpbWl6ZWQ7CiAgICAgICAgIGJvb2wgbV9zaG91
bGRFbWl0UHJvZmlsaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRp
Yy5jcHAKaW5kZXggZjQyNjA3NGY0NWJhZjRmYzYwYzg1Mjg1ZDBkZmNiMGMxYTc1NWVjOS4uMDUz
NzdiODIwNTgxZWFiZmFlODI5ZWY0ZjVjYjA4MjAxOTE1YTMwYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NCwxMDcgKzQ0LDEwNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotdm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2psZXNzKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRK
dW1wPE9wSmxlc3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgTGVzc1RoYW4pOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9qbGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9qbGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSmxlc3NlcT4oY3VycmVu
dEluc3RydWN0aW9uLCBMZXNzVGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9q
Z3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfamdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKZ3JlYXRlcj4oY3VycmVudEluc3RydWN0
aW9uLCBHcmVhdGVyVGhhbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyZXEoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pn
cmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdy
ZWF0ZXJUaGFuT3JFcXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pubGVzcyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNz
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2Nv
bXBhcmVBbmRKdW1wPE9wSm5sZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuT3JF
cXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3NlcShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlQW5k
SnVtcDxPcEpubGVzc2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbmdy
ZWF0ZXI+KGN1cnJlbnRJbnN0cnVjdGlvbiwgTGVzc1RoYW5PckVxdWFsKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfam5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSm5ncmVh
dGVyZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgTGVzc1RoYW4pOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qbGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVt
cFNsb3c8T3BKbGVzcz4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbkFuZE9yZGVy
ZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9qbGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3Bfamxlc3NlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJl
QW5kSnVtcFNsb3c8T3BKbGVzc2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFu
T3JFcXVhbEFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEsIGZhbHNlLCBpdGVyKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSmdyZWF0ZXI+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgRG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRl
ciwgZmFsc2UsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyZXEoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSmdy
ZWF0ZXJlcT4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxBbmRP
cmRlcmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9qbmxlc3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVtaXRf
Y29tcGFyZUFuZEp1bXBTbG93PE9wSm5sZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUdy
ZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlTGVzcywgdHJ1ZSwg
aXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbmxlc3NlcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pubGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpubGVzc2VxPihjdXJyZW50
SW5zdHJ1Y3Rpb24sIERvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBh
cmVMZXNzRXEsIHRydWUsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVh
dGVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVy
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxP
cEpuZ3JlYXRlcj4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbk9yRXF1YWxPclVu
b3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIsIHRydWUsIGl0ZXIpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXJlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKbmdyZWF0ZXJlcT4oY3VycmVudEluc3RydWN0
aW9uLCBEb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVx
LCB0cnVlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYmVsb3coY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JlbG93KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVV
bnNpZ25lZDxPcEJlbG93PihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93KTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfYmVsb3dlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfYmVsb3dlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlVW5zaWduZWQ8T3BCZWxvd2VxPihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIEJlbG93T3JFcXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pi
ZWxvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfamJlbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXA8T3BKYmVsb3c+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgQmVsb3cpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qYmVsb3dlcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93ZXEo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29t
cGFyZVVuc2lnbmVkQW5kSnVtcDxPcEpiZWxvd2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93
T3JFcXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF91bnNpZ25lZChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BVbnNpZ25lZD4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfdW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5k
SnVtcChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZGl0aW9uKQordm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSlNJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wMSA9IGJ5dGVjb2RlLm1fbGhzOwpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgSklUOjpl
bWl0X2NvbXBhcmVBbmRKdW1wSW1wbChWaXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0
ZXIgb3AyLCB1bnNpCiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9j
b21wYXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWdu
ZWRBbmRKdW1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmRpdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKQEAgLTI0
NSw3ICsyNDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wSW1wbChW
aXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgbwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KLXZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQordm9pZCBKSVQ6
OmVtaXRfY29tcGFyZVVuc2lnbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRJ
bXBsKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcgogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgU2xvd09wZXJhdGlvbj4KLXZvaWQgSklUOjpl
bWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIERv
dWJsZUNvbmRpdGlvbiBjb25kaXRpb24sIFNsb3dPcGVyYXRpb24gb3BlcmF0aW9uLCBib29sIGlu
dmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbiwgU2xvd09wZXJhdGlvbiBvcGVyYXRpb24sIGJvb2wg
aW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wMSA9IGJ5dGVjb2RlLm1fbGhzOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgSklUOjplbWl0
X2NvbXBhcmVBbmRKdW1wU2xvd0ltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lz
dGVyIG9wMiwKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVy
byA6IE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfaW5jKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9pbmMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5jPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBzcmNEc3QgPSBieXRlY29kZS5tX3NyY0RzdDsKQEAgLTQwMiw3
ICs0MDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwganNSZWdU
MTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kZWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2RlYyhjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BEZWM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyY0RzdCA9IGJ5dGVj
b2RlLm1fc3JjRHN0OwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAjaWYgQ1BVKFg4Nl82NCkK
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wTW9kPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBieXRlY29kZS5tX2Rz
dDsKQEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJl
c3VsdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IApAQCAtNDYxLDEzICs0NjEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGkKIAogI2Vsc2Ug
Ly8gQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KikKK3ZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9tb2QoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQpA
QCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKIAogLyogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVORDogT1BfTU9EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAqLwogCi12b2lkIEpJVDo6ZW1pdF9vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BQb3c+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5
dGVjb2RlLm1fZHN0OwpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Bvdyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cG93KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25lZ2F0
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbmVnYXRlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJm1fdW5saW5rZWRDb2RlQmxvY2st
PnVuYXJ5QXJpdGhQcm9maWxlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubV9w
cm9maWxlSW5kZXgpOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1fbWF0aElDcy5hZGRKSVRO
ZWdJQyhhcml0aFByb2ZpbGUpOwpAQCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRN
YXRoSUNGYXN0PE9wTmVnYXRlPihuZWdhdGVJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRp
b25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93QwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgU25pcHBldEdlbmVyYXRv
cj4KLXZvaWQgSklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3kgcHJvZmlsaW5nUG9saWN5KQordm9p
ZCBKSVQ6OmVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5IHByb2ZpbGluZ1BvbGljeSkKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC01ODksNyArNTg5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFByb2ZpbGkKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wTGlz
dCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYml0bm90KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9iaXRub3QoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQml0bm90PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTYwOCwyNyArNjA4LDI3IEBAIHZvaWQgSklUOjplbWl0
X29wX2JpdG5vdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2JpdGFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfYml0YW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxPcEJpdGFuZCwgSklUQml0QW5k
R2VuZXJhdG9yPihjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeTo6U2hvdWxkRW1p
dFByb2ZpbGluZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdG9yKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEJpdEJpbmFyeU9w
RmFzdFBhdGg8T3BCaXRvciwgSklUQml0T3JHZW5lcmF0b3I+KGN1cnJlbnRJbnN0cnVjdGlvbiwg
UHJvZmlsaW5nUG9saWN5OjpTaG91bGRFbWl0UHJvZmlsaW5nKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfYml0eG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9iaXR4b3IoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoPE9wQml0eG9yLCBKSVRCaXRYb3JH
ZW5lcmF0b3I+KGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5OjpTaG91bGRFbWl0
UHJvZmlsaW5nKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRCaXRCaW5hcnlP
cEZhc3RQYXRoPE9wTHNoaWZ0LCBKSVRMZWZ0U2hpZnRHZW5lcmF0b3I+KGN1cnJlbnRJbnN0cnVj
dGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBKSVQ6
OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBPcGNvZGVJRCBvcGNvZGVJRCkKIHsKICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3Bf
cnNoaWZ0IHx8IG9wY29kZUlEID09IG9wX3Vyc2hpZnQpOwogICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRAogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6
OlNoaWZ0VHlwZSBzbmlwcGV0U2hpZnRUeXBlKQordm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFz
dFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRSaWdodFNo
aWZ0R2VuZXJhdG9yOjpTaGlmdFR5cGUgc25pcHBldFNoaWZ0VHlwZSkKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC02ODIsMTcgKzY4MiwxNyBAQCB2b2lkIEpJ
VDo6ZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBKSVRSaWdodAogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXBMaXN0KCkp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9yc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3JzaGlmdChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3JzaGlmdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Vy
c2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX3Vyc2hpZnQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY3VycmVudEluc3RydWN0aW9uLCBvcF91cnNo
aWZ0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gJm1fdW5saW5rZWRDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZShjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1fcHJvZmlsZUluZGV4KTsKICAgICBKSVRBZGRJQyog
YWRkSUMgPSBtX21hdGhJQ3MuYWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKQEAgLTcwMCw3ICs3
MDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0TWF0aElDRmFzdDxPcEFkZD4oYWRkSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVBZGQpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfYWRkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2UKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3Is
IHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE5vblByb2ZpbGVkRnVuY3Rpb24+
Ci12b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0
aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0
aW9uIHByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5j
dGlvbikKK3ZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmls
ZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uIG5vblByb2Zp
bGVkRnVuY3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpA
QCAtNzU1LDcgKzc1NSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0
aW9uLCB0eXBlbmFtZSBOb25Qcm9maWxlZEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNG
YXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwg
Tm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1bmN0aW9uKQordm9pZCBKSVQ6OmVtaXRN
YXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1
bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtODIyLDcgKzgyMiw3IEBAIHZv
aWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbioKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFt
ZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQ
cm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1p
dE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9m
aWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBS
ZXBhdGNoRnVuY3Rpb24gcmVwYXRjaEZ1bmN0aW9uKQordm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93
KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0
Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVu
Y3Rpb24gcmVwYXRjaEZ1bmN0aW9uKQogewogICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0
aElDR2VuZXJhdGlvblN0YXRlID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRl
LmZpbmQoY3VycmVudEluc3RydWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgbWF0aElDR2VuZXJh
dGlvblN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwpAQCAtODY1LDcgKzg2NSw3IEBAIHZv
aWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMs
IGNvbnN0IEluc3RydWN0aW9uKiBjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5h
bWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgdHlwZW5hbWUg
UHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVt
aXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHBy
b2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24s
IFJlcGF0Y2hGdW5jdGlvbiByZXBhdGNoRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Ns
b3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiBwcm9maWxlZFJl
cGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNo
RnVuY3Rpb24gcmVwYXRjaEZ1bmN0aW9uKQogewogICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYg
bWF0aElDR2VuZXJhdGlvblN0YXRlID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0
YXRlLmZpbmQoY3VycmVudEluc3RydWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgbWF0aElDR2Vu
ZXJhdGlvblN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwpAQCAtOTI1LDcgKzkyNSw3IEBA
IHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0
aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICB9KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9kaXYoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGl2PigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTk4Myw3ICs5ODMsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9ICZtX3VubGlua2VkQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGUo
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5tX3Byb2ZpbGVJbmRleCk7CiAgICAgSklU
TXVsSUMqIG11bElDID0gbV9tYXRoSUNzLmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CkBAIC05
OTEsNyArOTkxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVl
TXVsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX211bChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX211bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlCiAgICAgZW1pdE1hdGhJQ1Nsb3c8T3BNdWw+KG11bElDLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9u
VmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3Bfc3ViKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZtX3VubGlu
a2VkQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGUoY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFN1Yj4oKS5tX3Byb2ZpbGVJbmRleCk7CiAgICAgSklUU3ViSUMqIHN1YklDID0gbV9tYXRoSUNz
LmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7CkBAIC0xMDA3LDcgKzEwMDcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0TWF0aElDRmFzdDxPcFN1Yj4oc3ViSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0
aW9uVmFsdWVTdWJQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVTdWIpOwogfQogCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3Bfc3ViKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBjNjhlNDdlZTlj
ODhiMTZlODE2MTRmZGM4ZGNhMGM2MGM0MmMyODk3Li44OTk4MDg3MmQyYjcyNzc0YzY5NTZiMzkx
MTkyZTg3MTgxYjM3ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX3Jl
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfcmV0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgY2FsbEZyYW1lUmVnaXN0ZXIp
KTsKIApAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgSklUOjpjb21waWxlQ2FsbEV2YWwoY29uc3Qg
T3BDYWxsRXZhbCYgYnl0ZWNvZGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSklUOjpj
b21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6Y29tcGlsZUNh
bGxFdmFsU2xvd0Nhc2UoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIApAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwoY29u
c3QgT3BUYWlsQ2FsbCYgYnl0ZWNvZGUsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5zCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCkKK3ZvaWQg
SklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNp
Z25lZCBjYWxsTGlua0luZm9JbmRleCkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpv
cGNvZGVJRDsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwpAQCAt
MzAzLDcgKzMwMyw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIs
IHVuc2lnbmVkKQordm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBKU0luc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
ciwgdW5zaWduZWQpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAg
ICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKQEAgLTMyNSw4NyArMzI1
LDg3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBjb21waWxlT3BDYWxsPE9wQ2FsbD4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxM
aW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90YWlsX2NhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxf
Y2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29t
cGlsZU9wQ2FsbDxPcFRhaWxDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZv
SW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF9ldmFsKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BD
YWxsPE9wQ2FsbEV2YWw+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxs
PE9wQ2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsr
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF92
YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBj
b21waWxlT3BDYWxsPE9wVGFpbENhbGxWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2Fs
bExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsPE9wVGFpbENh
bGxGb3J3YXJkQXJndW1lbnRzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5k
ZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1
Y3RfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgY29tcGlsZU9wQ2FsbDxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwg
bV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9jb25zdHJ1Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGNvbXBpbGVPcENhbGw8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxs
TGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsPihjdXJyZW50SW5z
dHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF90YWlsX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF90YWlsX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVP
cENhbGxTbG93Q2FzZTxPcFRhaWxDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2Fs
bExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX2V2YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX2V2YWwoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGN1cnJl
bnRJbnN0cnVjdGlvbiwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3Zh
cmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3Zh
cmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2Fz
ZTxPcENhbGxWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZv
SW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2NhbGxfdmFyYXJncyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJh
cmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8
T3BUYWlsQ2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0lu
Zm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
Y29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzPihjdXJyZW50
SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNv
bXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVy
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRv
cl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2l0ZXJhdG9yX29wZW4oY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKICAgICBh
dXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKICAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rp
b24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOwogCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0MKICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0
PigpOwogICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgewpAQCAtNjA3LDcgKzYw
Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCmluZGV4IGI4NmU5YTQxMDNjODUwNmMzZmRiYmFj
NTRkN2U5NGU2NjYwYWFkOTkuLjc1MTY1MDhiNmY4OGQ4NmFmOGM2ZDU2NmYxODMzMTRjYzViNmE2
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcApAQCAt
NTcsMTggKzU3LDIyIEBAIHZvaWQgZ2VuZXJpY1Vud2luZChWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogICAgIENhdGNoSW5mbyBoYW5kbGVyID0gdm0uaW50ZXJwcmV0ZXItPnVud2luZCh2
bSwgY2FsbEZyYW1lLCBleGNlcHRpb24pOyAvLyBUaGlzIG1heSB1cGRhdGUgY2FsbEZyYW1lLgog
CiAgICAgdm9pZCogY2F0Y2hSb3V0aW5lOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBjYXRjaFBD
Rm9ySW50ZXJwcmV0ZXIgPSBudWxscHRyOworICAgIEpTT3JXYXNtSW5zdHJ1Y3Rpb24gY2F0Y2hQ
Q0ZvckludGVycHJldGVyID0geyBzdGF0aWNfY2FzdDxKU0luc3RydWN0aW9uKj4obnVsbHB0cikg
fTsKICAgICBpZiAoaGFuZGxlci5tX3ZhbGlkKSB7CiAgICAgICAgIGNhdGNoUENGb3JJbnRlcnBy
ZXRlciA9IGhhbmRsZXIubV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgY2F0Y2hSb3V0aW5lID0gaGFuZGxlci5tX25hdGl2ZUNvZGUuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKICNlbHNlCi0gICAgICAgIGlmIChjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPmlzV2lk
ZTMyKCkpCi0gICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0V2lkZTMyQ29kZVB0
cihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPm9wY29kZUlEKCkpOwotICAgICAgICBlbHNlIGlmIChj
YXRjaFBDRm9ySW50ZXJwcmV0ZXItPmlzV2lkZTE2KCkpCi0gICAgICAgICAgICBjYXRjaFJvdXRp
bmUgPSBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPm9wY29k
ZUlEKCkpOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyNlcnJvciBXQVNNIHJlcXVpcmVzIHRo
ZSBKSVQsIHNvIHRoaXMgc2VjdGlvbiBhc3N1bWVzIHdlIGFyZSBpbiBKUworI2VuZGlmCisgICAg
ICAgIGNvbnN0IGF1dG8qIHBjID0gc3RkOjpnZXQ8Y29uc3QgSlNJbnN0cnVjdGlvbio+KGNhdGNo
UENGb3JJbnRlcnByZXRlcik7CisgICAgICAgIGlmIChwYy0+aXNXaWRlMzIoKSkKKyAgICAgICAg
ICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyKHBjLT5vcGNvZGVJRCgp
KTsKKyAgICAgICAgZWxzZSBpZiAocGMtPmlzV2lkZTE2KCkpCisgICAgICAgICAgICBjYXRjaFJv
dXRpbmUgPSBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cihwYy0+b3Bjb2RlSUQoKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRDb2RlUHRyKGNhdGNo
UENGb3JJbnRlcnByZXRlci0+b3Bjb2RlSUQoKSk7CisgICAgICAgICAgICBjYXRjaFJvdXRpbmUg
PSBMTEludDo6Z2V0Q29kZVB0cihwYy0+b3Bjb2RlSUQoKSk7CiAjZW5kaWYKICAgICB9IGVsc2UK
ICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6OmhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uKHZt
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKaW5kZXggMDJlMmY4YWVhM2M5Mzc5N2I0ZTVkMTJmM2JkYTJhYjViMzQwZjZjZC4u
YmZmYjJmNGMzMDMwZWVlZTE0Zjg5MGVmODFjYTBlM2U4MTk4N2NkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBpbmxpbmUgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIEpJVDo6ZmFzdFBhdGhSZXN1bWVQb2ludCgpIGNvbnN0CiAgICAgaWYg
KGl0ZXIgIT0gbV9mYXN0UGF0aFJlc3VtZUxhYmVscy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0
ZXItPnZhbHVlOwogICAgIC8vIE5leHQgaW5zdHJ1Y3Rpb24gaW4gc2VxdWVuY2UKLSAgICBjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV91bmxpbmtlZENvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBjb25zdCBhdXRv
KiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIHJldHVybiBtX2xhYmVsc1ttX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKV07CiB9CiAKQEAg
LTQzMiw3ICs0MzIsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoSlNWYWx1ZVJlZ3MganNSZWcsIFZpcnR1YWxSZQogICAgICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwoanNSZWcpOwogfQogCi1BTFdBWVNfSU5MSU5FIGludCBKSVQ6
Omp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBpbnQgdGFyZ2V0KQor
QUxXQVlTX0lOTElORSBpbnQgSklUOjpqdW1wVGFyZ2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBpbnQgdGFyZ2V0KQogewogICAgIGlmICh0YXJnZXQpCiAgICAgICAgIHJldHVy
biB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1
NmRmYjg3MzY1MjNhNzVjM2NhNTEyYzhmYzE4YzMxMzI0NjAxZDY4Li41Yjg1YzdhYzUxN2E3MDJk
Y2ZkN2E2MmVkZjA5MjExYTNkNWQzMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQg
SklUOjplbWl0X29wX21vdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfbW92KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE1v
dj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC02Niw3
ICs2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX21vdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIHN0b3JlVmFsdWUoanNSZWdUMTAsIGFkZHJlc3NGb3IoZHN0KSk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVuZD4oKTsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1
ZUpTUiwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgcmV0
KCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2ptcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEptcD4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC04NCw3ICs4NCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2ptcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogfQogCiAKLXZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3Qo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3T2JqZWN0PigpOwogCkBAIC0xMDgs
NyArMTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiB9CiAK
LXZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTCiB9CiAKIAotdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hh
c19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BPdmVycmlkZXNIYXNJbnN0YW5jZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogfQogCiAKLXZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2Yo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5zdGFuY2VvZj4oKTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xOTIsMTAgKzE5MiwxMCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLSAgICAKKwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5zdGFuY2VvZj4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIApAQCAtMjIyLDcgKzIy
Miw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0
eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfaXNfZW1wdHkoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNFbXB0eT4oKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0yMzksNyArMjM5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTAp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90eXBlb2ZfaXNf
dW5kZWZpbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFR5cGVvZklzVW5kZWZp
bmVkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTI2
OCw3ICsyNjgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVk
X29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcElzVW5kZWZpbmVkT3JOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191
bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
fQogCiAKLXZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCb29sZWFuPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSXNOdW1iZXI+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiAjaWYgVVNFKEJJR0lOVDMy
KQotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0zNDYsMTQgKzM0NiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KICNlbHNlIC8vIGlmICFV
U0UoQklHSU5UMzIpCi1OT19SRVRVUk4gdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25z
dCBJbnN0cnVjdGlvbiopCitOT19SRVRVUk4gdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChj
b25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICAvLyBJZiB3ZSBvbmx5IGhhdmUgSGVhcEJpZ0lu
dHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxXaXRoVHlwZSBpbnN0ZWFkIG9mIGlzQmlnSW50LgogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVt
aXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2lzX29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcElzT2JqZWN0PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19vYmpl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19w
cmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX3RvX3ByaW1pdGl2ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BU
b1ByaW1pdGl2ZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3Byb3Bl
cnR5X2tleShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFRvUHJvcGVydHlLZXk+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3Byb3BlcnR5X2tl
eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9z
ZXRfZnVuY3Rpb25fbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wU2V0RnVuY3Rpb25OYW1lPigpOwogCkBAIC00MzYsNyArNDM2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEZ1bmN0aW9uTmFt
ZSwgZ2xvYmFsT2JqZWN0R1BSLCBmdW5jdGlvbkdQUiwgbmFtZUpTUik7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX25vdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5vdD4o
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fb3BlcmFuZCwganNSZWdU
MTApOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25vdChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamZhbHNl
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qZmFsc2UoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmZhbHNlPigpOwogICAg
IHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29k
ZS5tX3RhcmdldExhYmVsKTsKQEAgLTQ4OSw3ICs0ODksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2plcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEplcU51bGw+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01MTQsNyArNTE0
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbi5saW5r
KHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qbmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfanVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSnVuZGVmaW5lZE9yTnVsbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoSWZOdWxsKGpzUmVnVDEwKSwgdGFyZ2V0KTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRlZmluZWRf
b3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbnVuZGVmaW5lZE9yTnVs
bD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAt
NTcwLDcgKzU3MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2pudW5kZWZpbmVkX29yX251bGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRKdW1wKGJyYW5jaElm
Tm90TnVsbChqc1JlZ1QxMCksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2plcV9w
dHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2plcV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxUHRyPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTg4LDcgKzU4
OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
am5lcV9wdHIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTYxMSw3ICs2MTEs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVxPigpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9saHMsIHJlZ1QwKTsKQEAgLTYyMiw3ICs2MjIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVn
VDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQo
Y3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTYzNCw3ICs2
MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogI2VuZGlmCiAKLXZvaWQgSklUOjplbWl0X29wX2p0cnVlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKdHJ1ZT4oKTsKICAgICB1bnNpZ25lZCB0
YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRM
YWJlbCk7CkBAIC02NzgsNyArNjc4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mIHZtKQogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wTmVxPigpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9saHMsIHJlZ1QwKTsKQEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcT4o
KTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwg
Ynl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAjZW5k
aWYKIAotdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Rocm93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFRocm93PigpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwpAQCAtNzUwLDcgKzc1MCw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZN
JiB2bSkKICNpZiBVU0UoSlNWQUxVRTY0KQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQg
SklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC04MjUsMTggKzgyNSwxOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0cmljdEVxPE9wU3RyaWN0ZXE+KGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVx
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxl
T3BTdHJpY3RFcTxPcE5zdHJpY3RlcT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0
RXFKdW1wKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBpbnQgdGFy
Z2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFi
ZWwpOwpAQCAtOTA1LDE3ICs5MDUsMTcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVt
cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BTdHJpY3RFcUp1bXA8T3BKc3Ry
aWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puc3Ry
aWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGNvbXBpbGVPcFN0cmljdEVxSnVtcDxPcEpuc3RyaWN0ZXE+KGN1cnJlbnRJbnN0
cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTkyNiw3ICs5
MjYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJy
YW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtOTM5LDcgKzkzOSw3IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTCiAKICNlbmRpZgogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19udW1iZXIoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Rv
X251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb051bWJlcj4oKTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTU0LDcgKzk1
NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdFZSZWcs
IGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJp
Yyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb051bWVyaWM+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTk3NSw3ICs5NzUsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJlZywganNS
ZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RvX3N0cmluZyhjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1N0cmluZz4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgZHN0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTkwLDcgKzk5MCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3RvX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdFZSZWcsIGpzUmVnVDEwKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b19vYmplY3QoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9PYmplY3Q+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRz
dFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RvX29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdFZSZWcsIGpzUmVnVDEwKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcENhdGNoPigpOwogCkBAIC0xMDUyLDEyICsxMDUyLDEyIEBAIHZvaWQgSklUOjplbWl0
X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2lkZW50aXR5X3dpdGhf
cHJvZmlsZShjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9pZGVudGl0eV93
aXRoX3Byb2ZpbGUoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBkbyBhbnl0aGluZyBoZXJlLi4uCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9wYXJl
bnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0UGFyZW50U2NvcGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGN1cnJlbnRTY29wZSA9
IGJ5dGVjb2RlLm1fc2NvcGU7CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFN3aXRjaEltbT4oKTsKICAgICBzaXplX3QgdGFibGVJbmRl
eCA9IGJ5dGVjb2RlLm1fdGFibGVJbmRleDsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBKU1N3aXRjaFB0clRhZyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZl
IGEgZmFzdCBwYXRoLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQ1MjEKQEAgLTExMTksNyArMTExOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRj
aF9jaGFyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZmFySnVt
cChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFN3aXRjaFN0cmluZz4oKTsKICAgICBzaXplX3QgdGFibGVJbmRleCA9IGJ5dGVjb2Rl
Lm1fdGFibGVJbmRleDsKQEAgLTExNDIsNyArMTE0Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3
aXRjaF9zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBm
YXJKdW1wKHJldHVyblZhbHVlR1BSLCBKU1N3aXRjaFB0clRhZyk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2VxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RXFOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAg
LTExNzQsNyArMTE3NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxTnVsbD4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0
X29wX2VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIC8vIEV2ZW4gdGhvdWdoIENU
SSBkb2Vzbid0IHVzZSB0aGVtLCB3ZSBpbml0aWFsaXplIG91ciBjb25zdGFudAogICAgIC8vIHJl
Z2lzdGVycyB0byB6YXAgc3RhbGUgcG9pbnRlcnMsIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcHJv
bG9uZ2luZwpAQCAtMTMzNSw3ICsxMzM1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFNjb3BlPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEzNDUsNyArMTM0
NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1Qx
MCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBzcmNE
c3QgPSBieXRlY29kZS5tX3NyY0RzdDsKQEAgLTEzNTksNyArMTM1OSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhqc1JlZ1QxMC5wYXlsb2Fk
R1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BDcmVhdGVUaGlzPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUg
PSBieXRlY29kZS5tX2NhbGxlZTsKQEAgLTEzOTQsNyArMTM5NCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NoZWNrX3Rkeihjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTQw
OSw3ICsxNDA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIC8vIFNsb3cgY2FzZXMKIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKQEAgLTE0MjAsNyArMTQyMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgcmV0dXJuVmFsdWVHUFIpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIHJldHVy
blZhbHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTQ0Myw3ICsxNDQzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0
MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbmVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1Zyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZGVidWco
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVidWc+KCk7CiAgICAgbG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKQEAgLTE0NjYsNyAr
MTQ2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgbm9EZWJ1Z2dlclJlcXVlc3RzLmxpbmsodGhpcyk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUlu
ZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkgJiYgbV91bmxpbmtlZENvZGVCbG9jay0+bG9vcEhpbnRz
QXJlRWxpZ2libGVGb3JGdXp6aW5nRWFybHlSZXR1cm4oKSkpIHsKICAgICAgICAgdWludHB0cl90
KiBwdHIgPSB2bSgpLmdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihpbnN0cnVjdGlvbik7CkBA
IC0xNDk0LDcgKzE0OTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2xv
b3BfaGludChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgLy8gRW1pdCB0aGUgc2xvdyBwYXRoIGZvciB0aGUgSklUIG9wdGltaXphdGlvbiBjaGVjazoK
QEAgLTE1MjEsMjYgKzE1MjEsMjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICNlbmRpZgog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFwcyhjb25zdCBJbnN0cnVjdGlvbiopCit2
b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFwcyhjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAg
ICBhZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKG1fdm0t
PnRyYXBzKCkudHJhcEJpdHNBZGRyZXNzKCkpLCBUcnVzdGVkSW1tMzIoVk1UcmFwczo6QXN5bmNF
dmVudHMpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25vcChjb25zdCBJbnN0cnVjdGlvbiop
Cit2b2lkIEpJVDo6ZW1pdF9vcF9ub3AoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQor
dm9pZCBKSVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9iZWdpbihjb25zdCBKU0luc3RydWN0aW9u
KikKIHsKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyhiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50KSkpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1p
dF9vcF9zdXBlcl9zYW1wbGVyX2VuZChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBzdWIz
MihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZn
X3N1cGVyU2FtcGxlckNvdW50KSkpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tf
dHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKQEAgLTE1ODEsNyArMTU4MSw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9jaGVja190cmFwc19oYW5kbGVyR2Vu
ZXJhdG9yKFZNJiB2CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXIiKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BOZXdSZWdleHA+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwpAQCAtMTU5NCw3ICsxNTk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X3JlZ2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9u
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNjE2LDI4ICsxNjE2LDI4IEBAIHZvaWQgSklU
OjplbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0Nv
bW1vbjxPcE5ld0Z1bmM+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0NvbW1vbjxPcE5l
d0dlbmVyYXRvckZ1bmM+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVu
Y0NvbW1vbjxPcE5ld0FzeW5jR2VuZXJhdG9yRnVuYz4oY3VycmVudEluc3RydWN0aW9uKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0Nv
bW1vbjxPcE5ld0FzeW5jRnVuYz4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLSAgICAKKwogdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNF
eHByQ29tbW9uKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNjU5LDI3ICsxNjU5LDI3IEBA
IHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4
cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb248T3BOZXdGdW5jRXhwPihjdXJyZW50SW5zdHJ1
Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb248T3BOZXdHZW5lcmF0b3JGdW5jRXhw
PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNf
ZnVuY19leHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uPE9wTmV3QXN5bmNGdW5j
RXhwPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhw
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3
RnVuY0V4cHJDb21tb248T3BOZXdBc3luY0dlbmVyYXRvckZ1bmNFeHA+KGN1cnJlbnRJbnN0cnVj
dGlvbik7CiB9Ci0gICAgCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0FycmF5PigpOwogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE2OTEsNyArMTY5MSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25ld19hcnJheShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoUHJvZmlsZSwg
ZHN0LCBhcmd1bWVudEdQUjAsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyLCBzaXplKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhf
c2l6ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheVdpdGhTaXplPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE3MDgsNyAr
MTcwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJheV93aXRoX3NpemUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlLCBkc3QsIGdsb2JhbE9iamVjdEdQUiwgcHJvZmls
ZUdQUiwgc2l6ZUpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHJv
ZmlsZV90eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBtX2lzU2hhcmVhYmxlID0gZmFsc2U7CiAKQEAgLTE3NzQsNyArMTc3NCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGp1bXBUb0VuZC5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9s
b2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQodm0oKS5zaGFkb3dDaGlja2VuKCkpOwogICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwpA
QCAtMTc4OCw3ICsxNzg4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3Byb2xvZ3VlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3QKICAgICBsb2dTaGFk
b3dDaGlja2VuUHJvbG9ndWVQYWNrZXQoc2hhZG93UGFja2V0UmVnLCBzY3JhdGNoMVJlZywgcmVn
VDMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbG9n
X3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuc2hhZG93Q2hpY2tlbigpKTsKICAgICB1
cGRhdGVUb3BDYWxsRnJhbWUoKTsKQEAgLTE4MDcsNyArMTgwNyw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgbG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQoc2hhZG93UGFja2V0UmVn
LCBqc1JlZ1QzMiwgcmVnVDQsIHJlZ1QxLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCkp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9j
b250cm9sX2Zsb3coY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIG1faXNTaGFyZWFibGUgPSBmYWxzZTsKIApAQCAtMTgyMSw3ICsxODIxLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9hcmd1bWVudF9j
b3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfYXJndW1lbnRfY291bnQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQXJn
dW1lbnRDb3VudD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0xODMyLDcgKzE4MzIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hcmd1bWVudF9jb3VudChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCByZXN1bHQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9s
ZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRSZXN0TGVuZ3RoPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2Rz
dDsKQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0
aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9h
cmd1bWVudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdl
dEFyZ3VtZW50PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
QEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1bWVudChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9wcm90b3R5
cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0UHJvdG90eXBlT2Y+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAppbmRleCA0NDI5NDg1MzZlNzMxZWJlMDZhOGFlNzBmODM2NDNlYjIzNjJm
NDAyLi44MTk5NzgwYzk1NjcwOGVkYWI2YjU5OTM2NDg1ODJiNWQ1YmQxYWEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIHZvaWQgSklUOjpjb21waWxlT3BFcVNsb3dDb21tb24oVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFcT4oKTsKIApA
QCAtODYsNyArODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxPigpOwogCkBAIC05Nyw3ICs5Nyw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSmVxPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVu
dEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTEwNyw3ICsxMDcsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBhZGRKdW1wKGJyYW5jaDMyKEVxdWFsLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCks
IGpzUmVnVDMyLnBheWxvYWRHUFIoKSksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcT4oKTsKICAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXRMYWJlbCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
am5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZEp1bXAo
YnJhbmNoMzIoTm90RXF1YWwsIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwganNSZWdUMzIucGF5bG9h
ZEdQUigpKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXE+
KCk7CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIHJldHVyblZhbHVlSlNSKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXE+KCk7CiAKQEAgLTEzOCw3ICsx
MzgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kc3QsIHJldHVyblZhbHVlSlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pl
cShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BKZXE+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdl
dChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMTQ4LDcg
KzE0OCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgZW1pdEp1bXBTbG93VG9Ib3Qo
YnJhbmNoVGVzdDMyKE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9qbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXE+KCk7CiAgICAgdW5zaWduZWQgdGFy
Z2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFi
ZWwpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUNvbW1v
bihWaXJ0dWFsUmVnaXN0ZXIgc3JjMSwgIFZpcnR1YWxSZWdpc3RlciBzcmMyKQogICAgIGZpcnN0
SXNPYmplY3QubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3N0
cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN0cmljdGVxPigpOwogICAg
IGNvbXBpbGVPcFN0cmljdEVxQ29tbW9uKGJ5dGVjb2RlLm1fbGhzLCBieXRlY29kZS5tX3Jocyk7
CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25zdHJp
Y3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5zdHJpY3Rl
cT4oKTsKICAgICBjb21waWxlT3BTdHJpY3RFcUNvbW1vbihieXRlY29kZS5tX2xocywgYnl0ZWNv
ZGUubV9yaHMpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25zdHJpY3Rl
cShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSnN0cmljdGVxPigpOwogICAgIGludCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2gzMihFcXVhbCwganNSZWdUMTAucGF5bG9hZEdQUigp
LCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEpuc3RyaWN0ZXE+KCk7CiAgICAgaW50IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3Ry
dWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2gzMihOb3RFcXVhbCwganNSZWdUMTAucGF5bG9hZEdQ
UigpLCBqc1JlZ1QzMi5wYXlsb2FkR1BSKCkpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfanN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2wKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFs
dWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGMwY2I3MmZi
NjBkOTM1MzUzOWU5NDE3YWNiZjg0ZTUxMDhkMzg1MDIuLmVmYzlhMGU4YmIwMmUyMjU4MTE4NDYy
M2QxMDYwYTg5MzVjZGYyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtMjgyNSw3ICsyODI1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2IK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckJhc2VsaW5lLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEluc3RydWN0
aW9uKiBwYykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3Bl
Rm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0yODc3LDcgKzI4NzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzb2x2ZWRTY29wZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yOTE5LDcgKzI5MTksNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KgogICAgIH0pKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGQ1ZTlmNWM3
MDVhNTg5MzkwNzExYmFmNzM3MGIwMDRiMjYxZmRiODQuLjJhNTlmNjRlODg1YWQ1YTI1ZTE4Njcy
Zjk2YzNkZDViYjg2NWJkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCkBAIC02OCw3ICs2OCwxMCBAQCBjbGFzcyBXYXRjaHBvaW50U2V0OwogCiBzdHJ1Y3Qg
RUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09w
Y29kZVRyYWl0czsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNv
ZGVUcmFpdHM+OwogCiB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsKIApAQCAtMjk0LDkgKzI5Nyw5
IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlk
R2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4LCBpbnQzMl90IG1pbikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93
bktleVR5cGUsIGNoYXIqLCAoVk0qLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUlu
ZGV4LCBpbnQzMl90IG1pbikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25T
d2l0Y2hTdHJpbmdXaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckJhc2VsaW5lLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKLUpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0luc3RydWN0aW9uKiBieXRlY29k
ZVBDKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZyb21TY29wZSwg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGJ5
dGVjb2RlUEMpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0VG9TY29w
ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNJbnN0cnVjdGlvbiogYnl0ZWNvZGVQ
QykpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0
ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5LCBjaGFyKiwgKFZN
KiwgSlNPYmplY3QqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlYWxs
b2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UsIGNoYXIqLCAoVk0qLCBKU09iamVj
dCosIHNpemVfdCBuZXdTaXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDhlYjIxMzhhMTFjOWNiOTY5OWZjM2ZhMjlkYWEyMmU1
NTJiMTljODEuLmM4YjhiMGJmM2RlMWYzY2ZiN2JkZDliMDFjMjdhNDc2Nzk5OTM3ZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC00
Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5
VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEy
Miw3ICsxMjIsNyBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9w
Y29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsK
IH0KQEAgLTE2NSw3ICsxNjUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVAogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFt
ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0yMDEsNyArMjAxLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1
bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBBU1NFUlQo
aGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVf
Y2FsbFNsb3dPcGVyCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zZXRf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Nl
dF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCkBAIC0zMTgs
NyArMzE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFYKICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMzcwLDcgKzM3MCw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7CkBAIC00MTcsMTQgKzQxNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRl
QmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdGVtcGxhdGUgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsPihjb25zdCBJbnN0cnVjdGlvbiopOwordGVt
cGxhdGUgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsPihjb25zdCBKU0lu
c3RydWN0aW9uKik7CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
YnlfdmFsX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVj
dGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtNDgzLDcgKzQ4Myw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9i
eV92YWxfY2FsbFNsb3dPcGVyYXRpb25UCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTU4NCw3ICs1ODQsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lX2NhbGxTbG93T3BlcgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJCeUlkPigpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXJQYXlsb2FkKGJ5dGVjb2RlLm1fYmFzZSwgcmVnVDApOwpAQCAtNTk0LDcgKzU5NCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlckJ5SWQs
IHJlZ1QyLCByZWdUMCwgbV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KS5pbXBsKCksIG9wdGlvbnMsIHJlZ1QxKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRTZXR0ZXJCeUlkPigpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXJQYXlsb2FkKGJ5dGVjb2RlLm1fYmFzZSwgcmVnVDApOwpAQCAtNjA0LDcgKzYwNCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFNldHRlckJ5SWQs
IHJlZ1QyLCByZWdUMCwgbV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KS5pbXBsKCksIG9wdGlvbnMsIHJlZ1QxKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdldHRlclNldHRlckJ5SWQ+KCk7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYnl0ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBA
IC02MTUsNyArNjE1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwgcmVnVDMsIHJlZ1QwLCBtX3VubGlua2VkQ29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmltcGwoKSwgYXR0cmlidXRl
LCByZWdUMSwgcmVnVDIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dldHRlcl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
R2V0dGVyQnlWYWw+KCk7CiAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyQnlWYWwsIGdsb2JhbE9iamVjdEdS
UCwgYmFzZUdQUiwgcHJvcGVydHlKU1IsIGF0dHJpYnV0ZXMsIHNldHRlckdQUik7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRTZXR0ZXJCeVZhbD4oKTsKIApAQCAtNjUz
LDcgKzY1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXRTZXR0ZXJCeVZhbCwgZ2xvYmFsT2JqZWN0R1JQLCBiYXNlR1BSLCBwcm9wZXJ0eUpTUiwg
YXR0cmlidXRlcywgc2V0dGVyR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC02OTIsNyArNjky
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJC
YXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CkBAIC03NjIsNyArNzYyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGgKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3Zh
bChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC04MDQsNyArODA0LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CkBAIC04NzQsNyArODc0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblQKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJl
ZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTA4LDcgKzkwOCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9n
ZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTY3LDcgKzk2Nyw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcs
IHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2Rp
cmVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZz
ZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC05OTMsNyArOTkzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEwMzgsNyAr
MTAzOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJl
ZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZz
ZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNs
b3dPcGVyYXRpb25UaAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJl
ZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTEyMDEsNyArMTIwMSw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93
aXRoX3RoaXNfY2FsbFNsb3dPCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BQdXRCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1f
YmFzZTsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJp
ZXIoYmFzZVZSZWcsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTEzMTAsNyArMTMx
MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lk
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BJbkJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5t
X2RzdDsKQEAgLTEzNDIsNyArMTM0Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9p
bl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0xMzcwLDcgKzEzNzAs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9pbl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xNDA2LDcgKzE0
MDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0
SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CkBAIC0xNDg2LDMxICsxNDg2LDMxIEBAIHZvaWQgSklUOjplbWl0SGFz
UHJpdmF0ZVNsb3coQWNjZXNzVHlwZSB0eXBlKQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BIYXNQcml2YXRlTmFtZT4oKTsKICAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwg
Ynl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2
YXRlTmFtZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhh
c1ByaXZhdGVOYW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1By
aXZhdGVCcmFuZD4oKTsKICAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNv
ZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQp
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVCcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVf
c2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUmVzb2x2ZVNjb3BlPigpOwog
ICAgIFJlc29sdmVUeXBlIHByb2ZpbGVkUmVzb2x2ZVR5cGUgPSBieXRlY29kZS5tZXRhZGF0YSht
X3Byb2ZpbGVkQ29kZUJsb2NrKS5tX3Jlc29sdmVUeXBlOwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcmVzb2x2
ZV9zY29wZUdlbmVyYXRvcihWTSYgdm0KICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9yZXNvbHZlX3Njb3BlIik7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRGcm9tU2NvcGU+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTk3NCw3ICsxOTc0LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2Zy
b21fc2NvcGVHZW5lcmF0b3IoVk0mIHYKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfZnJvbV9zY29wZSIp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb1Njb3BlPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CkBAIC0yMTEzLDcgKzIxMTMsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2Nv
cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2Nv
cGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKQEAgLTIxNzMsNyArMjE3Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfcHV0X3RvX3Njb3BlIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9mcm9t
X2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEZyb21Bcmd1bWVudHM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb0FyZ3VtZW50cz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYXJndW1lbnRzID0gYnl0ZWNvZGUubV9hcmd1bWVudHM7CkBAIC0yMjAxLDcgKzIyMDEsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihhcmd1bWVudHMsIHZhbHVl
LCBTaG91bGRGaWx0ZXJWYWx1ZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9pbnRlcm5h
bF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldEludGVybmFsRmllbGQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2lu
dGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0SW50ZXJuYWxGaWVsZD4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTIyMzEsNyArMjIzMSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByb3BlcnR5RW51bWVyYXRvcj4oKTsKIApAQCAt
MjI2NSw3ICsyMjY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0
b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBkb25lQ2FzZXMu
bGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvck5l
eHQ+KCk7CiAKQEAgLTIzMjgsNyArMjMyOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGRvbmUu
bGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RW51bWVyYXRvckdldEJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKQEAgLTI0MTYsNyArMjQxNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0
b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewogICAgIGdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5VmFsPigpLCBpdGVyKTsKIH0KQEAgLTI0NTgs
NDggKzI0NTgsNDggQEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBs
KGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1BhdGhGdW4KICAgICBkb25lLmxpbmsodGhp
cyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92
YWwpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19w
YXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0
IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9y
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBK
U0luc3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogewogICAgIFVOUkVBQ0hBQkxF
X0ZPUl9QTEFURk9STSgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2lu
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiAgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1l
cmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19v
d25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGQwYjM3Mzg5MjFhNGYwMDE1MTJlN2RlZTNh
ODQ0M2M1MTkzYmQyNmMuLjY3MDc3NTdiYzVjNGEyNmNlMzllYzJhODVjNGFhZTY4NzM5NTc1YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC04Myw3ICs4
Myw3IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAKICAgICBzdGF0aWNfYXNzZXJ0KGxsaW50X3Rocm93
X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUgPCBVSU5UOF9NQVgpOwogICAgIHN0YXRpY19hc3Nl
cnQod2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lIDwgVUlOVDhfTUFYKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKSB7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMTsg
KytpKSB7CiAgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmV4Y2VwdGlvbkluc3RydWN0aW9uc1tp
XSA9IGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7CiAgICAgICAgIGdfanNj
Q29uZmlnLmxsaW50Lndhc21FeGNlcHRpb25JbnN0cnVjdGlvbnNbaV0gPSB3YXNtX3Rocm93X2Zy
b21fc2xvd19wYXRoX3RyYW1wb2xpbmU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oCmluZGV4IDM3YzFhZmU2ZGU3NmM4OTM1YWM3NDZkNjBmYjQ5N2QzMWU2ZTdj
YTkuLmMwMzMzZDM0MmIwOWIwMzA0MDEwZjQ0NjI4NDNmYzA4OTQ4MjllZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAgLTU1LDggKzU1LDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBmcmllbmQgdm9pZCBpbml0aWFsaXplKCk7CiAKLSAgICBmcmllbmQgSW5z
dHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwotICAgIGZyaWVuZCBJbnN0cnVjdGlv
biogd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworICAgIGZyaWVuZCBKU0luc3RydWN0aW9u
KiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICBmcmllbmQgV2FzbUluc3RydWN0aW9uKiB3
YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiAgICAgZnJpZW5kIE9wY29kZSogb3Bjb2RlTWFw
KCk7CiAgICAgZnJpZW5kIE9wY29kZSogb3Bjb2RlTWFwV2lkZTE2KCk7CiAgICAgZnJpZW5kIE9w
Y29kZSogb3Bjb2RlTWFwV2lkZTMyKCk7CkBAIC03NCwxNCArNzQsMTQgQEAgcHJpdmF0ZToKIAog
dm9pZCBpbml0aWFsaXplKCk7CiAKLWlubGluZSBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCkKK2lubGluZSBKU0luc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQog
ewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uKj4oZ19qc2NDb25maWcu
bGxpbnQuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxKU0luc3RydWN0aW9uKj4oZ19qc2NDb25maWcubGxpbnQuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
KTsKIH0KLSAgICAKLWlubGluZSBJbnN0cnVjdGlvbiogd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9u
cygpCisKK2lubGluZSBXYXNtSW5zdHJ1Y3Rpb24qIHdhc21FeGNlcHRpb25JbnN0cnVjdGlvbnMo
KQogewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihnX2pzY0NvbmZpZy5s
bGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKTsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFdhc21JbnN0cnVjdGlvbio+KGdfanNjQ29uZmlnLmxsaW50Lndhc21FeGNlcHRpb25JbnN0cnVj
dGlvbnMpOwogfQogCiBpbmxpbmUgT3Bjb2RlKiBvcGNvZGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAppbmRleCBlODgzMTUzMjhjY2I4
Zjg1YjNmNWRmNzE1NThhMGNiY2NiMzU4NTZjLi5kMjFjMWEyMTAyODQ4ZjBmMzk3NWI5MmQzMzAx
YTNjYmU3ZmZiMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mIHZtKQorSlNJbnN0
cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhWTSYgdm0pCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICNpZiBMTElOVF9UUkFDSU5HCkBAIC01MCw3ICs1MCw3IEBAIEluc3RydWN0aW9uKiByZXR1cm5U
b1Rocm93KFZNJiB2bSkKICAgICByZXR1cm4gTExJbnQ6OmV4Y2VwdGlvbkluc3RydWN0aW9ucygp
OwogfQogCi1JbnN0cnVjdGlvbiogd2FzbVJldHVyblRvVGhyb3coVk0mIHZtKQorV2FzbUluc3Ry
dWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhWTSYgdm0pCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZt
KTsKICNpZiBMTElOVF9UUkFDSU5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFeGNlcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmgKaW5kZXggZTVmOTAyMWZhZGI4ZWZjYjI1ODdjMGNhNjAxNzZlYmYxZGNi
YWM0YS4uZmRhMzUzMmRjYzBhODg1YzQxOGU2Njc2YTIyOTJkYzQzM2I1MzdlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaApAQCAtMzMsMTYgKzMz
LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKLXN0
cnVjdCBJbnN0cnVjdGlvbjsKIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOwogCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0
cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rp
b248SlNPcGNvZGVUcmFpdHM+OworCiBuYW1lc3BhY2UgTExJbnQgewogCiAvLyBHaXZlcyB5b3Ug
YSBQQyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdo
ZW4gYWR2YW5jZWQKIC8vIGJldHdlZW4gMSBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJp
bnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZQogLy8gaW50ZXJwcmV0ZXIncyBleGNlcHRp
b24gaGFuZGxlci4KLUluc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KFZNJik7Ci1JbnN0cnVjdGlv
biogd2FzbVJldHVyblRvVGhyb3coVk0mKTsKK0pTSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3co
Vk0mKTsKK1dhc21JbnN0cnVjdGlvbiogd2FzbVJldHVyblRvVGhyb3coVk0mKTsKIAogLy8gVXNl
IHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGNhbGxUb1Rocm93KFZNJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3YTBl
N2RmZTY1NmJmNDM0MDRjZThjZTZmYTUzZTk4ZGUxMWZkOWU4Li4wYzViZjllMWQ2MjFlNmJiYjdj
MWE5NjA2OTAwOGMzZjUzOGMxNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgSlNWYWx1ZSBn
ZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkg
eyByZXR1cgogICAgICgodGFyZ2V0T2Zmc2V0KSA/ICh0YXJnZXRPZmZzZXQpIDogY29kZUJsb2Nr
LT5vdXRPZkxpbmVKdW1wT2Zmc2V0KHBjKSkKIAogI2RlZmluZSBKVU1QX1RPKHRhcmdldCkgZG8g
eyBcCi0gICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArICh0YXJnZXQpKTsgXAorICAgICAg
ICBwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArICh0YXJnZXQpKTsgXAogICAgIH0gd2hpbGUgKGZh
bHNlKQogCiAjZGVmaW5lIExMSU5UX0JSQU5DSChjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAg
ICAgICBcCkBAIC0yMjAsNyArMjIwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+IHZv
aWQgc2xvd1BhdGhMb2dGKGNvbnN0IGNoYXIqLCBjb25zdCBUeXBlcyYuLi4pIHsgfQogCiAjZW5k
aWYgLy8gTExJTlRfVFJBQ0lORwogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiog
cGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJ
bnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQogewogICAgIGlmICgh
T3B0aW9uczo6dHJhY2VMTEludEV4ZWN1dGlvbigpKQogICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX29wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluCiAgICAgTExJTlRf
RU5EKCk7CiB9CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3Zh
bHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9t
V2hlcmUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKIHsK
ICAgICBpZiAoIU9wdGlvbnM6OnRyYWNlTExJbnRFeGVjdXRpb24oKSkKICAgICAgICAgTExJTlRf
RU5EX0lNUEwoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVz
dWx0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxs
KiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
K3N0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2Vs
bCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwogCkBAIC04MDQs
NyArODA0LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2QKICAgICB2bS53cml0ZUJhcnJpZXIo
Y29kZUJsb2NrKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25z
dCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxM
SW50R2V0QnlJRChjb25zdCBKU0luc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjAwNiw3ICsyMDA2LDcgQEAgZW51bSBjbGFzcyBTZXRB
cmd1bWVudHNXaXRoIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCBTZXRBcmd1bWVudHNX
aXRoIHNldD4KLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmFyYXJnc1NldHVwKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZhcmFyZ3NTZXR1cChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQp
CiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAKQEAgLTIwNTYsNyArMjA1Niw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICBy
ZXR1cm4gdmFyYXJnc1NldHVwPE9wQ29uc3RydWN0VmFyYXJncywgU2V0QXJndW1lbnRzV2l0aDo6
T2JqZWN0PihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29uc3RydWN0KTsKIH0KIAotaW5saW5lIFNs
b3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
cmV0dXJuUG9pbnQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYywgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50KQogewogICAgIExMSU5UX0JFR0lO
X05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDYWxsRXZhbD4oKTsK
QEAgLTIzNzYsMTMgKzIzNzYsMTMgQEAgc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JOZXh0Q2hl
Y2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE8KICAgICAgICAg
dmFsdWVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0LmdldChnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPnZhbHVlKTsKIH0KIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBk
aXNwYXRjaFRvTmV4dEluc3RydWN0aW9uRHVyaW5nRXhpdChUaHJvd1Njb3BlJiBzY29wZSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFtOjpSZWYgcGMpCitpbmxpbmUgU2xv
d1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0SW5zdHJ1Y3Rpb25EdXJpbmdFeGl0KFRocm93
U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNJbnN0cnVjdGlvblN0cmVhbTo6
UmVmIHBjKQogewogICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChyZXR1cm5Ub1Rocm93KHNjb3BlLnZtKCkpLCBudWxscHRyKTsKIAogICAgIGlm
IChPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewotICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOworICAgICAgICBjb25zdCBKU0luc3RydWN0aW9u
KiBuZXh0UEMgPSBwYy5uZXh0KCkucHRyKCk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRo
dW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggN2VjODAxNWVlOGM1YWVjNGM1
MjlkNmRjNTI4MmEzNDNjNzRhNGJlYi4uN2JkMTA3Yjk1NWU1ZThjNTU5NTI1MGU1MWJjZmY3Yzc2
Yjg0YzljNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKQEAgLTI2LDI0ICsyNiwyNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb21tb25T
bG93UGF0aHMuaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFtZTsKLXN0cnVj
dCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKIAogbmFtZXNwYWNlIExMSW50
IHsKIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChD
YWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KSBSRUZFUkVOQ0VEX0ZST01fQVNNOwotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxp
bnRfdHJhY2VfdmFsdWUoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdo
ZXJlLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgUkVGRVJFTkNFRF9GUk9NX0FTTTsKK2V4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoQ2FsbEZyYW1lKiwg
Y29uc3QgSlNJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKSBSRUZFUkVO
Q0VEX0ZST01fQVNNOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vf
dmFsdWUoQ2FsbEZyYW1lKiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKSBSRUZFUkVOQ0VEX0ZST01fQVNNOwogZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfbGlua19jYWxsKENhbGxGcmFtZSosIEpTQ2VsbCosIENh
bGxMaW5rSW5mbyopIFJFRkVSRU5DRURfRlJPTV9BU007CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBsbGludF92aXJ0dWFsX2NhbGwoQ2FsbEZyYW1lKiwgSlNDZWxsKiwgQ2FsbExpbmtJ
bmZvKikgUkVGRVJFTkNFRF9GUk9NX0FTTTsKIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9i
YXJyaWVyX3Nsb3coQ2FsbEZyYW1lKiwgSlNDZWxsKikgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZf
SU5URVJOQUw7CiAKICNkZWZpbmUgTExJTlRfU0xPV19QQVRIX0RFQ0wobmFtZSkgXAotICAgIGV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorICAgIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50XyMjbmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVj
dGlvbiogcGMpCiAKICNkZWZpbmUgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKG5hbWUpIFwK
ICAgICBMTElOVF9TTE9XX1BBVEhfREVDTChuYW1lKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9J
TlRFUk5BTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IDRmYTRmYjNkNzkxYjMzNDc4MGQ4ZDg4MDZhYjAyZDhlYmNmNzA1
OGEuLmE4ZTdjNzM5OWQ1ODFhNTk2MGQwYWE3YWE3MjQzMzVkYjAzNTRjNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTMyMCw4ICszMjAsMTAgQEAgZW5kCiAKICMgT3Bjb2RlIG9mZnNldHMKIGNvbnN0IE9wY29kZUlE
TmFycm93U2l6ZSA9IDEgIyBPcGNvZGVJRAotY29uc3QgT3Bjb2RlSURXaWRlMTZTaXplID0gMiAj
IFdpZGUxNiBQcmVmaXggKyBPcGNvZGVJRAotY29uc3QgT3Bjb2RlSURXaWRlMzJTaXplID0gMiAj
IFdpZGUzMiBQcmVmaXggKyBPcGNvZGVJRAorY29uc3QgT3Bjb2RlSURXaWRlMTZTaXplSlMgPSAy
ICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlECitjb25zdCBPcGNvZGVJRFdpZGUzMlNpemVKUyA9
IDIgIyBXaWRlMzIgUHJlZml4ICsgT3Bjb2RlSUQKK2NvbnN0IE9wY29kZUlEV2lkZTE2U2l6ZVdh
c20gPSAyICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlEKDEgYnl0ZSkKK2NvbnN0IE9wY29kZUlE
V2lkZTMyU2l6ZVdhc20gPSAyICMgV2lkZTMyIFByZWZpeCArIE9wY29kZUlEKDEgYnl0ZSkKIAog
aWYgWDg2XzY0X1dJTiBvciBDX0xPT1BfV0lOCiAgICAgY29uc3QgR2lnYWNhZ2VDb25maWcgPSBf
Z19naWdhY2FnZUNvbmZpZwpAQCAtMzU4LDM1ICszNjAsNTEgQEAgbWFjcm8gZGlzcGF0Y2hJbmRp
cmVjdChvZmZzZXRSZWcpCiAgICAgZGlzcGF0Y2gob2Zmc2V0UmVnKQogZW5kCiAKLW1hY3JvIGdl
bmVyaWNEaXNwYXRjaE9wKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1lKQorbWFjcm8gZ2VuZXJp
Y0Rpc3BhdGNoT3BKUyhkaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkKICAgICBtYWNybyBkaXNw
YXRjaE5hcnJvdygpCi0gICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xl
bmd0aCAtIDEpICogMSArIE9wY29kZUlETmFycm93U2l6ZSkKKyAgICAgICAgZGlzcGF0Y2goKGNv
bnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoKSAqIDEgKyBPcGNvZGVJRE5hcnJvd1NpemUpCiAg
ICAgZW5kCiAKICAgICBtYWNybyBkaXNwYXRjaFdpZGUxNigpCi0gICAgICAgIGRpc3BhdGNoKChj
b25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCAtIDEpICogMiArIE9wY29kZUlEV2lkZTE2U2l6
ZSkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoKSAqIDIg
KyBPcGNvZGVJRFdpZGUxNlNpemVKUykKICAgICBlbmQKIAogICAgIG1hY3JvIGRpc3BhdGNoV2lk
ZTMyKCkKLSAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoIC0g
MSkgKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplKQorICAgICAgICBkaXNwYXRjaCgoY29uc3RleHBy
ICVvcGNvZGVOYW1lJV9sZW5ndGgpICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZUpTKQorICAgIGVu
ZAorCisgICAgc2l6ZShkaXNwYXRjaE5hcnJvdywgZGlzcGF0Y2hXaWRlMTYsIGRpc3BhdGNoV2lk
ZTMyLCBtYWNybyAoZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQorZW5kCisKK21hY3JvIGdlbmVy
aWNEaXNwYXRjaE9wV2FzbShkaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkKKyAgICBtYWNybyBk
aXNwYXRjaE5hcnJvdygpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUl
X2xlbmd0aCkgKiAxICsgT3Bjb2RlSUROYXJyb3dTaXplKQorICAgIGVuZAorCisgICAgbWFjcm8g
ZGlzcGF0Y2hXaWRlMTYoKQorICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1l
JV9sZW5ndGgpICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZVdhc20pCisgICAgZW5kCisKKyAgICBt
YWNybyBkaXNwYXRjaFdpZGUzMigpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29k
ZU5hbWUlX2xlbmd0aCkgKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplV2FzbSkKICAgICBlbmQKIAog
ICAgIHNpemUoZGlzcGF0Y2hOYXJyb3csIGRpc3BhdGNoV2lkZTE2LCBkaXNwYXRjaFdpZGUzMiwg
bWFjcm8gKGRpc3BhdGNoKSBkaXNwYXRjaCgpIGVuZCkKIGVuZAogCiBtYWNybyBkaXNwYXRjaE9w
KHNpemUsIG9wY29kZU5hbWUpCi0gICAgZ2VuZXJpY0Rpc3BhdGNoT3AoZGlzcGF0Y2gsIHNpemUs
IG9wY29kZU5hbWUpCisgICAgZ2VuZXJpY0Rpc3BhdGNoT3BKUyhkaXNwYXRjaCwgc2l6ZSwgb3Bj
b2RlTmFtZSkKIGVuZAogCiAKIG1hY3JvIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKLSAgICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBnZXR1T3BlcmFuZFdpZGUxNiwg
Z2V0dU9wZXJhbmRXaWRlMzIsIG1hY3JvIChnZXR1KQorICAgIHNpemUoZ2V0dU9wZXJhbmROYXJy
b3csIGdldHVPcGVyYW5kV2lkZTE2SlMsIGdldHVPcGVyYW5kV2lkZTMySlMsIG1hY3JvIChnZXR1
KQogICAgICAgICBnZXR1KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgZW5kKQog
ZW5kCiAKIG1hY3JvIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAg
IHNpemUoZ2V0T3BlcmFuZE5hcnJvdywgZ2V0T3BlcmFuZFdpZGUxNiwgZ2V0T3BlcmFuZFdpZGUz
MiwgbWFjcm8gKGdldCkKKyAgICBzaXplKGdldE9wZXJhbmROYXJyb3csIGdldE9wZXJhbmRXaWRl
MTZKUywgZ2V0T3BlcmFuZFdpZGUzMkpTLCBtYWNybyAoZ2V0KQogICAgICAgICBnZXQob3Bjb2Rl
U3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBlbmQpCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAppbmRleCA5ODc2ZWY2
ZWY3NDJhY2VlZGFlMjY5YTJhYjQ1NGM1YjYyY2Q1MTZiLi5lN2E0ZDE5ODg4YWIzOTEyYmRkNzc3
YWJhZDAwYTgwZjQ4OTlkODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgog
ICAgIEFMV0FZU19JTkxJTkUgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxPcGNvZGU+KG1fdmFsdWUpOyB9CiAKICAgICBvcGVyYXRvciBDYWxsRnJhbWUqKCkgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PENhbGxGcmFtZSo+KG1fdmFsdWUpOyB9Ci0gICAgb3BlcmF0b3Ig
Y29uc3QgSW5zdHJ1Y3Rpb24qKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEluc3RydWN0
aW9uKj4obV92YWx1ZSk7IH0KKyAgICBvcGVyYXRvciBjb25zdCBKU0luc3RydWN0aW9uKigpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBKU0luc3RydWN0aW9uKj4obV92YWx1ZSk7IH0KICAg
ICBvcGVyYXRvciBKU0NlbGwqKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KG1fdmFs
dWUpOyB9CiAgICAgb3BlcmF0b3IgUHJvdG9DYWxsRnJhbWUqKCkgeyByZXR1cm4gYml0d2lzZV9j
YXN0PFByb3RvQ2FsbEZyYW1lKj4obV92YWx1ZSk7IH0KICAgICBvcGVyYXRvciBSZWdpc3Rlcioo
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UmVnaXN0ZXIqPihtX3ZhbHVlKTsgfQpAQCAtMjg3LDcg
KzI4Nyw3IEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGNvZGVJRCwg
dm9pZCogZXhlY3V0YWJsZUFkZHJlc3MsIFZNKiB2bSwKICAgICAgICAgLy8gaW5pdGlhbGl6ZWQg
dGhlIG9wY29kZU1hcCBhYm92ZS4gVGhpcyBpcyBiZWNhdXNlIGdldENvZGVQdHIoKQogICAgICAg
ICAvLyBjYW4gZGVwZW5kIG9uIHRoZSBvcGNvZGVNYXAuCiAgICAgICAgIHVpbnQ4X3QqIGV4Y2Vw
dGlvbkluc3RydWN0aW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KExMSW50OjpleGNl
cHRpb25JbnN0cnVjdGlvbnMoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
YXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtYXhCeXRlY29kZVN0cnVjdExlbmd0aCArIDE7ICsraSkKICAgICAgICAgICAgIGV4Y2VwdGlv
bkluc3RydWN0aW9uc1tpXSA9IGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7
CiAKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMjI3MTZm
ODFiYmQ5MDc4Yzk2ZmVlMTFkZDhjNDEwZTJhNTlhZDRmMi4uYWNlODcxMTY3MmU3MDIxNmQzOWE0
OGRmMTVmZDY2ZDZiNTdjNDExZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTM0LDIwICszNCwyMCBA
QCBtYWNybyBnZXRPcGVyYW5kTmFycm93KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAg
ICAgbG9hZGJzaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKyBP
cGNvZGVJRE5hcnJvd1NpemVbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJh
bmRXaWRlMTYob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAgICBsb2FkaCBjb25zdGV4
cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZT
aXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMTZKUyhvcGNvZGVTdHJ1
Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRoIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8l
ZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVKU1tQQiwgUEMsIDFdLCBk
c3QKIGVuZAogCi1tYWNybyBnZXRPcGVyYW5kV2lkZTE2KG9wY29kZVN0cnVjdCwgZmllbGROYW1l
LCBkc3QpCi0gICAgbG9hZGhzaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVf
aW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0
T3BlcmFuZFdpZGUxNkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGhz
aSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2Rl
SURXaWRlMTZTaXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmRX
aWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAgICBsb2FkaSBjb25zdGV4cHIg
JW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXpl
W1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzJKUyhvcGNvZGVTdHJ1Y3Qs
IGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmll
bGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVKU1tQQiwgUEMsIDFdLCBkc3QK
IGVuZAogCi1tYWNybyBnZXRPcGVyYW5kV2lkZTMyKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBk
c3QpCi0gICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRl
eCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXRPcGVy
YW5kV2lkZTMySlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaXMgY29u
c3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lk
ZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKIG1hY3JvIG1ha2VSZXR1cm4oZ2V0LCBk
aXNwYXRjaCwgZm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGM0NTMzNTFkNDkyNmNmNzRlOGQ2ZWY4NTg1OTg3
NGE0NWJhZDU5ZmEuLjVkZTdiY2M3ZmQwZDRmMDQwZjJkZjk0YmQ0NzM0NWQ4MzU4Njk0NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCkBAIC0zOSwyMCArMzksMzYgQEAgbWFjcm8gZ2V0T3BlcmFuZE5hcnJvdyhvcGNv
ZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgIGxvYWRic3EgY29uc3RleHByICVvcGNvZGVT
dHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICsgT3Bjb2RlSUROYXJyb3dTaXplW1BCLCBQQywgMV0s
IGRzdAogZW5kCiAKLW1hY3JvIGdldHVPcGVyYW5kV2lkZTE2KG9wY29kZVN0cnVjdCwgZmllbGRO
YW1lLCBkc3QpCi0gICAgbG9hZGggY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUl
X2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdl
dHVPcGVyYW5kV2lkZTE2SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2Fk
aCBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2Rl
SURXaWRlMTZTaXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0T3BlcmFuZFdp
ZGUxNihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRoc3EgY29uc3RleHBy
ICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6
ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldHVPcGVyYW5kV2lkZTE2V2FzbShvcGNvZGVTdHJ1
Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRoIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8l
ZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVXYXNtW1BCLCBQQywgMV0s
IGRzdAogZW5kCiAKLW1hY3JvIGdldHVPcGVyYW5kV2lkZTMyKG9wY29kZVN0cnVjdCwgZmllbGRO
YW1lLCBkc3QpCi0gICAgbG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUl
X2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdl
dE9wZXJhbmRXaWRlMTZKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRo
c3EgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogMiArIE9wY29k
ZUlEV2lkZTE2U2l6ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1hY3JvIGdldE9wZXJhbmRX
aWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKLSAgICBsb2FkaXMgY29uc3RleHBy
ICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6
ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldE9wZXJhbmRXaWRlMTZXYXNtKG9wY29kZVN0cnVj
dCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGhzcSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVf
JWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplV2FzbVtQQiwgUEMsIDFd
LCBkc3QKK2VuZAorCittYWNybyBnZXR1T3BlcmFuZFdpZGUzMkpTKG9wY29kZVN0cnVjdCwgZmll
bGROYW1lLCBkc3QpCisgICAgbG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5h
bWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAorZW5k
CisKK21hY3JvIGdldHVPcGVyYW5kV2lkZTMyV2FzbShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwg
ZHN0KQorICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRl
eCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVXYXNtW1BCLCBQQywgMV0sIGRzdAorZW5kCisKK21h
Y3JvIGdldE9wZXJhbmRXaWRlMzJKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAg
IGxvYWRpcyBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsg
T3Bjb2RlSURXaWRlMzJTaXplSlNbUEIsIFBDLCAxXSwgZHN0CitlbmQKKworbWFjcm8gZ2V0T3Bl
cmFuZFdpZGUzMldhc20ob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaXMg
Y29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIE9wY29kZUlE
V2lkZTMyU2l6ZVdhc21bUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAogbWFjcm8gbWFrZVJldHVybihn
ZXQsIGRpc3BhdGNoLCBmbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCmluZGV4IDNlNTM3OTA1MjI3MTlkNjYwZGRhZjIyZDNlZjNlY2ZmM2U1NjY1ZmYuLjcx
MzVmNGY2ZmMyMGNiMzllODViYWJjMWQxY2YxZWFiNThiNjJiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtNDYwLDcgKzQ2MCw3IEBAIGVuZAog
IyBXYXNtIHdyYXBwZXIgb2YgZ2V0L2dldHUgdGhhdCBvcGVyYXRlIG9uIGN0eAogbWFjcm8gd2dl
dHMoY3R4LCBmaWVsZCwgZHN0KQogICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIHNpemUpCi0gICAgICAgIHNpemUoZ2V0T3BlcmFuZE5hcnJvdywgZ2V0T3BlcmFuZFdpZGUx
NiwgZ2V0T3BlcmFuZFdpZGUzMiwgbWFjcm8gKGdldCkKKyAgICAgICAgc2l6ZShnZXRPcGVyYW5k
TmFycm93LCBnZXRPcGVyYW5kV2lkZTE2V2FzbSwgZ2V0T3BlcmFuZFdpZGUzMldhc20sIG1hY3Jv
IChnZXQpCiAgICAgICAgICAgICBnZXQob3Bjb2RlU3RydWN0LCBmaWVsZCwgZHN0KQogICAgICAg
ICBlbmQpCiAgICAgZW5kKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIGVuZAogCiBtYWNybyB3Z2V0dShj
dHgsIGZpZWxkLCBkc3QpCiAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwg
c2l6ZSkKLSAgICAgICAgc2l6ZShnZXR1T3BlcmFuZE5hcnJvdywgZ2V0dU9wZXJhbmRXaWRlMTYs
IGdldHVPcGVyYW5kV2lkZTMyLCBtYWNybyAoZ2V0dSkKKyAgICAgICAgc2l6ZShnZXR1T3BlcmFu
ZE5hcnJvdywgZ2V0dU9wZXJhbmRXaWRlMTZXYXNtLCBnZXR1T3BlcmFuZFdpZGUzMldhc20sIG1h
Y3JvIChnZXR1KQogICAgICAgICAgICAgZ2V0dShvcGNvZGVTdHJ1Y3QsIGZpZWxkLCBkc3QpCiAg
ICAgICAgIGVuZCkKICAgICBlbmQpCkBAIC00NzgsNyArNDc4LDcgQEAgZW5kCiAKIG1hY3JvIGRp
c3BhdGNoKGN0eCkKICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzaXpl
KQotICAgICAgICBnZW5lcmljRGlzcGF0Y2hPcCh3YXNtRGlzcGF0Y2gsIHNpemUsIG9wY29kZU5h
bWUpCisgICAgICAgIGdlbmVyaWNEaXNwYXRjaE9wV2FzbSh3YXNtRGlzcGF0Y2gsIHNpemUsIG9w
Y29kZU5hbWUpCiAgICAgZW5kKQogZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBjYTI0ZTc1NDBhYjRkZGU1MTFhNTk2NmExNzFkNjk4
OTM2NTNlMTViLi4xNmEyMzJmY2FjMzI2ZGMzYzZlMWMyZDFlYzc4MTAxYjllYWU0ZDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC05ODMs
NyArOTgzLDcgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkU3RyaW5nSnVtcFRh
YmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICBDYWNoZWRWZWN0b3I8
RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3Np
dGlvbnM7CiAgICAgQ2FjaGVkSGFzaE1hcDx1bnNpZ25lZCwgVW5saW5rZWRDb2RlQmxvY2s6OlJh
cmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01h
cDsKLSAgICBDYWNoZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2Zp
bGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKKyAgICBDYWNoZWRWZWN0b3I8dHlwZW5hbWUg
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNv
ZGVPZmZzZXRzOwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRCaXRWZWN0b3I+IG1fYml0VmVjdG9y
czsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5p
cXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4+IG1fY29uc3RhbnRJZGVudGlmaWVy
U2V0czsKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKQEAg
LTE0MzksMTggKzE0MzksMTggQEAgcHJpdmF0ZToKICAgICBFbmNvZGVkVHlwZSBtX3R5cGU7CiB9
OwogCi1jbGFzcyBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8
SW5zdHJ1Y3Rpb25TdHJlYW0+IHsKK2NsYXNzIENhY2hlZEluc3RydWN0aW9uU3RyZWFtIDogcHVi
bGljIENhY2hlZE9iamVjdDxKU0luc3RydWN0aW9uU3RyZWFtPiB7CiBwdWJsaWM6Ci0gICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIHN0cmVh
bSkKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBKU0luc3RydWN0aW9u
U3RyZWFtJiBzdHJlYW0pCiAgICAgewogICAgICAgICBtX2luc3RydWN0aW9ucy5lbmNvZGUoZW5j
b2Rlciwgc3RyZWFtLm1faW5zdHJ1Y3Rpb25zKTsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0
cmVhbSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CisgICAgSlNJbnN0cnVjdGlvblN0
cmVhbSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBWZWN0
b3I8dWludDhfdCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3csIDE2LCBJbnN0cnVjdGlvblN0cmVh
bU1hbGxvYz4gaW5zdHJ1Y3Rpb25zVmVjdG9yOwogICAgICAgICBtX2luc3RydWN0aW9ucy5kZWNv
ZGUoZGVjb2RlciwgaW5zdHJ1Y3Rpb25zVmVjdG9yKTsKLSAgICAgICAgcmV0dXJuIG5ldyBJbnN0
cnVjdGlvblN0cmVhbShXVEZNb3ZlKGluc3RydWN0aW9uc1ZlY3RvcikpOworICAgICAgICByZXR1
cm4gbmV3IEpTSW5zdHJ1Y3Rpb25TdHJlYW0oV1RGTW92ZShpbnN0cnVjdGlvbnNWZWN0b3IpKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0xODc5LDcgKzE4NzksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrJik7CiAgICAgdm9pZCBk
ZWNvZGUoRGVjb2RlciYsIFVubGlua2VkQ29kZUJsb2NrJikgY29uc3Q7CiAKLSAgICBJbnN0cnVj
dGlvblN0cmVhbSogaW5zdHJ1Y3Rpb25zKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25zLmRlY29kZShkZWNvZGVyKTsgfQorICAgIEpTSW5zdHJ1Y3Rpb25TdHJl
YW0qIGluc3RydWN0aW9ucyhEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX2luc3Ry
dWN0aW9ucy5kZWNvZGUoZGVjb2Rlcik7IH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVn
aXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3RoaXNSZWdpc3RlcjsgfQogICAgIFZpcnR1YWxSZWdp
c3RlciBzY29wZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOyB9CkBA
IC0xOTY2LDExICsxOTY2LDExIEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkUmVmUHRyPENhY2hlZFN0
cmluZ0ltcGw+IG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKIAogICAgIENhY2hlZFB0cjxD
YWNoZWRJbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7Ci0gICAgQ2FjaGVkVmVjdG9y
PEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgQ2FjaGVkVmVj
dG9yPHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsK
ICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkSlNWYWx1ZT4gbV9jb25zdGFudFJlZ2lzdGVyczsKICAg
ICBDYWNoZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiBtX2NvbnN0YW50c1NvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbjsKICAgICBDYWNoZWRWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5m
bz4gbV9leHByZXNzaW9uSW5mbzsKLSAgICBDYWNoZWRIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQsIGludD4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKKyAgICBDYWNoZWRIYXNoTWFw
PHR5cGVuYW1lIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PiBtX291dE9mTGluZUp1
bXBUYXJnZXRzOwogCiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZElkZW50aWZpZXI+IG1faWRlbnRp
ZmllcnM7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFdyaXRlQmFycmllcjxDYWNoZWRGdW5jdGlv
bkV4ZWN1dGFibGU+PiBtX2Z1bmN0aW9uRGVjbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4Y2YxMGQyNjQ2YmUzY2RmMWEz
YTIzNzFjNTUxODYxYmE2NDJkYzFhLi4xZWVlZTJjYjllNDZjNDRmMTljOGQ0ZjAyYjY1MTA3YjMz
ZDRhNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKQEAgLTExMiwxMCArMTEyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBDSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICBpZiAoYkNvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICAgICAgcGMgPSBieXRlY29kZS5tX3RhcmdldExhYmVsIFwKLSAgICAg
ICAgICAgICAgICA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyBieXRlY29kZS5tX3RhcmdldExhYmVsKSBc
CisgICAgICAgICAgICAgICAgPyByZWludGVycHJldF9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyBieXRlY29kZS5tX3Rhcmdl
dExhYmVsKSBcCiAgICAgICAgICAgICAgICAgOiBjb2RlQmxvY2stPm91dE9mTGluZUp1bXBUYXJn
ZXQocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgZWxzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArIHBjLT5zaXplKCkpOyBcCisgICAgICAgICAg
ICBwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArIHBjLT5zaXplKCkpOyBcCiAgICAgICAgIEVORF9J
TVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3
aGlsZSAoZmFsc2UpCiAKQEAgLTU1Miw3ICs1NTIsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX25lZ2F0ZSkKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVz
dWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCitzdGF0aWMgdm9pZCB1cGRhdGVBcml0
aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIHJlc3VsdCwgSlNWYWx1ZSBs
ZWZ0LCBKU1ZhbHVlIHJpZ2h0KQogewogICAgIEJpbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9
ICpjb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKIApAQCAtNTg2LDcgKzU4
Niw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2
ZWROb25OdW1lcmljKCk7CiB9CiAjZWxzZQotc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxl
Rm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIGNvbnN0IEluc3Ry
dWN0aW9uKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSkgeyB9CitzdGF0aWMgdm9pZCB1cGRh
dGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpIHsgfQog
I2VuZGlmCiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdG9fbnVtYmVy
KQpAQCAtODQ2LDcgKzg0Niw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfaXNfY29uc3RydWN0b3IpCiB9CiAKIHRlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+Ci1BTFdB
WVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBpdGVyYXRvck9wZW5UcnlGYXN0SW1wbChWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorQUxXQVlTX0lOTElO
RSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JPcGVuVHJ5RmFzdEltcGwoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JPcGVuLCB3aWR0aD4oKTsKICAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CkBAIC04OTIsNyArODky
LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rf
d2lkZTMyKQogfQogCiB0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgotQUxXQVlTX0lOTElORSBT
bG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykK
K0FMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yTmV4dFRyeUZhc3RJbXBs
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBjb25zdCBK
U0luc3RydWN0aW9uKiBwYykKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzS25vd25XaWR0
aDxPcEl0ZXJhdG9yTmV4dCwgd2lkdGg+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA5YjI0N2I3ZTU2OTYzMTJmY2ZjNDZmOThhYWYxNzU0
NmZkODQ5NmJhLi5kYzZhOGQxMDkzMTczY2IxMDYwOTMxYTAwMDU2ODk3MmE2YzBjZDE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAt
MjQ4LDEzICsyNDgsMTIgQEAgaW5saW5lIEpTQXJyYXkqIGFsbG9jYXRlTmV3QXJyYXlCdWZmZXIo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNJbW11dGFibGUKIH0gLy8gbmFtZXNwYWNl
IENvbW1vblNsb3dQYXRocwogCiBjbGFzcyBDYWxsRnJhbWU7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247
CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChuYW1lKSBcCi0gICAgSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihuYW1lLCBTbG93UGF0aFJldHVyblR5cGUsIChDYWxsRnJh
bWUqLCBjb25zdCBJbnN0cnVjdGlvbiopKQorICAgIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
bmFtZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiwgY29uc3QgSlNJbnN0cnVjdGlv
biopKQogCiAjZGVmaW5lIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChuYW1lKSBcCi0gICAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG5hbWUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpKQorICAgIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihuYW1lLCBTbG93UGF0aFJldHVyblR5cGUsIChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpKQogCiBKU0NfREVDTEFSRV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5j
cHAKaW5kZXggMTcwZjFhNjBkYWJiMjU2NzFjMGVkNmNkMzc1YzBiOWIxMjhkMTY2NS4uMjY5ODg2
YmZjMjEyN2QzNGVlMTQ2MGQ3Nzg3MWFjYTM4NWY4ODQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3Bw
CkBAIC03NSw4ICs3NSw4IEBAIFNwZWN1bGF0ZWRUeXBlIEZpbGVCYXNlZEZ1enplckFnZW50QmFz
ZTo6Z2V0UHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uCiAgICAgVmVjdG9yPFN0
cmluZz4gdXJsUGFydHMgPSBzb3VyY2VVUkwuc3BsaXQoJy8nKTsKICAgICBwcmVkaWN0aW9uVGFy
Z2V0LnNvdXJjZUZpbGVuYW1lID0gdXJsUGFydHMuaXNFbXB0eSgpID8gc291cmNlVVJMIDogdXJs
UGFydHMubGFzdCgpOwogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cyA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCk7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGFu
SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAg
Y29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25zID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKTsKKyAg
ICBjb25zdCBhdXRvKiBhbkluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5k
ZXgpLnB0cigpOwogICAgIHByZWRpY3Rpb25UYXJnZXQub3Bjb2RlSWQgPSBhbkluc3RydWN0aW9u
LT5vcGNvZGVJRCgpOwogCiAgICAgaW50IHN0YXJ0TG9jYXRpb24gPSBwcmVkaWN0aW9uVGFyZ2V0
LmRpdm90IC0gcHJlZGljdGlvblRhcmdldC5zdGFydE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKaW5kZXggOWI2OTEzZjk0MGNjMjkwYmVlMmMyNmQ0ZTVh
ZGM3OGI5YmMxYmNhYy4uNTViN2EwZjhjMjJhOTlkZTViNWFjOTJiODFiMmVmODEzYTFkZDI0YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKQEAgLTEwMSw4ICsx
MDEsOCBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICB2b2lkICgqc2hlbGxUaW1lb3V0Q2hlY2tDYWxs
YmFjaykoVk0mKTsKIAogICAgIHN0cnVjdCB7Ci0gICAgICAgIHVpbnQ4X3QgZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zW21heE9wY29kZUxlbmd0aCArIDFdOwotICAgICAgICB1aW50OF90IHdhc21FeGNl
cHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3RoICsgMV07CisgICAgICAgIHVpbnQ4X3Qg
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21heEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMV07CisgICAg
ICAgIHVpbnQ4X3Qgd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhCeXRlY29kZVN0cnVjdExl
bmd0aCArIDFdOwogICAgICAgICBjb25zdCB2b2lkKiBnYXRlTWFwW251bWJlck9mR2F0ZXNdOwog
ICAgIH0gbGxpbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aAppbmRleCBlOGE0ZTdhNjIzMzlkMzZiZWEwZjcyNTdiNDE3MzVlYzgyNDNlZjU3Li4yOTQ5ZDA5
MjVmYzA0NDc0YTZkZDI4MDc3NWU0YTM1OGY0YzBhZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC03Myw3ICs3Myw2IEBAIGNsYXNzIENMb29wOwog
CiBzdHJ1Y3QgQ2xhc3NJbmZvOwogc3RydWN0IER1bXBDb250ZXh0Owotc3RydWN0IEluc3RydWN0
aW9uOwogc3RydWN0IE1ldGhvZFRhYmxlOwogZW51bSBjbGFzcyBVbmtub3duIHsgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5oCmluZGV4
IGJmYzM4YzY1MDlkMTU4MTVjZGM1NDE3MDQ1Y2M3Mjg3ZmRjMTk2NzIuLjMyNjdlYTk0OGY4ZDhi
MzkyMzY1MTc4MzAyNTMyZTNlOGEyMmQwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmgKQEAgLTMwLDggKzMwLDEwIEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOwordGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBCYXNlSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgSlNPcGNvZGVUcmFp
dHM7Cit1c2luZyBKU0luc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPEpTT3Bjb2RlVHJhaXRz
PjsKIAotdXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0dXJuVHlwZShKSVRfT1BF
UkFUSU9OX0FUVFJJQlVURVMqKShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiopOwordXNp
bmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0dXJuVHlwZShKSVRfT1BFUkFUSU9OX0FU
VFJJQlVURVMqKShDYWxsRnJhbWUqLCBjb25zdCBKU0luc3RydWN0aW9uKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGY2NmRhYWI4
YzcxMTUwMWUzZmU5ZDFmMzdmMjM2MTJkM2FhNDEwNjUuLmUzMmRjYjBhZDM0YjIzYmNkYTI0NzFh
MDNlZTkyY2I1MjMzMzgyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAg
LTE0NDQsNyArMTQ0NCw3IEBAIHZvaWQgVk06OnNldENyYXNoT25WTUNyZWF0aW9uKGJvb2wgc2hv
dWxkQ3Jhc2gpCiAgICAgdm1DcmVhdGlvblNob3VsZENyYXNoID0gc2hvdWxkQ3Jhc2g7CiB9CiAK
LXZvaWQgVk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pCit2b2lkIFZNOjphZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3Qg
SlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9v
cEhpbnRFeGVjdXRpb25Db3VudExvY2sgfTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9vcEhp
bnRFeGVjdXRpb25Db3VudHMuYWRkKGluc3RydWN0aW9uLCBzdGQ6OnBhaXI8dW5zaWduZWQsIHN0
ZDo6dW5pcXVlX3B0cjx1aW50cHRyX3Q+PigwLCBudWxscHRyKSk7CkBAIC0xNDU2LDE0ICsxNDU2
LDE0IEBAIHZvaWQgVk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgKythZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0
OwogfQogCi11aW50cHRyX3QqIFZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQordWludHB0cl90KiBWTTo6Z2V0TG9vcEhpbnRFeGVj
dXRpb25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRMb2NrIH07CiAgICAgYXV0byBp
dGVyID0gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5maW5kKGluc3RydWN0aW9uKTsKICAgICBy
ZXR1cm4gaXRlci0+dmFsdWUuc2Vjb25kLmdldCgpOwogfQogCi12b2lkIFZNOjpyZW1vdmVMb29w
SGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQordm9p
ZCBWTTo6cmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvb3BIaW50RXhlY3V0aW9u
Q291bnRMb2NrIH07CiAgICAgYXV0byBpdGVyID0gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5m
aW5kKGluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDc4NmNk
NjAzZjRjM2EyNzlkOGJhODVkYzEzMmE0NzNjYTY4YzAwZmUuLmRjNjgzNjNjZDQ2OTM2ODRhOWM4
NjVmZmZlZWJiZDdlODg5NmQ4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
NTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiVk1U
cmFwcy5oIgogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCisjaW5jbHVkZSA8dmFyaWFudD4KICNp
bmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTE2MSw3ICsxNjIsMTQg
QEAgY2xhc3MgU2lnbmF0dXJlOwogfQogCiBzdHJ1Y3QgRW50cnlGcmFtZTsKLXN0cnVjdCBJbnN0
cnVjdGlvbjsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCYXNlSW5zdHJ1Y3Rpb247Citz
dHJ1Y3QgSlNPcGNvZGVUcmFpdHM7CitzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0czsKK3VzaW5nIEpT
SW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwordXNpbmcgV2Fz
bUluc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVUcmFpdHM+OworCit1c2lu
ZyBKU09yV2FzbUluc3RydWN0aW9uID0gc3RkOjp2YXJpYW50PGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qPjsKIAogY2xhc3MgUXVldWVkVGFzayB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUXVldWVkVGFzayk7CkBAIC02NjksNyArNjc3LDcgQEAgcHVibGlj
OgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lRm9yQ2F0Y2g7CiAgICAgQ2FsbGVlQml0cyBjYWxs
ZWVGb3JXYXNtQ2F0Y2g7CiAgICAgdm9pZCogdGFyZ2V0TWFjaGluZVBDRm9yVGhyb3c7Ci0gICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHRhcmdldEludGVycHJldGVyUENGb3JUaHJvdzsKKyAgICBKU09y
V2FzbUluc3RydWN0aW9uIHRhcmdldEludGVycHJldGVyUENGb3JUaHJvdzsKICAgICB1aW50MzJf
dCBvc3JFeGl0SW5kZXg7CiAgICAgdm9pZCogb3NyRXhpdEp1bXBEZXN0aW5hdGlvbjsKICAgICBS
ZWdFeHAqIG1fZXhlY3V0aW5nUmVnRXhwIHsgbnVsbHB0ciB9OwpAQCAtODU1LDkgKzg2Myw5IEBA
IHB1YmxpYzoKICAgICAgICAgU2V0Rm9yU2NvcGU8RXhjZXB0aW9uKj4gbV9zYXZlZExhc3RFeGNl
cHRpb247CiAgICAgfTsKIAotICAgIHZvaWQgYWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgdWludHB0cl90KiBnZXRMb29wSGludEV4ZWN1dGlvbkNv
dW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICB2b2lkIHJlbW92ZUxvb3BIaW50RXhlY3V0
aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOworICAgIHZvaWQgYWRkTG9vcEhpbnRFeGVj
dXRpb25Db3VudGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICB1aW50cHRyX3QqIGdldExv
b3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgdm9pZCBy
ZW1vdmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqIGZyb20pIHsg
aGVhcC53cml0ZUJhcnJpZXIoZnJvbSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgd3JpdGVC
YXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSwgSlNWYWx1ZSB0bykgeyBoZWFwLndyaXRlQmFycmll
cihmcm9tLCB0byk7IH0KQEAgLTEwMDAsNyArMTAwOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2V4ZWN1dGlvbkZvcmJpZGRlbk9uVGVybWluYXRpb24geyBmYWxzZSB9OwogCiAgICAgTG9jayBt
X2xvb3BIaW50RXhlY3V0aW9uQ291bnRMb2NrOwotICAgIEhhc2hNYXA8Y29uc3QgSW5zdHJ1Y3Rp
b24qLCBzdGQ6OnBhaXI8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjx1aW50cHRyX3Q+Pj4gbV9s
b29wSGludEV4ZWN1dGlvbkNvdW50czsKKyAgICBIYXNoTWFwPGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBzdGQ6OnBhaXI8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjx1aW50cHRyX3Q+Pj4gbV9sb29w
SGludEV4ZWN1dGlvbkNvdW50czsKIAogI2lmIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFUSU9O
KQogICAgIERvZXNHQ0NoZWNrIG1fZG9lc0dDOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNhbGxlZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGVlLmNwcAppbmRleCA2NDMyN2U5OWMxNTQwZTZlYmQ2MjFhNjRkMWMxYjllOTRiYzdi
NDRlLi5hMzIxYzUyZjE1ZWNhNTIyMTNlY2Q2ZWU5MjE3MjcxOTgxMWIzMjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxlZS5oIgorI2luY2x1ZGUgInJ1
bnRpbWUvVk0uaCIKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIApAQCAtMTAwLDkgKzEwMSw5
IEBAIExMSW50Q2FsbGVlOjpMTEludENhbGxlZShGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciYg
Z2VuZXJhdG9yLCBzaXplX3QgaW5kZXgsIHN0CiAgICAgICAgICAgICBhdXRvJiBpbnN0cnVjdGlv
biA9ICptX2luc3RydWN0aW9ucy0+YXQodW5saW5rZWRIYW5kbGVyLm1fdGFyZ2V0KS5wdHIoKTsK
ICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IHRh
cmdldDsKICAgICAgICAgICAgIGlmICh1bmxpbmtlZEhhbmRsZXIubV90eXBlID09IEhhbmRsZXJU
eXBlOjpDYXRjaCkKLSAgICAgICAgICAgICAgICB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6aGFuZGxlV2FzbUNhdGNoKGluc3RydWN0aW9u
LndpZHRoPFdhc21PcGNvZGVUcmFpdHM+KCkpLmNvZGUoKSk7CisgICAgICAgICAgICAgICAgdGFy
Z2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6Omhh
bmRsZVdhc21DYXRjaChpbnN0cnVjdGlvbi53aWR0aCgpKS5jb2RlKCkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlv
bkhhbmRsZXJQdHJUYWc+KExMSW50OjpoYW5kbGVXYXNtQ2F0Y2hBbGwoaW5zdHJ1Y3Rpb24ud2lk
dGg8V2FzbU9wY29kZVRyYWl0cz4oKSkuY29kZSgpKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQg
PSBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6aGFuZGxl
V2FzbUNhdGNoQWxsKGluc3RydWN0aW9uLndpZHRoKCkpLmNvZGUoKSk7CiAKICAgICAgICAgICAg
IGhhbmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIsIHRhcmdldCk7CiAgICAgICAgIH0K
QEAgLTE0NCwxMyArMTQ1LDEzIEBAIHN0ZDo6dHVwbGU8dm9pZCosIHZvaWQqPiBMTEludENhbGxl
ZTo6cmFuZ2UoKSBjb25zdAogICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIgfTsKIH0KIAot
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBMTEludENhbGxlZTo6b3V0T2ZMaW5lSnVtcE9mZnNl
dChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQorV2FzbUluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgTExJbnRDYWxsZWU6Om91dE9mTGluZUp1bXBPZmZzZXQoV2FzbUlu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1f
b3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMoYnl0ZWNvZGVPZmZzZXQpKTsKICAgICByZXR1
cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1jb25z
dCBJbnN0cnVjdGlvbiogTExJbnRDYWxsZWU6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjKQorY29uc3QgV2FzbUluc3RydWN0aW9uKiBMTEludENhbGxlZTo6b3V0T2ZM
aW5lSnVtcFRhcmdldChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGludCBvZmZz
ZXQgPSBieXRlY29kZU9mZnNldChwYyk7CiAgICAgaW50IHRhcmdldCA9IG91dE9mTGluZUp1bXBP
ZmZzZXQob2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21DYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAppbmRl
eCBiMTg0Yzc5YjAwOTgwZjcwOWI4NDBmYjBjODE5MjM2ODQ0ZjYwNzMxLi4xZDM3MWI0M2YwYTA1
NjdhNGI0OGNiZmY5MGNlYWZkMTBjMWFlZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNhbGxlZS5oCkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIHVpbnQzMl90IG51
bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQXJndW1lbnRzOyB9CiAgICAgY29uc3Qg
Rml4ZWRWZWN0b3I8VHlwZT4mIGNvbnN0YW50VHlwZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0
YW50VHlwZXM7IH0KICAgICBjb25zdCBGaXhlZFZlY3Rvcjx1aW50NjRfdD4mIGNvbnN0YW50cygp
IGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptX2luc3RydWN0aW9uczsgfQorICAg
IGNvbnN0IFdhc21JbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gKm1faW5zdHJ1Y3Rpb25zOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHVpbnQ2NF90IGdldENv
bnN0YW50KFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzW3Jl
Zy50b0NvbnN0YW50SW5kZXgoKV07IH0KICAgICBBTFdBWVNfSU5MSU5FIFR5cGUgZ2V0Q29uc3Rh
bnRUeXBlKFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0CkBAIC0yNDUsMjAgKzI0NSwyMCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2NvbnN0YW50VHlwZXNbcmVnLnRvQ29uc3RhbnRJbmRl
eCgpXTsKICAgICB9CiAKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG51bWJlck9mSnVt
cFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsgfQotICAgIEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBUYXJnZXQoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRz
Lmxhc3QoKTsgfQorICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG51
bWJlck9mSnVtcFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsgfQorICAg
IHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxhc3RKdW1wVGFyZ2V0KCkg
eyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAotICAgIGNvbnN0IEluc3RydWN0aW9u
KiBvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQpOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNl
dChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKKyAgICBjb25zdCBX
YXNtSW5zdHJ1Y3Rpb24qIG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgV2FzbUluc3RydWN0aW9u
Kik7CisgICAgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5l
SnVtcE9mZnNldCh0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7CisgICAg
dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNl
dChjb25zdCB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5v
ZmZzZXQoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQg
Ynl0ZWNvZGVPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCisgICAgaW5s
aW5lIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0
KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAgICAgIGNv
bnN0IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gbV9pbnN0cnVjdGlvbnMtPmF0KDApLnB0cigp
OwotICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0
aW9uc0JlZ2luKSArIG1faW5zdHJ1Y3Rpb25zLT5zaXplKCkpOworICAgICAgICBjb25zdCBhdXRv
KiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFdhc21JbnN0cnVjdGlv
bio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikgKyBtX2lu
c3RydWN0aW9ucy0+c2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuQWRkcmVz
cyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zRW5k
KTsKICAgICAgICAgcmV0dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsKICAg
ICB9CkBAIC0yODcsNyArMjg3LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgdXNp
bmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIGludD47CisgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPHR5cGVu
YW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCiBwcml2YXRlOgogICAg
IExMSW50Q2FsbGVlKEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yJiwgc2l6ZV90IGluZGV4LCBz
dGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4+JiYpOwpAQCAtMzAxLDkg
KzMwMSw5IEBAIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9udW1Bcmd1bWVudHMgeyAwIH07CiAg
ICAgRml4ZWRWZWN0b3I8VHlwZT4gbV9jb25zdGFudFR5cGVzOwogICAgIEZpeGVkVmVjdG9yPHVp
bnQ2NF90PiBtX2NvbnN0YW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJl
YW0+IG1faW5zdHJ1Y3Rpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25T
dHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAgIGNvbnN0IHZvaWQqIG1faW5zdHJ1Y3Rpb25zUmF3
UG9pbnRlciB7IG51bGxwdHIgfTsKLSAgICBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOworICAgIEZpeGVkVmVjdG9yPHR5cGVuYW1lIFdhc21JbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwogICAgIEZpeGVkVmVjdG9yPGNv
bnN0IFNpZ25hdHVyZSo+IG1fc2lnbmF0dXJlczsKICAgICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBt
X291dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIExMSW50VGllclVwQ291bnRlciBtX3RpZXJVcENv
dW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rp
b25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRleCA0MTc0OTEzZDY4Y2I2NWM4MWU2
ODEyNzc5NWQzMDJhMGE4NzZiYjM3Li45YzMyNmQ2MjE2MTkxN2Q3ODEyMjlmZGQxMWE5MzA1Mzg1
M2RjY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rp
b25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAKQEAgLTMzLDE5ICszMywxOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi12b2lkIEZ1bmN0aW9uQ29kZUJs
b2NrR2VuZXJhdG9yOjpzZXRJbnN0cnVjdGlvbnMoc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9u
U3RyZWFtPiBpbnN0cnVjdGlvbnMpCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpz
ZXRJbnN0cnVjdGlvbnMoc3RkOjp1bmlxdWVfcHRyPFdhc21JbnN0cnVjdGlvblN0cmVhbT4gaW5z
dHJ1Y3Rpb25zKQogewogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMp
OwogICAgIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciA9IG1faW5zdHJ1Y3Rpb25zLT5yYXdQb2lu
dGVyKCk7CiB9CiAKLXZvaWQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OmFkZE91dE9mTGlu
ZUp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwgaW50
IHRhcmdldCkKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OmFkZE91dE9mTGluZUp1
bXBUYXJnZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVP
ZmZzZXQsIGludCB0YXJnZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodGFyZ2V0KTsKICAgICBt
X291dE9mTGluZUp1bXBUYXJnZXRzLnNldChieXRlY29kZU9mZnNldCwgdGFyZ2V0KTsKIH0KIAot
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0
T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0
KQordHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgRnVuY3Rpb25Db2RlQmxv
Y2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1fb3V0T2ZMaW5l
SnVtcFRhcmdldHMuY29udGFpbnMoYnl0ZWNvZGVPZmZzZXQpKTsKICAgICByZXR1cm4gbV9vdXRP
ZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3Iu
aAppbmRleCA3ZTRhNDBiZjQ1MDg2ZGY3NzhhMzMzMTA5NTIxYWJhN2Y3M2ZjNzllLi44NTU4YjBl
NzZjYmU5OTQ4MTQzNTczYTBjMWQzMDU5MTczMGJiODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3Iu
aApAQCAtODEsNyArODEsOCBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgbnVtQXJndW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1Bcmd1bWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8VHlwZT4m
IGNvbnN0YW50VHlwZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50VHlwZXM7IH0KICAgICBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBjb25zdGFudHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0
YW50czsgfQotICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25z
dCB7IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBjb25zdGFudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9CisgICAg
Y29uc3QgV2FzbUluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVy
biAqbV9pbnN0cnVjdGlvbnM7IH0KIAogICAgIHZvaWQgc2V0TnVtVmFycyh1bnNpZ25lZCBudW1W
YXJzKSB7IG1fbnVtVmFycyA9IG51bVZhcnM7IH0KICAgICB2b2lkIHNldE51bUNhbGxlZUxvY2Fs
cyh1bnNpZ25lZCBudW1DYWxsZWVMb2NhbHMpIHsgbV9udW1DYWxsZWVMb2NhbHMgPSBudW1DYWxs
ZWVMb2NhbHM7IH0KQEAgLTkzLDI3ICs5NCwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X2NvbnN0YW50VHlwZXNbcmVnLnRvQ29uc3RhbnRJbmRleCgpXTsKICAgICB9CiAKLSAgICB2b2lk
IHNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+KTsKLSAg
ICB2b2lkIGFkZEp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBqdW1wVGFyZ2V0
KSB7IG1fanVtcFRhcmdldHMuYXBwZW5kKGp1bXBUYXJnZXQpOyB9Ci0gICAgSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBudW1iZXJPZkp1bXBUYXJnZXRzKCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0
cy5zaXplKCk7IH0KLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxhc3RKdW1wVGFyZ2V0
KCkgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KKyAgICB2b2lkIHNldEluc3RydWN0
aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3RydWN0aW9uU3RyZWFtPik7CisgICAgdm9pZCBh
ZGRKdW1wVGFyZ2V0KHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGp1bXBU
YXJnZXQpIHsgbV9qdW1wVGFyZ2V0cy5hcHBlbmQoanVtcFRhcmdldCk7IH0KKyAgICB0eXBlbmFt
ZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBudW1iZXJPZkp1bXBUYXJnZXRzKCkgeyBy
ZXR1cm4gbV9qdW1wVGFyZ2V0cy5zaXplKCk7IH0KKyAgICB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBsYXN0SnVtcFRhcmdldCgpIHsgcmV0dXJuIG1fanVtcFRhcmdldHMu
bGFzdCgpOyB9CiAKLSAgICB2b2lkIGFkZE91dE9mTGluZUp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOwotICAgIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVj
dGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKKyAgICB2b2lkIGFkZE91dE9mTGluZUp1bXBU
YXJnZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludCB0YXJnZXQp
OworICAgIHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1
bXBPZmZzZXQodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOworICAgIHR5
cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZzZXQo
Y29uc3QgdHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zm
c2V0KCkpOwogICAgIH0KIAotICAgIGlubGluZSBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5
dGVjb2RlT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQorICAgIGlubGlu
ZSB0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldChj
b25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgewogICAgICAgICBjb25z
dCBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdCgwKS5wdHIoKTsK
LSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlv
bnNCZWdpbikgKyBtX2luc3RydWN0aW9ucy0+c2l6ZSgpKTsKKyAgICAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb25zRW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXYXNtSW5zdHJ1Y3Rpb24q
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgbV9pbnN0
cnVjdGlvbnMtPnNpemUoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJldHVybkFkZHJlc3Mg
Pj0gaW5zdHJ1Y3Rpb25zQmVnaW4gJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9uc0VuZCk7
CiAgICAgICAgIHJldHVybiByZXR1cm5BZGRyZXNzIC0gaW5zdHJ1Y3Rpb25zQmVnaW47CiAgICAg
fQogCi0gICAgSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBMTEludFRpZXJVcENv
dW50ZXI6Ok9TUkVudHJ5RGF0YT4mIHRpZXJVcENvdW50ZXIoKSB7IHJldHVybiBtX3RpZXJVcENv
dW50ZXI7IH0KKyAgICBIYXNoTWFwPHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0LCBMTEludFRpZXJVcENvdW50ZXI6Ok9TUkVudHJ5RGF0YT4mIHRpZXJVcENvdW50ZXIoKSB7
IHJldHVybiBtX3RpZXJVcENvdW50ZXI7IH0KIAogICAgIHVuc2lnbmVkIGFkZFNpZ25hdHVyZShj
b25zdCBTaWduYXR1cmUmKTsKIApAQCAtMTI1LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgVW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlcikg
eyBtX2V4Y2VwdGlvbkhhbmRsZXJzLmFwcGVuZChoYW5kbGVyKTsgfQogCiBwcml2YXRlOgotICAg
IHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCBpbnQ+OworICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDx0
eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKIAogICAgIHVpbnQz
Ml90IG1fZnVuY3Rpb25JbmRleDsKIApAQCAtMTM2LDEyICsxMzcsMTIgQEAgcHJpdmF0ZToKICAg
ICB1aW50MzJfdCBtX251bUFyZ3VtZW50cyB7IDAgfTsKICAgICBWZWN0b3I8VHlwZT4gbV9jb25z
dGFudFR5cGVzOwogICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9jb25zdGFudHM7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2FzbUluc3RydWN0aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsKICAgICBjb25z
dCB2b2lkKiBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIgeyBudWxscHRyIH07Ci0gICAgVmVjdG9y
PEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgVmVjdG9yPHR5
cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwogICAg
IFZlY3Rvcjxjb25zdCBTaWduYXR1cmUqPiBtX3NpZ25hdHVyZXM7CiAgICAgT3V0T2ZMaW5lSnVt
cFRhcmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKLSAgICBIYXNoTWFwPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiBtX3RpZXJV
cENvdW50ZXI7CisgICAgSGFzaE1hcDx0eXBlbmFtZSBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgTExJbnRUaWVyVXBDb3VudGVyOjpPU1JFbnRyeURhdGE+IG1fdGllclVwQ291bnRlcjsK
ICAgICBWZWN0b3I8SnVtcFRhYmxlPiBtX2p1bXBUYWJsZXM7CiAgICAgVmVjdG9yPFVubGlua2Vk
SGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdlbmVyYXRvclRyYWl0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUdlbmVyYXRvclRyYWl0cy5oCmluZGV4IDZhODhiYjRkMGI4YTdh
ZmY4MWQ5ODA3MGRhNjI3YTUzOTY4NmVkMDEuLjcwODIzYzgxNjkzNDc1NTUyOWMwOGE2NmM5Nzg2
OGYyMjFiMmMwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21H
ZW5lcmF0b3JUcmFpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2Vu
ZXJhdG9yVHJhaXRzLmgKQEAgLTM3LDYgKzM3LDcgQEAgc3RydWN0IEdlbmVyYXRvclRyYWl0cyB7
CiAgICAgdXNpbmcgT3Bjb2RlSUQgPSBXYXNtT3Bjb2RlSUQ7CiAgICAgdXNpbmcgT3BOb3AgPSBX
YXNtTm9wOwogICAgIHVzaW5nIENvZGVCbG9jayA9IHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvcj47CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25UeXBlID0gV2FzbUluc3Ry
dWN0aW9uOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgb3Bjb2RlRm9yRGlzYWJsaW5n
T3B0aW1pemF0aW9ucyA9IHdhc21fdW5yZWFjaGFibGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCBiNDBlNzIxZjk3
NTM0ZTEyNGE1OGQyMjRkNmRhNWEyM2RjYTcxNTRlLi5lMzk4YzZlNDA0ZTNiZTk3NDIxN2Y5OTcx
OGM2OTFjMDJmOWY4YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAKQEAgLTQ3NCw3ICs0NzQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZmluYWxpemVQcmV2aW91c0Jsb2NrRm9yQ2F0Y2goQ29udHJvbFR5cGUmLCBTdGFjayYpOwog
CiAgICAgc3RydWN0IFN3aXRjaEVudHJ5IHsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCBvZmZzZXQ7CisgICAgICAgIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNl
dDsKICAgICAgICAgaW50KiBqdW1wVGFyZ2V0OwogICAgIH07CiAKQEAgLTUxMCw3ICs1MTAsNyBA
QCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I+LCBT
dHJpbmc+IHBhcnNlQW5kQ29tcGlsZUJ5dAogfQogCiAKLXVzaW5nIEJ1ZmZlciA9IEluc3RydWN0
aW9uU3RyZWFtOjpJbnN0cnVjdGlvbkJ1ZmZlcjsKK3VzaW5nIEJ1ZmZlciA9IHR5cGVuYW1lIFdh
c21JbnN0cnVjdGlvblN0cmVhbTo6SW5zdHJ1Y3Rpb25CdWZmZXI7CiBzdGF0aWMgVGhyZWFkU3Bl
Y2lmaWM8QnVmZmVyPiogdGhyZWFkU3BlY2lmaWNCdWZmZXJQdHI7CiAKIHN0YXRpYyBUaHJlYWRT
cGVjaWZpYzxCdWZmZXI+JiB0aHJlYWRTcGVjaWZpY0J1ZmZlcigpCkBAIC0xMjI4LDcgKzEyMjgs
NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRTd2l0Y2goRXhwcmVzc2lvblR5cGUgY29uZGl0
aW9uLCBjb25zdCBWZWN0b3I8Q29udHJvbFR5cAogICAgIFdhc21Td2l0Y2g6OmVtaXQodGhpcywg
Y29uZGl0aW9uLCB0YWJsZUluZGV4KTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICBJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCA9IG1fbGFzdEluc3RydWN0aW9uLm9mZnNl
dCgpOworICAgIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCA9IG1fbGFzdElu
c3RydWN0aW9uLm9mZnNldCgpOwogCiAgICAgYXV0byBhZGRUYXJnZXQgPSBbJl0oQ29udHJvbFR5
cGUmIHRhcmdldCkgewogICAgICAgICBSZWZQdHI8TGFiZWw+IHRhcmdldExhYmVsID0gdGFyZ2V0
LnRhcmdldExhYmVsRm9yQnJhbmNoKCk7CkBAIC0xODUwLDEzICsxODUwLDEzIEBAIHZvaWQgR2Vu
ZXJpY0xhYmVsPFdhc206OkdlbmVyYXRvclRyYWl0cz46OnNldExvY2F0aW9uKEJ5dGVjb2RlR2Vu
ZXJhdG9yQmFzZTxXYXNtCiAKICNkZWZpbmUgQ0FTRShfX29wKSBcCiAgICAgY2FzZSBfX29wOjpv
cGNvZGVJRDogIFwKLSAgICAgICAgaW5zdHJ1Y3Rpb24tPmNhc3Q8X19vcCwgV2FzbU9wY29kZVRy
YWl0cz4oKS0+c2V0VGFyZ2V0TGFiZWwoQm91bmRMYWJlbCh0YXJnZXQpLCBbJl0oKSB7IFwKKyAg
ICAgICAgaW5zdHJ1Y3Rpb24tPmNhc3Q8X19vcD4oKS0+c2V0VGFyZ2V0TGFiZWwoQm91bmRMYWJl
bCh0YXJnZXQpLCBbJl0oKSB7IFwKICAgICAgICAgICAgIGdlbmVyYXRvci5tX2NvZGVCbG9jay0+
YWRkT3V0T2ZMaW5lSnVtcFRhcmdldChpbnN0cnVjdGlvbi5vZmZzZXQoKSwgdGFyZ2V0KTsgXAog
ICAgICAgICAgICAgcmV0dXJuIEJvdW5kTGFiZWwoKTsgXAogICAgICAgICB9KTsgXAogICAgICAg
ICBicmVhazsKIAotICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRDxXYXNtT3Bj
b2RlVHJhaXRzPigpKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkp
IHsKICAgICAgICAgQ0FTRShXYXNtSm1wKQogICAgICAgICBDQVNFKFdhc21KdHJ1ZSkKICAgICAg
ICAgQ0FTRShXYXNtSmZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50VGllclVwQ291bnRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmNwcAppbmRleCAwNzVjOWFhYmNmOGMxYjk2ZjljZTM4
MDljY2IzNjM3M2MwMjViMGRiLi42YWM5ZDVkN2ViYjJiYmQ4Y2U3Y2NkZDFkYjQ1YzM5Zjg2NTk3
ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVy
VXBDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRU
aWVyVXBDb3VudGVyLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiAKLXZvaWQgTExJbnRUaWVyVXBDb3VudGVyOjphZGRPU1JFbnRyeURh
dGFGb3JMb29wKEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBPU1JFbnRyeURhdGEm
JiBkYXRhKQordm9pZCBMTEludFRpZXJVcENvdW50ZXI6OmFkZE9TUkVudHJ5RGF0YUZvckxvb3Ao
dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBPU1JFbnRyeURh
dGEmJiBkYXRhKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vc3JFbnRyeURhdGEuYWRkKG9m
ZnNldCwgV1RGTW92ZShkYXRhKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKIH0KIAotYXV0byBMTEludFRpZXJVcENvdW50ZXI6Om9zckVudHJ5
RGF0YUZvckxvb3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpIGNvbnN0IC0+IGNv
bnN0IE9TUkVudHJ5RGF0YSYKK2F1dG8gTExJbnRUaWVyVXBDb3VudGVyOjpvc3JFbnRyeURhdGFG
b3JMb29wKHR5cGVuYW1lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkgY29u
c3QgLT4gY29uc3QgT1NSRW50cnlEYXRhJgogewogICAgIGF1dG8gZW50cnkgPSBtX29zckVudHJ5
RGF0YS5maW5kKG9mZnNldCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZW50cnkgIT0gbV9vc3JFbnRy
eURhdGEuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50VGllclVwQ291bnRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxM
SW50VGllclVwQ291bnRlci5oCmluZGV4IDE0MGE4MmM4ZTRhMzE4NzkzY2NmYjgzMjFjMDI1MDE5
NmM4MzRlZmIuLjAyOGFiNzgxNGM4MTAyNGNiNDYyYTU0MjYyMWRmOGYzNzg1MmY0NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVy
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8VmlydHVhbFJlZ2lz
dGVyPiB2YWx1ZXM7CiAgICAgfTsKIAotICAgIExMSW50VGllclVwQ291bnRlcihIYXNoTWFwPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YT4mJiBvc3JFbnRyeURhdGEpCisg
ICAgTExJbnRUaWVyVXBDb3VudGVyKEhhc2hNYXA8dHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YT4mJiBvc3JFbnRyeURhdGEpCiAgICAgICAgIDogbV9v
c3JFbnRyeURhdGEoV1RGTW92ZShvc3JFbnRyeURhdGEpKQogICAgIHsKICAgICAgICAgb3B0aW1p
emVBZnRlcldhcm1VcCgpOwpAQCAtNzYsMTQgKzc2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHNldE5ld1RocmVzaG9sZChPcHRpb25zOjp0aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZVNvb24oKSk7
CiAgICAgfQogCi0gICAgdm9pZCBhZGRPU1JFbnRyeURhdGFGb3JMb29wKEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YSYmKTsKKyAgICB2b2lkIGFkZE9TUkVudHJ5RGF0YUZv
ckxvb3AodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0
YSYmKTsKIAotICAgIGNvbnN0IE9TUkVudHJ5RGF0YSYgb3NyRW50cnlEYXRhRm9yTG9vcChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0KSBjb25zdDsKKyAgICBjb25zdCBPU1JFbnRyeURhdGEmIG9z
ckVudHJ5RGF0YUZvckxvb3AodHlwZW5hbWUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQp
IGNvbnN0OwogCiAgICAgTG9jayBtX2xvY2s7CiAgICAgQ29tcGlsYXRpb25TdGF0dXMgbV9jb21w
aWxhdGlvblN0YXR1cyB7IENvbXBpbGF0aW9uU3RhdHVzOjpOb3RDb21waWxlZCB9OwogICAgIENv
bXBpbGF0aW9uU3RhdHVzIG1fbG9vcENvbXBpbGF0aW9uU3RhdHVzIHsgQ29tcGlsYXRpb25TdGF0
dXM6Ok5vdENvbXBpbGVkIH07Ci0gICAgSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
LCBPU1JFbnRyeURhdGE+IG1fb3NyRW50cnlEYXRhOworICAgIEhhc2hNYXA8dHlwZW5hbWUgV2Fz
bUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YT4gbV9vc3JFbnRyeURhdGE7
CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAppbmRleCBjZjI3ZmVhMzI5MGQzMDgwYzAyZjQyYmE1
OTZlYzI4YjJmODk1NGRiLi4yYTg2N2Q2YzczZmRlZjNlOTE4NzA2YTNmMDcyYzBkNTgyOTkzY2Q3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcApAQCAt
Mjg5LDEzICsyODksMTMgQEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0cmFjZSkKICAgICBpZiAoIU9w
dGlvbnM6OnRyYWNlTExJbnRFeGVjdXRpb24oKSkKICAgICAgICAgV0FTTV9FTkRfSU1QTCgpOwog
Ci0gICAgV2FzbU9wY29kZUlEIG9wY29kZUlEID0gcGMtPm9wY29kZUlEPFdhc21PcGNvZGVUcmFp
dHM+KCk7CisgICAgV2FzbU9wY29kZUlEIG9wY29kZUlEID0gcGMtPm9wY29kZUlEKCk7CiAgICAg
ZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBcbiIs
CiAgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAgICAgICAgQ0FMTEVFKCksCiAgICAgICAg
IGNhbGxGcmFtZSwKICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KENBTExFRSgpLT5ieXRl
Y29kZU9mZnNldChwYykpLAotICAgICAgICBwYy0+bmFtZTxXYXNtT3Bjb2RlVHJhaXRzPigpLAor
ICAgICAgICBwYy0+bmFtZSgpLAogICAgICAgICBwYyk7CiAgICAgaWYgKG9wY29kZUlEID09IHdh
c21fZW50ZXIpIHsKICAgICAgICAgZGF0YUxvZ0YoIkZyYW1lIHdpbGwgZXZlbnR1YWxseSByZXR1
cm4gdG8gJXBcbiIsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKQEAgLTMxOCwxMyAr
MzE4LDEzIEBAIFdBU01fU0xPV19QQVRIX0RFQ0wob3V0X29mX2xpbmVfanVtcF90YXJnZXQpCiAK
IFdBU01fU0xPV19QQVRIX0RFQ0wocmVmX2Z1bmMpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtUmVmRnVuYywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21SZWZGdW5jPigpOwogICAgIFdBU01fUkVUVVJOKFdhc206Om9w
ZXJhdGlvbldhc21SZWZGdW5jKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgp
KTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9nZXQpCiB7Ci0gICAgYXV0byBpbnN0
cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVHZXQsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVHZXQ+KCk7CiAgICAgaW50MzJfdCBp
bmRleCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9pbmRleCkudW5ib3hlZEludDMyKCk7CiAgICAgRW5j
b2RlZEpTVmFsdWUgcmVzdWx0ID0gV2FzbTo6b3BlcmF0aW9uR2V0V2FzbVRhYmxlRWxlbWVudChp
bnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbmRleCk7CiAgICAgaWYgKCFyZXN1
bHQpCkBAIC0zMzQsNyArMzM0LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9nZXQpCiAK
IFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfc2V0KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbVRhYmxlU2V0LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5z
dHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlU2V0PigpOwogICAgIHVpbnQzMl90IGluZGV4ID0g
UkVBRChpbnN0cnVjdGlvbi5tX2luZGV4KS51bmJveGVkVUludDMyKCk7CiAgICAgRW5jb2RlZEpT
VmFsdWUgdmFsdWUgPSBSRUFEKGluc3RydWN0aW9uLm1fdmFsdWUpLmVuY29kZWRKU1ZhbHVlKCk7
CiAgICAgaWYgKCFXYXNtOjpvcGVyYXRpb25TZXRXYXNtVGFibGVFbGVtZW50KGluc3RhbmNlLCBp
bnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluZGV4LCB2YWx1ZSkpCkBAIC0zNDQsNyArMzQ0LDcg
QEAgV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9zZXQpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wo
dGFibGVfaW5pdCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUlu
aXQsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtVGFibGVJbml0PigpOwogICAgIHVpbnQzMl90IGRzdE9mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rp
b24ubV9kc3RPZmZzZXQpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBzcmNPZmZzZXQg
PSBSRUFEKGluc3RydWN0aW9uLm1fc3JjT2Zmc2V0KS51bmJveGVkVUludDMyKCk7CiAgICAgdWlu
dDMyX3QgbGVuZ3RoID0gUkVBRChpbnN0cnVjdGlvbi5tX2xlbmd0aCkudW5ib3hlZFVJbnQzMigp
OwpAQCAtMzU3LDIwICszNTcsMjAgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChlbGVtX2Ryb3ApCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGluc3RydWN0aW9uID0g
cGMtPmFzPFdhc21FbGVtRHJvcCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21FbGVtRHJvcD4oKTsKICAgICBXYXNtOjpvcGVyYXRpb25XYXNt
RWxlbURyb3AoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fZWxlbWVudEluZGV4KTsKICAgICBXQVNN
X0VORCgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX3NpemUpCiB7Ci0gICAgYXV0
byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVTaXplLCBXYXNtT3Bjb2RlVHJhaXRzPigp
OworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlU2l6ZT4oKTsKICAgICBX
QVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25HZXRXYXNtVGFibGVTaXplKGluc3RhbmNlLCBpbnN0
cnVjdGlvbi5tX3RhYmxlSW5kZXgpKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9m
aWxsKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlRmlsbCwgV2Fz
bU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJs
ZUZpbGw+KCk7CiAgICAgdWludDMyX3Qgb2Zmc2V0ID0gUkVBRChpbnN0cnVjdGlvbi5tX29mZnNl
dCkudW5ib3hlZFVJbnQzMigpOwogICAgIEVuY29kZWRKU1ZhbHVlIGZpbGwgPSBSRUFEKGluc3Ry
dWN0aW9uLm1fZmlsbCkuZW5jb2RlZEpTVmFsdWUoKTsKICAgICB1aW50MzJfdCBzaXplID0gUkVB
RChpbnN0cnVjdGlvbi5tX3NpemUpLnVuYm94ZWRVSW50MzIoKTsKQEAgLTM4MSw3ICszODEsNyBA
QCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2ZpbGwpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wo
dGFibGVfY29weSkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUNv
cHksIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtVGFibGVDb3B5PigpOwogICAgIGludDMyX3QgZHN0T2Zmc2V0ID0gUkVBRChpbnN0cnVjdGlv
bi5tX2RzdE9mZnNldCkudW5ib3hlZEludDMyKCk7CiAgICAgaW50MzJfdCBzcmNPZmZzZXQgPSBS
RUFEKGluc3RydWN0aW9uLm1fc3JjT2Zmc2V0KS51bmJveGVkSW50MzIoKTsKICAgICBpbnQzMl90
IGxlbmd0aCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9sZW5ndGgpLnVuYm94ZWRJbnQzMigpOwpAQCAt
MzkyLDcgKzM5Miw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfY29weSkKIAogV0FTTV9T
TE9XX1BBVEhfREVDTCh0YWJsZV9ncm93KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbVRhYmxlR3JvdywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21UYWJsZUdyb3c+KCk7CiAgICAgRW5jb2RlZEpTVmFsdWUgZmlsbCA9
IFJFQUQoaW5zdHJ1Y3Rpb24ubV9maWxsKS5lbmNvZGVkSlNWYWx1ZSgpOwogICAgIHVpbnQzMl90
IHNpemUgPSBSRUFEKGluc3RydWN0aW9uLm1fc2l6ZSkudW5ib3hlZFVJbnQzMigpOwogICAgIFdB
U01fUkVUVVJOKFdhc206Om9wZXJhdGlvbldhc21UYWJsZUdyb3coaW5zdGFuY2UsIGluc3RydWN0
aW9uLm1fdGFibGVJbmRleCwgZmlsbCwgc2l6ZSkpOwpAQCAtNDAwLDE0ICs0MDAsMTQgQEAgV0FT
TV9TTE9XX1BBVEhfREVDTCh0YWJsZV9ncm93KQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKGdyb3df
bWVtb3J5KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUdyb3dNZW1vcnks
IFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNt
R3Jvd01lbW9yeT4oKTsKICAgICBpbnQzMl90IGRlbHRhID0gUkVBRChpbnN0cnVjdGlvbi5tX2Rl
bHRhKS51bmJveGVkSW50MzIoKTsKICAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25Hcm93
TWVtb3J5KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGRlbHRhKSk7CiB9CiAKIFdBU01fU0xPV19QQVRI
X0RFQ0wobWVtb3J5X2ZpbGwpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNt
TWVtb3J5RmlsbCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0g
cGMtPmFzPFdhc21NZW1vcnlGaWxsPigpOwogICAgIHVpbnQzMl90IGRzdEFkZHJlc3MgPSBSRUFE
KGluc3RydWN0aW9uLm1fZHN0QWRkcmVzcykudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90
IHRhcmdldFZhbHVlID0gUkVBRChpbnN0cnVjdGlvbi5tX3RhcmdldFZhbHVlKS51bmJveGVkVUlu
dDMyKCk7CiAgICAgdWludDMyX3QgY291bnQgPSBSRUFEKGluc3RydWN0aW9uLm1fY291bnQpLnVu
Ym94ZWRVSW50MzIoKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKG1l
bW9yeV9maWxsKQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9jb3B5KQogewotICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUNvcHksIFdhc21PcGNvZGVUcmFpdHM+
KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5Q29weT4oKTsKICAg
ICB1aW50MzJfdCBkc3RBZGRyZXNzID0gUkVBRChpbnN0cnVjdGlvbi5tX2RzdEFkZHJlc3MpLnVu
Ym94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBzcmNBZGRyZXNzID0gUkVBRChpbnN0cnVjdGlv
bi5tX3NyY0FkZHJlc3MpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBjb3VudCA9IFJF
QUQoaW5zdHJ1Y3Rpb24ubV9jb3VudCkudW5ib3hlZFVJbnQzMigpOwpAQCAtNDI5LDcgKzQyOSw3
IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2NvcHkpCiAKIFdBU01fU0xPV19QQVRIX0RF
Q0wobWVtb3J5X2luaXQpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVt
b3J5SW5pdCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21NZW1vcnlJbml0PigpOwogICAgIHVpbnQzMl90IGRzdEFkZHJlc3MgPSBSRUFEKGlu
c3RydWN0aW9uLm1fZHN0QWRkcmVzcykudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90IHNy
Y0FkZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fc3JjQWRkcmVzcykudW5ib3hlZFVJbnQzMigp
OwogICAgIHVpbnQzMl90IGxlbmd0aCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9sZW5ndGgpLnVuYm94
ZWRVSW50MzIoKTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKGRhdGFf
ZHJvcCkKIHsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gaW5zdHJ1
Y3Rpb24gPSBwYy0+YXM8V2FzbURhdGFEcm9wLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbURhdGFEcm9wPigpOwogICAgIFdhc206Om9wZXJh
dGlvbldhc21EYXRhRHJvcChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9kYXRhU2VnbWVudEluZGV4
KTsKICAgICBXQVNNX0VORCgpOwogfQpAQCAtNDc0LDcgKzQ3NCw3IEBAIFdBU01fU0xPV19QQVRI
X0RFQ0woY2FsbCkKIHsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKIAotICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGwsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbD4oKTsKICAgICByZXR1cm4gZG9XYXNt
Q2FsbChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KTsKIH0KIApAQCAtNDgy
LDcgKzQ4Miw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9ub190bHMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21DYWxsTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtQ2FsbE5vVGxzPigpOwogICAgIHJldHVybiBkb1dhc21DYWxsKGluc3RhbmNl
LCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOwogfQogCkBAIC01MTEsMTQgKzUxMSwxNCBA
QCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRvV2FzbUNhbGxJbmRpcmVjdChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuYwogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfaW5k
aXJlY3QpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbEluZGlyZWN0
LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2Fz
bUNhbGxJbmRpcmVjdD4oKTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gUkVBRChpbnN0
cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpLnVuYm94ZWRJbnQzMigpOwogICAgIHJldHVybiBkb1dh
c21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rpb25JbmRleCwgaW5zdHJ1
Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKIH0KIAog
V0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX2luZGlyZWN0X25vX3RscykKIHsKLSAgICBhdXRvIGlu
c3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsSW5kaXJlY3ROb1RscywgV2FzbU9wY29kZVRyYWl0
cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsSW5kaXJlY3ROb1Rs
cz4oKTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2Z1
bmN0aW9uSW5kZXgpLnVuYm94ZWRJbnQzMigpOwogICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJl
Y3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rpb25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJs
ZUluZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKIH0KQEAgLTU0OCwzNSArNTQ4
LDM1IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZG9XYXNtQ2FsbFJlZihDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2UqIGNhCiAKIFdBU01fU0xPV19QQVRIX0RFQ0woY2Fs
bF9yZWYpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJlZiwgV2Fz
bU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxs
UmVmPigpOwogICAgIEpTVmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5z
dHJ1Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0
dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlLCBpbnN0cnVj
dGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3Jl
Zl9ub190bHMpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJlZk5v
VGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbUNhbGxSZWZOb1Rscz4oKTsKICAgICBKU1ZhbHVlIHJlZmVyZW5jZSA9IEpTVmFsdWU6OmRl
Y29kZShSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25SZWZlcmVuY2UpLmVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIHJldHVybiBkb1dhc21DYWxsUmVmKGNhbGxGcmFtZSwgaW5zdGFuY2UsIHJlZmVy
ZW5jZSwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7CiB9CiAKIFdBU01fU0xPV19QQVRI
X0RFQ0woc2V0X2dsb2JhbF9yZWYpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtU2V0R2xvYmFsUmVmLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rp
b24gPSBwYy0+YXM8V2FzbVNldEdsb2JhbFJlZj4oKTsKICAgICBpbnN0YW5jZS0+c2V0R2xvYmFs
KGluc3RydWN0aW9uLm1fZ2xvYmFsSW5kZXgsIFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1ZSkuanNW
YWx1ZSgpKTsKICAgICBXQVNNX0VORF9JTVBMKCk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wo
c2V0X2dsb2JhbF9yZWZfcG9ydGFibGVfYmluZGluZykKIHsKLSAgICBhdXRvIGluc3RydWN0aW9u
ID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWZQb3J0YWJsZUJpbmRpbmcsIFdhc21PcGNvZGVUcmFp
dHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtU2V0R2xvYmFsUmVmUG9y
dGFibGVCaW5kaW5nPigpOwogICAgIGluc3RhbmNlLT5zZXRHbG9iYWwoaW5zdHJ1Y3Rpb24ubV9n
bG9iYWxJbmRleCwgUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVlKS5qc1ZhbHVlKCkpOwogICAgIFdB
U01fRU5EX0lNUEwoKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfYXRvbWljX3dh
aXQzMikKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlBdG9taWNX
YWl0MzIsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtTWVtb3J5QXRvbWljV2FpdDMyPigpOwogICAgIHVuc2lnbmVkIGJhc2UgPSBSRUFEKGlu
c3RydWN0aW9uLm1fcG9pbnRlcikudW5ib3hlZEludDMyKCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0
ID0gaW5zdHJ1Y3Rpb24ubV9vZmZzZXQ7CiAgICAgdWludDMyX3QgdmFsdWUgPSBSRUFEKGluc3Ry
dWN0aW9uLm1fdmFsdWUpLnVuYm94ZWRJbnQzMigpOwpAQCAtNTg5LDcgKzU4OSw3IEBAIFdBU01f
U0xPV19QQVRIX0RFQ0wobWVtb3J5X2F0b21pY193YWl0MzIpCiAKIFdBU01fU0xPV19QQVRIX0RF
Q0wobWVtb3J5X2F0b21pY193YWl0NjQpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtTWVtb3J5QXRvbWljV2FpdDY0LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUF0b21pY1dhaXQ2ND4oKTsKICAgICB1bnNp
Z25lZCBiYXNlID0gUkVBRChpbnN0cnVjdGlvbi5tX3BvaW50ZXIpLnVuYm94ZWRJbnQzMigpOwog
ICAgIHVuc2lnbmVkIG9mZnNldCA9IGluc3RydWN0aW9uLm1fb2Zmc2V0OwogICAgIHVpbnQ2NF90
IHZhbHVlID0gUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVlKS51bmJveGVkSW50NjQoKTsKQEAgLTYw
Miw3ICs2MDIsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9hdG9taWNfd2FpdDY0KQog
CiBXQVNNX1NMT1dfUEFUSF9ERUNMKG1lbW9yeV9hdG9taWNfbm90aWZ5KQogewotICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUF0b21pY05vdGlmeSwgV2FzbU9wY29kZVRy
YWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlBdG9taWNO
b3RpZnk+KCk7CiAgICAgdW5zaWduZWQgYmFzZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9wb2ludGVy
KS51bmJveGVkSW50MzIoKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBpbnN0cnVjdGlvbi5tX29m
ZnNldDsKICAgICBpbnQzMl90IGNvdW50ID0gUkVBRChpbnN0cnVjdGlvbi5tX2NvdW50KS51bmJv
eGVkSW50MzIoKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRocm93
KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbVRocm93LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbVRocm93PigpOwogICAgIGNvbnN0IFdhc206OlRhZyYgdGFnID0gaW5zdGFu
Y2UtPnRhZyhpbnN0cnVjdGlvbi5tX2V4Y2VwdGlvbkluZGV4KTsKIAogICAgIEZpeGVkVmVjdG9y
PHVpbnQ2NF90PiB2YWx1ZXModGFnLnBhcmFtZXRlckNvdW50KCkpOwpAQCAtNjU1LDcgKzY1NSw3
IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wocmV0aHJvdykKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZXRocm93LCBXYXNtT3Bjb2Rl
VHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJldGhyb3c+KCk7
CiAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBSRUFEKGluc3RydWN0aW9uLm1fZXhjZXB0aW9uKS5q
c1ZhbHVlKCk7CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBl
eGNlcHRpb24pOwogCkBAIC02OTksMTQgKzY5OSwxNCBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHJl
dHJpZXZlX2FuZF9jbGVhcl9leGNlcHRpb24pCiAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
UihpbnN0cnVjdGlvbi5tX2V4Y2VwdGlvbikgPSB0aHJvd25WYWx1ZTsKICAgICB9OwogCi0gICAg
aWYgKHBjLT5pczxXYXNtQ2F0Y2gsIFdhc21PcGNvZGVUcmFpdHM+KCkpCi0gICAgICAgIGhhbmRs
ZUNhdGNoKHBjLT5hczxXYXNtQ2F0Y2gsIFdhc21PcGNvZGVUcmFpdHM+KCkpOwotICAgIGVsc2Ug
aWYgKHBjLT5pczxXYXNtQ2F0Y2hBbGwsIFdhc21PcGNvZGVUcmFpdHM+KCkpCi0gICAgICAgIGhh
bmRsZUNhdGNoQWxsKHBjLT5hczxXYXNtQ2F0Y2hBbGwsIFdhc21PcGNvZGVUcmFpdHM+KCkpOwot
ICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hOb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKSkK
LSAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21DYXRjaE5vVGxzLCBXYXNtT3Bjb2RlVHJh
aXRzPigpKTsKLSAgICBlbHNlIGlmIChwYy0+aXM8V2FzbUNhdGNoQWxsTm9UbHMsIFdhc21PcGNv
ZGVUcmFpdHM+KCkpCi0gICAgICAgIGhhbmRsZUNhdGNoQWxsKHBjLT5hczxXYXNtQ2F0Y2hBbGxO
b1RscywgV2FzbU9wY29kZVRyYWl0cz4oKSk7CisgICAgaWYgKHBjLT5pczxXYXNtQ2F0Y2g+KCkp
CisgICAgICAgIGhhbmRsZUNhdGNoKHBjLT5hczxXYXNtQ2F0Y2g+KCkpOworICAgIGVsc2UgaWYg
KHBjLT5pczxXYXNtQ2F0Y2hBbGw+KCkpCisgICAgICAgIGhhbmRsZUNhdGNoQWxsKHBjLT5hczxX
YXNtQ2F0Y2hBbGw+KCkpOworICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hOb1Rscz4oKSkK
KyAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21DYXRjaE5vVGxzPigpKTsKKyAgICBlbHNl
IGlmIChwYy0+aXM8V2FzbUNhdGNoQWxsTm9UbHM+KCkpCisgICAgICAgIGhhbmRsZUNhdGNoQWxs
KHBjLT5hczxXYXNtQ2F0Y2hBbGxOb1Rscz4oKSk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC03MTcsMTkgKzcxNywxOSBAQCBXQVNNX1NMT1df
UEFUSF9ERUNMKHJldHJpZXZlX2FuZF9jbGVhcl9leGNlcHRpb24pCiAgICAgV0FTTV9SRVRVUk5f
VFdPKHBjLCBwYXlsb2FkKTsKIH0KIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xv
d19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9u
VHlwZSBleGNlcHRpb25UeXBlKQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19w
YXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBXYXNt
SW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIFdhc206OkV4Y2VwdGlv
blR5cGUgZXhjZXB0aW9uVHlwZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocGMpOwogICAgIFdBU01f
UkVUVVJOX1RXTyhvcGVyYXRpb25XYXNtVG9KU0V4Y2VwdGlvbihjYWxsRnJhbWUsIGV4Y2VwdGlv
blR5cGUsIGluc3RhbmNlKSwgbnVsbHB0cik7CiB9CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50KGNvbnN0IEluc3RydWN0aW9uKiBwYywgdWlu
dDMyX3QgeCkKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3Bv
cGNvdW50KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMsIHVpbnQzMl90IHgpCiB7CiAgICAgdm9p
ZCogcmVzdWx0ID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oX19i
dWlsdGluX3BvcGNvdW50KHgpKSk7CiAgICAgV0FTTV9SRVRVUk5fVFdPKHBjLCByZXN1bHQpOwog
fQogCi1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3Vu
dGxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgdWludDY0X3QgeCkKK2V4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwoY29uc3QgV2FzbUluc3RydWN0
aW9uKiBwYywgdWludDY0X3QgeCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihfX2J1aWx0aW5fcG9wY291bnRsbCh4KSkpOwog
ICAgIFdBU01fUkVUVVJOX1RXTyhwYywgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TbG93UGF0aHMuaAppbmRleCBiNjRjZTdjZGU0MWFhYTA2ODk3ZThmZmZlZDgyYThk
MDY0MzJkZmQwLi40NjA5ZTM2YjAzOTI0ZDEwZWEwMjc0NTYxMGYwZjJmZTRlODMxZjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCkBAIC0zNCw5ICszNCwx
MiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFtZTsKLXN0cnVjdCBJbnN0cnVj
dGlvbjsKIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKIAordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBCYXNlSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0czsKK3VzaW5nIFdhc21J
bnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2RlVHJhaXRzPjsKKwogbmFtZXNw
YWNlIFdhc20gewogY2xhc3MgSW5zdGFuY2U7CiB9CkBAIC00NCw3ICs0Nyw3IEBAIGNsYXNzIElu
c3RhbmNlOwogbmFtZXNwYWNlIExMSW50IHsKIAogI2RlZmluZSBXQVNNX1NMT1dfUEFUSF9ERUNM
KG5hbWUpIFwKLSAgICBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2Fz
bV8jI25hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgV2Fz
bTo6SW5zdGFuY2UqIGluc3RhbmNlKQorICAgIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IHNsb3dfcGF0aF93YXNtXyMjbmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgV2FzbUlu
c3RydWN0aW9uKiBwYywgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlKQogCiAjZGVmaW5lIFdBU01f
U0xPV19QQVRIX0hJRERFTl9ERUNMKG5hbWUpIFwKICAgICBXQVNNX1NMT1dfUEFUSF9ERUNMKG5h
bWUpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMCkBAIC04Nyw5ICs5MCw5IEBAIFdB
U01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHRocm93KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9E
RUNMKHJldGhyb3cpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0cmlldmVfYW5kX2Ns
ZWFyX2V4Y2VwdGlvbik7CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0
aF93YXNtX3Rocm93X2V4Y2VwdGlvbihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiosIFdh
c206Okluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSkgUkVGRVJFTkNFRF9G
Uk9NX0FTTSBXVEZfSU5URVJOQUw7Ci1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93
X3BhdGhfd2FzbV9wb3Bjb3VudChjb25zdCBJbnN0cnVjdGlvbiogcGMsIHVpbnQzMl90KSBSRUZF
UkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50
NjRfdCkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24oQ2FsbEZyYW1lKiwg
Y29uc3QgV2FzbUluc3RydWN0aW9uKiwgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBXYXNtOjpF
eGNlcHRpb25UeXBlKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKK2V4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50KGNvbnN0IFdhc21J
bnN0cnVjdGlvbiogcGMsIHVpbnQzMl90KSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5B
TDsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50
bGwoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWludDY0X3QpIFJFRkVSRU5DRURfRlJPTV9B
U00gV1RGX0lOVEVSTkFMOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453633</attachid>
            <date>2022-03-02 10:23:12 -0800</date>
            <delta_ts>2022-03-02 22:50:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237347-20220302102311.patch</filename>
            <type>text/plain</type>
            <size>373537</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDBlZmU2YjYzNDkzM2Q3NzkxM2Y3MzU5MmNmNWY5MjJiY2NhYWJkLi44M2Y0MGM5ODNmOTA4Mjg0
MTA4ZGVjYmNkMjVkNjAwM2I0M2QwOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NjIgQEAKKzIwMjItMDMtMDEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE9wY29kZVRyYWl0cyB0byBzdXBwb3J0IHRo
ZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgMi1ieXRlIFdBU00gb3Bjb2RlIGlkcyBpbiBieXRlY29k
ZSBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzczNDcKKworICAgICAgICBUaGUgbnVtYmVyIG9mIFdBU00gb3Bjb2RlcyB3aWxsIGluY3Jl
YXNlIGJleW9uZCAyNTUgd2hlbiBXQVNNIFNJTUQgaXMgaW1wbGVtZW50ZWQsIGFuZCBzbyB0aGlz
IHBhdGNoCisgICAgICAgIGNoYW5nZXMgT3Bjb2RlVHJhaXRzIHRvIGFsbG93IGZvciB0aGUgcG9z
c2liaWxpdHkgb2YgaGF2aW5nIHR3by1ieXRlIFdBU00gb3Bjb2RlcyB3aXRob3V0IHJlZ3Jlc3Np
bmcKKyAgICAgICAgSlMuIFdlIGhhdmUgdG8gdGhyZWFkIHRoZXNlIE9wY29kZVRyYWl0cyBldmVy
eXdoZXJlIHRoYXQgdGhleSBhcmUgdXNlZCBzbyB0aGF0IGNvZGUgY2FuIHJlYWQgdGhlCisgICAg
ICAgIGNvcnJlY3QgdmFsdWUgd2hlbiBkZWNvZGluZyBhbiBpbnN0cnVjdGlvbiBzdHJlYW0uIFRo
aXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIHRoZSBzaXplIG9mIFdBU00gb3Bjb2RlcworICAgICAg
ICB5ZXQsIGFsdGhvdWdoIEkgaGF2ZSB0ZXN0ZWQgdGhhdCB0aGUgdGVzdCBzdWl0ZSBzdGlsbCBw
YXNzZXMgaWYgd2UgZG8gaW5jcmVhc2UgdGhlIG9wY29kZSBzaXplLgorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+
OjpCeXRlY29kZUJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s8
T3Bjb2RlVHJhaXRzPjo6YWRkTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrPE9wY29kZVRyYWl0cz46OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6aXNKdW1wVGFy
Z2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OmNv
bXB1dGVJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrPEpTT3Bjb2RlVHJh
aXRzPjo6Y29tcHV0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2Nr
OjphZGRMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6
OnNocmlua1RvRml0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9j
azo6Y29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6YWRkU3VjY2Vzc29yKToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVhbVR5cGU+OjpwcmludExvY2F0aW9uQW5k
T3ApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlckJhc2U8SW5zdHJ1Y3Rpb25TdHJlYW1U
eXBlPjo6ZHVtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpv
dXRPZkxpbmVKdW1wT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpkdW1wSGVhZGVyKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2spOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBHcmFwaCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkJ5dGVjb2RlRHVtcGVyOjpkdW1wQmxvY2spOgorICAgICAgICAo
SlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6cmVnaXN0ZXJOYW1lIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6Om91dE9mTGluZUp1bXBPZmZzZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlckJhc2U6OnByaW50TG9jYXRpb25BbmRPcCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyQmFzZTo6ZHVtcFZhbHVlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1bXBlci5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmVudGVyUG9pbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6aW5zdHJ1Y3Rpb25z
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6cnVuKToK
KyAgICAgICAgKEpTQzo6cGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUdyYXBoLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpm
aW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdy
YXBoOjphdCBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Om9wZXJhdG9yW10g
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaXJzdCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR3JhcGg6Omxhc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpk
dW1wKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Qnl0ZWNvZGVHcmFwaCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUlu
ZGV4VXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVw
T3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlv
bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Y29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NQcm9wYWdhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Z2V0TGl2ZW5lc3NJbmZvQXRJbnN0cnVj
dGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6cnVuTGl2
ZW5lc3NGaXhwb2ludCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEltcGwpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0cyk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZVJld3JpdGVyOjpGcmFnbWVudDo6RnJhZ21lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjpCeXRlY29kZVJld3JpdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRl
cjo6aW5zZXJ0RnJhZ21lbnRCZWZvcmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjppbnNlcnRGcmFnbWVudEFmdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6
cmVwbGFjZUJ5dGVjb2RlV2l0aEZyYWdtZW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdy
aXRlcjo6YWRqdXN0QWJzb2x1dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjphZGp1c3RKdW1wVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgor
ICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5k
ZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3BEZWJ1Z0ZvckxpbmVBbmRD
b2x1bW4pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nVXBk
YXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6b3V0T2ZMaW5lSnVtcFRhcmdldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5
QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQ
cm9maWxlRm9yUEMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tC
b3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9mZnNldCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omlu
c3RydWN0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zdHJ1Y3Rpb25B
dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUluc3RydWN0aW9uOjpvcGNvZGVJRCBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJ
bnN0cnVjdGlvbjo6bmFtZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6
aXNXaWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmlzV2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzTWV0YWRhdGEgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QmFzZUluc3RydWN0aW9uOjpudW1iZXJPZkNoZWNrcG9pbnRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpzaXplU2hpZnRBbW91bnQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om9wY29kZUlEV2lkdGggY29uc3QpOgorICAgICAgICAo
SlNDOjpCYXNlSW5zdHJ1Y3Rpb246Om9wY29kZUlEQnl0ZXMgY29uc3QpOgorICAgICAgICAoSlND
OjpCYXNlSW5zdHJ1Y3Rpb246OnNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1
Y3Rpb246OmlzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphcyBjb25z
dCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6YXNLbm93bldpZHRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpjYXN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjpjYXN0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
Ojp3aWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBj
b25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwOgorICAgICAg
ICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6SW5zdHJ1Y3Rpb25TdHJlYW0pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6c2l6ZUluQnl0ZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6Y29udGFpbnMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmg6CisgICAgICAg
IChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6Okluc3RydWN0aW9uU3RyZWFtOjpCYXNlUmVmOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJhc2VSZWY6OnB0ciBjb25zdCk6CisgICAgICAg
IChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpCYXNlUmVmOjp1bndyYXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6b3BlcmF0b3ItPik6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjpvcGVyYXRvci0+IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6OnB0cik6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmOjpwdHIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZjo6dW53cmFwKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWY6OnVud3JhcCBjb25zdCk6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjppdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyBjb25zdCk6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbSk6CisgICAgICAg
IChKU0M6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVyOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcik6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVyOjpmaW5hbGl6ZSk6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVyOjpzd2FwKToKKyAgICAgICAgKEpTQzo6
SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Oml0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAg
KiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OmlzT3Bjb2RlU2hhcGUpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29k
ZVNpemUuaDoKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAg
ICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKToK
KyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Omp1bXBUYXJn
ZXRGb3JJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0
c0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6dXBkYXRlU3RvcmVkSnVtcFRhcmdldHNG
b3JJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpkdW1wTGluZUNvbHVtbkVudHJ5KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aW5z
dHJ1Y3Rpb25BdCBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpvcFByb2ZpbGVD
b250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cyBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om91
dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdHJ1Y3Rpb25zIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpdGhXcml0ZXIpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2UuaDoKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6cmVjb3JkT3Bjb2RlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFRyYWl0cz46OmFsaWduV2lkZU9wY29kZTE2KToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFRyYWl0cz46OmFsaWduV2lkZU9w
Y29kZTMyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5o
OgorICAgICAgICAoSlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oOgorICAgICAg
ICAoSlNDOjpTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKToKKyAgICAgICAgKEpT
Qzo6U3RhdGljUHJvcGVydHlBbmFseXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFy
YXJnc0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1
cnNpdmVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUdldEJ5SWQp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlM
ZXZlbCk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1
cm5QQyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlTG9vcEhpbnQpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29t
cGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6Cisg
ICAgICAgICogZ2VuZXJhdG9yL0FyZ3VtZW50LnJiOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wu
cmI6CisgICAgICAgICogZ2VuZXJhdG9yL09wY29kZS5yYjoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9BYnN0cmFjdFBDLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjdXJyZW50VlBDIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
Q2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJh
bWUuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChK
U0M6OkNhdGNoSW5mbzo6Q2F0Y2hJbmZvKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0
aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfamxlc3MpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfamxlc3NlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZ3Jl
YXRlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2pubGVzcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9q
bmxlc3NlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2psZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbGVzc2Vx
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfam5sZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmxlc3Nl
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9iZWxvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iZWxvd2VxKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2piZWxvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9qYmVsb3dlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF91bnNpZ25lZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X2NvbXBhcmVVbnNpZ25lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVt
cFNsb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5jKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2RlYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tb2QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9wb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Bvdyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYml0bm90KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2JpdGFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXR4b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfbHNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JzaGlmdCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF91cnNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0TWF0aElDRmFzdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ1Nsb3cpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGl2KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X211bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbXVsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3N1Yik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc3Vi
KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9yZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlT3BDYWxsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2FsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90YWlsX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfY2FsbF9ldmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhbGxfdmFy
YXJncyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfY29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90YWlsX2NhbGwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF90YWlsX2NhbGxfdmFyYXJncyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpnZW5lcmljVW53aW5kKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmZhc3RQYXRoUmVzdW1lUG9pbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6Omp1bXBUYXJnZXQpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vdik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam1wKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfb3ZlcnJp
ZGVzX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2lzX2VtcHR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3R5cGVvZl9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5k
ZWZpbmVkX29yX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYm9vbGVhbik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19udW1iZXIpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19j
ZWxsX3dpdGhfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19vYmplY3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX3Byb3BlcnR5X2tleSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zZXRfZnVuY3Rpb25fbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9ub3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2plcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9qZXFfcHRyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFf
cHRyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2plcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
am5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3Ry
aWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puc3RyaWN0ZXEp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b19udW1iZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19zdHJpbmcpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfdG9fb2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNo
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3N3aXRjaF9pbW0pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c3dpdGNoX2NoYXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudGVyKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29wZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90
aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3Rkeik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfamVxKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rl
YnVnKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2xvb3BfaGludCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2NoZWNrX3RyYXBzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vcCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2luKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfZW5kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9jaGVja190cmFwcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
cmVnZXhwKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Fz
eW5jX2dlbmVyYXRvcl9mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hc3lu
Y19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19hc3luY19nZW5lcmF0b3JfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV3X2FycmF5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJheV93aXRoX3Np
emUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9hcmd1bWVudF9jb3VudCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfcmVzdF9sZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YpOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2plcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3Bfc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pzdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qc3Ry
aWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puc3RyaWN0ZXEpOgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0
ZXJfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Ry
eV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVj
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9p
bl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19wcml2
YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9i
cmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZW51bWVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZW51bWVy
YXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3Jf
aW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293
bl9wcm9wZXJ0eSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgorICAg
ICAgICAoSlNDOjpMTEludDo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6Ondhc21FeGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50
RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93KToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Ondhc21SZXR1cm5Ub1Rocm93KToKKyAgICAgICAgKiBsbGludC9M
TEludEV4Y2VwdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldHVwR2V0
QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZvcm1MTEludEdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpMTEludDo6dmFyYXJnc1NldHVwKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmNvbW1vbkNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmRpc3BhdGNo
VG9OZXh0SW5zdHJ1Y3Rpb25EdXJpbmdFeGl0KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpDTG9vcFJl
Z2lzdGVyOjpvcGVyYXRvciBjb25zdCBKU0luc3RydWN0aW9uKik6CisgICAgICAgIChKU0M6OkNM
b29wOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6Q0xvb3BSZWdpc3Rlcjo6b3BlcmF0b3IgY29u
c3QgSW5zdHJ1Y3Rpb24qKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVhbTo6
ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW06OmRlY29kZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjppdGVy
YXRvck9wZW5UcnlGYXN0SW1wbCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yTmV4dFRyeUZhc3RJ
bXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDQ29uZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAg
ICAgICogcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjphZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAg
ICAgICAoSlNDOjpWTTo6Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKEpT
Qzo6Vk06OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxlZS5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkxMSW50Q2FsbGVlOjpMTEludENhbGxlZSk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50
Q2FsbGVlOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRD
YWxsZWU6Om91dE9mTGluZUp1bXBUYXJnZXQpOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxlZS5o
OgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OnNldEluc3RydWN0
aW9ucyk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjph
ZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2Rl
QmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAqIHdhc20vV2Fz
bUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpjb25zdGFudFJlZ2lzdGVycyBjb25zdCk6CisgICAgICAg
IChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjppbnN0cnVjdGlvbnMgY29u
c3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRk
SnVtcFRhcmdldCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJh
dG9yOjpudW1iZXJPZkp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25D
b2RlQmxvY2tHZW5lcmF0b3I6Omxhc3RKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6Ynl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6dGllclVw
Q291bnRlcik6CisgICAgICAgICogd2FzbS9XYXNtR2VuZXJhdG9yVHJhaXRzLmg6CisgICAgICAg
ICogd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTElu
dEdlbmVyYXRvcjo6YWRkU3dpdGNoKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0xhYmVsPFdhc206
OkdlbmVyYXRvclRyYWl0cz46OnNldExvY2F0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTElu
dFRpZXJVcENvdW50ZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFRpZXJVcENvdW50
ZXI6OmFkZE9TUkVudHJ5RGF0YUZvckxvb3ApOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFRp
ZXJVcENvdW50ZXI6Om9zckVudHJ5RGF0YUZvckxvb3AgY29uc3QgY29uc3QpOgorICAgICAgICAq
IHdhc20vV2FzbUxMSW50VGllclVwQ291bnRlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpMTElu
dFRpZXJVcENvdW50ZXI6OkxMSW50VGllclVwQ291bnRlcik6CisgICAgICAgICogd2FzbS9XYXNt
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OldBU01fU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnNsb3dfcGF0aF93YXNtX3BvcGNvdW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwpOgorICAgICAgICAqIHdhc20v
V2FzbVNsb3dQYXRocy5oOgorCiAyMDIyLTAzLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FwcGxlV2luXSBTdGFydCB1c2luZyBWaXN1
YWwgU3R1ZGlvIDIwMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggNzVhNDdiY2U1YzEwNGVkNzlkNjczOWU5OGRl
YTQ4YWRiNGVkMTYyMS4uYjgyMmJiNGVmOGYxNmYzYWQ3YTliZjRiN2U5NmNjMTg3Zjc3MTI3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5jcHAKQEAgLTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIERFRklORV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsKIAotQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW06OlJlZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGJsb2NrSW5kZXgpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGNvZGVUcmFpdHM+CitCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPjo6Qnl0
ZWNvZGVCYXNpY0Jsb2NrKGNvbnN0IHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6UmVm
JiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgYmxvY2tJbmRleCkKICAgICA6IG1fbGVhZGVyT2Zmc2V0
KGluc3RydWN0aW9uLm9mZnNldCgpKQogICAgICwgbV90b3RhbExlbmd0aCgwKQogICAgICwgbV9p
bmRleChibG9ja0luZGV4KQpAQCAtNDIsMjYgKzQzLDMwIEBAIEJ5dGVjb2RlQmFzaWNCbG9jazo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0
aW9uCiAgICAgYWRkTGVuZ3RoKGluc3RydWN0aW9uLT5zaXplKCkpOwogfQogCi1CeXRlY29kZUJh
c2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayhCeXRlY29kZUJhc2ljQmxvY2s6OlNwZWNpYWxC
bG9ja1R5cGUgYmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0luZGV4KQotICAgIDogbV9sZWFkZXJP
ZmZzZXQoYmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayA/IDAgOiBV
SU5UX01BWCkKLSAgICAsIG1fdG90YWxMZW5ndGgoYmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNC
bG9jazo6RW50cnlCbG9jayA/IDAgOiBVSU5UX01BWCkKK3RlbXBsYXRlPHR5cGVuYW1lIE9wY29k
ZVRyYWl0cz4KK0J5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpCeXRlY29kZUJhc2lj
QmxvY2sodHlwZW5hbWUgQnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OlNwZWNpYWxC
bG9ja1R5cGUgYmxvY2tUeXBlLCB1bnNpZ25lZCBibG9ja0luZGV4KQorICAgIDogbV9sZWFkZXJP
ZmZzZXQoYmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+OjpFbnRy
eUJsb2NrID8gMCA6IFVJTlRfTUFYKQorICAgICwgbV90b3RhbExlbmd0aChibG9ja1R5cGUgPT0g
Qnl0ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2sgPyAwIDogVUlOVF9N
QVgpCiAgICAgLCBtX2luZGV4KGJsb2NrSW5kZXgpCiB7CiB9CiAKLXZvaWQgQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjphZGRMZW5ndGgodW5zaWduZWQgYnl0ZWNvZGVMZW5ndGgpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGNvZGVUcmFpdHM+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+
OjphZGRMZW5ndGgodW5zaWduZWQgYnl0ZWNvZGVMZW5ndGgpCiB7CiAgICAgbV9kZWx0YS5hcHBl
bmQoYnl0ZWNvZGVMZW5ndGgpOwogICAgIG1fdG90YWxMZW5ndGggKz0gYnl0ZWNvZGVMZW5ndGg7
CiB9CiAKLXZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpzaHJpbmtUb0ZpdCgpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGNvZGVUcmFpdHM+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFp
dHM+OjpzaHJpbmtUb0ZpdCgpCiB7CiAgICAgbV9kZWx0YS5zaHJpbmtUb0ZpdCgpOwogICAgIG1f
c3VjY2Vzc29ycy5zaHJpbmtUb0ZpdCgpOwogfQogCi1zdGF0aWMgYm9vbCBpc0p1bXBUYXJnZXQo
T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
LCAzMj4mIGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3RlbXBsYXRlPHR5
cGVuYW1lIE9wY29kZVRyYWl0cz4KK3N0YXRpYyBib29sIGlzSnVtcFRhcmdldCh0eXBlbmFtZSBP
cGNvZGVUcmFpdHM6Ok9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dHlwZW5hbWUgQnl0
ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46Okluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zm
c2V0LCAzMj4mIGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfY2F0Y2gpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjksMTQg
Kzc0LDE1IEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29u
c3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5
X3NlYXJjaChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVP
ZmZzZXQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUcmFpdHM+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLWF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBC
YXNpY0Jsb2NrVmVjdG9yCithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+Ojpj
b21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUm
IGluc3RydWN0aW9ucykgLT4gQmFzaWNCbG9ja1ZlY3RvcgogewogICAgIEJhc2ljQmxvY2tWZWN0
b3IgYmFzaWNCbG9ja3M7Ci0gICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMy
PiBqdW1wVGFyZ2V0czsKKyAgICBWZWN0b3I8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
OjpPZmZzZXQsIDMyPiBqdW1wVGFyZ2V0czsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBqdW1wVGFyZ2V0cyk7CiAKLSAgICBhdXRvIGxpbmtC
bG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayYgZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
JiB0bykgeworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrPE9w
Y29kZVRyYWl0cz4mIGZyb20sIEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFpdHM+JiB0bykg
ewogICAgICAgICBmcm9tLmFkZFN1Y2Nlc3Nvcih0byk7CiAgICAgfTsKIApAQCAtODUsMjUgKzkx
LDI1IEBAIGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgYmFzaWNCbG9ja3MucmVzZXJ2
ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBFbnRyeSBibG9jay4KLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFw
cGVuZChCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7
CisgICAgICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoQnl0ZWNvZGVCYXNp
Y0Jsb2NrPE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAg
ICAgICAgICAgICAvLyBGaXJzdCBibG9jay4KLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0
cnVjdEFuZEFwcGVuZChCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tz
LnNpemUoKSk7CisgICAgICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQoQnl0
ZWNvZGVCYXNpY0Jsb2NrPE9wY29kZVRyYWl0cz46OkVudHJ5QmxvY2ssIGJhc2ljQmxvY2tzLnNp
emUoKSk7CiAgICAgICAgICAgICBsaW5rQmxvY2tzKGJhc2ljQmxvY2tzWzBdLCBiYXNpY0Jsb2Nr
c1sxXSk7CiAgICAgICAgIH0KIAotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQg
PSAmYmFzaWNCbG9ja3MubGFzdCgpOwotICAgICAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChj
b25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikgLT4gQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiB7CisgICAgICAgIGF1dG8qIGN1cnJlbnQgPSAmYmFzaWNCbG9ja3MubGFzdCgpOwor
ICAgICAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChjb25zdCB0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU6OlJlZiYgaW5zdHJ1Y3Rpb24pIC0+IEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNv
ZGVUcmFpdHM+KiB7CiAgICAgICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBlbmQo
aW5zdHJ1Y3Rpb24sIGJhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gJmJh
c2ljQmxvY2tzLmxhc3QoKTsKICAgICAgICAgfTsKICAgICAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rp
b25Jc0xlYWRlciA9IGZhbHNlOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9u
IDogaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlT2Zmc2V0ID0gaW5z
dHJ1Y3Rpb24ub2Zmc2V0KCk7Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpOworICAgICAgICAgICAgYXV0byBvcGNvZGVJRCA9IGluc3RydWN0
aW9uLT5vcGNvZGVJRCgpOwogCiAgICAgICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNl
OwogICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1wIHRhcmdl
dCwgdGhlbiBpdCdzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KLSAgICAgICAg
ICAgIGlmIChuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciB8fCBpc0p1bXBUYXJnZXQob3Bjb2RlSUQs
IGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAgICAgIGlmIChuZXh0SW5z
dHJ1Y3Rpb25Jc0xlYWRlciB8fCBpc0p1bXBUYXJnZXQ8T3Bjb2RlVHJhaXRzPihvcGNvZGVJRCwg
anVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnQg
PSBhcHBlbmRCbG9jayhpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICAgICAgY3JlYXRlZEJsb2Nr
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNl
OwpAQCAtMTIwLDcgKzEyNiw3IEBAIGF1dG8gQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1w
bChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgICAg
IGN1cnJlbnQtPmFkZExlbmd0aChpbnN0cnVjdGlvbi0+c2l6ZSgpKTsKICAgICAgICAgfQogICAg
ICAgICAvLyBFeGl0IGJsb2NrLgotICAgICAgICBiYXNpY0Jsb2Nrcy5jb25zdHJ1Y3RBbmRBcHBl
bmQoQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2ssIGJhc2ljQmxvY2tzLnNpemUoKSk7Cisg
ICAgICAgIGJhc2ljQmxvY2tzLmNvbnN0cnVjdEFuZEFwcGVuZChCeXRlY29kZUJhc2ljQmxvY2s8
T3Bjb2RlVHJhaXRzPjo6RXhpdEJsb2NrLCBiYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgICAgICBi
YXNpY0Jsb2Nrcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBBU1NFUlQoYmFzaWNCbG9ja3MubGFz
dCgpLmlzRXhpdEJsb2NrKCkpOwogICAgIH0KQEAgLTEyOCwxNSArMTM0LDE1IEBAIGF1dG8gQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYKIAogICAgIC8vIExpbmsgYmFzaWMgYmxvY2tzIHRvZ2V0aGVyLgogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrID0gYmFzaWNCbG9ja3NbaV07CisgICAgICAg
IGF1dG8mIGJsb2NrID0gYmFzaWNCbG9ja3NbaV07CiAKICAgICAgICAgaWYgKGJsb2NrLmlzRW50
cnlCbG9jaygpIHx8IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBib29sIGZhbGxzVGhyb3VnaCA9IHRydWU7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgdmlzaXRlZExlbmd0aCA9IDA7IHZpc2l0ZWRMZW5ndGggPCBibG9jay50b3RhbExlbmd0aCgp
OykgewotICAgICAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBpbnN0cnVjdGlvbiA9IGlu
c3RydWN0aW9ucy5hdChibG9jay5sZWFkZXJPZmZzZXQoKSArIHZpc2l0ZWRMZW5ndGgpOwotICAg
ICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKKyAg
ICAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYmxvY2subGVhZGVy
T2Zmc2V0KCkgKyB2aXNpdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gb3Bjb2RlSUQgPSBp
bnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIAogICAgICAgICAgICAgdmlzaXRlZExlbmd0aCArPSBp
bnN0cnVjdGlvbi0+c2l6ZSgpOwogCkBAIC0xNzEsNyArMTc3LDcgQEAgYXV0byBCeXRlY29kZUJh
c2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtJgogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBicmFuY2gsIGxpbmsgdG8gdGhl
IGJsb2NrKHMpIHRoYXQgd2UganVtcCB0by4KICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNv
ZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBp
bnN0cnVjdGlvbi0+c2l6ZSgpID09IGJsb2NrLmxlYWRlck9mZnNldCgpICsgYmxvY2sudG90YWxM
ZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOworICAgICAgICAgICAgICAgIFZlY3Rvcjx0
eXBlbmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCwgMT4gYnl0ZWNvZGVPZmZzZXRz
SnVtcGVkVG87CiAgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24o
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAgICAg
ICAgICAgICAgICAgc2l6ZV90IG51bWJlck9mSnVtcFRhcmdldHMgPSBieXRlY29kZU9mZnNldHNK
dW1wZWRUby5zaXplKCk7CkBAIC0yMDAsNyArMjA2LDcgQEAgYXV0byBCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFt
JgogICAgICAgICAvLyBJZiB3ZSBmYWxsIHRocm91Z2ggdGhlbiBsaW5rIHRvIHRoZSBuZXh0IGJs
b2NrIGluIHByb2dyYW0gb3JkZXIuCiAgICAgICAgIGlmIChmYWxsc1Rocm91Z2gpIHsKICAgICAg
ICAgICAgIEFTU0VSVChpICsgMSA8IGJhc2ljQmxvY2tzLnNpemUoKSk7Ci0gICAgICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2smIG5leHRCbG9jayA9IGJhc2ljQmxvY2tzW2kgKyAxXTsKKyAgICAg
ICAgICAgIGF1dG8mIG5leHRCbG9jayA9IGJhc2ljQmxvY2tzW2kgKyAxXTsKICAgICAgICAgICAg
IGxpbmtCbG9ja3MoYmxvY2ssIG5leHRCbG9jayk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTQs
MTIgKzIyMCwxNCBAQCBhdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgcmV0dXJuIGJhc2ljQmxv
Y2tzOwogfQogCi1hdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZShDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucykgLT4gQmFzaWNC
bG9ja1ZlY3RvcgordGVtcGxhdGU8PgorYXV0byBCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVU
cmFpdHM+Ojpjb21wdXRlKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9u
U3RyZWFtJiBpbnN0cnVjdGlvbnMpIC0+IEJhc2ljQmxvY2tWZWN0b3IKIHsKICAgICByZXR1cm4g
Y29tcHV0ZUltcGwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpOwogfQogCi1hdXRvIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVj
dG9yCit0ZW1wbGF0ZTw+CithdXRvIEJ5dGVjb2RlQmFzaWNCbG9jazxKU09wY29kZVRyYWl0cz46
OmNvbXB1dGUoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSlNJ
bnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKSAtPiBCYXNpY0Jsb2NrVmVjdG9yCiB7CiAg
ICAgcmV0dXJuIGNvbXB1dGVJbXBsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApp
bmRleCBkMGE4ODJkNTQ2MzIyOTExYzM3ZWVhYmRjMGFmZDMwZjVhZWY3MzRhLi5kNzY0M2QxOWY4
MmNkNGM2MmRiMzZmOGM2YzE1MjRlZGFiYjA2OTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNywyMSArMzcsMjQg
QEAgY2xhc3MgQnl0ZWNvZGVHcmFwaDsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I7Ci1zdHJ1Y3QgSW5z
dHJ1Y3Rpb247Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEluc3RydWN0aW9uOwogCiBERUNM
QVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihCeXRlY29kZUJhc2ljQmxvY2spOwog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUcmFpdHM+CiBjbGFzcyBCeXRlY29kZUJhc2ljQmxv
Y2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJ5dGVjb2RlQmFzaWNCbG9jayk7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVCYXNpY0Jsb2NrKTsKICAgICBmcmllbmQg
Y2xhc3MgQnl0ZWNvZGVHcmFwaDsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNpY0Jsb2NrVmVjdG9y
ID0gVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jaywgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3csIDE2
LCBCeXRlY29kZUJhc2ljQmxvY2tNYWxsb2M+OwotICAgIHN0YXRpY19hc3NlcnQobWF4T3Bjb2Rl
TGVuZ3RoIDw9IFVJTlQ4X01BWCk7CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25UeXBlID0gQmFzZUlu
c3RydWN0aW9uPE9wY29kZVRyYWl0cz47CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
ID0gSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPjsKKyAgICBzdGF0aWNfYXNzZXJ0
KG1heEJ5dGVjb2RlU3RydWN0TGVuZ3RoIDw9IFVJTlQ4X01BWCk7CiAgICAgZW51bSBTcGVjaWFs
QmxvY2tUeXBlIHsgRW50cnlCbG9jaywgRXhpdEJsb2NrIH07Ci0gICAgaW5saW5lIEJ5dGVjb2Rl
QmFzaWNCbG9jayhjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgdW5zaWduZWQgYmxvY2tJ
bmRleCk7CisgICAgaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jayhjb25zdCB0eXBlbmFtZSBJbnN0
cnVjdGlvblN0cmVhbVR5cGU6OlJlZiYsIHVuc2lnbmVkIGJsb2NrSW5kZXgpOwogICAgIGlubGlu
ZSBCeXRlY29kZUJhc2ljQmxvY2soU3BlY2lhbEJsb2NrVHlwZSwgdW5zaWduZWQgYmxvY2tJbmRl
eCk7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayYmKSA9IGRlZmF1
bHQ7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jazxPcGNvZGVUcmFp
dHM+JiYpID0gZGVmYXVsdDsKIAogCiAgICAgYm9vbCBpc0VudHJ5QmxvY2soKSB7IHJldHVybiAh
bV9sZWFkZXJPZmZzZXQgJiYgIW1fdG90YWxMZW5ndGg7IH0KQEAgLTcyLDEyICs3NSwxMiBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gT25seSBjYWxsZWQgZnJvbSBCeXRlY29kZUdyYXBo
LgotICAgIHN0YXRpYyBCYXNpY0Jsb2NrVmVjdG9yIGNvbXB1dGUoQ29kZUJsb2NrKiwgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucyk7Ci0gICAgc3RhdGljIEJhc2ljQmxvY2tW
ZWN0b3IgY29tcHV0ZShVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciosIGNvbnN0IEluc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPiBz
dGF0aWMgQmFzaWNCbG9ja1ZlY3RvciBjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKTsKKyAgICBzdGF0aWMgQmFzaWNCbG9j
a1ZlY3RvciBjb21wdXRlKENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtVHlwZSYg
aW5zdHJ1Y3Rpb25zKTsKKyAgICBzdGF0aWMgQmFzaWNCbG9ja1ZlY3RvciBjb21wdXRlKFVubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlJiBpbnN0
cnVjdGlvbnMpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPiBzdGF0aWMgQmFzaWNCbG9j
a1ZlY3RvciBjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbVR5cGUmIGluc3RydWN0aW9ucyk7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCi0gICAg
dm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaykKKyAgICB2b2lkIGFk
ZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2s8T3Bjb2RlVHJhaXRzPiYgYmxvY2spCiAgICAg
ewogICAgICAgICBpZiAoIW1fc3VjY2Vzc29ycy5jb250YWlucyhibG9jay5pbmRleCgpKSkKICAg
ICAgICAgICAgIG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2suaW5kZXgoKSk7CkBAIC04NSw3ICs4
OCw3IEBAIHByaXZhdGU6CiAKICAgICBpbmxpbmUgdm9pZCBhZGRMZW5ndGgodW5zaWduZWQpOwog
Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2xlYWRlck9mZnNldDsKKyAgICB0eXBl
bmFtZSBJbnN0cnVjdGlvblN0cmVhbVR5cGU6Ok9mZnNldCBtX2xlYWRlck9mZnNldDsKICAgICB1
bnNpZ25lZCBtX3RvdGFsTGVuZ3RoOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAKQEAgLTk2LDQg
Kzk5LDcgQEAgcHJpdmF0ZToKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAordXNpbmcg
SlNCeXRlY29kZUJhc2ljQmxvY2sgPSBCeXRlY29kZUJhc2ljQmxvY2s8SlNPcGNvZGVUcmFpdHM+
OwordXNpbmcgV2FzbUJ5dGVjb2RlQmFzaWNCbG9jayA9IEJ5dGVjb2RlQmFzaWNCbG9jazxXYXNt
T3Bjb2RlVHJhaXRzPjsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCA1YmY2N2I2MWI2MmJj
MTJlMDRjMmZhN2NhOTM0M2MwYzdhZGU2NzAwLi4wOGEyMzU4MDQ0ZmQ2MzU5NzAzMjNiMDEyYzlj
ODdlMzk1ZTNlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAKQEAgLTQxLDMxICs0MSwzNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotdm9pZCBCeXRlY29kZUR1bXBlckJhc2U6OnByaW50TG9jYXRpb25BbmRPcChJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKK3RlbXBsYXRlPHR5cGVu
YW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZT4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3Ry
dWN0aW9uU3RyZWFtVHlwZT46OnByaW50TG9jYXRpb25BbmRPcCh0eXBlbmFtZSBJbnN0cnVjdGlv
blN0cmVhbVR5cGU6Ok9mZnNldCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApCiB7CiAgICAgbV9j
dXJyZW50TG9jYXRpb24gPSBsb2NhdGlvbjsKICAgICBtX291dC5wcmludGYoIlslNHVdICUtMThz
ICIsIGxvY2F0aW9uLCBvcCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFs
dWUoVmlydHVhbFJlZ2lzdGVyIHJlZykKK3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uU3Ry
ZWFtVHlwZT4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEluc3RydWN0aW9uU3RyZWFtVHlwZT46
OmR1bXBWYWx1ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewogICAgIG1fb3V0LnByaW50ZigiJXMi
LCByZWdpc3Rlck5hbWUocmVnKS5kYXRhKCkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0
cnVjdGlvblN0cmVhbVR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyQmFzZTo6ZHVtcFZhbHVlKEdlbmVyaWNCb3VuZExhYmVsPFRyYWl0cz4gbGFiZWwp
Cit2b2lkIEJ5dGVjb2RlRHVtcGVyQmFzZTxJbnN0cnVjdGlvblN0cmVhbVR5cGU+OjpkdW1wVmFs
dWUoR2VuZXJpY0JvdW5kTGFiZWw8VHJhaXRzPiBsYWJlbCkKIHsKICAgICBpbnQgdGFyZ2V0ID0g
bGFiZWwudGFyZ2V0KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHRhcmdldCA9IG91dE9m
TGluZUp1bXBPZmZzZXQobV9jdXJyZW50TG9jYXRpb24pOwotICAgIEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgdGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0ICsgbV9jdXJyZW50TG9jYXRpb247CisgICAg
YXV0byB0YXJnZXRPZmZzZXQgPSB0YXJnZXQgKyBtX2N1cnJlbnRMb2NhdGlvbjsKICAgICBtX291
dC5wcmludCh0YXJnZXQsICIoLT4iLCB0YXJnZXRPZmZzZXQsICIpIik7CiB9CiAKLXRlbXBsYXRl
IHZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8SlNH
ZW5lcmF0b3JUcmFpdHM+KTsKK3RlbXBsYXRlIHZvaWQgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5z
dHJ1Y3Rpb25TdHJlYW0+OjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8SlNHZW5lcmF0b3JU
cmFpdHM+KTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLXRlbXBsYXRlIHZvaWQgQnl0ZWNv
ZGVEdW1wZXJCYXNlOjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8V2FzbTo6R2VuZXJhdG9y
VHJhaXRzPik7Cit0ZW1wbGF0ZSB2b2lkIEJ5dGVjb2RlRHVtcGVyQmFzZTxXYXNtSW5zdHJ1Y3Rp
b25TdHJlYW0+OjpkdW1wVmFsdWUoR2VuZXJpY0JvdW5kTGFiZWw8V2FzbTo6R2VuZXJhdG9yVHJh
aXRzPik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogCiB0ZW1wbGF0ZTxjbGFzcyBC
bG9jaz4KQEAgLTc4LDcgKzgxLDcgQEAgQ1N0cmluZyBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnJl
Z2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIgcikgY29uc3QKIH0KIAogdGVtcGxhdGUgPGNsYXNz
IEJsb2NrPgotaW50IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6b3V0T2ZMaW5lSnVtcE9mZnNldChJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkgY29uc3QKK2ludCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46Om91dE9mTGluZUp1bXBPZmZzZXQoSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IG9mZnNldCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ibG9jay0+b3V0T2ZMaW5lSnVtcE9mZnNl
dChvZmZzZXQpOwogfQpAQCAtOTEsMTQgKzk0LDE0IEBAIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+Ojpjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYp
Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKGNvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJikKIHsKICAgICA6OkpTQzo6
ZHVtcEJ5dGVjb2RlKHRoaXMsIGl0Lm9mZnNldCgpLCBpdC5wdHIoKSk7CiAgICAgdGhpcy0+bV9v
dXQucHJpbnQoIlxuIik7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYg
c3RhdHVzTWFwKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShCbG9j
ayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgQnl0ZWNvZGVEdW1w
ZXIgZHVtcGVyKGJsb2NrLCBvdXQpOwogICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUoaXQsIHN0YXR1
c01hcCk7CkBAIC0yMTAsNyArMjEzLDcgQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIEJsb2NrPgotc3RhdGljIHZvaWQgZHVtcEhlYWRlcihCbG9jayogYmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFByaW50U3RyZWFtJiBvdXQpCitzdGF0aWMg
dm9pZCBkdW1wSGVhZGVyKEJsb2NrKiBibG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYg
aW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0KQogewogICAgIHNpemVfdCBpbnN0cnVjdGlv
bkNvdW50ID0gMDsKICAgICBzaXplX3Qgd2lkZTE2SW5zdHJ1Y3Rpb25Db3VudCA9IDA7CkBAIC0y
NTIsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgZHVtcEZvb3RlcihEdW1wZXImIGR1bXBlcikKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJsb2NrKEJsb2NrKiBibG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKK3ZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sq
IGJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgZHVtcEhlYWRl
cihibG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogCkBAIC0yNjYsNyArMjY5LDcgQEAgdm9pZCBD
b2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uU3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIENvZGVC
bG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEdyYXBoKEJsb2NrKiBibG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBpY1N0YXR1c01hcCkKK3ZvaWQgQ29k
ZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wR3JhcGgoQmxvY2sqIGJsb2NrLCBjb25z
dCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBo
LCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgaWNTdGF0dXNNYXApCiB7CiAg
ICAgZHVtcEhlYWRlcihibG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogCkBAIC0yODUsNyArMjg4
LDcgQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBHcmFwaChCbG9j
ayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGZv
ciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IGdyYXBoKSB7CisgICAgZm9yIChhdXRvJiBi
bG9jayA6IGdyYXBoKSB7CiAgICAgICAgIGlmIChibG9jay5pc0VudHJ5QmxvY2soKSB8fCBibG9j
ay5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTMxNywxMiArMzIw
LDE1IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wR3JhcGgoQmxv
Y2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0CiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0K
IAordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+
OwogdGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjsKIHRlbXBsYXRlIGNs
YXNzIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPjsK
IHRlbXBsYXRlIGNsYXNzIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz47CiAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKK3RlbXBsYXRlIGNsYXNzIEJ5dGVjb2RlRHVtcGVyQmFz
ZTxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+OworCiBuYW1lc3BhY2UgV2FzbSB7CiAKIHZvaWQgQnl0
ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayhGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2ss
IGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiwgUHJpbnRTdHJlYW0m
IG91dCkKQEAgLTMzMSw3ICszMzcsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyOjpkdW1wQmxvY2so
RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IqIGJsb2NrLCBjb25zdCBNb2R1bGVJbgogICAgIHNp
emVfdCB3aWRlMTZJbnN0cnVjdGlvbkNvdW50ID0gMDsKICAgICBzaXplX3Qgd2lkZTMySW5zdHJ1
Y3Rpb25Db3VudCA9IDA7CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBibG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsgaXQgIT0gYmxvY2stPmluc3RydWN0aW9ucygpLmVuZCgpOyBpdCArPSBpdC0+
c2l6ZTxXYXNtT3Bjb2RlVHJhaXRzPigpKSB7CisgICAgZm9yIChhdXRvIGl0ID0gYmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5lbmQoKTsg
aXQgKz0gaXQtPnNpemUoKSkgewogICAgICAgICBpZiAoaXQtPmlzV2lkZTE2KCkpCiAgICAgICAg
ICAgICArK3dpZGUxNkluc3RydWN0aW9uQ291bnQ7CiAgICAgICAgIGVsc2UgaWYgKGl0LT5pc1dp
ZGUzMigpKQpAQCAtMzU5LDcgKzM2NSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9j
ayhGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2ssIGNvbnN0IE1vZHVsZUluCiAgICAg
ICAgIGJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSk7CiAKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIG91dCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gYmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCk7IGl0ICE9IGJsb2NrLT5pbnN0cnVjdGlvbnMoKS5lbmQoKTsgaXQgKz0gaXQtPnNp
emU8V2FzbU9wY29kZVRyYWl0cz4oKSkgeworICAgIGZvciAoYXV0byBpdCA9IGJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBibG9jay0+aW5zdHJ1Y3Rpb25zKCkuZW5kKCk7IGl0
ICs9IGl0LT5zaXplKCkpIHsKICAgICAgICAgZHVtcFdhc20oJmR1bXBlciwgaXQub2Zmc2V0KCks
IGl0LnB0cigpKTsKICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0KQEAgLTQxNiw2ICs0
MjIsMTkgQEAgQ1N0cmluZyBCeXRlY29kZUR1bXBlcjo6Zm9ybWF0Q29uc3RhbnQoVHlwZSB0eXBl
LCB1aW50NjRfdCBjb25zdGFudCkgY29uc3QKICAgICB9CiB9CiAKK0NTdHJpbmcgQnl0ZWNvZGVE
dW1wZXI6OnJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIgcikgY29uc3QKK3sKKyAgICBpZiAo
ci5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBjb25zdGFudE5hbWUocik7CisKKyAgICBy
ZXR1cm4gdG9DU3RyaW5nKHIpOworfQorCitpbnQgQnl0ZWNvZGVEdW1wZXI6Om91dE9mTGluZUp1
bXBPZmZzZXQoV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBjb25zdAorewor
ICAgIHJldHVybiBtX2Jsb2NrLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKaW5kZXggMjE2
ZTZlNjdlYTBkMmRjN2Q5M2FhNDUxMjhlOWEwNjJkM2Q2M2I5Yi4uOWZiN2IyZGZhYTcxMGVkZTcx
ZjQ5MzFiODZlMWZhNjAzOTg1ZDg5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTI2LDkgKzI2LDExIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiSUNT
dGF0dXNNYXAuaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkluc3RydWN0
aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJX
YXNtT3BzLmgiCkBAIC0zNywxNSArMzksMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5
dGVjb2RlR3JhcGg7CiAKLXN0cnVjdCBJbnN0cnVjdGlvbjsKLQordGVtcGxhdGU8dHlwZW5hbWUg
SW5zdHJ1Y3Rpb25TdHJlYW1UeXBlPgogY2xhc3MgQnl0ZWNvZGVEdW1wZXJCYXNlIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5CeXRlY29kZUR1bXBlckJhc2UoKQogICAgIHsKICAgICB9CiAKLSAg
ICB2b2lkIHByaW50TG9jYXRpb25BbmRPcChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxvY2F0
aW9uLCBjb25zdCBjaGFyKiBvcCk7CisgICAgdm9pZCBwcmludExvY2F0aW9uQW5kT3AodHlwZW5h
bWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpPZmZzZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9w
KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBkdW1wT3BlcmFuZChjb25z
dCBjaGFyKiBvcGVyYW5kTmFtZSwgVCBvcGVyYW5kLCBib29sIGlzRmlyc3QgPSBmYWxzZSkKQEAg
LTY3LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBDU3RyaW5n
IHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGlu
dCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtVHlwZTo6T2Zmc2V0KSBjb25zdCA9IDA7CiAKICAgICBCeXRlY29kZUR1bXBlckJh
c2UoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgOiBtX291dChvdXQpCkBAIC03NSwxMyArNzYs
MTMgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIFByaW50U3RyZWFtJiBtX291dDsKLSAgICBJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fY3VycmVudExvY2F0aW9uIHsgMCB9OworICAgIHR5
cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IG1fY3VycmVudExvY2F0aW9uIHsg
MCB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci1jbGFzcyBCeXRlY29kZUR1bXBlciA6
IHB1YmxpYyBCeXRlY29kZUR1bXBlckJhc2UgeworY2xhc3MgQnl0ZWNvZGVEdW1wZXIgOiBwdWJs
aWMgQnl0ZWNvZGVEdW1wZXJCYXNlPEpTSW5zdHJ1Y3Rpb25TdHJlYW0+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0
dXNNYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVtcEJ5dGVjb2RlKEJsb2NrKiwgUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0
dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAKICAgICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxv
Y2ssIFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIDogQnl0ZWNvZGVEdW1wZXJCYXNlKG91dCkK
QEAgLTk0LDEwICs5NSwxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgQmxvY2sqIGJsb2Nr
KCkgY29uc3QgeyByZXR1cm4gbV9ibG9jazsgfQogCi0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAg
dm9pZCBkdW1wQnl0ZWNvZGUoY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29u
c3QgSUNTdGF0dXNNYXAmKTsKIAogICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKFZpcnR1YWxSZWdp
c3RlcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBvdXRP
ZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDU3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFs
UmVnaXN0ZXIpIGNvbnN0OwpAQCAtMTA4LDggKzEwOSw4IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxj
bGFzcyBCbG9jaz4KIGNsYXNzIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyIGZpbmFsIDogcHVibGlj
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKLSAgICBzdGF0aWMgdm9pZCBkdW1w
R3JhcGgoQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBQ
cmludFN0cmVhbSYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpLCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJ
Q1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCBK
U0luc3RydWN0aW9uU3RyZWFtJiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAm
ID0gSUNTdGF0dXNNYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVtcEdyYXBoKEJsb2NrKiwgY29u
c3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBQcmludFN0cmVhbSYgb3V0
ID0gV1RGOjpkYXRhRmlsZSgpLCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsK
IAogICAgIHZvaWQgZHVtcElkZW50aWZpZXJzKCk7CiAgICAgdm9pZCBkdW1wQ29uc3RhbnRzKCk7
CkBAIC0xMzIsMTYgKzEzMywyOSBAQCBuYW1lc3BhY2UgV2FzbSB7CiBjbGFzcyBGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvcjsKIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbjsKIAotY2xhc3MgQnl0
ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpCeXRlY29kZUR1bXBlcjxGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvcj4geworY2xhc3MgQnl0ZWNvZGVEdW1wZXIgZmluYWwgOiBwdWJsaWMg
SlNDOjpCeXRlY29kZUR1bXBlckJhc2U8V2FzbUluc3RydWN0aW9uU3RyZWFtPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiwg
Y29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBQcmludFN0cmVhbSYgb3V0KTsKIAotcHJpdmF0ZToK
LSAgICB1c2luZyBKU0M6OkJ5dGVjb2RlRHVtcGVyPEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9y
Pjo6Qnl0ZWNvZGVEdW1wZXI7CisgICAgQnl0ZWNvZGVEdW1wZXIoRnVuY3Rpb25Db2RlQmxvY2tH
ZW5lcmF0b3IqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0KQorICAgICAgICA6IEJ5dGVjb2RlRHVt
cGVyQmFzZShvdXQpCisgICAgICAgICwgbV9ibG9jayhibG9jaykKKyAgICB7CisgICAgfQogCisg
ICAgfkJ5dGVjb2RlRHVtcGVyKCkgb3ZlcnJpZGUgeyB9CisKKyAgICBGdW5jdGlvbkNvZGVCbG9j
a0dlbmVyYXRvciogYmxvY2soKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrOyB9CisKKyAgICBDU3Ry
aW5nIHJlZ2lzdGVyTmFtZShWaXJ0dWFsUmVnaXN0ZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIGlu
dCBvdXRPZkxpbmVKdW1wT2Zmc2V0KFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KSBjb25z
dCBvdmVycmlkZTsKKworcHJpdmF0ZToKICAgICB2b2lkIGR1bXBDb25zdGFudHMoKTsKLSAgICBD
U3RyaW5nIGNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIgaW5kZXgpIGNvbnN0IGZpbmFsOwor
ICAgIENTdHJpbmcgY29uc3RhbnROYW1lKFZpcnR1YWxSZWdpc3RlciBpbmRleCkgY29uc3Q7CiAg
ICAgQ1N0cmluZyBmb3JtYXRDb25zdGFudChUeXBlLCB1aW50NjRfdCkgY29uc3Q7CisKKyAgICBG
dW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogbV9ibG9jazsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IGY2MDM2YjFiODJkYTJlZmQ4Y2Rj
NzNjODBmOTE1NjA1NThjZjljNmMuLmYyMzgzYmZhMDQ3ZDZmMTlkODdlYmY5ZjZlZDRlZDcxNThi
NzA0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBZaWVsZERhdGEgewotICAgIEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgcG9pbnQgeyAwIH07CisgICAgSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IHBv
aW50IHsgMCB9OwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudCB7IDAgfTsKICAgICBGYXN0
Qml0VmVjdG9yIGxpdmVuZXNzOwogfTsKQEAgLTUyLDE0ICs1MiwxNCBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBWZWN0b3I8WWllbGREYXRhPiBZaWVsZHM7CiAKICAgICBzdHJ1Y3QgR2VuZXJhdG9y
RnJhbWVEYXRhIHsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX3BvaW50Owor
ICAgICAgICBKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbV9wb2ludDsKICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIG1fZHN0OwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZTsKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc3ltYm9sVGFibGU7CiAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBtX2luaXRpYWxWYWx1ZTsKICAgICB9OwogCi0gICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24oQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1
Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bihCeXRlY29kZUdlbmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIFVubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yKiBjb2RlQmxvY2ssIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0
aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCiAgICAgICAgIDogbV9ieXRlY29kZUdlbmVyYXRvcihi
eXRlY29kZUdlbmVyYXRvcikKICAgICAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAg
ICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1feWllbGRzOwogICAgIH0KIAotICAgIEluc3RydWN0aW9u
U3RyZWFtOjpSZWYgZW50ZXJQb2ludCgpIGNvbnN0CisgICAgSlNJbnN0cnVjdGlvblN0cmVhbTo6
UmVmIGVudGVyUG9pbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zLmF0KG1fZW50ZXJQb2ludCk7CiAgICAgfQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVEYXRhOwogICAgIH0KIAotICAgIGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdAorICAgIGNvbnN0IEpTSW5z
dHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9pbnN0cnVjdGlvbnM7CiAgICAgfQpAQCAtMTY3LDEwICsxNjcsMTAgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICBCeXRlY29kZUdlbmVyYXRvciYgbV9ieXRlY29kZUdlbmVyYXRvcjsKLSAg
ICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fZW50ZXJQb2ludDsKKyAgICBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgbV9lbnRlclBvaW50OwogICAgIHN0ZDo6b3B0aW9uYWw8R2VuZXJh
dG9yRnJhbWVEYXRhPiBtX2dlbmVyYXRvckZyYW1lRGF0YTsKICAgICBVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvciogbV9jb2RlQmxvY2s7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1f
aW5zdHJ1Y3Rpb25zOworICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1faW5zdHJ1Y3Rp
b25zOwogICAgIEJ5dGVjb2RlR3JhcGggbV9ncmFwaDsKICAgICBWZWN0b3I8c3RkOjpvcHRpb25h
bDxTdG9yYWdlPj4gbV9zdG9yYWdlczsKICAgICBZaWVsZHMgbV95aWVsZHM7CkBAIC0xODUsNyAr
MTg1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHJ1bihVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5z
dHJ1Y3Rpb25zKQorICAgIHZvaWQgcnVuKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2Rl
QmxvY2ssIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucykKICAgICB7CiAg
ICAgICAgIC8vIFBlcmZvcm0gbW9kaWZpZWQgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5l
IHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhdCB0aGUgbWVyZ2UgcG9pbnRzLgogICAgICAgICAvLyBU
aGlzIHByb2R1Y2VzIHRoZSBjb25zZXJ2YXRpdmUgcmVzdWx0cyBmb3IgdGhlIHF1ZXN0aW9uLCAi
d2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZD8iLgpAQCAtMjg2LDcg
KzI4Niw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgcmV3
cml0ZXIuZXhlY3V0ZSgpOwogfQogCi12b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0
ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvciogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zLCBT
eW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCkKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29k
ZUdlbmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
KiBjb2RlQmxvY2ssIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucywgU3lt
Ym9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXgpCiB7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29k
ZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24oKSkpIHsKICAgICAgICAgZGF0YUxvZ0xuKCJCeXRl
Y29kZXMgYmVmb3JlIGdlbmVyYXRvcmlmaWNhdGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApp
bmRleCA4MzAxZDQwNTdhMzNkMjFiYTM4YzM4YzljOTIwZjU0OTM0ZGJiYjg1Li5jOWYxYTllNTE2
NWI0MTA0ZmY4OTA3MjQ4NjEzNmJhNGY5OTEyMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApA
QCAtMjksMTEgKzI5LDE2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVHZW5l
cmF0b3I7Ci1jbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKIGNsYXNzIFN5bWJvbFRhYmxl
OwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I7CiBjbGFzcyBTeW1ib2xUYWJsZTsK
IAotdm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiwgVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYsIFN5bWJv
bFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4KTsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEluc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlv
bjxKU09wY29kZVRyYWl0cz47Cit1c2luZyBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyID0gSW5z
dHJ1Y3Rpb25TdHJlYW1Xcml0ZXI8SlNJbnN0cnVjdGlvbj47CisKK3ZvaWQgcGVyZm9ybUdlbmVy
YXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRvciYsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yKiwgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR3JhcGguaAppbmRleCBjOGQ0YTUxNjE4Yzc4Yzg0YTMzYjFhYTNiZmMyOWFhZjQ5ODJh
OWUwLi5kMjgzY2I2NWVmMDA3YWI4MTdlZDZhYzI2NjhmMDcwZTQzNzNlMGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTM0LDMxICsz
NCwzMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOwot
CiBjbGFzcyBCeXRlY29kZUdyYXBoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKIHB1YmxpYzoKLSAgICB1c2lu
ZyBCYXNpY0Jsb2Nrc1ZlY3RvciA9IEJ5dGVjb2RlQmFzaWNCbG9jazo6QmFzaWNCbG9ja1ZlY3Rv
cjsKKyAgICB1c2luZyBCYXNpY0Jsb2NrVHlwZSA9IEpTQnl0ZWNvZGVCYXNpY0Jsb2NrOworICAg
IHVzaW5nIEJhc2ljQmxvY2tzVmVjdG9yID0gdHlwZW5hbWUgQmFzaWNCbG9ja1R5cGU6OkJhc2lj
QmxvY2tWZWN0b3I7CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlID0gdHlwZW5hbWUg
QmFzaWNCbG9ja1R5cGU6Okluc3RydWN0aW9uU3RyZWFtVHlwZTsKIAogICAgIHR5cGVkZWYgV1RG
OjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I8Qnl0ZWNvZGVHcmFwaD4gaXRlcmF0b3I7CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLSAgICBpbmxpbmUgQnl0ZWNvZGVH
cmFwaChDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mKTsKKyAgICBpbmxp
bmUgQnl0ZWNvZGVHcmFwaChDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1U
eXBlJik7CiAKICAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8QmFzaWNCbG9ja3NWZWN0b3I6OnJldmVy
c2VfaXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UobV9iYXNpY0Jsb2Nrcy5yYmVnaW4oKSwgbV9i
YXNpY0Jsb2Nrcy5yZW5kKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldChjb25zdCBCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQorICAgIHN0YXRpYyBib29sIGJsb2Nr
Q29udGFpbnNCeXRlY29kZU9mZnNldChjb25zdCBCYXNpY0Jsb2NrVHlwZSYgYmxvY2ssIHR5cGVu
YW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsK
ICAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2subGVhZGVyT2Zmc2V0KCk7CiAg
ICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVP
ZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay50b3RhbExlbmd0aCgpOwogICAgIH0KIAotICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQorICAgIEJhc2ljQmxvY2tUeXBl
KiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHR5cGVuYW1lIEluc3RydWN0aW9uU3Ry
ZWFtVHlwZTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKICAgICAgICAgLyoKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsr
KSB7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAqLwogCi0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmFzaWNCbG9jayA9IGFwcHJv
eGltYXRlQmluYXJ5U2VhcmNoPEJ5dGVjb2RlQmFzaWNCbG9jaywgdW5zaWduZWQ+KG1fYmFzaWNC
bG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmFzaWNCbG9jaykgeyByZXR1cm4gYmFzaWNCbG9jay0+bGVhZGVyT2Zmc2V0
KCk7IH0pOworICAgICAgICBCYXNpY0Jsb2NrVHlwZSogYmFzaWNCbG9jayA9IGFwcHJveGltYXRl
QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2tUeXBlLCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9i
YXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoQmFzaWNCbG9ja1R5cGUqIGJh
c2ljQmxvY2spIHsgcmV0dXJuIGJhc2ljQmxvY2stPmxlYWRlck9mZnNldCgpOyB9KTsKICAgICAg
ICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCiAgICAgICAgIGlm
IChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKmJhc2ljQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
KSkKICAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrOwpAQCAtODYsMjMgKzg2LDIzIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICZiYXNpY0Jsb2NrWzFdOwogICAgIH0KIAotICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgbGVhZGVyT2Zmc2V0KQorICAgIEJhc2ljQmxvY2tUeXBlKiBmaW5kQmFz
aWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQodHlwZW5hbWUgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlOjpP
ZmZzZXQgbGVhZGVyT2Zmc2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRyeUJpbmFyeVNlYXJj
aDxCeXRlY29kZUJhc2ljQmxvY2ssIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxv
Y2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBiYXNpY0Js
b2NrKSB7IHJldHVybiBiYXNpY0Jsb2NrLT5sZWFkZXJPZmZzZXQoKTsgfSk7CisgICAgICAgIHJl
dHVybiB0cnlCaW5hcnlTZWFyY2g8QmFzaWNCbG9ja1R5cGUsIHVuc2lnbmVkPihtX2Jhc2ljQmxv
Y2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoQmFzaWNCbG9ja1R5
cGUqIGJhc2ljQmxvY2spIHsgcmV0dXJuIGJhc2ljQmxvY2stPmxlYWRlck9mZnNldCgpOyB9KTsK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Jsb2Nr
cy5zaXplKCk7IH0KLSAgICBCeXRlY29kZUJhc2ljQmxvY2smIGF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdCB7IHJldHVybiBjb25zdF9jYXN0PEJ5dGVjb2RlR3JhcGgqPih0aGlzKS0+bV9iYXNpY0Js
b2Nrc1tpbmRleF07IH0KLSAgICBCeXRlY29kZUJhc2ljQmxvY2smIG9wZXJhdG9yW10odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQorICAgIEJhc2ljQmxvY2tUeXBl
JiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxCeXRlY29kZUdy
YXBoKj4odGhpcyktPm1fYmFzaWNCbG9ja3NbaW5kZXhdOyB9CisgICAgQmFzaWNCbG9ja1R5cGUm
IG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQog
CiAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpdGVyYXRvcigqdGhpcywgMCk7IH0KICAg
ICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBpdGVyYXRvcigqdGhpcywgc2l6ZSgpKTsgfQotICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayYgZmlyc3QoKSB7IHJldHVybiBhdCgwKTsgfQotICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayYgbGFzdCgpIHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CisgICAgQmFz
aWNCbG9ja1R5cGUmIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KKyAgICBCYXNpY0Jsb2NrVHlw
ZSYgbGFzdCgpIHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CiAKIAogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgotICAgIHZvaWQgZHVtcChDb2RlQmxvY2tUeXBlKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPE9wZXJhbmRzPFNwZWN1bGF0ZWRUeXBlPj4+IHNwZWN1bGF0aW9uQXRIZWFkLCBQ
cmludFN0cmVhbSYgcHJpbnRlciA9IFdURjo6ZGF0YUZpbGUoKSkKKyAgICB2b2lkIGR1bXAoQ29k
ZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbVR5cGUmIGluc3Ry
dWN0aW9ucywgc3RkOjpvcHRpb25hbDxWZWN0b3I8T3BlcmFuZHM8U3BlY3VsYXRlZFR5cGU+Pj4g
c3BlY3VsYXRpb25BdEhlYWQsIFByaW50U3RyZWFtJiBwcmludGVyID0gV1RGOjpkYXRhRmlsZSgp
KQogICAgIHsKICAgICAgICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrVHlwZT46
OmR1bXBHcmFwaChjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgKnRoaXMsIHNwZWN1bGF0aW9uQXRI
ZWFkLCBwcmludGVyKTsKICAgICB9CkBAIC0xMTMsOCArMTEzLDggQEAgcHJpdmF0ZToKIAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgotQnl0ZWNvZGVHcmFwaDo6Qnl0ZWNvZGVH
cmFwaChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBp
bnN0cnVjdGlvbnMpCi0gICAgOiBtX2Jhc2ljQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29t
cHV0ZShjb2RlQmxvY2ssIGluc3RydWN0aW9ucykpCitCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdy
YXBoKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBl
JiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2Jhc2ljQmxvY2tzKEJhc2ljQmxvY2tUeXBlOjpjb21w
dXRlKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKSkKIHsKICAgICBBU1NFUlQobV9iYXNpY0Jsb2Nr
cy5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBlODZjZTE4NzcxMDc1OGY2
ODNhMTI3Yzg5ZDE2MmI2NWZiNDQ1Y2VlLi4yMDdlNDYyNzM2NzhiOTEyM2ZiYjgwNjdjZjgyMjUx
YTBiNjAyZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtNTAsMTAgKzUwLDEwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlRnVsbExpdmVuCiAgICAgc2l6ZV90IHNpemUgPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLnNpemUoKTsKICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8RnVsbEJ5dGVj
b2RlTGl2ZW5lc3M+KHNpemUpOwogCi0gICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2Nr
IDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICBmb3IgKGF1dG8m
IGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAg
aWYgKGJsb2NrLmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgb3V0ID0gYmxvY2sub3V0KCk7CiAK
ICAgICAgICAgYXV0byB1c2UgPSBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CkBAIC05Niw5ICs5
Niw5IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIAogICAgIHVuc2lnbmVkIG51bWJlck9mQmxvY2tzID0gbV9ncmFwaC5z
aXplKCk7CiAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IHByZWRlY2Vzc29ycyhudW1iZXJPZkJs
b2Nrcyk7Ci0gICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrIDogbV9ncmFwaCkKKyAg
ICBmb3IgKGF1dG8mIGJsb2NrIDogbV9ncmFwaCkKICAgICAgICAgcHJlZGVjZXNzb3JzW2Jsb2Nr
LmluZGV4KCldLnJlc2l6ZShudW1iZXJPZkJsb2Nrcyk7Ci0gICAgZm9yIChCeXRlY29kZUJhc2lj
QmxvY2smIGJsb2NrIDogbV9ncmFwaCkgeworICAgIGZvciAoYXV0byYgYmxvY2sgOiBtX2dyYXBo
KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgc3VjY2Vzc29ySW5kZXggOiBibG9jay5zdWNjZXNz
b3JzKCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJsb2NrSW5kZXggPSBibG9jay5pbmRleCgp
OwogICAgICAgICAgICAgcHJlZGVjZXNzb3JzW3N1Y2Nlc3NvckluZGV4XVtibG9ja0luZGV4XSA9
IHRydWU7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmR1bXBSZXN1bHRzKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jayA6IG1fZ3JhcGgpIHsKKyAgICBmb3Ig
KGF1dG8mIGJsb2NrIDogbV9ncmFwaCkgewogICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBi
YXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssICZibG9j
aywgYmxvY2subGVhZGVyT2Zmc2V0KCksIGJsb2NrLnRvdGFsTGVuZ3RoKCkpOwogCiAgICAgICAg
IGRhdGFMb2dGKCJQcmVkZWNlc3NvcnM6Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZTUwOTQ3
NWE5OWIxZWRlOTRhYTkyMjhhOTU1Nzg2M2E3ZmFhNTIyZC4uODE2OTJhZTM0NzhmMTczM2RhY2Y0
NGFiMzBkYWRhYzdhNWQ5OTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtNTEsMjMgKzUxLDIz
IEBAIGVudW0gY2xhc3MgTGl2ZW5lc3NDYWxjdWxhdGlvblBvaW50IDogdWludDhfdCB7CiBjbGFz
cyBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb24gewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3I+Ci0gICAgc3RhdGljIHZv
aWQgc3RlcE92ZXJCeXRlY29kZUluZGV4VXNlKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVj
dGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5j
dG9yJik7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4VXNlKENvZGVCbG9j
a1R5cGUqLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVj
b2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2Rl
QmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgotICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVy
Qnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcihDb2RlQmxvY2tUeXBlKiwgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3Qg
VXNlRnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUlu
RXhjZXB0aW9uSGFuZGxlcihDb2RlQmxvY2tUeXBlKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVh
bSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJik7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4K
LSAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhEZWYoQ29kZUJsb2NrVHlwZSos
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgs
IGNvbnN0IERlZkZ1bmN0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5k
ZXhEZWYoQ29kZUJsb2NrVHlwZSosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29k
ZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgRGVmRnVuY3RvciYpOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUg
RGVmRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJs
b2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVj
b2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImLCBjb25zdCBEZWZGdW5jdG9yJik7CisgICAgc3Rh
dGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5cGUqLCBjb25zdCBKU0lu
c3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVz
ZUZ1bmN0b3ImLCBjb25zdCBEZWZGdW5jdG9yJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2RlQmxvY2tUeXBlPgotICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJs
b2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVj
b2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIG91dCk7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJJ
bnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIEJ5
dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiBvdXQpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgot
ICAgIHN0YXRpYyBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJs
b2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUJh
c2ljQmxvY2smLCBCeXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOworICAgIHN0
YXRpYyBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlw
ZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBKU0J5dGVjb2RlQmFzaWNC
bG9jayYsIEJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCk7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+Ci0gICAg
c3RhdGljIGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2tUeXBlKiwg
Y29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlQmFzaWNCbG9jayYp
OworICAgIHN0YXRpYyBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2Nr
VHlwZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBKU0J5dGVjb2RlQmFz
aWNCbG9jayYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb25zPgogICAgIHN0YXRpYyBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5m
b0F0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVj
b2RlR3JhcGgmLCBCeXRlY29kZUluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
CmluZGV4IDY0OGM0YjVlOTYzMDg1MWQ4OTgxNzFkMWQwNzc1NjYyNGVhNjU1NWMuLjU2NzY0Y2U2
MWVmMGQ0ODRjOGIzYTU1YzQ2YWZhNGZmYjFjMjgwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLWlubGluZSB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9j
a1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywg
Qnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgRGVmRnVu
Y3RvciYgZGVmKQoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVw
T3ZlckJ5dGVjb2RlSW5kZXhEZWYoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBKU0lu
c3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICBhdXRvKiBp
bnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXgoCkBAIC03MSw3ICs3MSw3IEBAIGlubGluZSB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENv
ZGVCbG9ja1R5cGUqCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVu
YW1lIFVzZUZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246
OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKK2lubGluZSB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlKENv
ZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1
Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25z
dCBVc2VGdW5jdG9yJiB1c2UpCiB7CiAgICAgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlv
bnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUlu
ZGV4KApAQCAtODMsMTIgKzgzLDEyIEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9w
YWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlKENvZGVCbG9ja1R5cGUqCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3I+Ci1pbmxp
bmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRl
eFVzZUluRXhjZXB0aW9uSGFuZGxlcihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYgdXNlKQoraW5saW5lIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhh
bmRsZXIoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFt
JiwgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgY29u
c3QgVXNlRnVuY3RvciYgdXNlKQogewotICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhh
bmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKKyAgICAvLyBJZiB3
ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxl
cyBvZiB0aGUKICAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBp
biB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgQnl0ZWNvZGVJbmRleC4KICAgICBpZiAo
YXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCkpIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBn
cmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFyZ2V0KTsKKyAg
ICAgICAgYXV0byogaGFuZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVy
T2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7CiAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwog
ICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwogICAgIH0KQEAg
LTk3LDcgKzk3LDcgQEAgaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpz
dGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmQKIC8vIFNpbXBsaWZpZWQgaW50
ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBh
bmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKIC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUg
dXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0
b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ss
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdy
YXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwg
Y29uc3QgRGVmRnVuY3RvciYgZGVmKQoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBj
b25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdy
YXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwg
Y29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRl
cyB0aGUgQnl0ZWNvZGVJbmRleCBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZp
cnN0IHVzZSBvcGVyYW5kcyBhbmQKICAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBs
b2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQg
ZGVmIHRoZSBzYW1lCkBAIC0xMjAsNyArMTIwLDcgQEAgaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSogY28K
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLWlubGluZSB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBl
KiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVj
b2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0
b3ImIG91dCkKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92
ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIGF1dG8gbnVtYmVy
T2ZDaGVja3BvaW50cyA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZUluZGV4KS0+bnVtYmVyT2ZD
aGVja3BvaW50cygpOwogICAgIGZvciAoQ2hlY2twb2ludCBjaGVja3BvaW50ID0gbnVtYmVyT2ZD
aGVja3BvaW50czsgY2hlY2twb2ludC0tOykgewpAQCAtMTM4LDcgKzEzOCw3IEBAIGlubGluZSB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlvbihDb2Rl
QmxvY2tUeXBlKiBjb2RlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5
cGVuYW1lIEluc3RydWN0aW9ucz4KLWlubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdh
dGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBj
b2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaywgQnl0ZWNvZGVJbmRleCB0YXJnZXRJ
bmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQoraW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGVCbG9j
a1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIEJ5dGVj
b2RlR3JhcGgmIGdyYXBoLCBKU0J5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2ssIEJ5dGVjb2RlSW5k
ZXggdGFyZ2V0SW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIWJs
b2NrLmlzRXhpdEJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2suaXNFbnRyeUJsb2NrKCkpOwpA
QCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2RlCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4KLWlubGluZSBi
b29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
bG9jayhDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1
Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaykK
K2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
cyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgSlNCeXRlY29kZUJhc2ljQmxv
Y2smIGJsb2NrKQogewogICAgIGlmIChibG9jay5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLmlzRW50
cnlCbG9jaygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzAsNyArMTcwLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgogaW5s
aW5lIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZlbmVz
c0luZm9BdEluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYnl0ZWNvZGVJbmRl
eC5jaGVja3BvaW50KCksICJnZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uIGNhbid0IGJlIHVz
ZWQgdG8gYXNrIHF1ZXN0aW9ucyBhYm91dCBjaGVja3BvaW50cyIpOwotICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpOworICAgIGF1dG8qIGJsb2NrID0gZ3JhcGguZmluZEJhc2lj
QmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsKICAgICBBU1NF
UlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NF
UlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+CiBpbmxpbmUgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnJ1bkxpdmVuZXNzRml4cG9pbnQoQ29kZUJs
b2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0
ZWNvZGVHcmFwaCYgZ3JhcGgpCiB7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSBj
b2RlQmxvY2stPm51bUNhbGxlZUxvY2FscygpOwotICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2Nr
JiBibG9jayA6IGdyYXBoKSB7CisgICAgZm9yIChhdXRvJiBibG9jayA6IGdyYXBoKSB7CiAgICAg
ICAgIGJsb2NrLmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICAgICAgYmxvY2su
b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICAgICAgYmxvY2suaW4oKS5jbGVh
ckFsbCgpOwpAQCAtMTkyLDE3ICsxOTIsMTcgQEAgaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uOjpydW5MaXZlbmVzc0ZpeHBvaW50KENvZGVCbG9ja1R5cGUqIGNvZGUKICAg
ICB9CiAKICAgICBib29sIGNoYW5nZWQ7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBsYXN0Qmxv
Y2sgPSBncmFwaC5sYXN0KCk7CisgICAgYXV0byYgbGFzdEJsb2NrID0gZ3JhcGgubGFzdCgpOwog
ICAgIGxhc3RCbG9jay5pbigpLmNsZWFyQWxsKCk7CiAgICAgbGFzdEJsb2NrLm91dCgpLmNsZWFy
QWxsKCk7CiAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CiAgICAgbmV3T3V0LnJlc2l6ZShsYXN0
QmxvY2sub3V0KCkubnVtQml0cygpKTsKICAgICBkbyB7CiAgICAgICAgIGNoYW5nZWQgPSBmYWxz
ZTsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrIDogZ3JhcGguYmFzaWNC
bG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgICAgIGZvciAoYXV0byYgYmxvY2sgOiBncmFw
aC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVh
ckFsbCgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBibG9ja0luZGV4IDogYmxvY2suc3Vj
Y2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBzdWNjZXNz
b3IgPSBncmFwaFtibG9ja0luZGV4XTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzdWNjZXNzb3Ig
PSBncmFwaFtibG9ja0luZGV4XTsKICAgICAgICAgICAgICAgICBuZXdPdXQgfD0gc3VjY2Vzc29y
LmluKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBibG9jay5vdXQoKSA9IG5ld091dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3Jp
dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVy
LmNwcAppbmRleCA4MTAyNmFiM2M3ODRmMWFjM2UxNDQ0MDAxZjM3MmI4MmQ0Y2FiZjdlLi5mZTc1
N2MwYjgwNzk3Yjc5ZWVhNTVjYzM4YmFiY2RhMDRjNmQyYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldHNJbkZyYWdtZW50
KHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNlcnRpCiAgICAgfQogfQogCi12b2lkIEJ5dGVjb2Rl
UmV3cml0ZXI6Omluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQgaW5zZXJ0aW9uUG9pbnQsIEluY2x1
ZGVCcmFuY2ggaW5jbHVkZUJyYW5jaCwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImJiB3cml0ZXIp
Cit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQgaW5zZXJ0
aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJyYW5jaCwgSlNJbnN0cnVjdGlvblN0cmVh
bVdyaXRlciYmIHdyaXRlcikKIHsKICAgICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQucG9zaXRpb24g
PT0gUG9zaXRpb246OkJlZm9yZSB8fCBpbnNlcnRpb25Qb2ludC5wb3NpdGlvbiA9PSBQb3NpdGlv
bjo6QWZ0ZXIpOwogICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsKQEAgLTExNCwx
MSArMTE0LDExIEBAIHZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldHMoKQog
ICAgIGF1dG8gb3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBtX2NvZGVCbG9jay0+cmVwbGFjZU91dE9m
TGluZUp1bXBUYXJnZXRzKCk7CiAKICAgICBpbnQgb2Zmc2V0ID0gMDsKLSAgICBmb3IgKEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQgaSA9IDA7IGkgPCBtX3dyaXRlci5zaXplKCk7KSB7CisgICAg
Zm9yIChKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgaSA9IDA7IGkgPCBtX3dyaXRlci5zaXpl
KCk7KSB7CiAgICAgICAgIGludCBiZWZvcmUgPSAwOwogICAgICAgICBpbnQgYWZ0ZXIgPSAwOwog
ICAgICAgICBpbnQgcmVtb3ZlID0gMDsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnRJbnNlcnRpb24g
IT0gbV9pbnNlcnRpb25zLmVuZCgpICYmIHN0YXRpY19jYXN0PEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQ+KGN1cnJlbnRJbnNlcnRpb24tPmluZGV4LmJ5dGVjb2RlT2Zmc2V0KSA9PSBpKSB7Cisg
ICAgICAgIHdoaWxlIChjdXJyZW50SW5zZXJ0aW9uICE9IG1faW5zZXJ0aW9ucy5lbmQoKSAmJiBz
dGF0aWNfY2FzdDxKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+KGN1cnJlbnRJbnNlcnRpb24t
PmluZGV4LmJ5dGVjb2RlT2Zmc2V0KSA9PSBpKSB7CiAgICAgICAgICAgICBhdXRvIHNpemUgPSBj
dXJyZW50SW5zZXJ0aW9uLT5sZW5ndGgoKTsKICAgICAgICAgICAgIGlmIChjdXJyZW50SW5zZXJ0
aW9uLT50eXBlID09IEluc2VydGlvbjo6VHlwZTo6UmVtb3ZlKQogICAgICAgICAgICAgICAgIHJl
bW92ZSArPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVJld3JpdGVyLmgKaW5kZXggMGRjZWJlNzkzOTBiNGZmMGI1ZDhiYjAyYjU1MmY4ZmUyNDZh
MmU1YS4uMDI2NDk2N2ZiNGZlN2JiY2RmNTljMjU2NWE2ZWZlZjEwZWU5ZWQ3MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCkBAIC05
OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaW50MzJfdCBieXRlY29kZU9mZnNldDsKICAg
ICAgICAgUG9zaXRpb24gcG9zaXRpb247CiAKLSAgICAgICAgSW5zZXJ0aW9uUG9pbnQoSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQsIFBvc2l0aW9uIHBvcykKKyAgICAgICAgSW5zZXJ0
aW9uUG9pbnQoSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCwgUG9zaXRpb24gcG9z
KQogICAgICAgICAgICAgOiBieXRlY29kZU9mZnNldChvZmZzZXQpCiAgICAgICAgICAgICAsIHBv
c2l0aW9uKHBvcykKICAgICAgICAgewpAQCAtMTMyLDE0ICsxMzIsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgVHlwZSB0eXBlOwogICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2g7CiAg
ICAgICAgIHNpemVfdCByZW1vdmVMZW5ndGg7Ci0gICAgICAgIEluc3RydWN0aW9uU3RyZWFtV3Jp
dGVyIGluc3RydWN0aW9uczsKKyAgICAgICAgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBpbnN0
cnVjdGlvbnM7CiAgICAgfTsKIAogcHVibGljOgogICAgIGNsYXNzIEZyYWdtZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShGcmFnbWVudCk7CiAgICAgcHVibGljOgotICAgICAgICBGcmFn
bWVudChCeXRlY29kZUdlbmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyJiB3cml0ZXIsIEluY2x1ZGVCcmFuY2gmIGluY2x1ZGVCcmFuY2gpCisgICAgICAg
IEZyYWdtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgSlNJbnN0cnVj
dGlvblN0cmVhbVdyaXRlciYgd3JpdGVyLCBJbmNsdWRlQnJhbmNoJiBpbmNsdWRlQnJhbmNoKQog
ICAgICAgICAgICAgOiBtX2J5dGVjb2RlR2VuZXJhdG9yKGJ5dGVjb2RlR2VuZXJhdG9yKQogICAg
ICAgICAgICAgLCBtX3dyaXRlcih3cml0ZXIpCiAgICAgICAgICAgICAsIG1faW5jbHVkZUJyYW5j
aChpbmNsdWRlQnJhbmNoKQpAQCAtMTcxLDExICsxNzEsMTEgQEAgcHVibGljOgogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7Ci0g
ICAgICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX3dyaXRlcjsKKyAgICAgICAgSlNJbnN0
cnVjdGlvblN0cmVhbVdyaXRlciYgbV93cml0ZXI7CiAgICAgICAgIEluY2x1ZGVCcmFuY2gmIG1f
aW5jbHVkZUJyYW5jaDsKICAgICB9OwogCi0gICAgQnl0ZWNvZGVSZXdyaXRlcihCeXRlY29kZUdl
bmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYg
d3JpdGVyKQorICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2Rl
R2VuZXJhdG9yLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IqIGNvZGVCbG9jaywgSlNJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgd3JpdGVyKQogICAgICAg
ICA6IG1fYnl0ZWNvZGVHZW5lcmF0b3IoYnl0ZWNvZGVHZW5lcmF0b3IpCiAgICAgICAgICwgbV9n
cmFwaChncmFwaCkKICAgICAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCkBAIC0xODQsMTAg
KzE4NCwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRnVuY3Rpb24+
Ci0gICAgdm9pZCBpbnNlcnRGcmFnbWVudEJlZm9yZShjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6
UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgdm9pZCBpbnNlcnRGcmFn
bWVudEJlZm9yZShjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBG
dW5jdGlvbiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJy
YW5jaCA9IEluY2x1ZGVCcmFuY2g6Ok5vOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
ciB3cml0ZXI7CisgICAgICAgIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgd3JpdGVyOwogICAg
ICAgICBGcmFnbWVudCBmcmFnbWVudChtX2J5dGVjb2RlR2VuZXJhdG9yLCB3cml0ZXIsIGluY2x1
ZGVCcmFuY2gpOwogICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7CiAgICAgICAgIGZyYWdtZW50
LmFsaWduKCk7CkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRnVuY3Rpb24+Ci0gICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbiwg
c2l6ZV90IGFsaWduQ29uZ3J1ZW50ID0gMCkKKyAgICB2b2lkIGluc2VydEZyYWdtZW50QWZ0ZXIo
Y29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVu
Y3Rpb24sIHNpemVfdCBhbGlnbkNvbmdydWVudCA9IDApCiAgICAgewogICAgICAgICBJbmNsdWRl
QnJhbmNoIGluY2x1ZGVCcmFuY2ggPSBJbmNsdWRlQnJhbmNoOjpObzsKLSAgICAgICAgSW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXIgd3JpdGVyOworICAgICAgICBKU0luc3RydWN0aW9uU3RyZWFtV3Jp
dGVyIHdyaXRlcjsKICAgICAgICAgRnJhZ21lbnQgZnJhZ21lbnQobV9ieXRlY29kZUdlbmVyYXRv
ciwgd3JpdGVyLCBpbmNsdWRlQnJhbmNoKTsKICAgICAgICAgZnVuY3Rpb24oZnJhZ21lbnQpOwog
ICAgICAgICBmcmFnbWVudC5hbGlnbihhbGlnbkNvbmdydWVudCk7CkBAIC0yMDYsNyArMjA2LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgotICAgIHZv
aWQgcmVwbGFjZUJ5dGVjb2RlV2l0aEZyYWdtZW50KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpS
ZWYmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB2b2lkIHJlcGxhY2VCeXRl
Y29kZVdpdGhGcmFnbWVudChjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0
aW9uLCBGdW5jdGlvbiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIC8vIE5vdGU6IFRoaXMgZnVu
Y3Rpb24gcHJlc2VydmVzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHN1YnNlcXVlbnQgYnl0ZWNvZGUg
KG9uIHRhcmdldHMgd2hlcmUgdGhpcyBtYXR0ZXJzKQogICAgICAgICBtX2luc2VydGlvbnMuYXBw
ZW5kKEluc2VydGlvbiB7IEluc2VydGlvblBvaW50KGluc3RydWN0aW9uLm9mZnNldCgpLCBQb3Np
dGlvbjo6T3JpZ2luYWxCeXRlY29kZVBvaW50KSwgSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUsIElu
Y2x1ZGVCcmFuY2g6Ok5vLCBpbnN0cnVjdGlvbi0+c2l6ZSgpLCB7IH0gfSk7CkBAIC0yMTcsMTIg
KzIxNywxMiBAQCBwdWJsaWM6CiAKICAgICBCeXRlY29kZUdyYXBoJiBncmFwaCgpIHsgcmV0dXJu
IG1fZ3JhcGg7IH0KIAotICAgIGludDMyX3QgYWRqdXN0QWJzb2x1dGVPZmZzZXQoSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBhYnNvbHV0ZU9mZnNldCkKKyAgICBpbnQzMl90IGFkanVzdEFic29s
dXRlT2Zmc2V0KEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBhYnNvbHV0ZU9mZnNldCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0KEluc2VydGlvblBvaW50KDAsIFBv
c2l0aW9uOjpFbnRyeVBvaW50KSwgSW5zZXJ0aW9uUG9pbnQoYWJzb2x1dGVPZmZzZXQsIFBvc2l0
aW9uOjpMYWJlbFBvaW50KSk7CiAgICAgfQogCi0gICAgaW50MzJfdCBhZGp1c3RKdW1wVGFyZ2V0
KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29kZU9mZnNldCwgaW50MzJf
dCBvcmlnaW5hbEp1bXBUYXJnZXQpCisgICAgaW50MzJfdCBhZGp1c3RKdW1wVGFyZ2V0KEpTSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0LCBpbnQzMl90IG9y
aWdpbmFsSnVtcFRhcmdldCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0
KEluc2VydGlvblBvaW50KG9yaWdpbmFsQnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpMYWJlbFBv
aW50KSwgSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxKdW1wVGFyZ2V0LCBQb3NpdGlvbjo6TGFiZWxQ
b2ludCkpOwogICAgIH0KQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGp1
c3RKdW1wVGFyZ2V0cygpOwogCiBwcml2YXRlOgotICAgIHZvaWQgaW5zZXJ0SW1wbChJbnNlcnRp
b25Qb2ludCwgSW5jbHVkZUJyYW5jaCwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImJiBmcmFnbWVu
dCk7CisgICAgdm9pZCBpbnNlcnRJbXBsKEluc2VydGlvblBvaW50LCBJbmNsdWRlQnJhbmNoLCBK
U0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiYgZnJhZ21lbnQpOwogCiAgICAgZnJpZW5kIGNsYXNz
IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOwogICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24o
KTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogICAgIEJ5dGVjb2RlR2VuZXJhdG9yJiBt
X2J5dGVjb2RlR2VuZXJhdG9yOwogICAgIEJ5dGVjb2RlR3JhcGgmIG1fZ3JhcGg7CiAgICAgVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIG1fY29kZUJsb2NrOwotICAgIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyJiBtX3dyaXRlcjsKKyAgICBKU0luc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX3dy
aXRlcjsKICAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRl
eCBmYjU2ZDRjYmI1YzllODcyYTk3NGY1MjU0ZTYxYWIwZjBlOTdmZGZiLi5kOWM3MmIxOGQ5YTdl
N2ZjMzhjMzFhZjEzOWNmZGE1MmM4ZDM0YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZGVmaW5lIFVTRVMgVVNFU19PUl9ERUZTCiAjZGVmaW5lIERFRlMgVVNFU19P
Ul9ERUZTCiAKLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVn
aXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBDaGVj
a3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rl
cik+JiBmdW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1
YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFs
UmVnaXN0ZXIpPiYgZnVuY3RvcikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0
aW9uLT5vcGNvZGVJRCgpOwogCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJ
bnN0cnUKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1
bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9p
bnQgY2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4m
IGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQg
bnVtVmFycywgY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENoZWNrcG9pbnQgY2hl
Y2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0
b3IpCiB7CiAKICAgICBhdXRvIGRlZkF0ID0gWyZdIChDaGVja3BvaW50IHRhcmdldCwgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggN2I1MmEzOTBlY2M1MzhmY2I2YjYxYjc1NGMwN2JkMTM4
M2U3NGJmZi4uOTg4ZTZjMzA2ODk4ZjE4YTc1MzZlYzJhYTIyNzQ5YTZhODk1YjExMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMy
LDExICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBDaGVj
a3BvaW50LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYpOwotdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkLCBjb25zdCBJbnN0cnVj
dGlvbiosIENoZWNrcG9pbnQsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rl
cik+Jik7Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lz
dGVyLCBjb25zdCBKU0luc3RydWN0aW9uKiwgQ2hlY2twb2ludCwgY29uc3QgU2NvcGVkTGFtYmRh
PHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mKTsKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUlu
ZGV4SW1wbCh1bnNpZ25lZCwgY29uc3QgSlNJbnN0cnVjdGlvbiosIENoZWNrcG9pbnQsIGNvbnN0
IFNjb3BlZExhbWJkYTx2b2lkKFZpcnR1YWxSZWdpc3Rlcik+Jik7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
SW5kZXgoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBD
aGVja3BvaW50IGNoZWNrcG9pbnQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVJbmRleChCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlE
KCk7CiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIChjb2RlQmxvY2stPndhc0NvbXBp
bGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSB8fCBjb2RlQmxvY2stPnVzZXNDYWxsRXZhbCgpKSAm
JiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCkBAIC00Niw3ICs0Niw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXgoQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBDaGVja3BvaW50IGNo
ZWNrcG9pbnQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVJbmRleChCbG9jayogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgQ2hlY2twb2ludCBjaGVja3BvaW50LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewog
ICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwoY29kZUJsb2NrLT5udW1WYXJzKCks
IGluc3RydWN0aW9uLCBjaGVja3BvaW50LCBzY29wZWRMYW1iZGE8dm9pZChWaXJ0dWFsUmVnaXN0
ZXIpPihmdW5jdG9yKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDBlNTc5ZjkyOTAzYjhjOGVhNzc1NTYxMzZkNmU1MTZhMWU0Y2E2ZjIu
LmIzNzljOTdjOWRlOTdkNzBmZjRmMDkxN2Q3MjEwNjg2ZmJkNGI4NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgIENvZGVC
bG9ja0J5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBHcmFwaCh0aGlzLCBpbnN0cnVjdGlv
bnMoKSwgZ3JhcGgsIG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBp
dCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBp
dCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlcjxD
b2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBpdCwgc3RhdHVzTWFwKTsKIH0KQEAg
LTQ3NCwxMCArNDc0LDExIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGJyZWFr
OyBcCiAgICAgfQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3Ry
ZWFtID0gaW5zdHJ1Y3Rpb25zKCk7CisgICAgY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb25TdHJlYW0g
PSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5z
dHJ1Y3Rpb25TdHJlYW0pIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlv
bi0+b3Bjb2RlSUQoKTsKLSAgICAgICAgbV9ieXRlY29kZUNvc3QgKz0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CisgICAgICAgIHN0YXRpY19hc3NlcnQoT3Bjb2RlSURXaWR0aEJ5U2l6ZTxKU09w
Y29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTMyPjo6b3Bjb2RlSURTaXplID09IDEpOworICAg
ICAgICBtX2J5dGVjb2RlQ29zdCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXSArIDE7CiAgICAg
ICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxl
KQogICAgICAgICBMSU5LKE9wR2V0UHJpdmF0ZU5hbWUsIHByb2ZpbGUpCkBAIC0yMDgwLDcgKzIw
ODEsNyBAQCB2b2lkIENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVJbmRleChC
eXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGludAogCiBib29sIENvZGVCbG9jazo6aGFzT3BE
ZWJ1Z0ZvckxpbmVBbmRDb2x1bW4odW5zaWduZWQgbGluZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gY29sdW1uKQogewotICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvblN0
cmVhbSA9IGluc3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1dG8mIGluc3RydWN0aW9uU3RyZWFt
ID0gaW5zdHJ1Y3Rpb25zKCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IGluc3RydWN0aW9u
U3RyZWFtKSB7CiAgICAgICAgIGlmIChpdC0+aXM8T3BEZWJ1Zz4oKSkgewogICAgICAgICAgICAg
aW50IHVudXNlZDsKQEAgLTMwNzIsNyArMzA3Myw3IEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpZnlM
ZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiAgICAgICAgIHJldHVybiBzeW1ib2xUYWJsZS0+Y29udGFp
bnMobG9ja2VyLCB1aWQpOwogICAgIH07CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYg
aW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKKyAgICBjb25zdCBhdXRvJiBpbnN0
cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOwogICAgIGZvciAoY29uc3QgYXV0byYgaW5z
dHJ1Y3Rpb24gOiBpbnN0cnVjdGlvblN0cmVhbSkgewogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CkBAIC0zMjYyLDggKzMyNjMsOCBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUoKQogICAgICAg
ICAgICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgCi0g
ICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtID0gaW5zdHJ1Y3Rp
b25zKCk7CisKKyAgICBjb25zdCBhdXRvJiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9u
cygpOwogICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb24gOiBpbnN0cnVjdGlvblN0cmVh
bSkgewogICAgICAgICBPcGNvZGVJRCBvcGNvZGUgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsK
ICAgICAgICAgaWYgKCEhYmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYW5kbGVyRm9yQnl0ZWNvZGVJ
bmRleChCeXRlY29kZUluZGV4KGluc3RydWN0aW9uLm9mZnNldCgpKSkpIHsKQEAgLTMzMTEsMTMg
KzMzMTIsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OnNldFN0ZXBwaW5nTW9kZShDb2RlQmxvY2s6OlN0
ZXBwaW5nTW9kZSBtb2RlKQogICAgICAgICBqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVU
b0RlYnVnZ2VyU3RlcHBpbmcpOwogfQogCi1pbnQgQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zm
c2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykKK2ludCBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBP
ZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgaW50IG9mZnNldCA9IGJ5dGVj
b2RlT2Zmc2V0KHBjKTsKICAgICByZXR1cm4gbV91bmxpbmtlZENvZGUtPm91dE9mTGluZUp1bXBP
ZmZzZXQob2Zmc2V0KTsKIH0KIAotY29uc3QgSW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6b3V0T2ZM
aW5lSnVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCitjb25zdCBKU0luc3RydWN0aW9u
KiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMp
CiB7CiAgICAgaW50IG9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0KHBjKTsKICAgICBpbnQgdGFyZ2V0
ID0gbV91bmxpbmtlZENvZGUtPm91dE9mTGluZUp1bXBPZmZzZXQob2Zmc2V0KTsKQEAgLTMzMzQs
NyArMzMzNSw3IEBAIFVuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5CiAgICAgcmV0dXJuIHVuYXJ5QXJp
dGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSku
cHRyKCkpOwogfQogCi1CaW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YmluYXJ5QXJpdGhQ
cm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorQmluYXJ5QXJpdGhQcm9maWxlKiBD
b2RlQmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBj
KQogewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKICAgICBjYXNlIG9wX2FkZDoKQEAg
LTMzNTIsNyArMzM1Myw3IEBAIEJpbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVVuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9j
azo6dW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBKU0luc3RydWN0aW9uKiBwYykKIHsKICAg
ICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7CiAgICAgY2FzZSBvcF9uZWdhdGU6CkBAIC0zMzkx
LDkgKzMzOTIsOSBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNG
b3JDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKCkt
Pmhhc09wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBjb25zdCBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgYnl0
ZWNvZGVPZmZzZXRzID0gdW5saW5rZWRDb2RlQmxvY2soKS0+b3BQcm9maWxlQ29udHJvbEZsb3dC
eXRlY29kZU9mZnNldHMoKTsKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxKU0luc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQ+JiBieXRlY29kZU9mZnNldHMgPSB1bmxpbmtlZENvZGVCbG9jaygpLT5vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBvZmZzZXRzTGVuZ3RoID0gYnl0ZWNvZGVPZmZzZXRzLnNpemUoKTsgaSA8IG9mZnNldHNMZW5n
dGg7IGkrKykgewotICAgICAgICAvLyBCZWNhdXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93IGlz
IGVtaXR0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBldmVyeSBiYXNpYyBibG9jaywgZmluZGluZyAK
KyAgICAgICAgLy8gQmVjYXVzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0
IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgYmFzaWMgYmxvY2ssIGZpbmRpbmcKICAgICAgICAgLy8g
dGhlIG5leHQgb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgd2lsbCBnaXZlIHVzIHRoZSB0ZXh0IHJh
bmdlIG9mIGEgc2luZ2xlIGJhc2ljIGJsb2NrLgogICAgICAgICBzaXplX3Qgc3RhcnRJZHggPSBi
eXRlY29kZU9mZnNldHNbaV07CiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlv
bnMoKS5hdChzdGFydElkeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKaW5kZXggNDkxYmI4ZWUwNWIxNTk3M2Q1OWRkMzYzYTg0MDU2NDViNmMyYzFkZC4uY2M3
ZTJjZGQwYjYzNDg3MGZkNWNkMjYzNGE5ZTU3YjA0NWRjYjU3NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjE1LDEyICsyMTUsMTIgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKICAgICB2b2lkIGR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1
c01hcCgpKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBK
U0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1
c01hcCgpKTsKICAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAK
ICAgICB2b2lkIGR1bXBFeGNlcHRpb25IYW5kbGVycyhQcmludFN0cmVhbSYpOwotICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICB2
b2lkIHByaW50U3RydWN0dXJlKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCk7CisgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoUHJp
bnRTdHJlYW0mLCBjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgdm9pZCBwcmludFN0cnVjdHVy
ZShQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBp
bnQgb3BlcmFuZCk7CiAKICAgICB2b2lkIGR1bXBNYXRoSUNTdGF0cygpOwogCkBAIC0yODgsMzIg
KzI4OCwzMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsaW5rSW5jb21pbmdQb2x5bW9ycGhpY0NhbGwo
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwgUG9seW1vcnBoaWNDYWxsTm9kZSopOwogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogb3V0T2ZMaW5lSnVtcFRhcmdl
dChjb25zdCBJbnN0cnVjdGlvbiogcGMpOwotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KQorICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpOworICAgIGludCBv
dXRPZkxpbmVKdW1wT2Zmc2V0KEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpCiAg
ICAgewogICAgICAgICByZXR1cm4gbV91bmxpbmtlZENvZGUtPm91dE9mTGluZUp1bXBPZmZzZXQo
b2Zmc2V0KTsKICAgICB9Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjKTsKLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlv
blN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChj
b25zdCBKU0luc3RydWN0aW9uKiBwYyk7CisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29u
c3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKICAgICB7CiAgICAgICAg
IHJldHVybiBvdXRPZkxpbmVKdW1wT2Zmc2V0KGluc3RydWN0aW9uLnB0cigpKTsKICAgICB9CiAK
LSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHJl
dHVybkFkZHJlc3MpCisgICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgewogICAgICAgICBjb25zdCBhdXRvKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGluc3RydWN0aW9ucygpLmF0KDApLnB0cigpOwotICAgICAgICBj
b25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3Ry
dWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uc0JlZ2luKSAr
IGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
c0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikgKyBpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9u
c0JlZ2luICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnNFbmQpOwogICAgICAgICByZXR1
cm4gcmV0dXJuQWRkcmVzcyAtIGluc3RydWN0aW9uc0JlZ2luOwogICAgIH0KIAotICAgIGlubGlu
ZSBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgoY29uc3QgSW5zdHJ1Y3Rpb24qIHJldHVybkFk
ZHJlc3MpCisgICAgaW5saW5lIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleChjb25zdCBKU0lu
c3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgIHsKICAgICAgICAgcmV0dXJuIEJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVPZmZzZXQocmV0dXJuQWRkcmVzcykpOwogICAgIH0KIAotICAgIGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+aW5zdHJ1Y3Rpb25zKCk7IH0KLSAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25BdChCeXRlY29kZUluZGV4IGluZGV4KSBjb25zdCB7IHJldHVybiBpbnN0cnVjdGlvbnMo
KS5hdChpbmRleCkucHRyKCk7IH0KKyAgICBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0
cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aW5zdHJ1Y3Rpb25zKCk7
IH0KKyAgICBjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXgg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluc3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQog
CiAgICAgc2l6ZV90IHByZWRpY3RlZE1hY2hpbmVDb2RlU2l6ZSgpOwogCkBAIC00MjgsOCArNDI4
LDggQEAgcHVibGljOgogCiAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBiaW5hcnlBcml0aFByb2Zp
bGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwogICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiB1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7Ci0gICAg
QmluYXJ5QXJpdGhQcm9maWxlKiBiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgIFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBiaW5hcnlBcml0aFBy
b2ZpbGVGb3JQQyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgVW5hcnlBcml0aFByb2ZpbGUq
IHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogCiAgICAgYm9v
bCBjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zm
c2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApp
bmRleCA1MWYxZDAyZTE4MjU1OGM5YzI5MTJkODQwYzU4ODEwNDhjYTgwMWQ5Li41MGQ3MmE0NDFl
MzFhOGNhNjFlMDMzMDQ0NDdkNjc3YzM1OGYwMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgSlNPcGNv
ZGVUcmFpdHMgewogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxl
bmd0aHMgPSA6OkpTQzo6b3Bjb2RlTGVuZ3RoczsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIqIGNvbnN0KiBvcGNvZGVOYW1lcyA9IDo6SlNDOjpvcGNvZGVOYW1lczsKICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY2hlY2twb2ludENvdW50VGFibGUgPSBieXRlY29kZUNoZWNrcG9p
bnRDb3VudFRhYmxlOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBtYXhPcGNvZGVJ
RFdpZHRoID0gbWF4SlNPcGNvZGVJRFdpZHRoOwogfTsKIAogc3RydWN0IFdhc21PcGNvZGVUcmFp
dHMgewpAQCAtNTIsMTIgKzUzLDEyIEBAIHN0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKICAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gd2FzbU9wY29k
ZUxlbmd0aHM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCogb3Bjb2Rl
TmFtZXMgPSB3YXNtT3Bjb2RlTmFtZXM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNoZWNr
cG9pbnRDb3VudFRhYmxlID0gd2FzbUNoZWNrcG9pbnRDb3VudFRhYmxlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgT3Bjb2RlU2l6ZSBtYXhPcGNvZGVJRFdpZHRoID0gbWF4V2FzbU9wY29kZUlEV2lk
dGg7CiB9OwogCiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZT4KK3RlbXBsYXRlPHR5cGVuYW1l
IFRyYWl0cz4KIHN0cnVjdCBCYXNlSW5zdHJ1Y3Rpb24gewotCiAgICAgc3RydWN0IE1ldGFkYXRh
IHsgfTsKIAogcHJvdGVjdGVkOgpAQCAtNjgsMTIxICs2OSwxMjQgQEAgcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZTxPcGNvZGVTaXplIFdpZHRoPgogICAgIGNsYXNzIEltcGwgewogICAgIHB1YmxpYzoK
LSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAg
ICAgIHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDx0eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEPihtX29wY29kZSk7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVCeVNpemU8T3Bjb2RlU2l6ZTo6TmFycm93
Pjo6dW5zaWduZWRUeXBlIG1fb3Bjb2RlOworICAgICAgICB0eXBlbmFtZSBPcGNvZGVJRFdpZHRo
QnlTaXplPFRyYWl0cywgV2lkdGg+OjpvcGNvZGVUeXBlIG1fb3Bjb2RlOwogICAgIH07CiAKIHB1
YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAg
ICB0eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEIG9wY29kZUlEKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIGlmIChpc1dpZGUzMjxUcmFpdHM+KCkpCi0gICAgICAgICAgICByZXR1cm4gd2lkZTMyPFRy
YWl0cz4oKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpOwotICAgICAgICBpZiAoaXNXaWRl
MTY8VHJhaXRzPigpKQotICAgICAgICAgICAgcmV0dXJuIHdpZGUxNjxUcmFpdHM+KCktPnRlbXBs
YXRlIG9wY29kZUlEPFRyYWl0cz4oKTsKLSAgICAgICAgcmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0
ZSBvcGNvZGVJRDxUcmFpdHM+KCk7CisgICAgICAgIGlmIChpc1dpZGUzMigpKQorICAgICAgICAg
ICAgcmV0dXJuIHdpZGUzMigpLT5vcGNvZGVJRCgpOworICAgICAgICBpZiAoaXNXaWRlMTYoKSkK
KyAgICAgICAgICAgIHJldHVybiB3aWRlMTYoKS0+b3Bjb2RlSUQoKTsKKyAgICAgICAgcmV0dXJu
IG5hcnJvdygpLT5vcGNvZGVJRCgpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRy
YWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIFRyYWl0czo6b3Bjb2RlTmFtZXNbb3Bjb2RlSUQ8VHJhaXRzPigp
XTsKKyAgICAgICAgcmV0dXJuIFRyYWl0czo6b3Bjb2RlTmFtZXNbb3Bjb2RlSUQoKV07CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAg
Ym9vbCBpc1dpZGUxNigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbmFycm93KCktPnRl
bXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUxNjsKKyAgICAgICAgcmV0
dXJuIG5hcnJvdygpLT5vcGNvZGVJRCgpID09IFRyYWl0czo6d2lkZTE2OwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaXNX
aWRlMzIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBv
cGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3aWRlMzI7CisgICAgICAgIHJldHVybiBuYXJy
b3coKS0+b3Bjb2RlSUQoKSA9PSBUcmFpdHM6OndpZGUzMjsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBPcGNvZGVTaXplIHdpZHRo
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1dpZGUzMjxUcmFpdHM+KCkpCisgICAgICAg
IGlmIChpc1dpZGUzMigpKQogICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6OldpZGUzMjsK
LSAgICAgICAgcmV0dXJuIGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6OldpZGUxNiA6
IE9wY29kZVNpemU6Ok5hcnJvdzsKKyAgICAgICAgcmV0dXJuIGlzV2lkZTE2KCkgPyBPcGNvZGVT
aXplOjpXaWRlMTYgOiBPcGNvZGVTaXplOjpOYXJyb3c7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgYm9vbCBoYXNNZXRhZGF0YSgp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRz
OjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YTsKKyAgICAgICAgcmV0dXJuIG9wY29kZUlE
KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaGFz
Q2hlY2twb2ludHMoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0
cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CisgICAgICAg
IHJldHVybiBvcGNvZGVJRCgpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3Bv
aW50czsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICB1bnNpZ25lZCBudW1iZXJPZkNoZWNrcG9pbnRzKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIGlmICghaGFzQ2hlY2twb2ludHM8VHJhaXRzPigpKQorICAgICAgICBpZiAoIWhhc0No
ZWNrcG9pbnRzKCkpCiAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgcmV0dXJuIFRyYWl0
czo6Y2hlY2twb2ludENvdW50VGFibGVbb3Bjb2RlSUQ8VHJhaXRzPigpXTsKKyAgICAgICAgcmV0
dXJuIFRyYWl0czo6Y2hlY2twb2ludENvdW50VGFibGVbb3Bjb2RlSUQoKV07CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgaW50IHNp
emVTaGlmdEFtb3VudCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRz
PigpKQorICAgICAgICBpZiAoaXNXaWRlMzIoKSkKICAgICAgICAgICAgIHJldHVybiAyOwotICAg
ICAgICBpZiAoaXNXaWRlMTY8VHJhaXRzPigpKQorICAgICAgICBpZiAoaXNXaWRlMTYoKSkKICAg
ICAgICAgICAgIHJldHVybiAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBPcGNvZGVTaXplIG9w
Y29kZUlEV2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzV2lkZTMyKCkpCisgICAg
ICAgICAgICByZXR1cm4gT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6Oldp
ZGUzMj46Om9wY29kZUlEU2l6ZTsKKyAgICAgICAgaWYgKGlzV2lkZTE2KCkpCisgICAgICAgICAg
ICByZXR1cm4gT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6OldpZGUxNj46
Om9wY29kZUlEU2l6ZTsKKyAgICAgICAgcmV0dXJuIE9wY29kZUlEV2lkdGhCeVNpemU8VHJhaXRz
LCBPcGNvZGVTaXplOjpOYXJyb3c+OjpvcGNvZGVJRFNpemU7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgb3Bjb2RlSURCeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKHVuc2lnbmVk
KSBvcGNvZGVJRFdpZHRoKCk7CisgICAgfQorCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdAogICAg
IHsKLSAgICAgICAgYXV0byBzaXplU2hpZnRBbW91bnQgPSB0aGlzLT5zaXplU2hpZnRBbW91bnQ8
VHJhaXRzPigpOworICAgICAgICBhdXRvIHNpemVTaGlmdEFtb3VudCA9IHRoaXMtPnNpemVTaGlm
dEFtb3VudCgpOwogICAgICAgICBzaXplX3QgcHJlZml4U2l6ZSA9IHNpemVTaGlmdEFtb3VudCA/
IDEgOiAwOwogICAgICAgICBzaXplX3Qgb3BlcmFuZFNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KDEpIDw8IHNpemVTaGlmdEFtb3VudDsKLSAgICAgICAgc2l6ZV90IHNpemVPZkJ5dGVjb2RlID0g
MTsKLSAgICAgICAgcmV0dXJuIHNpemVPZkJ5dGVjb2RlICsgKFRyYWl0czo6b3Bjb2RlTGVuZ3Ro
c1tvcGNvZGVJRDxUcmFpdHM+KCldIC0gMSkgKiBvcGVyYW5kU2l6ZSArIHByZWZpeFNpemU7Cisg
ICAgICAgIHNpemVfdCBzaXplT2ZCeXRlY29kZSA9IG9wY29kZUlEQnl0ZXMoKTsKKyAgICAgICAg
cmV0dXJuIHNpemVPZkJ5dGVjb2RlICsgVHJhaXRzOjpvcGNvZGVMZW5ndGhzW29wY29kZUlEKCld
ICogb3BlcmFuZFNpemUgKyBwcmVmaXhTaXplOwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNsYXNz
IFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIHRlbXBsYXRlPGNsYXNz
IFQ+CiAgICAgYm9vbCBpcygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3Bjb2RlSUQ8
VHJhaXRzPigpID09IFQ6Om9wY29kZUlEOworICAgICAgICByZXR1cm4gb3Bjb2RlSUQoKSA9PSBU
OjpvcGNvZGVJRDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFp
dHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFQgYXMoKSBj
b25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAg
QVNTRVJUKChpczxUPigpKSk7CiAgICAgICAgIHJldHVybiBUOjpkZWNvZGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNsYXNz
IFQsIE9wY29kZVNpemUgd2lkdGgsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgor
ICAgIHRlbXBsYXRlPGNsYXNzIFQsIE9wY29kZVNpemUgd2lkdGg+CiAgICAgVCBhc0tub3duV2lk
dGgoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAg
ICAgICAgQVNTRVJUKChpczxUPigpKSk7CiAgICAgICAgIHJldHVybiBUKHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPGNvbnN0IHR5cGVuYW1lIFR5cGVCeVNpemU8d2lkdGg+Ojp1bnNpZ25lZFR5cGUqPih0
aGlzICsgKHdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdyA/IDEgOiAyKSkpOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgor
ICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgVCogY2FzdCgpCiAgICAgewotICAgICAgICBBU1NF
UlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAgICAgICBBU1NFUlQoKGlzPFQ+KCkpKTsKICAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4odGhpcyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgdGVtcGxhdGU8
Y2xhc3MgVD4KICAgICBjb25zdCBUKiBjYXN0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VS
VCgoaXM8VCwgVHJhaXRzPigpKSk7CisgICAgICAgIEFTU0VSVCgoaXM8VD4oKSkpOwogICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4odGhpcyk7CiAgICAgfQogCkBAIC0x
OTEsMjkgKzE5NSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6TmFycm93Pio+KHRoaXMpOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGNvbnN0IEltcGw8
T3Bjb2RlU2l6ZTo6V2lkZTE2Piogd2lkZTE2KCkgY29uc3QKICAgICB7Ci0KLSAgICAgICAgQVNT
RVJUKGlzV2lkZTE2PFRyYWl0cz4oKSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKCp0
aGlzKSA9PSAxLCAiUG9pbnRlciBtYXRoIik7CisgICAgICAgIEFTU0VSVChpc1dpZGUxNigpKTsK
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpX
aWRlMTY+Kj4odGhpcyArIDEpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0
cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPiog
d2lkZTMyKCkgY29uc3QKICAgICB7Ci0KLSAgICAgICAgQVNTRVJUKGlzV2lkZTMyPFRyYWl0cz4o
KSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKCp0aGlzKSA9PSAxLCAiUG9pbnRlciBt
YXRoIik7CisgICAgICAgIEFTU0VSVChpc1dpZGUzMigpKTsKICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4odGhpcyArIDEpOwog
ICAgIH0KIH07CiAKLXN0cnVjdCBJbnN0cnVjdGlvbiA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248
T3Bjb2RlSUQ+IHsKLX07Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihJbnN0cnVjdGlvbikgPT0gMSwg
IlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKLQotc3RydWN0IFdh
c21JbnN0YW5jZSA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZUlEPiB7Ci19Owot
c3RhdGljX2Fzc2VydChzaXplb2YoV2FzbUluc3RhbmNlKSA9PSAxLCAiU28gcG9pbnRlciBtYXRo
IGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJ
bnN0cnVjdGlvbjxKU09wY29kZVRyYWl0cz47Cit1c2luZyBXYXNtSW5zdHJ1Y3Rpb24gID0gQmFz
ZUluc3RydWN0aW9uPFdhc21PcGNvZGVUcmFpdHM+Oworc3RhdGljX2Fzc2VydChzaXplb2YoSlNJ
bnN0cnVjdGlvbikgPT0gMSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1h
dGgiKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcAppbmRleCAzOGNhZjk1ZmQ5ZTA2MTA1
M2UxMzVhNTlmZTFhM2M3NWY4NWE4NWQzLi41MzU0Mjk3Y2RmYTZiNzlkMDY2YWExMzcxZmU4MDY4
ZGIxNDVlMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb25TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvblN0cmVhbS5jcHAKQEAgLTMwLDIwICszMCw0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEluc3RydWN0aW9uU3RyZWFt
KTsKIAotSW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKEluc3RydWN0aW9uQnVm
ZmVyJiYgaW5zdHJ1Y3Rpb25zKQotICAgIDogbV9pbnN0cnVjdGlvbnMoV1RGTW92ZShpbnN0cnVj
dGlvbnMpKQoteyB9Ci0KLXNpemVfdCBJbnN0cnVjdGlvblN0cmVhbTo6c2l6ZUluQnl0ZXMoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7Ci19Ci0KLWJvb2wgSW5z
dHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikgY29uc3QK
LXsKLQotICAgIGNvbnN0IHVpbnQ4X3QqIHBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGluc3RydWN0aW9uKTsKLSAgICByZXR1cm4gcG9pbnRlciA+PSBtX2luc3RydWN0aW9u
cy5kYXRhKCkgJiYgcG9pbnRlciA8IChtX2luc3RydWN0aW9ucy5kYXRhKCkgKyBtX2luc3RydWN0
aW9ucy5zaXplKCkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvblN0cmVhbS5oCmluZGV4IDNlOTc4ZDMzMmQ1OGQ3MGE1MjlkMjhmMDUy
NjY0NDhjZmY3NmViMTAuLjM5MmM5Y2VlODhjY2ZhMjRkZDE0OTU3ODg2MDVjYTAyMGRlZDlhMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0
cmVhbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0
cmVhbS5oCkBAIC0zNCwxNSArMzQsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIERFQ0xBUkVfQUxM
T0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEluc3RydWN0aW9uU3RyZWFtKTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25UeXBlPgogY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW0gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZnJpZW5kIGNsYXNzIEluc3RydWN0
aW9uU3RyZWFtV3JpdGVyOworICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgSW5z
dHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZEluc3RydWN0aW9u
U3RyZWFtOwogcHVibGljOgogICAgIHVzaW5nIEluc3RydWN0aW9uQnVmZmVyID0gVmVjdG9yPHVp
bnQ4X3QsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93LCAxNiwgSW5zdHJ1Y3Rpb25TdHJlYW1NYWxs
b2M+OwogCi0gICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7CisgICAgc2l6ZV90IHNpemVJ
bkJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5zaXpl
KCk7CisgICAgfQogCiAgICAgdXNpbmcgT2Zmc2V0ID0gdW5zaWduZWQ7CiAKQEAgLTUxLDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBCYXNlUmVmIHsKICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAKLSAgICAgICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOwor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFt
OwogCiAgICAgcHVibGljOgogICAgICAgICBCYXNlUmVmKGNvbnN0IEJhc2VSZWY8SW5zdHJ1Y3Rp
b25CdWZmZXI+JiBvdGhlcikKQEAgLTY1LDggKzY5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1faW5kZXggPSBvdGhlci5tX2luZGV4OwogICAgICAgICB9CiAKLSAgICAgICAgaW5saW5lIGNv
bnN0IEluc3RydWN0aW9uKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0K
LSAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiBwdHIoKSBjb25zdCB7IHJldHVybiB1
bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb25UeXBlKiBvcGVyYXRv
ci0+KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IElu
c3RydWN0aW9uVHlwZSogcHRyKCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KIAogICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj4mIG90aGVy
KSBjb25zdAogICAgICAgICB7CkBAIC04Nyw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogdW53cmFw
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KCZt
X2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0
aW9uVHlwZSogdW53cmFwKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJ
bnN0cnVjdGlvblR5cGUqPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CiAKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIEJhc2VSZWYoSW5zdHJ1Y3Rpb25CdWZmZXImIGluc3RydWN0aW9ucywg
c2l6ZV90IGluZGV4KQpAQCAtMTAzLDMzICsxMDcsMzYgQEAgcHVibGljOgogICAgIHVzaW5nIFJl
ZiA9IEJhc2VSZWY8Y29uc3QgSW5zdHJ1Y3Rpb25CdWZmZXI+OwogCiAgICAgY2xhc3MgTXV0YWJs
ZVJlZiA6IHB1YmxpYyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiB7Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWU+IGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKIAogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj46OkJhc2VSZWY7Cisg
ICAgICAgIHVzaW5nIEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+OjptX2luZGV4OworICAgICAg
ICB1c2luZyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPjo6bV9pbnN0cnVjdGlvbnM7CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIFJlZiBmcmVlemUoKSBjb25zdCAgeyByZXR1cm4gUmVmIHsgbV9p
bnN0cnVjdGlvbnMsIG1faW5kZXggfTsgfQotICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIG9w
ZXJhdG9yLT4oKSB7IHJldHVybiB1bndyYXAoKTsgfQotICAgICAgICBpbmxpbmUgY29uc3QgSW5z
dHJ1Y3Rpb24qIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsgfQotICAgICAg
ICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIHB0cigpIHsgcmV0dXJuIHVud3JhcCgpOyB9Ci0gICAgICAg
IGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogcHRyKCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7
IH0KKyAgICAgICAgaW5saW5lIEluc3RydWN0aW9uVHlwZSogb3BlcmF0b3ItPigpIHsgcmV0dXJu
IHVud3JhcCgpOyB9CisgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvblR5cGUqIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgSW5zdHJ1
Y3Rpb25UeXBlKiBwdHIoKSB7IHJldHVybiB1bndyYXAoKTsgfQorICAgICAgICBpbmxpbmUgY29u
c3QgSW5zdHJ1Y3Rpb25UeXBlKiBwdHIoKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsgfQogICAg
ICAgICBpbmxpbmUgb3BlcmF0b3IgUmVmKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IFJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX2luZGV4IH07CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIGlubGluZSBJbnN0cnVjdGlvbiogdW53cmFwKCkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxJbnN0cnVjdGlvbio+KCZtX2luc3RydWN0aW9uc1ttX2luZGV4XSk7IH0KLSAg
ICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiB1bndyYXAoKSBjb25zdCB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5k
ZXhdKTsgfQorICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb25UeXBlKiB1bndyYXAoKSB7IHJldHVy
biByZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uVHlwZSo+KCZtX2luc3RydWN0aW9uc1ttX2lu
ZGV4XSk7IH0KKyAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uVHlwZSogdW53cmFwKCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvblR5cGUqPigm
bV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9CiAgICAgfTsKIAogcHJpdmF0ZToKICAgICBjbGFz
cyBpdGVyYXRvciA6IHB1YmxpYyBSZWYgewotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rp
b25TdHJlYW07CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgSW5zdHJ1
Y3Rpb25TdHJlYW07CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIFJlZjo6UmVmOworICAg
ICAgICB1c2luZyBSZWY6Om1faW5kZXg7CiAKICAgICAgICAgUmVmJiBvcGVyYXRvciooKQogICAg
ICAgICB7CkBAIC0xNDQsNyArMTUxLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBpdGVyYXRvciYg
b3BlcmF0b3IrKygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpcyArPSBwdHIo
KS0+c2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzICs9IHRoaXMtPnB0cigpLT5zaXpl
KCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xNzYsMTkgKzE4MywzMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5kYXRhKCk7CiAgICAgfQogCi0gICAgYm9vbCBj
b250YWlucyhJbnN0cnVjdGlvbiopIGNvbnN0OworICAgIGJvb2wgY29udGFpbnMoSW5zdHJ1Y3Rp
b25UeXBlKiBpbnN0cnVjdGlvbikgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IHBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluc3RydWN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIHBvaW50ZXIgPj0gbV9pbnN0cnVjdGlvbnMuZGF0YSgpICYmIHBvaW50ZXIg
PCAobV9pbnN0cnVjdGlvbnMuZGF0YSgpICsgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKTsKKyAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBJbnN0cnVjdGlvblN0cmVhbShJbnN0cnVjdGlv
bkJ1ZmZlciYmKTsKKyAgICBleHBsaWNpdCBJbnN0cnVjdGlvblN0cmVhbShJbnN0cnVjdGlvbkJ1
ZmZlciYmIGluc3RydWN0aW9ucykKKyAgICAgICAgOiBtX2luc3RydWN0aW9ucyhXVEZNb3ZlKGlu
c3RydWN0aW9ucykpCisgICAgeyB9CiAKICAgICBJbnN0cnVjdGlvbkJ1ZmZlciBtX2luc3RydWN0
aW9uczsKIH07CiAKLWNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyIDogcHVibGljIEluc3Ry
dWN0aW9uU3RyZWFtIHsKK3RlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KK2NsYXNz
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyIDogcHVibGljIEluc3RydWN0aW9uU3RyZWFtPEluc3Ry
dWN0aW9uVHlwZT4gewogICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZVJld3JpdGVyOwogcHVibGlj
OgorICAgIHVzaW5nIEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46Okluc3RydWN0
aW9uU3RyZWFtOworICAgIHVzaW5nIHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0
aW9uVHlwZT46Okluc3RydWN0aW9uQnVmZmVyOworICAgIHVzaW5nIHR5cGVuYW1lIEluc3RydWN0
aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46Ok11dGFibGVSZWY7CisgICAgdXNpbmcgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPjo6T2Zmc2V0OworICAgIHVzaW5n
IEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0aW9uVHlwZT46Om1faW5zdHJ1Y3Rpb25zOworCiAg
ICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIoKQotICAgICAgICA6IEluc3RydWN0aW9uU3RyZWFt
KHsgfSkKKyAgICAgICAgOiBJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+KHsgfSkK
ICAgICB7IH0KIAogICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25CdWZmZXIoSW5zdHJ1Y3Rpb25CdWZm
ZXImJiBidWZmZXIpCkBAIC0yNjEsMTQgKzI4MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fcG9z
aXRpb24gPSByZWYub2Zmc2V0KCk7CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3Ry
dWN0aW9uU3RyZWFtPiBmaW5hbGl6ZSgpCisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9u
U3RyZWFtPEluc3RydWN0aW9uVHlwZT4+IGZpbmFsaXplKCkKICAgICB7CiAgICAgICAgIG1fZmlu
YWxpemVkID0gdHJ1ZTsKICAgICAgICAgbV9pbnN0cnVjdGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4geyBuZXcgSW5z
dHJ1Y3Rpb25TdHJlYW0oV1RGTW92ZShtX2luc3RydWN0aW9ucykpIH07CisgICAgICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPj4geyBu
ZXcgSW5zdHJ1Y3Rpb25TdHJlYW08SW5zdHJ1Y3Rpb25UeXBlPihXVEZNb3ZlKG1faW5zdHJ1Y3Rp
b25zKSkgfTsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+
IGZpbmFsaXplKEluc3RydWN0aW9uQnVmZmVyJiB1c2VkQnVmZmVyKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnN0cnVjdGlvblN0cmVhbTxJbnN0cnVjdGlvblR5cGU+PiBmaW5hbGl6ZShJbnN0cnVj
dGlvbkJ1ZmZlciYgdXNlZEJ1ZmZlcikKICAgICB7CiAgICAgICAgIG1fZmluYWxpemVkID0gdHJ1
ZTsKIApAQCAtMjc4LDcgKzI5OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICB1c2VkQnVmZmVyID0g
V1RGTW92ZShtX2luc3RydWN0aW9ucyk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxJbnN0cnVjdGlvblN0cmVhbT4geyBuZXcgSW5zdHJ1Y3Rpb25TdHJlYW0oV1RGTW92ZShyZXN1
bHRCdWZmZXIpKSB9OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9u
U3RyZWFtPEluc3RydWN0aW9uVHlwZT4+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtPEluc3RydWN0
aW9uVHlwZT4oV1RGTW92ZShyZXN1bHRCdWZmZXIpKSB9OwogICAgIH0KIAogICAgIE11dGFibGVS
ZWYgcmVmKCkKQEAgLTI4Niw3ICszMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNdXRh
YmxlUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1fcG9zaXRpb24gfTsKICAgICB9CiAKLSAgICB2b2lk
IHN3YXAoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG90aGVyKQorICAgIHZvaWQgc3dhcChJbnN0
cnVjdGlvblN0cmVhbVdyaXRlcjxJbnN0cnVjdGlvblR5cGU+JiBvdGhlcikKICAgICB7CiAgICAg
ICAgIHN0ZDo6c3dhcChtX2ZpbmFsaXplZCwgb3RoZXIubV9maW5hbGl6ZWQpOwogICAgICAgICBz
dGQ6OnN3YXAobV9wb3NpdGlvbiwgb3RoZXIubV9wb3NpdGlvbik7CkBAIC0yOTQsMTEgKzMxNCwx
MiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGNsYXNzIGl0ZXJhdG9yIDogcHVi
bGljIE11dGFibGVSZWYgewotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXI7CisgICAgY2xhc3MgaXRlcmF0b3IgOiBwdWJsaWMgSW5zdHJ1Y3Rpb25TdHJlYW08SW5z
dHJ1Y3Rpb25UeXBlPjo6TXV0YWJsZVJlZiB7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBm
cmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHVzaW5nIE11dGFibGVSZWY6Ok11dGFibGVSZWY7CisgICAgICAgIHVzaW5nIE11dGFi
bGVSZWY6Om1faW5kZXg7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIE11dGFibGVSZWYmIG9wZXJh
dG9yKigpCkBAIC0zMTQsNyArMzM1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBpdGVyYXRvciYg
b3BlcmF0b3IrKygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpcyArPSBwdHIo
KS0+c2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzICs9IHRoaXMtPnB0cigpLT5zaXpl
KCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0zMzQsNSArMzU1LDggQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fZmluYWxpemVkIHsgZmFsc2UgfTsKIH07CiAKK3VzaW5nIEpTSW5zdHJ1Y3Rpb25T
dHJlYW0gPSBJbnN0cnVjdGlvblN0cmVhbTxKU0luc3RydWN0aW9uPjsKK3VzaW5nIEpTSW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXIgPSBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjxKU0luc3RydWN0aW9u
PjsKK3VzaW5nIFdhc21JbnN0cnVjdGlvblN0cmVhbSA9IEluc3RydWN0aW9uU3RyZWFtPFdhc21J
bnN0cnVjdGlvbj47CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCmluZGV4IDZjMDczY2Y2NzZhYmQ2ODBiZjNjM2Y3NGMxZTFmMTA0NDg4
OWQ3N2EuLjlkMTRjMjhmODdkZjE1YzJmY2Y0ZDVjYmUzOGFhMTk4MmE2MWU5MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lu
Y2x1ZGUgIkJ5dGVjb2Rlcy5oIgogI2luY2x1ZGUgIkxMSW50T3Bjb2RlLmgiCisjaW5jbHVkZSAi
T3Bjb2RlU2l6ZS5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0cmluZy5o
PgpAQCAtODgsMTAgKzg5LDE0IEBAIGV4dGVybiBjb25zdCB1bnNpZ25lZCB3YXNtT3Bjb2RlTGVu
Z3Roc1tdOwogICAgIEZPUl9FQUNIX1dBU01fSUQoT1BDT0RFX0lEX0xFTkdUSFMpOwogI3VuZGVm
IE9QQ09ERV9JRF9MRU5HVEhTCiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4SlNPcGNv
ZGVMZW5ndGggPSAvKiBPcGNvZGUgKi8gMSArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8qIE9w
ZXJhbmRzICovIChNQVhfTEVOR1RIX09GX0JZVEVDT0RFX0lEUyAtIDEpICogNDsKLXN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWF4V2FzbU9wY29kZUxlbmd0aCA9IC8qIE9wY29kZSAqLyAxICsg
LyogV2lkZTMyIE9wY29kZSAqLyAxICsgLyogT3BlcmFuZHMgKi8gKE1BWF9MRU5HVEhfT0ZfV0FT
TV9JRFMgLSAxKSAqIDQ7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE9wY29kZUxlbmd0
aCA9IHN0ZDo6bWF4KG1heEpTT3Bjb2RlTGVuZ3RoLCBtYXhXYXNtT3Bjb2RlTGVuZ3RoKTsKLXN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6
OmdldE1TQlNldENvbnN0ZXhwcihtYXhPcGNvZGVMZW5ndGgpICsgMTsKK3N0YXRpY19hc3NlcnQo
TlVNQkVSX09GX0JZVEVDT0RFX0lEUyA8IDI1NSk7CitzdGF0aWMgY29uc3RleHByIE9wY29kZVNp
emUgbWF4SlNPcGNvZGVJRFdpZHRoID0gT3Bjb2RlU2l6ZTo6TmFycm93Oworc3RhdGljX2Fzc2Vy
dChOVU1CRVJfT0ZfV0FTTV9JRFMgPCAyNTUpOworc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVTaXpl
IG1heFdhc21PcGNvZGVJRFdpZHRoID0gT3Bjb2RlU2l6ZTo6TmFycm93Oworc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBtYXhKU0J5dGVjb2RlU3RydWN0TGVuZ3RoID0gLyogT3Bjb2RlICovIG1h
eEpTT3Bjb2RlSURXaWR0aCArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8qIE9wZXJhbmRzICov
IE1BWF9MRU5HVEhfT0ZfQllURUNPREVfSURTICogNDsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbWF4V2FzbUJ5dGVjb2RlU3RydWN0TGVuZ3RoID0gLyogT3Bjb2RlICovIG1heFdhc21PcGNv
ZGVJRFdpZHRoICsgLyogV2lkZTMyIE9wY29kZSAqLyAxICsgLyogT3BlcmFuZHMgKi8gTUFYX0xF
TkdUSF9PRl9XQVNNX0lEUyAqIDQ7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEJ5dGVj
b2RlU3RydWN0TGVuZ3RoID0gc3RkOjptYXgobWF4SlNCeXRlY29kZVN0cnVjdExlbmd0aCwgbWF4
V2FzbUJ5dGVjb2RlU3RydWN0TGVuZ3RoKTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0
V2lkdGhGb3JNYXhCeXRlY29kZVN0cnVjdExlbmd0aCA9IFdURjo6Z2V0TVNCU2V0Q29uc3RleHBy
KG1heEJ5dGVjb2RlU3RydWN0TGVuZ3RoKSArIDE7CiAKICNkZWZpbmUgRk9SX0VBQ0hfT1BDT0RF
X1dJVEhfVkFMVUVfUFJPRklMRShtYWNybykgXAogICAgIG1hY3JvKE9wQ2FsbFZhcmFyZ3MpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlSW5saW5lcy5oCmluZGV4
IDRhMmFmNmExMDZhNDc5NDZjODhjMDlkZThjNWMxZDAxOTFlZjYxZTcuLjhiN2M2M2Y1ZGE3MmEx
MmU5N2ViZDZjZDdiNWY5NzYzZGEwZGI0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZUlubGluZXMuaApAQCAtNTQsNyArNTQsNyBAQCBpbmxpbmUgYm9vbCBp
c09wY29kZVNoYXBlKE9wY29kZUlEIG9wY29kZUlEKQogfQogCiB0ZW1wbGF0ZTxPcGNvZGVTaGFw
ZSBzaGFwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHNoYXBlICE9IEFueU9wY29kZVNo
YXBlPj4KLWlubGluZSBib29sIGlzT3Bjb2RlU2hhcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQoraW5saW5lIGJvb2wgaXNPcGNvZGVTaGFwZShjb25zdCBKU0luc3RydWN0aW9uKiBp
bnN0cnVjdGlvbikKIHsKICAgICByZXR1cm4gaXNPcGNvZGVTaGFwZTxzaGFwZT4oaW5zdHJ1Y3Rp
b24tPm9wY29kZUlEKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZVNpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGVTaXplLmgKaW5kZXggMjRiMTYyYjkzZjc5ZTg0YTBkMTg2NDIzMWFjZGJkNzNlNTlhYTA2My4u
YTY1M2E5NmI4NzgyZmJlZWI0YzFmZGM0YzdlMjhhNmJlZThkMzQzZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKIG5hbWVzcGFjZSBKU0Mgewog
CiBlbnVtIE9wY29kZVNpemUgewpAQCAtNzIsNCArNzQsMjUgQEAgc3RydWN0IFBhZGRpbmdCeVNp
emU8T3Bjb2RlU2l6ZTo6V2lkZTMyPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZh
bHVlID0gMTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgT3Bjb2RlU2l6ZT4KK3N0
cnVjdCBPcGNvZGVJRFdpZHRoQnlTaXplOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+Citz
dHJ1Y3QgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJvdz4gewor
ICAgIHVzaW5nIG9wY29kZVR5cGUgPSB1aW50OF90OworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bj
b2RlU2l6ZSBvcGNvZGVJRFNpemUgPSBPcGNvZGVTaXplOjpOYXJyb3c7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHM+CitzdHJ1Y3QgT3Bjb2RlSURXaWR0aEJ5U2l6ZTxUcmFpdHMsIE9w
Y29kZVNpemU6OldpZGUxNj4geworICAgIHVzaW5nIG9wY29kZVR5cGUgPSB0eXBlbmFtZSBzdGQ6
OmNvbmRpdGlvbmFsPFRyYWl0czo6bWF4T3Bjb2RlSURXaWR0aCA9PSBPcGNvZGVTaXplOjpOYXJy
b3csIHVpbnQ4X3QsIHVpbnQxNl90Pjo6dHlwZTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29k
ZVNpemUgb3Bjb2RlSURTaXplID0gc3RhdGljX2Nhc3Q8T3Bjb2RlU2l6ZT4oc2l6ZW9mKG9wY29k
ZVR5cGUpKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KK3N0cnVjdCBPcGNvZGVJ
RFdpZHRoQnlTaXplPFRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTMyPiB7CisgICAgdXNpbmcgb3Bj
b2RlVHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8VHJhaXRzOjptYXhPcGNvZGVJRFdp
ZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdywgdWludDhfdCwgdWludDE2X3Q+Ojp0eXBlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlU2l6ZSBvcGNvZGVJRFNpemUgPSBzdGF0aWNfY2FzdDxP
cGNvZGVTaXplPihzaXplb2Yob3Bjb2RlVHlwZSkpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuY3BwCmluZGV4IGQyZTg1MDZjNGM0MjZiYmI3YWI1NDU4NDdjOTIzNDAzMzQ0ZDliMTYu
LjNlZGUzYjcxMWRlMDM0MmQ3NDNjMzFmZTQwMzlkNzY0MjY2MDY5YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUgPHNpemVfdCB2ZWN0
b3JTaXplLCB0eXBlbmFtZSBCbG9jaz4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9ySW5z
dHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYg
aW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCB2ZWN0b3JTaXpl
PiYgb3V0KQorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBW
ZWN0b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCB2ZWN0b3JTaXplPiYgb3V0KQogewog
ICAgIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIFsmXShpbnQzMl90IHJlbGF0aXZlT2Zmc2V0KSB7CiAgICAgICAgIG91dC5hcHBl
bmQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyByZWxhdGl2ZU9mZnNldCk7CkBAIC01NCw3ICs1NCw3
IEBAIGVudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgewogfTsKIAogdGVt
cGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ss
IHNpemVfdCB2ZWN0b3JTaXplPgotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJu
YWwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBj
b25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5p
c0VtcHR5KCkpOwogCkBAIC04OCwzMiArODgsMzIgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0K
ICAgICBvdXQuc2hyaW5rQ2FwYWNpdHkodG9JbmRleCk7CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAz
Mj4mIG91dCkKIHsKICAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ss
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCksIG91dCk7CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mIGluc3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYg
b3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxKU0luc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQogewogICAgIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29k
ZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwogfQogCi12b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5z
dHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgMzI+JiBvdXQpCiB7CiAgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVy
bmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4o
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7CiB9CiAKLXZvaWQgcmVjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0PiYgb3V0KQordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVh
bSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3V0
KQogewogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywg
b3V0KTsKIH0KIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KQordm9pZCBmaW5kSnVtcFRh
cmdldHNGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVj
dGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgVmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgMT4mIG91dCkKIHsKICAgICBnZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG91dCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
SW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KQordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlv
bihVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJsb2NrLCBjb25zdCBKU0luc3RydWN0
aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBWZWN0b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCAxPiYgb3V0KQogewogICAgIGdldEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCBmMTc1ZTJjY2E3ZGExMjhl
YTQ1YjJiMTM3YTNiOWI4MDY2NTE2MmIwLi4wM2QwODMyZGU3NDY5NGRjNWU2ODBmMWE3ZTIxZTY1
ZDNlZWY3YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIAogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0
ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KLXZvaWQgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCwgMzI+JiBvdXQpOwotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENv
ZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Ci12b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Cit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPEpTSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKENvZGVCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgVmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwordm9pZCBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29u
c3QgSlNJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3RvcjxKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIDMyPiYgb3V0KTsKIAotdm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3RvcjxJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3V0KTsKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29uc3QgSlNJbnN0cnVjdGlv
blN0cmVhbSYsIFZlY3RvcjxKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvdXQpOwogCi12
b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKENvZGVCbG9jayosIGNvbnN0IEluc3Ry
dWN0aW9uU3RyZWFtOjpSZWYmLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4m
IG91dCk7Ci12b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYsIFZlY3RvcjxJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiwgY29uc3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwg
VmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMT4mIG91dCk7Cit2b2lkIGZpbmRK
dW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgY29u
c3QgSlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgVmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVz
LmgKaW5kZXggMGJkNDAzOTg0NTJkOWNlZjY1MGM4NDllYTdlMmUzZGM3MzY2NGRjNS4uYmFmMTE0
ZWE2MGMwMTAyODUwM2JiNjNhNDNmZDFkZmFhNzMzN2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5o
CkBAIC05MCw3ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrPgotaW5saW5lIGludCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVk
IHRhcmdldCkKK2lubGluZSBpbnQganVtcFRhcmdldEZvckluc3RydWN0aW9uKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIHVuc2ln
bmVkIHRhcmdldCkKIHsKICAgICBpZiAodGFyZ2V0KQogICAgICAgICByZXR1cm4gdGFyZ2V0OwpA
QCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UgogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoTWFwPgotaW5saW5lIGludCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oSGFz
aE1hcCYgb3V0T2ZMaW5lSnVtcFRhcmdldHMsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYm
IGluc3RydWN0aW9uLCB1bnNpZ25lZCB0YXJnZXQpCitpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJ
bnN0cnVjdGlvbihIYXNoTWFwJiBvdXRPZkxpbmVKdW1wVGFyZ2V0cywgY29uc3QgSlNJbnN0cnVj
dGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgdGFyZ2V0KQogewogICAgIGlm
ICh0YXJnZXQpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CkBAIC0xMDcsMTQgKzEwNywxNCBAQCBp
bmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihIYXNoTWFwJiBvdXRPZkxpbmVKdW1w
VGFyZ2V0cywgY29uc3QgSW5zdHJ1YwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5h
bWUgQmxvY2s+Ci1pbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCitpbmxp
bmUgaW50IGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29uc3Qg
SlNJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIHJldHVybiBqdW1wVGFyZ2V0Rm9ySW5z
dHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdGlvbj4KLWlubGlu
ZSB2b2lkIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29k
ZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgY29uc3Qg
RnVuY3Rpb24mIGZ1bmN0aW9uKQoraW5saW5lIHZvaWQgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRz
Rm9ySW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJl
YW06OlJlZiYgaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlvbikKIHsKICNkZWZp
bmUgQ0FTRV9PUChfX29wKSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogXApAQCAtMTM1LDcg
KzEzNSw3IEBAIFNXSVRDSF9KTVAoQ0FTRV9PUCwgU1dJVENIX0NBU0UsIFNXSVRDSF9ERUZBVUxU
X09GRlNFVCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0aW9u
LCB0eXBlbmFtZSBDb2RlQmxvY2tPckhhc2hNYXA+Ci1pbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRK
dW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2NrLCB1bnNpZ25lZCBmaW5h
bE9mZnNldCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIGNvbnN0
IEZ1bmN0aW9uJiBmdW5jdGlvbiwgQ29kZUJsb2NrT3JIYXNoTWFwJiBjb2RlQmxvY2tPckhhc2hN
YXApCitpbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJs
b2NrJiYgY29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgSlNJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0aW9uLCBDb2Rl
QmxvY2tPckhhc2hNYXAmIGNvZGVCbG9ja09ySGFzaE1hcCkKIHsKICNkZWZpbmUgQ0FTRV9PUChf
X29wKSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogeyBcCkBAIC0xNzEsNyArMTcxLDcgQEAg
U1dJVENIX0pNUChDQVNFX09QLCBTV0lUQ0hfQ0FTRSwgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rpb24+Ci1pbmxpbmUg
dm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBp
bnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rpb24pCitpbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRK
dW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZpbmFs
T2Zmc2V0LCBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uLCBGdW5j
dGlvbiBmdW5jdGlvbikKIHsKICAgICB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0
aW9uKGNvZGVCbG9jaywgZmluYWxPZmZzZXQsIGluc3RydWN0aW9uLCBmdW5jdGlvbiwgY29kZUJs
b2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCmluZGV4IGFjNTcxMjdiY2Y4OTA3MmJlMDM4NDE2ZGExMzliNDFmMTY0
YWU2MTQuLjE2NTM1NTcxNzE1YWVkMTM1NjZiYzc3NTA5Y2JjZWI5NmMxNWU1YTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cApAQCAtMTg0LDcgKzE4NCw3IEBAIGlubGluZSB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjpnZXRM
aW5lQW5kQ29sdW1uKGNvbnN0IEV4cHJlc3Npb25SYW5nZUluZm8mIGluZm8sCiB9CiAKICNpZm5k
ZWYgTkRFQlVHCi1zdGF0aWMgdm9pZCBkdW1wTGluZUNvbHVtbkVudHJ5KHNpemVfdCBpbmRleCwg
Y29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3RyZWFtLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKQorc3RhdGljIHZv
aWQgZHVtcExpbmVDb2x1bW5FbnRyeShzaXplX3QgaW5kZXgsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9uU3RyZWFtLCB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5z
aWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKQogewogICAgIGNvbnN0IGF1dG8gaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvblN0cmVhbS5hdChpbnN0cnVjdGlvbk9mZnNldCk7CiAgICAgY29uc3Qg
Y2hhciogZXZlbnQgPSAiIjsKQEAgLTI5NCw3ICsyOTQsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6
flVubGlua2VkQ29kZUJsb2NrKCkKICAgICB9CiB9CiAKLWNvbnN0IEluc3RydWN0aW9uU3RyZWFt
JiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29uc3QKK2NvbnN0IEpTSW5zdHJ1
Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2luc3RydWN0aW9ucy5nZXQoKSk7CiAgICAgcmV0dXJuICptX2luc3RydWN0
aW9uczsKQEAgLTMzMiw3ICszMzIsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVubGlu
a2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAgIHJl
dHVybiAqbV9saXZlbmVzczsKIH0KIAotaW50IFVubGlua2VkQ29kZUJsb2NrOjpvdXRPZkxpbmVK
dW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCitpbnQg
VW5saW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQoSlNJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIEFTU0VSVChtX291dE9mTGluZUp1bXBU
YXJnZXRzLmNvbnRhaW5zKGJ5dGVjb2RlT2Zmc2V0KSk7CiAgICAgcmV0dXJuIG1fb3V0T2ZMaW5l
SnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMWM1OTA0MmUwZDBjMzgx
MWIzYzliZTIxNThjZGM1NGMwMWRiYjgxYy4uNmJlMmUyNDNiNjk1YTA2ZTZhMzAyODY5MzNhZTI0
MDVmM2I5OWYwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKQEAgLTIxMSwxMiArMjExLDEyIEBAIHB1YmxpYzoKICAgICBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJC
aW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTUGFyc2VyU2NyaXB0TW9kZT4obV9z
Y3JpcHRNb2RlKTsgfQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cygpIGNvbnN0OwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2Rl
SW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluc3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIo
KTsgfQotICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKKyAgICBjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBj
b25zdDsKKyAgICBjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5k
ZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluc3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsg
fQorICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBp
bnN0cnVjdGlvbnMoKS5hdCgwKS5wdHIoKTsKLSAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b25zRW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikgKyBpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOworICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5z
dHJ1Y3Rpb25zQmVnaW4pICsgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaW5zdHJ1Y3Rpb24gPj0gaW5zdHJ1Y3Rpb25zQmVnaW4gJiYgaW5zdHJ1Y3Rpb24g
PCBpbnN0cnVjdGlvbnNFbmQpOwogICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24gLSBpbnN0cnVj
dGlvbnNCZWdpbjsKICAgICB9CkBAIC0yNzgsNyArMjc4LDcgQEAgcHVibGljOgogICAgIEFMV0FZ
U19JTkxJTkUgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
dW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KIAotICAg
IGNvbnN0IEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvcFByb2ZpbGVD
b250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cygpIGNvbnN0CisgICAgY29uc3QgRml4ZWRWZWN0b3I8
SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29k
ZU9mZnNldHMoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEpOwogICAg
ICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zm
c2V0czsKQEAgLTQzOCw5ICs0MzgsOSBAQCBwcml2YXRlOgogICAgIFBhY2tlZFJlZlB0cjxTdHJp
bmdJbXBsPiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1w
bD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCi0gICAgRml4ZWRWZWN0b3I8SW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBGaXhlZFZlY3RvcjxKU0lu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgUmVmPFVubGlua2Vk
TWV0YWRhdGFUYWJsZT4gbV9tZXRhZGF0YTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rp
b25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0luc3RydWN0
aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzPiBtX2xpdmVuZXNzOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00
NzQsNyArNDc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgdW5zaWduZWQgbV9lbmREaXZvdDsK
ICAgICAgICAgfTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVHlwZVByb2ZpbGVyRXhwcmVz
c2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9NYXA7Ci0gICAgICAgIEZpeGVkVmVjdG9yPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9m
ZnNldHM7CisgICAgICAgIEZpeGVkVmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4g
bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKICAgICAgICAgRml4ZWRWZWN0
b3I8Qml0VmVjdG9yPiBtX2JpdFZlY3RvcnM7CiAgICAgICAgIEZpeGVkVmVjdG9yPElkZW50aWZp
ZXJTZXQ+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKIApAQCAtNDgyLDEyICs0ODIsMTIgQEAg
cHVibGljOgogICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsK
ICAgICB9OwogCi0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCk7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCisgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSlNJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChj
b25zdCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAg
IH0KLSAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCisg
ICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IHRoaXMtPmJ5dGVjb2RlT2Zmc2V0
KHBjKTsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
OwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHB1YmxpYzoKICAgICBCYXNlbGluZUV4ZWN1dGlvbkNvdW50
ZXImIGxsaW50RXhlY3V0ZUNvdW50ZXIoKSB7IHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7
IH0KIAogcHJpdmF0ZToKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAgICB1c2luZyBPdXRPZkxpbmVKdW1w
VGFyZ2V0cyA9IEhhc2hNYXA8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCiAg
ICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNw
cAppbmRleCA2ZDdiZWExZjM5NDBjMzc2M2I5ODQ4YTFlNjgyZjI0MTkyMGE0Yzg5Li5mMTdlMWQx
NWI5YmI2ZjBlNzk5OWJhYmE4NWRkOWEyZDY2MDRmODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
OjphZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdAogICAgIG1f
dHlwZVByb2ZpbGVySW5mb01hcC5zZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIHJhbmdlKTsKIH0KIAot
dm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUoc3RkOjp1bmlxdWVfcHRy
PEluc3RydWN0aW9uU3RyZWFtPiBpbnN0cnVjdGlvbnMpCit2b2lkIFVubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SlNJbnN0cnVjdGlvblN0cmVhbT4g
aW5zdHJ1Y3Rpb25zKQogewogICAgIEFTU0VSVChpbnN0cnVjdGlvbnMpOwogICAgIHsKQEAgLTE3
MCw3ICsxNzAsNyBAQCBVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvcjo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LAogICAgIHJldHVybiBVbmxpbmtl
ZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXg8VW5saW5rZWRIYW5kbGVySW5mbz4obV9leGNl
cHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKLXZvaWQgVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0ZXIm
IHJld3JpdGVyLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zKQordm9pZCBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdy
aXRlciYgcmV3cml0ZXIsIEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucykK
IHsKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMsIHdlIGFkanVzdCB0aGUganVt
cHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldCwgdGhlIG9mZnNldCB0byB0
aGUganVtcCB0YXJnZXQsIGFuZAogICAgIC8vIHRoZSBpbnNlcnRpb24gaW5mb3JtYXRpb24uCkBA
IC0yMDUsMTMgKzIwNSwxMyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphcHBs
eU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiByZXdyaXRlciwgSQogICAgIHJlY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlzLCBpbnN0cnVjdGlvbnMsIG1fanVtcFRhcmdldHMpOwog
fQogCi12b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRPZkxpbmVKdW1wVGFy
Z2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQsIGludCB0YXJnZXQp
Cit2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRPdXRPZkxpbmVKdW1wVGFyZ2V0
KEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwgaW50IHRhcmdldCkK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCh0YXJnZXQpOwogICAgIG1fb3V0T2ZMaW5lSnVtcFRhcmdl
dHMuc2V0KGJ5dGVjb2RlT2Zmc2V0LCB0YXJnZXQpOwogfQogCi1pbnQgVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBieXRlY29kZU9mZnNldCkKK2ludCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZM
aW5lSnVtcE9mZnNldChKU0luc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQp
CiB7CiAgICAgQVNTRVJUKG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMoYnl0ZWNvZGVP
ZmZzZXQpKTsKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVP
ZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCA2MGEzNTQxZGRkMjIyMWU5ZmU3OGIx
YmE5YmY1Njg1NzNjZWU5NzQ0Li40YzZmMTRlMzBiY2M1OWZjMjk2NjMwN2I4NDQ4OTljOTdkODll
YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAg
ICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlJiBtZXRhZGF0YSgpIHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5tZXRhZGF0YSgpOyB9CiAgICAgdm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0
cnVjdGlvbk9mZnNldCwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQs
IHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbik7CiAgICAgdm9pZCBhZGRUeXBlUHJvZmls
ZXJFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgc3Rh
cnREaXZvdCwgdW5zaWduZWQgZW5kRGl2b3QpOwotICAgIHZvaWQgYWRkT3BQcm9maWxlQ29udHJv
bEZsb3dCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKKyAg
ICB2b2lkIGFkZE9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXQoSlNJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKICAgICB7CiAgICAgICAgIG1fb3BQcm9maWxlQ29udHJv
bEZsb3dCeXRlY29kZU9mZnNldHMuYXBwZW5kKG9mZnNldCk7CiAgICAgfQpAQCAtMTc2LDEwICsx
NzYsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJzW2luZGV4XTsgfQogICAgIHZvaWQgYWRk
SWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJiBpKSB7IHJldHVybiBtX2lkZW50aWZpZXJzLmFw
cGVuZChpKTsgfQogCi0gICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47Ci0gICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1w
VGFyZ2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludCB0YXJnZXQpOwotICAgIGludCBv
dXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOwotICAgIGludCBv
dXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0
aW9uKQorICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDxKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CisgICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0
KEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7CisgICAgaW50IG91dE9m
TGluZUp1bXBPZmZzZXQoSlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICBpbnQgb3V0
T2ZMaW5lSnVtcE9mZnNldChjb25zdCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0
aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rp
b24ub2Zmc2V0KCkpOwogICAgIH0KQEAgLTE5NCw5ICsxOTQsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGdldExpbmVBbmRDb2x1bW4oY29uc3QgRXhwcmVzc2lvblJhbmdlSW5mbyYsIHVuc2lnbmVk
JiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlNb2RpZmlj
YXRpb24oQnl0ZWNvZGVSZXdyaXRlciYsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJik7CisgICAg
dm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiwgSlNJbnN0cnVjdGlvblN0
cmVhbVdyaXRlciYpOwogCi0gICAgdm9pZCBmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1
Y3Rpb25TdHJlYW0+KTsKKyAgICB2b2lkIGZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxKU0luc3Ry
dWN0aW9uU3RyZWFtPik7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApA
QCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgVk0mIG1fdm07CiAgICAgU3Ryb25nPFVu
bGlua2VkQ29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICAvLyBJbiBub24tUmFyZURhdGEuCi0g
ICAgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAg
VmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBW
ZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOwpAQCAtMjIx
LDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxl
PiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICBWZWN0b3I8RXhwcmVzc2lv
blJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJv
ZmlsZXJFeHByZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKLSAgICBWZWN0b3I8
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2Rl
T2Zmc2V0czsKKyAgICBWZWN0b3I8SlNJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJv
ZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxCaXRWZWN0b3I+IG1f
Yml0VmVjdG9yczsKICAgICBWZWN0b3I8SWRlbnRpZmllclNldD4gbV9jb25zdGFudElkZW50aWZp
ZXJTZXRzOwogICAgIHVuc2lnbmVkIG1fbnVtQmluYXJ5QXJpdGhQcm9maWxlcyB7IDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA5ZGRmZDM0YmY3OWQ4ZjRiMTlmZGRlNTZiMmE0MTFiM2JjYjE2MDgwLi40
MDIwNGM1MmExOTg5ZjVlYTZmYzI4NWRlYmMxNmQ4ODQzZWVjNjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC0zMzQsNiArMzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVzaW5nIE9wY29kZUlE
ID0gOjpKU0M6Ok9wY29kZUlEOwogICAgICAgICB1c2luZyBPcE5vcCA9IDo6SlNDOjpPcE5vcDsK
ICAgICAgICAgdXNpbmcgQ29kZUJsb2NrID0gc3RkOjp1bmlxdWVfcHRyPFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yPjsKKyAgICAgICAgdXNpbmcgSW5zdHJ1Y3Rpb25UeXBlID0gSlNJbnN0cnVj
dGlvbjsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBvcGNvZGVGb3JEaXNhYmxp
bmdPcHRpbWl6YXRpb25zID0gb3BfZW5kOwogICAgIH07CiAKQEAgLTEwOTAsNyArMTA5MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSnVtcE9wPgotICAgICAgICB2b2lkIHNldFRhcmdl
dEZvckp1bXBJbnN0cnVjdGlvbihJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYsIGludCB0
YXJnZXQpOworICAgICAgICB2b2lkIHNldFRhcmdldEZvckp1bXBJbnN0cnVjdGlvbihKU0luc3Ry
dWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiwgaW50IHRhcmdldCk7CiAKICAgICAgICAgdXNpbmcg
QmlnSW50TWFwRW50cnkgPSBzdGQ6OnR1cGxlPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdCwg
Ym9vbD47CiAKQEAgLTExODgsNyArMTE4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBK
U1ZhbHVlIGFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4
LCBib29sIHNpZ24pOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRUZW1wbGF0ZU9iamVjdENvbnN0
YW50KFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+JiYsIGludCk7CiAKLSAgICAgICAgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fd3Jp
dGVyOyB9CisgICAgICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKIApAQCAtMTIwNCw3ICsxMjA1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVzdG9yZVREWlN0YWNrKGNvbnN0
IFByZXNlcnZlZFREWlN0YWNrJik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
LSAgICAgICAgdm9pZCB3aXRoV3JpdGVyKEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0ZXIs
IGNvbnN0IEZ1bmMmIGZuKQorICAgICAgICB2b2lkIHdpdGhXcml0ZXIoSlNJbnN0cnVjdGlvblN0
cmVhbVdyaXRlciYgd3JpdGVyLCBjb25zdCBGdW5jJiBmbikKICAgICAgICAgewogICAgICAgICAg
ICAgYXV0byBwcmV2TGFzdE9wY29kZUlEID0gbV9sYXN0T3Bjb2RlSUQ7CiAgICAgICAgICAgICBh
dXRvIHByZXZMYXN0SW5zdHJ1Y3Rpb24gPSBtX2xhc3RJbnN0cnVjdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
QmFzZS5oCmluZGV4IDBmOTE5OTM3YjVlNDZlNzhlNjExNzYyNDBkYmVhMTM3OGY3ZWU1OGMuLjE4
ZDg2MjNmZGJjOTRjODdmZTdhMWVkOTk5ZTZiN2JkODlkZWVjNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJh
c2UuaApAQCAtNDYsNiArNDYsOSBAQCBjbGFzcyBCeXRlY29kZUdlbmVyYXRvckJhc2UgewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgogICAgIGZyaWVuZCBjbGFzcyBH
ZW5lcmljTGFiZWw7CiAKKyAgICB1c2luZyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlclR5cGUgPSBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjx0eXBlbmFtZSBUcmFpdHM6Okluc3RydWN0aW9uVHlwZT47
CisgICAgdXNpbmcgSW5zdHJ1Y3Rpb25TdHJlYW1UeXBlID0gSW5zdHJ1Y3Rpb25TdHJlYW08dHlw
ZW5hbWUgVHJhaXRzOjpJbnN0cnVjdGlvblR5cGU+OworCiBwdWJsaWM6CiAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlKHR5cGVuYW1lIFRyYWl0czo6Q29kZUJsb2NrLCB1aW50MzJfdCB2aXJ0dWFs
UmVnaXN0ZXJDb3VudEZvckNhbGxlZVNhdmVzKTsKIApAQCAtNzcsMTIgKzgwLDEyIEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICB2b2lkIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CiAKLSAgICBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlciBtX3dyaXRlcjsKKyAgICBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlclR5cGUgbV93cml0ZXI7CiAgICAgdHlwZW5hbWUgVHJhaXRzOjpDb2RlQmxvY2sgbV9jb2Rl
QmxvY2s7CiAKICAgICBib29sIG1fb3V0T2ZNZW1vcnlEdXJpbmdDb25zdHJ1Y3Rpb24geyBmYWxz
ZSB9OwogICAgIHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgbV9sYXN0T3Bjb2RlSUQgPSBUcmFp
dHM6Om9wY29kZUZvckRpc2FibGluZ09wdGltaXphdGlvbnM7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJl
YW06Ok11dGFibGVSZWYgbV9sYXN0SW5zdHJ1Y3Rpb24geyBtX3dyaXRlci5yZWYoKSB9OworICAg
IHR5cGVuYW1lIEluc3RydWN0aW9uU3RyZWFtVHlwZTo6TXV0YWJsZVJlZiBtX2xhc3RJbnN0cnVj
dGlvbiB7IG1fd3JpdGVyLnJlZigpIH07CiAKICAgICBTZWdtZW50ZWRWZWN0b3I8R2VuZXJpY0xh
YmVsPFRyYWl0cz4sIDMyPiBtX2xhYmVsczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgMzI+IG1fY2FsbGVlTG9jYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaApp
bmRleCBiZDc4OTBkNWZhYjllMTVlN2JlNWUzYjA3ZmQ4MThkNDIyNTBiNmE3Li44ZGM2MmJiNjIw
Mzk1NGUyZWNkOTJiZDg2OTgxN2IxMjk5NjM5ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yQmFz
ZUlubGluZXMuaApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTxU
cmFpdHM+OjplbWl0TGFiZWwoR2VuZXJpY0xhYmVsPFRyYWl0cz4mIGxhYmVsKQogdGVtcGxhdGU8
dHlwZW5hbWUgVHJhaXRzPgogdm9pZCBCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRzPjo6cmVj
b3JkT3Bjb2RlKHR5cGVuYW1lIFRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgQVNT
RVJUKG1fbGFzdE9wY29kZUlEID09IFRyYWl0czo6b3Bjb2RlRm9yRGlzYWJsaW5nT3B0aW1pemF0
aW9ucyB8fCAobV9sYXN0T3Bjb2RlSUQgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24tPm9wY29kZUlEPHR5
cGVuYW1lIFRyYWl0czo6T3Bjb2RlVHJhaXRzPigpICYmIG1fd3JpdGVyLnBvc2l0aW9uKCkgPT0g
bV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBtX2xhc3RJbnN0cnVjdGlvbi0+c2l6ZTx0eXBl
bmFtZSBUcmFpdHM6Ok9wY29kZVRyYWl0cz4oKSkpOworICAgIEFTU0VSVChtX2xhc3RPcGNvZGVJ
RCA9PSBUcmFpdHM6Om9wY29kZUZvckRpc2FibGluZ09wdGltaXphdGlvbnMgfHwgKG1fbGFzdE9w
Y29kZUlEID09IG1fbGFzdEluc3RydWN0aW9uLT5vcGNvZGVJRCgpICYmIG1fd3JpdGVyLnBvc2l0
aW9uKCkgPT0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBtX2xhc3RJbnN0cnVjdGlvbi0+
c2l6ZSgpKSk7CiAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24gPSBtX3dyaXRlci5yZWYoKTsKICAgICBt
X2xhc3RPcGNvZGVJRCA9IG9wY29kZUlEOwogfQpAQCAtMTAyLDYgKzEwMiw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFRyYWl0cz4KIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFRyYWl0cz46OmFs
aWduV2lkZU9wY29kZTE2KCkKIHsKICNpZiBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCisgICAg
c3RhdGljX2Fzc2VydChUcmFpdHM6Ok9wY29kZVRyYWl0czo6bWF4T3Bjb2RlSURXaWR0aCA9PSBP
cGNvZGVTaXplOjpOYXJyb3cpOwogICAgIHNpemVfdCBvcGNvZGVTaXplID0gMTsKICAgICBzaXpl
X3QgcHJlZml4QW5kT3Bjb2RlU2l6ZSA9IG9wY29kZVNpemUgKyBQYWRkaW5nQnlTaXplPE9wY29k
ZVNpemU6OldpZGUxNj46OnZhbHVlOwogICAgIHdoaWxlICgobV93cml0ZXIucG9zaXRpb24oKSAr
IHByZWZpeEFuZE9wY29kZVNpemUpICUgT3Bjb2RlU2l6ZTo6V2lkZTE2KQpAQCAtMTEzLDYgKzEx
NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlPFRyYWl0cz46OmFsaWduV2lkZU9wY29kZTMyKCkKIHsKICNpZiBDUFUoTkVFRFNfQUxJR05F
RF9BQ0NFU1MpCisgICAgc3RhdGljX2Fzc2VydChUcmFpdHM6Ok9wY29kZVRyYWl0czo6bWF4T3Bj
b2RlSURXaWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cpOwogICAgIHNpemVfdCBvcGNvZGVTaXpl
ID0gMTsKICAgICBzaXplX3QgcHJlZml4QW5kT3Bjb2RlU2l6ZSA9IG9wY29kZVNpemUgKyBQYWRk
aW5nQnlTaXplPE9wY29kZVNpemU6OldpZGUzMj46OnZhbHVlOwogICAgIHdoaWxlICgobV93cml0
ZXIucG9zaXRpb24oKSArIHByZWZpeEFuZE9wY29kZVNpemUpICUgT3Bjb2RlU2l6ZTo6V2lkZTMy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHlzaXMuaAppbmRleCA4NzU3ZDNhMGQ1NGZjODlmYjBkOTdhYzhiOTll
ODZhMzQxZWI2ZDc0Li4yYTg2ZjM1OThhNzY3NmE2YTA2NzY5NzM3NmNjMzFmMmExNmZkMTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3Bl
cnR5QW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHlzaXMuaApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IC8vIFJlZmVyZW5jZSBjb3VudCBpbmRpY2F0ZXMgbnVtYmVyIG9mIGxpdmUgcmVnaXN0ZXJzIHRo
YXQgYWxpYXMgdGhpcyBvYmplY3QuCiBjbGFzcyBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzIDogcHVi
bGljIFJlZkNvdW50ZWQ8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gY3JlYXRlKEluc3RydWN0aW9uU3RyZWFt
OjpNdXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCisgICAgc3RhdGljIFJlZjxTdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzPiBjcmVhdGUoSlNJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGlu
c3RydWN0aW9uUmVmKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGlj
UHJvcGVydHlBbmFseXNpcyhXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkpOyAKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGljUHJvcGVydHlBbmFseXNpcyhXVEZNb3ZlKGluc3RydWN0
aW9uUmVmKSkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkUHJvcGVydHlJbmRleCh1bnNpZ25lZCBw
cm9wZXJ0eUluZGV4KSB7IG1fcHJvcGVydHlJbmRleGVzLmFkZChwcm9wZXJ0eUluZGV4KTsgfQpA
QCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICBpbnQgcHJvcGVydHlJbmRleENvdW50KCkg
eyByZXR1cm4gbV9wcm9wZXJ0eUluZGV4ZXMuc2l6ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3Rh
dGljUHJvcGVydHlBbmFseXNpcyhJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGluc3Ry
dWN0aW9uUmVmKQorICAgIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMoSlNJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiYmIGluc3RydWN0aW9uUmVmKQogICAgICAgICA6IG1faW5zdHJ1Y3Rpb25S
ZWYoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpCiAgICAgewogICAgIH0KIAotICAgIEluc3RydWN0
aW9uU3RyZWFtOjpNdXRhYmxlUmVmIG1faW5zdHJ1Y3Rpb25SZWY7CisgICAgSlNJbnN0cnVjdGlv
blN0cmVhbTo6TXV0YWJsZVJlZiBtX2luc3RydWN0aW9uUmVmOwogICAgIHR5cGVkZWYgSGFzaFNl
dDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IFByb3BlcnR5SW5kZXhTZXQ7CiAgICAgUHJvcGVydHlJ
bmRleFNldCBtX3Byb3BlcnR5SW5kZXhlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCmluZGV4
IDVmOWU3Mzg2MmE0YWNkMzA3YjEwMWJkMWNkNmYyM2ZjNTE3NTJkM2IuLjgxZGQ4MzViZmY4NmE0
YzhiMzVkNDJlYjFlZmI3ZGI5NjM4ZGE2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCkBAIC0z
NSw4ICszNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gaXMgdW5kZXJzdG9vZCB0byBiZSBsb3Nz
eSwgYW5kIGl0J3MgT0sgaWYgaXQgdHVybnMgb3V0IHRvIGJlIHdyb25nIHNvbWV0aW1lcy4KIGNs
YXNzIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgewogcHVibGljOgotICAgIHZvaWQgY3JlYXRlVGhp
cyhSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0
aW9uUmVmKTsKLSAgICB2b2lkIG5ld09iamVjdChSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9u
U3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKTsKKyAgICB2b2lkIGNyZWF0ZVRoaXMo
UmVnaXN0ZXJJRCogZHN0LCBKU0luc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0
aW9uUmVmKTsKKyAgICB2b2lkIG5ld09iamVjdChSZWdpc3RlcklEKiBkc3QsIEpTSW5zdHJ1Y3Rp
b25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpOwogICAgIHZvaWQgcHV0QnlJZChS
ZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpOyAvLyBwcm9wZXJ0eUluZGV4
IGlzIGFuIGluZGV4IGludG8gYSB1bmlxdWVkIHNldCBvZiBzdHJpbmdzLgogICAgIHZvaWQgbW92
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIApAQCAtNTAsMTQgKzUwLDE0IEBA
IHByaXZhdGU6CiAgICAgQW5hbHlzaXNNYXAgbV9hbmFseXNlczsKIH07CiAKLWlubGluZSB2b2lk
IFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0LCBJbnN0
cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZikKK2lubGluZSB2b2lkIFN0
YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0LCBKU0luc3Ry
dWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKQogewogICAgIEFuYWx5c2lz
TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hbmFseXNlcy5hZGQoCiAgICAgICAgIGRzdC0+
aW5kZXgoKSwgU3RhdGljUHJvcGVydHlBbmFseXNpczo6Y3JlYXRlKFdURk1vdmUoaW5zdHJ1Y3Rp
b25SZWYpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsgLy8gQ2FuJ3QgaGF2ZSB0d28gJ3RoaXMnIGluIHRoZSBzYW1lIGNvbnN0cnVjdG9yLgog
fQogCi1pbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QoUmVnaXN0
ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZikK
K2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChSZWdpc3RlcklE
KiBkc3QsIEpTSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpCiB7
CiAgICAgYXV0byBhbmFseXNpcyA9IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZShXVEZN
b3ZlKGluc3RydWN0aW9uUmVmKSk7CiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1
bHQgPSBtX2FuYWx5c2VzLmFkZChkc3QtPmluZGV4KCksIGFuYWx5c2lzLmNvcHlSZWYoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IGVhY2JjMGNlMjcyZjY3YmU4MmM3OTM3MmFhN2Y3Mjg4OGI2ZjIxNWYuLjdhNGZlMDM5NjFlODkx
ZjhhMmRlYTNkZWJiNWEzODIxNDhhYzg4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xODIsOSArMTgyLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBFQ01BTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgotICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUsIEJ5dGVjb2RlSW5kZXggb3Ny
RXhpdEluZGV4KTsKKyAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci0gICAgVGVybWluYWxpdHkgaGFuZGxl
VmFyYXJnc0NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUp
OworICAgIFRlcm1pbmFsaXR5IGhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUpOwogICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tz
KENhbGxWYXJpYW50LCBOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3Vt
bnQpOwogICAgIHZvaWQgZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgIE5vZGUqIGdldEFyZ3VtZW50Q291
bnQoKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCBwcml2YXRlOgogICAgIE5vZGUqIHN0b3JlKE5vZGUq
IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFB1dEJ5VmFyaWFudCYsIE5vZGUqIHZh
bHVlKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgIHZvaWQgcGFyc2VHZXRCeUlk
KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgdm9pZCBwYXJzZUdldEJ5SWQoY29uc3QgSlNJbnN0
cnVjdGlvbiopOwogICAgIHZvaWQgc2ltcGxpZnlHZXRCeVN0YXR1cyhOb2RlKiBiYXNlLCBHZXRC
eVN0YXR1cyYpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5
cGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKQEAgLTEyNTQsMTAgKzEyNTQsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgTm9kZSogbV92YWx1ZSB7IG51bGxwdHIgfTsKICAgICAgICAgU2V0
TW9kZSBtX3NldE1vZGU7CiAgICAgfTsKLSAgICAKKwogICAgIFZlY3RvcjxEZWxheWVkU2V0TG9j
YWwsIDI+IG1fc2V0TG9jYWxRdWV1ZTsKIAotICAgIGNvbnN0IEluc3RydWN0aW9uKiBtX2N1cnJl
bnRJbnN0cnVjdGlvbjsKKyAgICBjb25zdCBKU0luc3RydWN0aW9uKiBtX2N1cnJlbnRJbnN0cnVj
dGlvbjsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNBbnlG
b3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CkBAIC0xMzEwLDcgKzEzMTAsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjphZGRKdW1wVG8odW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgotQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3As
IENhbGxNb2RlIGNhbGxNb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCkKK0J5dGVDb2Rl
UGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBKU0lu
c3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlLCBCeXRlY29kZUlu
ZGV4IG9zckV4aXRJbmRleCkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPENhbGxPcD4o
KTsKICAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KGNhbGxlZUZvcihieXRlY29kZSwgbV9jdXJy
ZW50SW5kZXguY2hlY2twb2ludCgpKSk7CkBAIC0xMzY5LDcgKzEzNjksNyBAQCBCeXRlQ29kZVBh
cnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENhbGxPcD4KLUJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlw
ZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUpCitCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBO
b2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxDYWxsT3A+KCk7CiAgICAgaW50IGZpcnN0RnJlZVJlZyA9IGJ5dGVjb2RlLm1fZmlyc3RG
cmVlLm9mZnNldCgpOwpAQCAtMTUzNSwxNCArMTUzNSwxNSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlh
bnQgYwogICAgICAgICBCeXRlY29kZUluZGV4IG9sZEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CiAg
ICAgICAgIGF1dG8gb2xkU3RhY2tUb3AgPSBtX2lubGluZVN0YWNrVG9wOwogICAgICAgICBtX2lu
bGluZVN0YWNrVG9wID0gc3RhY2tFbnRyeTsKLSAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRl
Y29kZUluZGV4KG9wY29kZUxlbmd0aHNbb3BfZW50ZXJdKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChPcGNvZGVJRFdpZHRoQnlTaXplPEpTT3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMzI+
OjpvcGNvZGVJRFNpemUgPT0gMSk7CisgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJ
bmRleChvcGNvZGVMZW5ndGhzW29wX2VudGVyXSArIDEpOwogICAgICAgICBtX2V4aXRPSyA9IHRy
dWU7CiAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CiAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gb2xkSW5kZXg7CiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AgPSBvbGRTdGFja1RvcDsK
ICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsKIAotICAgICAgICBCYXNpY0Jsb2NrKiogZW50cnlC
bG9ja1B0ciA9IHRyeUJpbmFyeVNlYXJjaDxCYXNpY0Jsb2NrKiwgQnl0ZWNvZGVJbmRleD4oc3Rh
Y2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLCBzdGFja0VudHJ5LT5tX2Jsb2NrTGlua2lu
Z1RhcmdldHMuc2l6ZSgpLCBCeXRlY29kZUluZGV4KG9wY29kZUxlbmd0aHNbb3BfZW50ZXJdKSwg
Z2V0Qnl0ZWNvZGVCZWdpbkZvckJsb2NrKTsKKyAgICAgICAgQmFzaWNCbG9jayoqIGVudHJ5Qmxv
Y2tQdHIgPSB0cnlCaW5hcnlTZWFyY2g8QmFzaWNCbG9jayosIEJ5dGVjb2RlSW5kZXg+KHN0YWNr
RW50cnktPm1fYmxvY2tMaW5raW5nVGFyZ2V0cywgc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdU
YXJnZXRzLnNpemUoKSwgQnl0ZWNvZGVJbmRleChvcGNvZGVMZW5ndGhzW29wX2VudGVyXSArIDEp
LCBnZXRCeXRlY29kZUJlZ2luRm9yQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChlbnRy
eUJsb2NrUHRyKTsKICAgICAgICAgYWRkSnVtcFRvKCplbnRyeUJsb2NrUHRyKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xNjU0LDcgKzE2NTUsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dQogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFy
aWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29udGludWF0
aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKLSAgICBjb25z
dCBJbnN0cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJlbnRJbnN0cnVj
dGlvbjsKKyAgICBjb25zdCBKU0luc3RydWN0aW9uKiBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbiA9
IG1fY3VycmVudEluc3RydWN0aW9uOwogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lh
bGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2lu
ZCk7CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFi
bGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKQEAgLTUzNDUs
NyArNTM0Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmNsZWFyQ2FjaGVzKCkKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUdldEJ5SWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlR2V0QnlJZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKQEAgLTU0NzEsMTIg
KzU0NzIsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgICAgICBhZGRKdW1wVG8obV9jdXJyZW50SW5kZXgub2Zmc2V0KCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFN3
aXRjaCBvbiB0aGUgY3VycmVudCBieXRlY29kZSBvcGNvZGUuCi0gICAgICAgIGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQobV9jdXJyZW50SW5k
ZXgpLnB0cigpOworICAgICAgICBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnMuYXQobV9jdXJyZW50SW5kZXgpLnB0cigpOwogICAgICAgICBtX2N1
cnJlbnRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvbjsgLy8gU29tZSBtZXRob2RzIHdh
bnQgdG8gdXNlIHRoaXMsIGFuZCB3ZSdkIHJhdGhlciBub3QgdGhyZWFkIGl0IHRocm91Z2ggY2Fs
bHMuCiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNv
ZGVJRCgpOwotICAgICAgICAKKwogICAgICAgICBWRVJCT1NFX0xPRygiICAgIHBhcnNpbmcgIiwg
Y3VycmVudENvZGVPcmlnaW4oKSwgIjogIiwgb3Bjb2RlSUQsICJcbiIpOwogICAgICAgICAKICAg
ICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpIHsKQEAgLTg4MDAsOCAr
ODgwMSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAg
ZGF0YUxvZ0xuKCk7CiAgICAgICAgIGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCktPmR1bXBC
eXRlY29kZSgpOwogICAgIH0KLSAgICAKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgMzI+IGp1bXBUYXJnZXRzOworCisgICAgVmVjdG9yPEpTSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgMzI+IGp1bXBUYXJnZXRzOwogICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
Y29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBC
eXRlY29kZUF0REZHVGltZSgpKSkgewogICAgICAgICBkYXRhTG9nKCJKdW1wIHRhcmdldHM6ICIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IDVlMzJkMmQyNGYxYjNlZDg3MGMzMzBmMmVmMjNkODVlNGVjZTQ4MzcuLjU4MmFhZjVmZDE5NjRh
NDQ3ZTExNDQyMTRiZjgyMGQxMWRhZDIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbmxpbmUgdm9pZCBk
ZWJ1Z0ZhaWwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBDYXBhYmls
aXR5TGV2ZWwgcgogICAgICAgICBkYXRhTG9nKCJERkcgcmVqZWN0aW5nIG9wY29kZSBpbiAiLCAq
Y29kZUJsb2NrLCAiIGJlY2F1c2Ugb2Ygb3Bjb2RlICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwg
IlxuIik7CiB9CiAKLUNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCitDYXBh
YmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGNvZGVCbG9jayk7IC8vIFRoaXMgZnVuY3Rpb24gZG9lcyBzb21lIGJ5dGVjb2RlIHBhcnNpbmcu
IE9yZGluYXJpbHkgYnl0ZWNvZGUgcGFyc2luZyByZXF1aXJlcyB0aGUgb3duaW5nIENvZGVCbG9j
ay4gSXQncyBzb3J0IG9mIHN0cmFuZ2UgdGhhdCB3ZSBkb24ndCB1c2UgaXQgaGVyZSByaWdodCBu
b3cuCiAgICAgVU5VU0VEX1BBUkFNKHBjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCmluZGV4IDRkYTg5YWI3NDIzYTBkODA5OWVkMGM1MjkwNDVhYmIyNWMx
YjRkYWUuLjhlNWIxMDMwZDU5NDg0NGQ2YTE4YTFlZGZkODUyOTgzYTA5M2ZhNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApAQCAtNDUsNyArNDUsNyBA
QCBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxvY2sqKTsKIGJv
b2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKTsKIGJvb2wgY2Fu
VXNlT1NSRXhpdEZ1enppbmcoQ29kZUJsb2NrKik7CiAKLWlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FwYWJpbGl0eUxldmVsKE9wY29kZUlELCBDb2RlQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlvbiog
cGMpOworaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQsIENv
ZGVCbG9jayosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKTsKIAogQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbChDb2RlQmxvY2sqKTsKICNlbHNlIC8vIEVOQUJMRShERkdfSklUKQpAQCAt
NTgsNyArNTgsNyBAQCBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNh
bGwoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIG1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGlu
ZSBib29sIGNhblVzZU9TUkV4aXRGdXp6aW5nKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9
CiAKLWlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlELCBDb2Rl
QmxvY2sqLCBjb25zdCBJbnN0cnVjdGlvbiopIHsgcmV0dXJuIENhbm5vdENvbXBpbGU7IH0KK2lu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlELCBDb2RlQmxvY2sq
LCBjb25zdCBKU0luc3RydWN0aW9uKikgeyByZXR1cm4gQ2Fubm90Q29tcGlsZTsgfQogaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoQ29kZUJsb2NrKikgeyByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCA4OWFlNzNmMjNkYTU3YzczZWUxMDU2MTRi
YzY3NDdlZDAxOTI1NWQzLi5iMjQzYzY3NDc5NTBjZWZkNmI1MmQ4ZGU1M2E1YWFlYTE0OGJiMGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTMzMyw3ICsz
MzMsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYg
dm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwogICAgICAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdp
bik7CiAgICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBjb2RlQmxv
Y2stPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSkpIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYXQoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpLnB0cigpOwogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBza2lwUHJvZmlsZTsKICAgICAgICAgICAgICAgICBpZiAo
aW5zdHJ1Y3Rpb24tPmlzPE9wR2V0QnlJZD4oKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRv
JiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEoY29kZUJs
b2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcAppbmRleCAxODIyMjM5NmNmNDVlN2FlN2MzYjEwM2M0ZWZhOTZmYWE3
NDE4Zjc5Li41ODRmZmQ4ODU2YjE4Yzc3NjhiY2EyZDM3OTVlOTBlODMzMWUyMTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ28KIAogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0OwogCi0gICAg
Y29uc3QgSW5zdHJ1Y3Rpb24mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9ja0Zv
ckNhbGxlci0+aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOworICAg
IGNvbnN0IGF1dG8mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxl
ci0+aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGlmIChj
YWxsZXJJc0xMSW50KSB7CiAjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSBMTElu
dDo6cmV0dXJuTG9jYXRpb25UaHVuayhuYW1lIyNfcmV0dXJuX2xvY2F0aW9uLCBjYWxsSW5zdHJ1
Y3Rpb24ud2lkdGgoKSkuY29kZSgpCiAKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIGFkanVzdEFu
ZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFz
ZSYgZXhpdCkKICAgICBib29sIGV4aXRUb0xMSW50ID0gT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9M
TEludCgpIHx8IGNvZGVCbG9ja0ZvckV4aXQtPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnBy
ZXRlclRodW5rOwogICAgIGlmIChleGl0VG9MTEludCkgewogICAgICAgICBhdXRvIGJ5dGVjb2Rl
SW5kZXggPSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIGNvbnN0
IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAqY29kZUJsb2NrRm9yRXhpdC0+aW5z
dHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgICAgIGNvbnN0IGF1dG8m
IGN1cnJlbnRJbnN0cnVjdGlvbiA9ICpjb2RlQmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5h
dChieXRlY29kZUluZGV4KS5wdHIoKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
RW50cnlQdHJUYWc+IGRlc3RpbmF0aW9uOwogICAgICAgICBpZiAoYnl0ZWNvZGVJbmRleC5jaGVj
a3BvaW50KCkpCiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50T1NS
RXhpdFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIGFk
anVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JF
eGl0QmFzZSYgZXhpdCkKIAogICAgICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkg
ewogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjdXJy
ZW50SW5zdHJ1Y3Rpb24pLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQuc3RvcmVQ
dHIoR1BSSW5mbzo6cmVnVDIsICZ2bS50YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cpOworICAg
ICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QyLCAmc3RkOjpnZXQ8Y29uc3QgSlNJ
bnN0cnVjdGlvbio+KHZtLnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdykpOwogICAgICAgICB9
CiAKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9j
a0ZvckV4aXQtPm1ldGFkYXRhVGFibGUoKSksIExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRhVGFi
bGVHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBmYzNhNmM0ZmRhZTNkZDg5Njc4YzZiYjlhNjU2OTBiNDhmN2ZhZDdhLi4zNjBl
MTgxODNlY2JhMWUwY2MwNWQ3NmM3MmNkZjEyMTllY2NiMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjEwMCw3ICsyMTAwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvb3BIaW50KE5vZGUqIG5vZGUpCiAgICAg
ICAgIGlmIChlbWl0RWFybHlSZXR1cm4pIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxp
bmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgg
PSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICAgICAgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOworICAgICAgICAgICAgY29u
c3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCk7CiAKICAgICAgICAgICAgIHVpbnRwdHJf
dCogcHRyID0gdm0oKS5nZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24pOwog
ICAgICAgICAgICAgbV9qaXQucHVzaFRvU2F2ZShHUFJJbmZvOjpyZWdUMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOWU1OTliZmZlYzhi
OTAwZmQ3MjM4ZWRjNjM5Y2ViNTY0OTQzYTljOC4uOGM0NGQ2NGI4OTVlODI2ZmNhNGMzNzNhNGM0
NjZjYjMyMTZhYzljNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtMTYyNzQsNyArMTYyNzQsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
RU5ECiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZ3JhcGguYmFz
ZWxpbmVDb2RlQmxvY2tGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBtX29yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0g
ICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKKyAgICAg
ICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCk7CiAgICAgICAgIFZNKiB2bSA9
ICZ0aGlzLT52bSgpOwogICAgICAgICB1aW50cHRyX3QqIHB0ciA9IHZtLT5nZXRMb29wSGludEV4
ZWN1dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggZmU3OWY3OGQzNzUwZDYzNGRlMjMy
M2NhZGRiMDZkNDE3ZTg4M2JlNy4uYTgyNGY3YTUxOWNlNDVmNGE3NDI1NTU4ZTM0NGQyZjI3ZDRk
ZDNjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2
bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAg
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQ
cm9maWxlOwogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQuYmFzZWxpbmVD
b2RlQmxvY2tGb3IoY29kZU9yaWdpbik7CiAgICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBh
cnJheVByb2ZpbGUgPSBjb2RlQmxvY2stPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgoKSkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCgpKS5wdHIoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkp
LnB0cigpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBza2lwUHJvZmlsZTsK
ICAgICAgICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24tPmlzPE9wR2V0QnlJZD4oKSkgewogICAg
ICAgICAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5
SWQ+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCmluZGV4IDJhYjZhODA5MDg2YmNiMjVkMDkxNmVlMTU3NmQwZWVjODEw
YmIzMGYuLmI5NWU3NDNhMjY1ZDY3M2M0MWMxNzM5NWUzZjM3YWZhZTNjMDJlYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtNTc1LDcgKzU3NSw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdElu
T1NSLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplCiAgICAgICAgIC8vIEZvciBub3csIHdlIHVzZSBh
cnJheSBhbGxvY2F0aW9uIHByb2ZpbGUgaW4gdGhlIGFjdHVhbCBDb2RlQmxvY2suIEl0IGlzIE9L
IHNpbmNlIGN1cnJlbnQgTmV3QXJyYXlCdWZmZXIKICAgICAgICAgLy8gYW5kIFBoYW50b21OZXdB
cnJheUJ1ZmZlciBhcmUgYWx3YXlzIGJvdW5kIHRvIGEgc3BlY2lmaWMgb3BfbmV3X2FycmF5X2J1
ZmZlci4KICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zv
ck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCksIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKSk7Ci0gICAgICAgIGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmF0KG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKS5wdHIo
KTsKKyAgICAgICAgY29uc3QgYXV0byogY3VycmVudEluc3RydWN0aW9uID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5hdChtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmJ5dGVjb2RlSW5kZXgo
KSkucHRyKCk7CiAgICAgICAgIGlmICghY3VycmVudEluc3RydWN0aW9uLT5pczxPcE5ld0FycmF5
QnVmZmVyPigpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGNhc2UgY2FuIGhhcHBlbiBpZiBPYmpl
Y3Qua2V5cywgYW4gT3BDYWxsIGlzIGZpcnN0IGNvbnZlcnRlZCBpbnRvIGEgTmV3QXJyYXlCdWZm
ZXIgd2hpY2ggaXMgdGhlbiBjb252ZXJ0ZWQgaW50byBhIFBoYW50b21OZXdBcnJheUJ1ZmZlci4K
ICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSBhcnJheSBhbGxv
Y2F0aW9uIHByb2ZpbGUgaW4gdGhhdCBjYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9Bcmd1bWVudC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvQXJndW1lbnQucmIKaW5kZXggZDRkOGM2NjhmNDMxYjlmYzYzYTA2YzQ2ZGY0ZmE1MmUx
MzM3NTRjMy4uMWY1YWZlZDZjYWQzNmYxZDhiZWZmNmY4NmVkMDVhNDdmZmExMGIyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9Bcmd1bWVudC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0FyZ3VtZW50LnJiCkBAIC03MSw5ICs3MSw5
IEBAIGNsYXNzIEFyZ3VtZW50CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2
b2lkIHNldCN7Y2FwaXRhbGl6ZWRfbmFtZX0oI3tAdHlwZS50b19zfSB2YWx1ZSwgRnVuY3RvciBm
dW5jKQogICAgIHsKLSAgICAgICAgaWYgKGlzV2lkZTMyPCN7dHJhaXRzfT4oKSkKKyAgICAgICAg
aWYgKGlzV2lkZTMyKCkpCiAgICAgICAgICAgICBzZXQje2NhcGl0YWxpemVkX25hbWV9PE9wY29k
ZVNpemU6OldpZGUzMj4odmFsdWUsIGZ1bmMpOwotICAgICAgICBlbHNlIGlmIChpc1dpZGUxNjwj
e3RyYWl0c30+KCkpCisgICAgICAgIGVsc2UgaWYgKGlzV2lkZTE2KCkpCiAgICAgICAgICAgICBz
ZXQje2NhcGl0YWxpemVkX25hbWV9PE9wY29kZVNpemU6OldpZGUxNj4odmFsdWUsIGZ1bmMpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZXQje2NhcGl0YWxpemVkX25hbWV9PE9wY29kZVNp
emU6Ok5hcnJvdz4odmFsdWUsIGZ1bmMpOwpAQCAtODQsNyArODQsNyBAQCBjbGFzcyBBcmd1bWVu
dAogICAgIHsKICAgICAgICAgaWYgKCEje0ZpdHM6OmNoZWNrICJzaXplIiwgInZhbHVlIiwgQHR5
cGV9KQogICAgICAgICAgICAgdmFsdWUgPSBmdW5jKCk7Ci0gICAgICAgIGF1dG8qIHN0cmVhbSA9
IGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGUqPihy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0aGlzKSArICN7QGluZGV4fSAqIHNpemUgKyBQYWRk
aW5nQnlTaXplPHNpemU+Ojp2YWx1ZSArIC8qIE9wY29kZSBzaXplICovIDEpOworICAgICAgICBh
dXRvKiBzdHJlYW0gPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5z
aWduZWRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGhpcykgKyAje0BpbmRleH0g
KiBzaXplICsgUGFkZGluZ0J5U2l6ZTxzaXplPjo6dmFsdWUgKyBPcGNvZGVJRFdpZHRoQnlTaXpl
PCN7dHJhaXRzfSwgc2l6ZT46Om9wY29kZUlEU2l6ZSk7CiAgICAgICAgICpzdHJlYW0gPSAje0Zp
dHM6OmNvbnZlcnQgInNpemUiLCAidmFsdWUiLCBAdHlwZX07CiAgICAgfQogRU9GCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IDZmMGE4ZjFhODAzZTE1MTY0ZTk5NDQz
NDdiYTMzNDQ5NjU5ODYwOGQuLmU5MGY5OTQ2NjFhN2YzZWRlYWIwNzdiZDA0NWRhNGNhZDQ5ZmJl
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNDksMTAgKzE0
OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQmFzaWNCbG9ja0xvY2F0aW9uOwogCi12
b2lkIGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKK3ZvaWQgZHVtcEJ5dGVjb2RlKEJ5
dGVjb2RlRHVtcGVyQmFzZTxKU0luc3RydWN0aW9uU3RyZWFtPiogZHVtcGVyLCBKU0luc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKLXZvaWQgZHVtcFdhc20oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RydWN0aW9uKik7Cit2b2lkIGR1bXBX
YXNtKEJ5dGVjb2RlRHVtcGVyQmFzZTxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+KiBkdW1wZXIsIFdh
c21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qKTsKICNl
bmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKIEVPRgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL09wY29kZS5yYgppbmRleCAwNjFiNzZhODEzZDQ3MTEyY2M5MGI5OTM2OGViY2Jj
ZWZlOGUyZTVkLi5lZTY3ODdiMThlNGQ4ZDNhYmZmODkxMDJiYzVjY2E3NzAwYzAwZGEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgpAQCAtMTA4LDYgKzEwOCwx
MCBAQCBjbGFzcyBPcGNvZGUKICAgICAgIEBzZWN0aW9uLmlzX3dhc20/ID8gIldhc21PcGNvZGVU
cmFpdHMiIDogIkpTT3Bjb2RlVHJhaXRzIgogICAgIGVuZAogCisgICAgZGVmIHR5cGVfcHJlZml4
CisgICAgICBAc2VjdGlvbi5pc193YXNtPyA/ICJXYXNtIiA6ICJKUyIKKyAgICBlbmQKKwogICAg
IGRlZiBtYXBfZmllbGRzX3dpdGhfc2l6ZShwcmVmaXgsIHNpemUsICZibG9jaykKICAgICAgICAg
YXJncyA9IFtBcmd1bWVudC5uZXcoIm9wY29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKV0KICAgICAg
ICAgYXJncyArPSBAYXJncy5kdXAgaWYgQGFyZ3MKQEAgLTEyOCw3ICsxMzIsNyBAQCBjbGFzcyBP
cGNvZGUKIAogICAgIGRlZiBzdHJ1Y3QKICAgICAgICAgPDwtRU9GCi1zdHJ1Y3QgI3tjYXBpdGFs
aXplZF9uYW1lfSA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7CitzdHJ1Y3QgI3tjYXBpdGFsaXplZF9u
YW1lfSA6IHB1YmxpYyAje3R5cGVfcHJlZml4fUluc3RydWN0aW9uIHsKICAgICAje29wY29kZUlE
fQogICAgICN7bGVuZ3RoVmFsdWV9CiAgICAgI3t0ZW1wc30KQEAgLTE2Miw3ICsxNjYsNyBAQCBF
T0YKICAgICBkZWYgY2hlY2twb2ludFNpemVBc3NlcnQKICAgICAgICAgcmV0dXJuIGlmIEBjaGVj
a3BvaW50cy5uaWw/CiAKLSAgICAgICAgInN0YXRpY19hc3NlcnQoI3tjYXBpdGFsaXplZF9uYW1l
fTo6bGVuZ3RoID4gI3tjYXBpdGFsaXplZF9uYW1lfTo6bnVtYmVyT2ZDaGVja3BvaW50cywgXCJG
dWxsQnl0ZWNvZGVMaXZlc3MgcmVsaWVzIG9uIHRoZSBsZW5ndGggb2YgI3tjYXBpdGFsaXplZF9u
YW1lfSBiZWluZyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBjaGVja3BvaW50c1wiKTsiCisg
ICAgICAgICJzdGF0aWNfYXNzZXJ0KCN7Y2FwaXRhbGl6ZWRfbmFtZX06Omxlbmd0aCArIDEgPiAj
e2NhcGl0YWxpemVkX25hbWV9OjpudW1iZXJPZkNoZWNrcG9pbnRzLCBcIkZ1bGxCeXRlY29kZUxp
dmVzcyByZWxpZXMgb24gdGhlIGxlbmd0aCBvZiAje2NhcGl0YWxpemVkX25hbWV9IGJlaW5nIGdy
ZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGNoZWNrcG9pbnRzXCIpOyIKICAgICBlbmQKIAogICAg
IGRlZiB0ZW1wcwpAQCAtMjMyLDYgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICN7bWFwX2ZpZWxkc193aXRoX3NpemUo
IiIsICJfX3NpemUiLCAmOmZpdHNfY2hlY2spLmpvaW4gIlxuICAgICAgICAgICAgJiYgIn0KKyAg
ICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gI3tBcmd1bWVudC5u
ZXcoIm9wY29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX2NoZWNrKFNpemU6Ok5hcnJvdyl9
IDogI3tBcmd1bWVudC5uZXcoIm9wY29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX2NoZWNr
KFNpemU6OldpZGUxNil9KQogICAgICAgICAgICAgJiYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpX
aWRlMTYgPyAje29wX3dpZGUxNi5maXRzX2NoZWNrKFNpemU6Ok5hcnJvdyl9IDogdHJ1ZSkKICAg
ICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyID8gI3tvcF93aWRlMzIu
Zml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6IHRydWUpOwogICAgIH0KQEAgLTI1MSw3ICsyNTYs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICN7b3Bfd2lkZTE2LmZpdHNfd3JpdGUgU2l6
ZTo6TmFycm93fQogICAgICAgICAgICAgZWxzZSBpZiAoX19zaXplID09IE9wY29kZVNpemU6Oldp
ZGUzMikKICAgICAgICAgICAgICAgICAje29wX3dpZGUzMi5maXRzX3dyaXRlIFNpemU6Ok5hcnJv
d30KLSAgICAgICAgICAgICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwg
MCkuZml0c193cml0ZSBTaXplOjpOYXJyb3d9CisgICAgICAgICAgICAje0FyZ3VtZW50Lm5ldygi
b3Bjb2RlSUQiLCBvcGNvZGVJRFR5cGUsIDApLmZpdHNfd3JpdGUgIk9wY29kZUlEV2lkdGhCeVNp
emU8I3t0eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMsIF9fc2l6ZT46Om9wY29kZUlEU2l6ZSJ9CiAj
e21hcF9vcGVyYW5kc193aXRoX3NpemUoIiAgICAgICAgICAgICIsICJfX3NpemUiLCAmOmZpdHNf
d3JpdGUpLmpvaW4gIlxuIn0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBA
IC0yNjQsNyArMjY5LDcgQEAgRU9GCiAKICAgICBkZWYgZHVtcGVyCiAgICAgICAgIDw8LUVPRgot
ICAgIHZvaWQgZHVtcChCeXRlY29kZUR1bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBfX2xvY2F0aW9uLCBpbnQgX19zaXplU2hpZnRBbW91bnQpCisgICAgdm9pZCBk
dW1wKEJ5dGVjb2RlRHVtcGVyQmFzZTwje3R5cGVfcHJlZml4fUluc3RydWN0aW9uU3RyZWFtPiog
ZHVtcGVyLCAje3R5cGVfcHJlZml4fUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlv
biwgaW50IF9fc2l6ZVNoaWZ0QW1vdW50KQogICAgIHsKICAgICAgICAgZHVtcGVyLT5wcmludExv
Y2F0aW9uQW5kT3AoX19sb2NhdGlvbiwgJiIqKiN7QG5hbWV9IlsyIC0gX19zaXplU2hpZnRBbW91
bnRdKTsKICN7cHJpbnRfYXJncyB7IHxhcmd8CkBAIC0yODQsMzAgKzI4OSwzMCBAQCBFT0YKICAg
ICAje2NhcGl0YWxpemVkX25hbWV9KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKICAgICAgICAgI3tp
bml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJvdyIpfQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChzdHJlYW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0g
b3Bjb2RlSUQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RhdGljX2Nhc3Q8I3tv
cGNvZGVJRFR5cGV9PihiaXR3aXNlX2Nhc3Q8Y29uc3QgdHlwZW5hbWUgT3Bjb2RlSURXaWR0aEJ5
U2l6ZTwje3R5cGVfcHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6b3Bj
b2RlVHlwZSo+KHN0cmVhbSlbLTFdKSA9PSBvcGNvZGVJRCk7CiAgICAgfQogCiAgICAgI3tjYXBp
dGFsaXplZF9uYW1lfShjb25zdCB1aW50MTZfdCogc3RyZWFtKQogICAgICAgICAje2luaXQuY2Fs
bCgiT3Bjb2RlU2l6ZTo6V2lkZTE2Iil9CiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKHN0
cmVhbSwgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJlYW0pWy0xXSA9PSBvcGNvZGVJ
RCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBzdGF0aWNfY2FzdDwje29wY29kZUlE
VHlwZX0+KGJpdHdpc2VfY2FzdDxjb25zdCB0eXBlbmFtZSBPcGNvZGVJRFdpZHRoQnlTaXplPCN7
dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMTY+OjpvcGNvZGVUeXBl
Kj4oc3RyZWFtKVstMV0pID09IG9wY29kZUlEKTsKICAgICB9CiAKIAogICAgICN7Y2FwaXRhbGl6
ZWRfbmFtZX0oY29uc3QgdWludDMyX3QqIHN0cmVhbSkKICAgICAgICAgI3tpbml0LmNhbGwoIk9w
Y29kZVNpemU6OldpZGUzMiIpfQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0s
IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQpOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RhdGljX2Nhc3Q8I3tvcGNvZGVJRFR5cGV9
PihiaXR3aXNlX2Nhc3Q8Y29uc3QgdHlwZW5hbWUgT3Bjb2RlSURXaWR0aEJ5U2l6ZTwje3R5cGVf
cHJlZml4fU9wY29kZVRyYWl0cywgT3Bjb2RlU2l6ZTo6V2lkZTMyPjo6b3Bjb2RlVHlwZSo+KHN0
cmVhbSlbLTFdKSA9PSBvcGNvZGVJRCk7CiAgICAgfQogCiAgICAgc3RhdGljICN7Y2FwaXRhbGl6
ZWRfbmFtZX0gZGVjb2RlKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKICAgICB7CiAgICAgICAgIC8v
IEEgcG9pbnRlciBpcyBwb2ludGluZyB0byB0aGUgZmlyc3Qgb3BlcmFuZCAob3Bjb2RlIGFuZCBw
cmVmaXggYXJlIG5vdCBpbmNsdWRlZCkuCiAgICAgICAgIGlmICgqc3RyZWFtID09ICN7d2lkZTMy
fSkKLSAgICAgICAgICAgIHJldHVybiB7IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50MzJfdCo+KHN0
cmVhbSArIDIpIH07CisgICAgICAgICAgICByZXR1cm4geyBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihzdHJlYW0gKyAvKiBwcmVmaXggKi8gMSArIE9wY29kZUlEV2lkdGhCeVNpemU8I3t0
eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6OldpZGUzMj46Om9wY29kZUlEU2l6
ZSkgfTsKICAgICAgICAgaWYgKCpzdHJlYW0gPT0gI3t3aWRlMTZ9KQotICAgICAgICAgICAgcmV0
dXJuIHsgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc3RyZWFtICsgMikgfTsKLSAgICAg
ICAgcmV0dXJuIHsgc3RyZWFtICsgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgYml0d2lzZV9j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc3RyZWFtICsgLyogcHJlZml4ICovIDEgKyBPcGNvZGVJRFdp
ZHRoQnlTaXplPCN7dHlwZV9wcmVmaXh9T3Bjb2RlVHJhaXRzLCBPcGNvZGVTaXplOjpXaWRlMTY+
OjpvcGNvZGVJRFNpemUpIH07CisgICAgICAgIHJldHVybiB7IHN0cmVhbSArIE9wY29kZUlEV2lk
dGhCeVNpemU8I3t0eXBlX3ByZWZpeH1PcGNvZGVUcmFpdHMsIE9wY29kZVNpemU6Ok5hcnJvdz46
Om9wY29kZUlEU2l6ZSB9OwogICAgIH0KIEVPRgogICAgIGVuZApAQCAtMzYyLDE4ICszNjcsMTkg
QEAgRU9GCiAgICAgZW5kCiAKICAgICBkZWYgbGVuZ3RoCi0gICAgICAgIDEgKyAoQGFyZ3Mubmls
PyA/IDAgOiBAYXJncy5sZW5ndGgpICsgKEBtZXRhZGF0YS5lbXB0eT8gPyAwIDogMSkKKyAgICAg
ICAgKEBhcmdzLm5pbD8gPyAwIDogQGFyZ3MubGVuZ3RoKSArIChAbWV0YWRhdGEuZW1wdHk/ID8g
MCA6IDEpCiAgICAgZW5kCiAKICAgICBkZWYgc2VsZi5kdW1wX2J5dGVjb2RlKG5hbWUsIG9wY29k
ZV90cmFpdHMsIG9wY29kZXMpCisgICAgICAgIHR5cGVfcHJlZml4ID0gKG9wY29kZV90cmFpdHMg
PT0gOkpTT3Bjb2RlVHJhaXRzID8gIkpTIiA6IChvcGNvZGVfdHJhaXRzID09IDpXYXNtT3Bjb2Rl
VHJhaXRzID8gIldhc20iIDogIkVycm9yI3tvcGNvZGVfdHJhaXRzfSIpKQogICAgICAgICA8PC1F
T0YuY2hvbXAKLXZvaWQgZHVtcCN7bmFtZX0oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qIF9f
aW5zdHJ1Y3Rpb24pCit2b2lkIGR1bXAje25hbWV9KEJ5dGVjb2RlRHVtcGVyQmFzZTwje3R5cGVf
cHJlZml4fUluc3RydWN0aW9uU3RyZWFtPiogZHVtcGVyLCAje3R5cGVfcHJlZml4fUluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgI3t0eXBlX3ByZWZpeH1JbnN0cnVj
dGlvbiogX19pbnN0cnVjdGlvbikKIHsKLSAgICBzd2l0Y2ggKF9faW5zdHJ1Y3Rpb24tPm9wY29k
ZUlEPCN7b3Bjb2RlX3RyYWl0c30+KCkpIHsKKyAgICBzd2l0Y2ggKF9faW5zdHJ1Y3Rpb24tPm9w
Y29kZUlEKCkpIHsKICN7b3Bjb2Rlcy5tYXAgeyB8b3B8CiAgICAgICAgIDw8LUVPRi5jaG9tcAog
ICAgIGNhc2UgI3tvcC5uYW1lfToKLSAgICAgICAgX19pbnN0cnVjdGlvbi0+YXM8I3tvcC5jYXBp
dGFsaXplZF9uYW1lfSwgI3tvcGNvZGVfdHJhaXRzfT4oKS5kdW1wKGR1bXBlciwgX19sb2NhdGlv
biwgX19pbnN0cnVjdGlvbi0+c2l6ZVNoaWZ0QW1vdW50PCN7b3Bjb2RlX3RyYWl0c30+KCkpOwor
ICAgICAgICBfX2luc3RydWN0aW9uLT5hczwje29wLmNhcGl0YWxpemVkX25hbWV9PigpLmR1bXAo
ZHVtcGVyLCBfX2xvY2F0aW9uLCBfX2luc3RydWN0aW9uLT5zaXplU2hpZnRBbW91bnQoKSk7CiAg
ICAgICAgIGJyZWFrOwogRU9GCiAgICAgfS5qb2luICJcbiJ9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaAppbmRleCA3OTVkYTUyNGE2M2Y3NDkxMjA4
NGIyY2UxYTk5NWE5MDViMTA0ZjBjLi5jMzE5Yzc4NmE4YmU2NDQyMzcyMGY4MGQ0Yjk2NjQ4MTMw
OTQyMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJz
dHJhY3RQQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFj
dFBDLmgKQEAgLTMxLDcgKzMxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFt
ZTsKIGNsYXNzIFZNOwotc3RydWN0IEluc3RydWN0aW9uOwogCiBjbGFzcyBBYnN0cmFjdFBDIHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5jcHAKaW5kZXggOWVkZjU5Yjk2ODZhNWFkNmNlYTgzODNmNzQzMzMzNjBhMTljNmQ0MS4uYTYx
ODNiMGQ3MjRmOWZjZGZlNTQyZDQyZTlmMWFkNjZjNzFjMTgzNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTEwOCwxMyArMTA4LDEz
IEBAIFNVUFBSRVNTX0FTQU4gQ2FsbFNpdGVJbmRleCBDYWxsRnJhbWU6OnVuc2FmZUNhbGxTaXRl
SW5kZXgoKSBjb25zdAogICAgIHJldHVybiBDYWxsU2l0ZUluZGV4Ojpmcm9tQml0cyh1bnNhZmVD
YWxsU2l0ZUFzUmF3Qml0cygpKTsKIH0KIAotY29uc3QgSW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6
Y3VycmVudFZQQygpIGNvbnN0Citjb25zdCBKU0luc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJl
bnRWUEMoKSBjb25zdAogewogICAgIEFTU0VSVChjYWxsU2l0ZUJpdHNBcmVCeXRlY29kZU9mZnNl
dCgpKTsKICAgICByZXR1cm4gY29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmF0KGNhbGxTaXRl
Qml0c0FzQnl0ZWNvZGVPZmZzZXQoKSkucHRyKCk7CiB9CiAKLXZvaWQgQ2FsbEZyYW1lOjpzZXRD
dXJyZW50VlBDKGNvbnN0IEluc3RydWN0aW9uKiB2cGMpCit2b2lkIENhbGxGcmFtZTo6c2V0Q3Vy
cmVudFZQQyhjb25zdCBKU0luc3RydWN0aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZShjb2RlQmxvY2soKS0+Ynl0ZWNvZGVJbmRleCh2cGMpKTsKICAgICB0aGlzW3N0YXRp
Y19jYXN0PGludD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpXS50
YWcoKSA9IGNhbGxTaXRlLmJpdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAppbmRleCA4ODI5OWY0NGQ2ZTBlMTkzODdhNmE5Y2Y3NzRmNTA3MTJh
YjAwMmI0Li40MTllZmIzNmE0MDk1ZGJlMWM4YTIwNDYxMjVlOGM1Yzc4MmYzMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC00MCw4ICs0
MCw2IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICBjbGFzcyBTb3VyY2VPcmlnaW47CiAgICAgY2xh
c3MgVmlydHVhbFJlZ2lzdGVyOwogCi0gICAgc3RydWN0IEluc3RydWN0aW9uOwotCiAgICAgY2xh
c3MgQ2FsbFNpdGVJbmRleCB7CiAgICAgcHVibGljOgogICAgICAgICBDYWxsU2l0ZUluZGV4KCkg
PSBkZWZhdWx0OwpAQCAtMTk5LDkgKzE5Nyw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKCkgY29uc3Q7CiAKICAgICAg
ICAgaW5saW5lIFJlZ2lzdGVyKiB0b3BPZkZyYW1lKCk7Ci0gICAgCi0gICAgICAgIGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3Q7IC8vIFRoaXMgb25seSBtYWtlcyBzZW5zZSBp
biB0aGUgTExJbnQgYW5kIGJhc2VsaW5lLgotICAgICAgICB2b2lkIHNldEN1cnJlbnRWUEMoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKKworICAgICAgICBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
VlBDKCkgY29uc3Q7IC8vIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0aGUgTExJbnQgYW5kIGJh
c2VsaW5lLgorICAgICAgICB2b2lkIHNldEN1cnJlbnRWUEMoY29uc3QgSlNJbnN0cnVjdGlvbiop
OwogCiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSkgeyBjYWxs
ZXJGcmFtZUFuZFBDKCkuY2FsbGVyRnJhbWUgPSBmcmFtZTsgfQogICAgICAgICBpbmxpbmUgdm9p
ZCBzZXRTY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCwgSlNTY29wZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzYy
MDJkY2I1ZTkzYmY1YTA1Y2JhNjY0OTQ5OGM3YzMzOTYzODNjZS4uZWQ2ODk1MmY2ZDZlYWVjYjUw
OTEyMDkwN2NmNWRhMDk1MzFiMTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MTcsOSArNTE3LDkgQEAgQ2F0Y2hJbmZv
OjpDYXRjaEluZm8oY29uc3QgSGFuZGxlckluZm8qIGhhbmRsZXIsIENvZGVCbG9jayogY29kZUJs
b2NrKQogICAgICAgICAvLyBhbmQgY2FuIGNhdXNlIGFuIG92ZXJmbG93LiBPU1IgZXhpdCBwcm9w
ZXJseSBleGl0cyB0byBoYW5kbGVyLT50YXJnZXQKICAgICAgICAgLy8gaW4gdGhlIHByb3BlciBm
cmFtZS4KICAgICAgICAgaWYgKCFKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5q
aXRUeXBlKCkpKQotICAgICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmF0KGhhbmRsZXItPnRhcmdldCkucHRyKCk7CisgICAgICAgICAg
ICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IHsgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5h
dChoYW5kbGVyLT50YXJnZXQpLnB0cigpIH07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
Y2F0Y2hQQ0ZvckludGVycHJldGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fY2F0Y2hQQ0Zv
ckludGVycHJldGVyID0geyBzdGF0aWNfY2FzdDxKU0luc3RydWN0aW9uKj4obnVsbHB0cikgfTsK
ICAgICB9CiB9CiAKQEAgLTUzMSw5ICs1MzEsOSBAQCBDYXRjaEluZm86OkNhdGNoSW5mbyhjb25z
dCBXYXNtOjpIYW5kbGVySW5mbyogaGFuZGxlciwgY29uc3QgV2FzbTo6Q2FsbGVlKiBjYWxsZQog
ICAgICAgICBtX3R5cGUgPSBIYW5kbGVyVHlwZTo6Q2F0Y2g7CiAgICAgICAgIG1fbmF0aXZlQ29k
ZSA9IGhhbmRsZXItPm1fbmF0aXZlQ29kZTsKICAgICAgICAgaWYgKGNhbGxlZS0+Y29tcGlsYXRp
b25Nb2RlKCkgPT0gV2FzbTo6Q29tcGlsYXRpb25Nb2RlOjpMTEludE1vZGUpCi0gICAgICAgICAg
ICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IHN0YXRpY19jYXN0PGNvbnN0IFdhc206OkxMSW50
Q2FsbGVlKj4oY2FsbGVlKS0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+bV90YXJnZXQpLnB0
cigpOworICAgICAgICAgICAgbV9jYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSB7IHN0YXRpY19jYXN0
PGNvbnN0IFdhc206OkxMSW50Q2FsbGVlKj4oY2FsbGVlKS0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFu
ZGxlci0+bV90YXJnZXQpLnB0cigpIH07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY2F0
Y2hQQ0ZvckludGVycHJldGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fY2F0Y2hQQ0Zvcklu
dGVycHJldGVyID0geyBzdGF0aWNfY2FzdDxXYXNtSW5zdHJ1Y3Rpb24qPihudWxscHRyKSB9Owog
ICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAppbmRleCBlNjQ2NDY1Njc5ZjIxZDEzZDM0NGNkNjg4MjM5MTcwNzZmY2Nh
YTExLi42MmJhMDAxOTJlNjIzZjI4ZWI2YjhhOTI4M2E5NjI5OWY4OTEyOWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5j
bHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKyNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAKICNpZiBFTkFCTEUoQ19MT09QKQpAQCAtNjgsNyArNjksNiBAQCBzdHJ1
Y3QgSGFuZGxlckluZm87CiAgICAgZW51bSBjbGFzcyBIYW5kbGVyVHlwZSA6IHVpbnQ4X3Q7CiAg
ICAgc3RydWN0IENhbGxGcmFtZUNsb3N1cmU7CiAgICAgc3RydWN0IEhhbmRsZXJJbmZvOwotICAg
IHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CiAKICAgICBl
bnVtIERlYnVnSG9va1R5cGUgewpAQCAtMTAyLDcgKzEwMiw4IEBAIHN0cnVjdCBIYW5kbGVySW5m
bzsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4gbV9uYXRpdmVDb2RlOwogI2VuZGlmCi0gICAgICAgIGNvbnN0IElu
c3RydWN0aW9uKiBtX2NhdGNoUENGb3JJbnRlcnByZXRlcjsKKworICAgICAgICBzdGQ6OnZhcmlh
bnQ8Y29uc3QgSlNJbnN0cnVjdGlvbiosIGNvbnN0IFdhc21JbnN0cnVjdGlvbio+IG1fY2F0Y2hQ
Q0ZvckludGVycHJldGVyOwogICAgIH07CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNTE1Yjc5NmI4YWIzODk3ZmZhZDk4MjJiMDQyNWVl
Y2JiMDU0ZTA1NC4uZTljMGVjYzMwZWFjYzY4YzU1OWY4YWM0NjNlMTA2MjIzMWRkZWI2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAg
ICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0Rm9yQnl0ZWNvZGVNYWluUGF0aChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCksIGxhYmVsKCkpOwotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRy
KCk7CisgICAgICAgIGNvbnN0IGF1dG8qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9u
cy5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgICAgICBBU1NFUlQoY3VycmVudEluc3Ry
dWN0aW9uLT5zaXplKCkpOwogCiAgICAgICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFw
cGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpKTsKQEAgLTU1MSw4
ICs1NTEsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiAgICAgICAg
IEJ5dGVjb2RlSW5kZXggZmlyc3RUbyA9IG1fYnl0ZWNvZGVJbmRleDsKIAotICAgICAgICBjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV91bmxpbmtlZENvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZUluZGV4KS5wdHIoKTsKLSAgICAgICAgCisgICAg
ICAgIGNvbnN0IGF1dG8qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CisKICAgICAgICAgaWYg
KEpJVEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBK
SVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0
ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBj
MjY1Y2NjMDQ3OTg3YmY5Yzc3NDc4ODI0MWJlMDcyMWEwYTY1ZDFlLi5iOGZkYTVkMWI0MzE1ZTlm
N2Q3MDRjNDZhYWE1YTViMWJiMDM0NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTY2
LDcgKzY2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwog
ICAgIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi0gICAgc3RydWN0IEluc3RydWN0aW9uOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOworICAgIHN0cnVj
dCBKU09wY29kZVRyYWl0czsKKyAgICB1c2luZyBKU0luc3RydWN0aW9uID0gQmFzZUluc3RydWN0
aW9uPEpTT3Bjb2RlVHJhaXRzPjsKKwogICAgIHN0cnVjdCBPcGVyYW5kVHlwZXM7CiAgICAgc3Ry
dWN0IFNpbXBsZUp1bXBUYWJsZTsKICAgICBzdHJ1Y3QgU3RyaW5nSnVtcFRhYmxlOwpAQCAtMjg5
LDkgKzI5Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd1Rv
SG90KEp1bXAsIGludCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAg
IHZvaWQgY29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGNhbGxMaW5r
SW5mb0luZGV4KTsKKyAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotICAgICAgICB2b2lkIGNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCB1bnNpZ25lZCBjYWxsTGlu
a0luZm9JbmRleCk7CisgICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQg
Y2FsbExpbmtJbmZvSW5kZXgpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAg
ICAgICBzdGQ6OmVuYWJsZV9pZl90PApAQCAtMzA5LDEzICszMTIsMTMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgY29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wJiwgVW5saW5rZWRDYWxs
TGlua0luZm8qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7CiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgogICAgICAgICBib29sIGNvbXBpbGVDYWxsRXZhbChjb25zdCBPcCYpOwot
ICAgICAgICB2b2lkIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGNvbXBpbGVD
YWxsRXZhbFNsb3dDYXNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2
b2lkIGVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9wJik7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4gdm9pZCBjb21waWxlT3BTdHJpY3RFcShjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4gdm9pZCBjb21w
aWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+IHZvaWQgY29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4gdm9pZCBjb21waWxlT3BTdHJpY3RFcUp1
bXAoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAg
ICAgdm9pZCBjb21waWxlT3BFcUNvbW1vbihWaXJ0dWFsUmVnaXN0ZXIgc3JjMSwgVmlydHVhbFJl
Z2lzdGVyIHNyYzIpOwogICAgICAgICB2b2lkIGNvbXBpbGVPcEVxU2xvd0NvbW1vbihWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC0zNzUsMjU3ICszNzgsMjU3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChKU1Zh
bHVlUmVncywgVmlydHVhbFJlZ2lzdGVyKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiwg
UmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcChj
b25zdCBKU0luc3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgICAgIHZvaWQg
ZW1pdF9jb21wYXJlQW5kSnVtcEltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lz
dGVyIG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAgICAgICAgdm9pZCBl
bWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBKU0luc3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRp
dGlvbik7CiAgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRJbXBsKFZpcnR1YWxSZWdp
c3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIFJlbGF0
aW9uYWxDb25kaXRpb24pOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAg
dm9pZCBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qLCBSZWxh
dGlvbmFsQ29uZGl0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1
bXAoY29uc3QgSlNJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgICAgICB2
b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcEltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwg
VmlydHVhbFJlZ2lzdGVyIG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9u
KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIFNsb3dPcGVyYXRpb24+
Ci0gICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29uc3QgSW5zdHJ1Y3Rpb24q
LCBEb3VibGVDb25kaXRpb24sIFNsb3dPcGVyYXRpb24sIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVt
cFNsb3coY29uc3QgSlNJbnN0cnVjdGlvbiosIERvdWJsZUNvbmRpdGlvbiwgU2xvd09wZXJhdGlv
biwgYm9vbCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgU2xvd09wZXJhdGlvbj4KICAgICAgICAgdm9pZCBlbWl0X2Nv
bXBhcmVBbmRKdW1wU2xvd0ltcGwoVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlydHVhbFJlZ2lzdGVy
IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBzaXplX3QgaW5zdHJ1Y3Rpb25TaXplLCBEb3VibGVDb25k
aXRpb24sIFNsb3dPcGVyYXRpb24sIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgYXNzZXJ0U3RhY2tQb2ludGVy
T2Zmc2V0KCk7CiAKLSAgICAgICAgdm9pZCBlbWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfYml0YW5kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9iaXRvcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfYml0eG9yKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9iaXRub3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NhbGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbChjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF9ldmFsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0
cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9j
YXRjaChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lcV9u
dWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iZWxvdyhjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3dlcShjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3Vt
ZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
aW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lu
aXRfbGF6eV9yZWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX292
ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX2lzX2VtcHR5KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90
eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9hZGQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYml0
YW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JpdG9yKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JpdHhvcihjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9iaXRub3QoY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbChjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF9ldmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3Zh
cmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2F0Y2go
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FyZ3VtZW50X2NvdW50KGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0
aChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHoo
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaWRlbnRpdHlfd2l0
aF9wcm9maWxlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2Rl
YnVnKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9p
ZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9kaXYoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZW5k
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lcShjb25zdCBKU0luc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JlbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2JlbG93ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5k
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVu
dF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X3Byb3RvdHlwZV9vZihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9pbl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9p
bl9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaGFz
X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9pbml0X2xhenlfcmVnKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9pc19lbXB0eShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF90eXBlb2ZfaXNfdW5kZWZpbmVkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSlNJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKICNpZiBVU0UoQklHSU5UMzIpCi0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19iaWdf
aW50KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICNlbHNlCi0gICAgICAgIE5PX1JFVFVSTiB2b2lkIGVt
aXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICBOT19SRVRVUk4g
dm9pZCBlbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSlNJbnN0cnVjdGlvbiopOwogI2VuZGlmCi0g
ICAgICAgIHZvaWQgZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfamZhbHNlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9qbXAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pu
ZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfanVuZGVm
aW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9q
bnVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9qZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9q
bmVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3Mo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2psZXNzZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pncmVhdGVyKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX2puZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2pzdHJpY3Rl
cShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5zdHJpY3RlcShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamJlbG93KGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qYmVsb3dlcShjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX25vcChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3Bfc3VwZXJfc2FtcGxlcl9iZWdpbihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2xzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9w
b3coY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX21vdihjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfbmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX25ld19hcnJheShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2FycmF5X3dpdGhfc2l6ZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X25ld19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19l
eHAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3Qo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25vdChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9kZWMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2luYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfZ2V0X3BhcmVudF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfamVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfamZhbHNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2ptcChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9q
bmVxX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfanVu
ZGVmaW5lZF9vcl9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2pudW5kZWZpbmVkX29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfamVxX3B0cihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9qbmVxX3B0cihjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9qbGVzcyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9q
bGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pncmVh
dGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pncmVhdGVy
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5sZXNzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pubGVzc2VxKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2puZ3JlYXRlcihjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXJlcShjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZXEoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9qYmVsb3coY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfamJlbG93ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfanRydWUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfbG9vcF9oaW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2NoZWNrX3RyYXBzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX25vcChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdXBl
cl9zYW1wbGVyX2JlZ2luKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX3N1cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2xzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9tb2QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcG93
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX21vdihjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9tdWwoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmVnYXRlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9uZXdfYXJyYXkoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZShjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSlNJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoY29uc3Qg
SlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhw
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19n
ZW5lcmF0b3JfZnVuYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9ub3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2RlYyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9p
bmMoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHJvZmlsZV90
eXBlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVf
Y29udHJvbF9mbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9wYXJlbnRfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9k
aXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9n
ZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1
dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3JldChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lk
IGVtaXRfb3BfcnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3N1Yihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX2No
YXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9pbW0o
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9zdHJpbmco
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RlYXJfb2ZmX2FyZ3Vt
ZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdGhyb3coY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWJlcihjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90b19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX3ByaW1pdGl2ZShjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfdW5leHBlY3RlZF9sb2FkKGNvbnN0IEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF91bnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3RhaWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3RvX3Byb3Bl
cnR5X2tleShjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5
X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlf
dmFsX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9w
dXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBKU0luc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBKU0luc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXQoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N1Yihjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSlNJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfdGVhcl9vZmZfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Rocm93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3RvX3N0cmluZyhjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF90b19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3VuZXhwZWN0ZWRfbG9hZChjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF91bnNpZ25lZChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hp
Y2tlbl90YWlsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Rv
X3Byb3BlcnR5X2tleShjb25zdCBKU0luc3RydWN0aW9uKik7CiAKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3Bjb2RlVHlwZT4KICAgICAgICAgdm9pZCBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nh
c2UoY29uc3QgT3Bjb2RlVHlwZSYsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
IAotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRv
cl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3Io
Y29uc3QgSlNJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9u
ZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0
b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3Bjb2RlVHlwZSwgdHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+CiAgICAgICAgIHZvaWQg
ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQ
YXRoRnVuY3Rpb25UeXBlKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaW5fYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9y
X2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLQotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3RhaWxfY2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX2V2YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2NhbGxlZShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2psZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXIoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9q
bmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3Bfam5ncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRlcmVxKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmVxKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbnN0
cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tb2QoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfcG93KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX211bChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmVxKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2
b2lkIGVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zdWIoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0KLSAgICAg
ICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBKU0luc3RydWN0
aW9uKik7CisKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQoY29uc3QgSlNJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2Fs
bF92YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29u
c3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3Qg
SlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBKU0luc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NvbnN0cnVjdChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VxKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfZ2V0X2NhbGxlZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RyeV9n
ZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSlNJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX3ByaXZh
dGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2psZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3NlcShjb25zdCBKU0luc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShj
b25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pubGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2pubGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5ncmVhdGVyKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZXEo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
anN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBKU0lu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNr
X3RyYXBzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfcG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfbmVnYXRlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9i
eV9pZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSlNJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3Vi
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSlNJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBK
U0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfdG9fc2Nv
cGUoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKIAogICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOwogCi0gICAgICAgIHZvaWQgZW1pdF9vcF9p
dGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBKU0luc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBKU0luc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRf
b3BfaXRlcmF0b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGUoVmly
dHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUpOwogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRl
U2xvdyhBY2Nlc3NUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2so
Ym9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgR1BSUmVnKTsKICAgICAgICAgdm9pZCBlbWl0
VmFyUmVhZE9ubHlDaGVjayhSZXNvbHZlVHlwZSwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgICAg
ICB2b2lkIGVtaXROb3RpZnlXcml0ZVdhdGNocG9pbnQoR1BSUmVnIHBvaW50ZXJUb1NldCk7CkBA
IC02NDMsMTQgKzY0NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc09wZXJh
bmRDb25zdGFudENoYXIoVmlydHVhbFJlZ2lzdGVyKTsKIAogICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwg
dHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0TWF0aElDRmFz
dChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxl
ZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0TWF0aElD
RmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSlNJbnN0cnVjdGlvbiosIFBy
b2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24pOwogICAgICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlv
biwgdHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0TWF0aElD
RmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJv
ZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdE1h
dGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBKU0luc3RydWN0aW9u
KiwgUHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbik7CiAKICAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVk
UmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBh
dGNoRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElD
PEdlbmVyYXRvcj4qLCBjb25zdCBJbnN0cnVjdGlvbiosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9u
LCBQcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVtaXRN
YXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSlNJbnN0cnVjdGlv
biosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVu
Y3Rpb24pOwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRv
ciwgdHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5cGVuYW1lIFByb2ZpbGVkRnVu
Y3Rpb24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4KLSAgICAgICAgdm9pZCBlbWl0TWF0aElD
U2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBQcm9m
aWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uKTsK
KyAgICAgICAgdm9pZCBlbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+Kiwg
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1
bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24pOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZXR1cm5Gcm9tQmFzZWxpbmVH
ZW5lcmF0b3IoVk0mKTsKQEAgLTgzMiwxMiArODM1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbmlwcGV0
R2VuZXJhdG9yPgotICAgICAgICB2b2lkIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBzaG91bGRFbWl0
UHJvZmlsaW5nID0gUHJvZmlsaW5nUG9saWN5OjpOb1Byb2ZpbGluZyk7CisgICAgICAgIHZvaWQg
ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBQcm9maWxpbmdQb2xpY3kgc2hvdWxkRW1pdFByb2ZpbGluZyA9IFByb2ZpbGluZ1Bv
bGljeTo6Tm9Qcm9maWxpbmcpOwogCi0gICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0
aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCk7CisgICAg
ICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIE9wY29kZUlEKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OlNoaWZ0VHlwZSk7
CisgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OlNoaWZ0VHlwZSk7
CiAKICAgICAgICAgdm9pZCB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKIApAQCAtODQ4LDggKzg1MSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBMb2FkcyB0aGUgY2hhcmFjdGVyIHZhbHVl
IG9mIGEgc2luZ2xlIGNoYXJhY3RlciBzdHJpbmcgaW50byBkc3QuCiAgICAgICAgIHZvaWQgZW1p
dExvYWRDaGFyYWN0ZXJTdHJpbmcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0LCBKdW1w
TGlzdCYgZmFpbHVyZXMpOwogCi0gICAgICAgIGludCBqdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0
aW9uKiwgaW50IHRhcmdldCk7Ci0gICAgICAgIAorICAgICAgICBpbnQganVtcFRhcmdldChjb25z
dCBKU0luc3RydWN0aW9uKiwgaW50IHRhcmdldCk7CisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICAgICAgdm9pZCBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwogI2Vsc2UKQEAgLTk0NSw4
ICs5NDgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUENUb0NvZGVPcmlnaW5NYXBCdWls
ZGVyIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UENUb0NvZGVPcmlnaW5NYXA+IG1fcGNUb0NvZGVPcmlnaW5NYXA7CiAKLSAgICAgICAgSGFzaE1h
cDxjb25zdCBJbnN0cnVjdGlvbiosIHZvaWQqPiBtX2luc3RydWN0aW9uVG9NYXRoSUM7Ci0gICAg
ICAgIEhhc2hNYXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCBVbmlxdWVSZWY8TWF0aElDR2VuZXJhdGlv
blN0YXRlPj4gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlOworICAgICAgICBI
YXNoTWFwPGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCB2b2lkKj4gbV9pbnN0cnVjdGlvblRvTWF0aElD
OworICAgICAgICBIYXNoTWFwPGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBVbmlxdWVSZWY8TWF0aElD
R2VuZXJhdGlvblN0YXRlPj4gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlOwog
CiAgICAgICAgIGJvb2wgbV9jYW5CZU9wdGltaXplZDsKICAgICAgICAgYm9vbCBtX3Nob3VsZEVt
aXRQcm9maWxpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAppbmRleCBmNDI2MDc0ZjQ1YmFmNGZjNjBjODUyODVkMGRmY2IwYzFhNzU1ZWM5Li4wNTM3N2I4
MjA1ODFlYWJmYWU4MjllZjRmNWNiMDgyMDE5MTVhMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ0LDEwNyArNDQsMTA3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3MoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8
T3BKbGVzcz4oY3VycmVudEluc3RydWN0aW9uLCBMZXNzVGhhbik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2psZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2psZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbGVzc2VxPihjdXJyZW50SW5z
dHJ1Y3Rpb24sIExlc3NUaGFuT3JFcXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pncmVh
dGVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9qZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpncmVhdGVyPihjdXJyZW50SW5zdHJ1Y3Rpb24s
IEdyZWF0ZXJUaGFuKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXJlcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0
ZXJlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1p
dF9jb21wYXJlQW5kSnVtcDxPcEpncmVhdGVyZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRl
clRoYW5PckVxdWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNzKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3MoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFy
ZUFuZEp1bXA8T3BKbmxlc3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRlclRoYW5PckVxdWFs
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pubGVzc2VxKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1w
PE9wSm5sZXNzZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRlclRoYW4pOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpuZ3JlYXRl
cj4oY3VycmVudEluc3RydWN0aW9uLCBMZXNzVGhhbk9yRXF1YWwpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9qbmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbmdyZWF0ZXJl
cT4oY3VycmVudEluc3RydWN0aW9uLCBMZXNzVGhhbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2ps
ZXNzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dzxPcEpsZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZCwg
b3BlcmF0aW9uQ29tcGFyZUxlc3MsIGZhbHNlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2psZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qbGVzc2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBlbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdzxPcEpsZXNzZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlTGVzc1RoYW5PckVx
dWFsQW5kT3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcSwgZmFsc2UsIGl0ZXIpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKZ3JlYXRlcj4oY3VycmVudEluc3RydWN0aW9u
LCBEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyLCBm
YWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKZ3JlYXRl
cmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVy
ZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEsIGZhbHNlLCBpdGVyKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2pubGVzcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2pubGVzcyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgZW1pdF9jb21w
YXJlQW5kSnVtcFNsb3c8T3BKbmxlc3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlR3JlYXRl
clRoYW5PckVxdWFsT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzLCB0cnVlLCBpdGVy
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNzZXEoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSm5sZXNzZXE+KGN1cnJlbnRJbnN0
cnVjdGlvbiwgRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUxl
c3NFcSwgdHJ1ZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93PE9wSm5n
cmVhdGVyPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRl
cmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlciwgdHJ1ZSwgaXRlcik7CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9qbmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBl
bWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpuZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24s
IERvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEsIHRy
dWUsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iZWxvdyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYmVsb3coY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfY29tcGFyZVVuc2ln
bmVkPE9wQmVsb3c+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQmVsb3cpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9iZWxvd2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9iZWxvd2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZDxPcEJlbG93ZXE+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgQmVsb3dPckVxdWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9qYmVsb3coY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcDxPcEpiZWxvdz4oY3VycmVudEluc3RydWN0aW9u
LCBCZWxvdyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2piZWxvd2VxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qYmVsb3dlcShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9jb21wYXJl
VW5zaWduZWRBbmRKdW1wPE9wSmJlbG93ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQmVsb3dPckVx
dWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFVuc2lnbmVkPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF91bnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
aXRpb24pCit2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBKU0luc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3AxID0gYnl0ZWNvZGUubV9saHM7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBv
cDIsIHVuc2kKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0X2NvbXBh
cmVVbnNpZ25lZEFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFu
ZEp1bXAoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZGl0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1fbGhzOwpAQCAtMjQ1LDcg
KzI0NSw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXBJbXBsKFZpcnR1
YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotdm9pZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit2b2lkIEpJVDo6ZW1p
dF9jb21wYXJlVW5zaWduZWQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVj
dGlvbi0+YXM8T3A+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEltcGwo
VmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIG9wMSwgVmlyCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbG93T3BlcmF0aW9uPgotdm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRG91Ymxl
Q29uZGl0aW9uIGNvbmRpdGlvbiwgU2xvd09wZXJhdGlvbiBvcGVyYXRpb24sIGJvb2wgaW52ZXJ0
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBEb3Vi
bGVDb25kaXRpb24gY29uZGl0aW9uLCBTbG93T3BlcmF0aW9uIG9wZXJhdGlvbiwgYm9vbCBpbnZl
cnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3Ax
ID0gYnl0ZWNvZGUubV9saHM7CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29t
cGFyZUFuZEp1bXBTbG93SW1wbChWaXJ0dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIg
b3AyLAogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDog
Tm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9pbmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2luYyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbmM+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHNyY0RzdCA9IGJ5dGVjb2RlLm1fc3JjRHN0OwpAQCAtNDAyLDcgKzQw
Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0LCBqc1JlZ1QxMCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2RlYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZGVjKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcERlYz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjRHN0ID0gYnl0ZWNvZGUu
bV9zcmNEc3Q7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVjKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICNpZiBDUFUoWDg2XzY0KQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BNb2Q+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpA
QCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBA
IC00NjEsMTMgKzQ2MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaQogCiAjZWxzZSAvLyBD
UFUoWDg2XzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKQor
dm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX21vZChjb25zdCBKU0luc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiB9CkBAIC00
NzYsNyArNDc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogCiAvKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRU5EOiBPUF9NT0QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCiAKLXZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcG93KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFBvdz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcG93KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihyZXN1bHQsIHJlc3VsdFJlZ3MpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG93
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wb3coY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpCiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9u
ZWdhdGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIFVu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmbV91bmxpbmtlZENvZGVCbG9jay0+dW5h
cnlBcml0aFByb2ZpbGUoY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4oKS5tX3Byb2Zp
bGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9tYXRoSUNzLmFkZEpJVE5lZ0lD
KGFyaXRoUHJvZmlsZSk7CkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVn
YXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE1hdGhJ
Q0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFy
aXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX25lZ2F0ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9u
ZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbmlwcGV0R2VuZXJhdG9yPgot
dm9pZCBKSVQ6OmVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBwcm9maWxpbmdQb2xpY3kpCit2b2lkIEpJ
VDo6ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3kgcHJvZmlsaW5nUG9saWN5KQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIEpJ
VDo6ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgUHJvZmlsaQogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXBMaXN0KCkp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iaXRub3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JpdG5vdChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BCaXRub3Q+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCA9
IGJ5dGVjb2RlLm1fZHN0OwpAQCAtNjA4LDI3ICs2MDgsMjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Yml0bm90KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfYml0YW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9iaXRhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoPE9wQml0YW5kLCBKSVRCaXRBbmRHZW5l
cmF0b3I+KGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5OjpTaG91bGRFbWl0UHJv
ZmlsaW5nKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYml0b3IoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2JpdG9yKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0Qml0QmluYXJ5T3BGYXN0
UGF0aDxPcEJpdG9yLCBKSVRCaXRPckdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9uLCBQcm9m
aWxpbmdQb2xpY3k6OlNob3VsZEVtaXRQcm9maWxpbmcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9iaXR4b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2JpdHhvcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGg8T3BCaXR4b3IsIEpJVEJpdFhvckdlbmVy
YXRvcj4oY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3k6OlNob3VsZEVtaXRQcm9m
aWxpbmcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2xzaGlmdChjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEJpdEJpbmFyeU9wRmFz
dFBhdGg8T3BMc2hpZnQsIEpJVExlZnRTaGlmdEdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9u
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQgb3Bjb2RlSUQpCit2b2lkIEpJVDo6ZW1p
dFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIE9wY29kZUlEIG9wY29kZUlEKQogewogICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9yc2hp
ZnQgfHwgb3Bjb2RlSUQgPT0gb3BfdXJzaGlmdCk7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewpA
QCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIE9wY29kZUlECiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6U2hp
ZnRUeXBlIHNuaXBwZXRTaGlmdFR5cGUpCit2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRGYXN0UGF0
aChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVFJpZ2h0U2hpZnRH
ZW5lcmF0b3I6OlNoaWZ0VHlwZSBzbmlwcGV0U2hpZnRUeXBlKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQgPSBieXRlY29kZS5tX2RzdDsKQEAgLTY4MiwxNyArNjgyLDE3IEBAIHZvaWQgSklUOjpl
bWl0UmlnaHRTaGlmdEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIEpJVFJpZ2h0CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX3JzaGlmdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcnNoaWZ0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGN1cnJl
bnRJbnN0cnVjdGlvbiwgb3BfcnNoaWZ0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlm
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfdXJzaGlmdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2FkZChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSAmbV91bmxpbmtlZENvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlKGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BBZGQ+KCkubV9wcm9maWxlSW5kZXgpOwogICAgIEpJVEFkZElDKiBhZGRJ
QyA9IG1fbWF0aElDcy5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwpAQCAtNzAwLDcgKzcwMCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRNYXRoSUNGYXN0PE9wQWRkPihhZGRJQywgY3VycmVudEluc3RydWN0
aW9uLCBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZUFkZCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0U2xvd19vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9hZGQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlw
ZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KLXZv
aWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMs
IGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24g
cHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1bmN0aW9u
KQordm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJQywgY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1
bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRG
dW5jdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC03
NTUsNyArNzU1LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGMKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24s
IHR5cGVuYW1lIE5vblByb2ZpbGVkRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3Qo
SklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBOb25Q
cm9maWxlZEZ1bmN0aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rp
b24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC04MjIsNyArODIyLDcgQEAgdm9pZCBK
SVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNv
bnN0IEluc3RydWN0aW9uKgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdl
bmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5cGVuYW1lIFByb2Zp
bGVkRnVuY3Rpb24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4KLXZvaWQgSklUOjplbWl0TWF0
aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHByb2ZpbGVk
UmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0
Y2hGdW5jdGlvbiByZXBhdGNoRnVuY3Rpb24pCit2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklU
VW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHByb2ZpbGVkUmVwYXRjaEZ1
bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlv
biByZXBhdGNoRnVuY3Rpb24pCiB7CiAgICAgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBtYXRoSUNH
ZW5lcmF0aW9uU3RhdGUgPSBtX2luc3RydWN0aW9uVG9NYXRoSUNHZW5lcmF0aW9uU3RhdGUuZmlu
ZChjdXJyZW50SW5zdHJ1Y3Rpb24pLT52YWx1ZS5nZXQoKTsKICAgICBtYXRoSUNHZW5lcmF0aW9u
U3RhdGUuc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CkBAIC04NjUsNyArODY1LDcgQEAgdm9pZCBK
SVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29u
c3QgSW5zdHJ1Y3Rpb24qIGMKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9m
aWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVuY3Rpb24+Ci12b2lkIEpJVDo6ZW1pdE1h
dGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24gcHJvZmls
ZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgUmVw
YXRjaEZ1bmN0aW9uIHJlcGF0Y2hGdW5jdGlvbikKK3ZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhK
SVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uIHByb2ZpbGVkUmVwYXRj
aEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5j
dGlvbiByZXBhdGNoRnVuY3Rpb24pCiB7CiAgICAgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBtYXRo
SUNHZW5lcmF0aW9uU3RhdGUgPSBtX2luc3RydWN0aW9uVG9NYXRoSUNHZW5lcmF0aW9uU3RhdGUu
ZmluZChjdXJyZW50SW5zdHJ1Y3Rpb24pLT52YWx1ZS5nZXQoKTsKICAgICBtYXRoSUNHZW5lcmF0
aW9uU3RhdGUuc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CkBAIC05MjUsNyArOTI1LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMs
IGNvbnN0IEluc3RydWN0aW9uKgogICAgIH0pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kaXYo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2Rpdihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTgzLDcgKzk4Myw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gJm1fdW5saW5rZWRDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZShjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTXVsPigpLm1fcHJvZmlsZUluZGV4KTsKICAgICBKSVRNdWxJ
QyogbXVsSUMgPSBtX21hdGhJQ3MuYWRkSklUTXVsSUMoYXJpdGhQcm9maWxlKTsKQEAgLTk5MSw3
ICs5OTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwp
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2UKICAgICBlbWl0TWF0aElDU2xvdzxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplLCBvcGVyYXRpb25WYWx1
ZU11bFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9zdWIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJm1fdW5saW5rZWRD
b2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3Vi
PigpLm1fcHJvZmlsZUluZGV4KTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX21hdGhJQ3MuYWRk
SklUU3ViSUMoYXJpdGhQcm9maWxlKTsKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRNYXRoSUNGYXN0PE9wU3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9z
dWIoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGM2OGU0N2VlOWM4OGIx
NmU4MTYxNGZkYzhkY2EwYzYwYzQyYzI4OTcuLjg5OTgwODcyZDJiNzI3NzRjNjk1NmIzOTExOTJl
ODcxODFiMzdlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNDMs
NyArNDMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9y
ZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHN0YXRp
Y19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBjYWxsRnJhbWVSZWdpc3RlcikpOwog
CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChjb25zdCBPcENh
bGxFdmFsJiBieXRlY29kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBp
bGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpjb21waWxlQ2FsbEV2
YWxTbG93Q2FzZShjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25zdCBP
cFRhaWxDYWxsJiBieXRlY29kZSwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1bnMKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KQordm9pZCBKSVQ6
OmNvbXBpbGVPcENhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVk
IGNhbGxMaW5rSW5mb0luZGV4KQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gT3A6Om9wY29k
ZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CkBAIC0zMDMs
NyArMzAzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci12b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgdW5z
aWduZWQpCit2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCB1
bnNpZ25lZCkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBh
dXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwpAQCAtMzI1LDg3ICszMjUsODcg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGNvbXBpbGVPcENhbGw8T3BDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxs
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBjb21waWxl
T3BDYWxsPE9wVGFpbENhbGw+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX2V2YWwoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8
T3BDYWxsRXZhbD4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BD
YWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFy
Z3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBp
bGVPcENhbGw8T3BUYWlsQ2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlu
a0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGw8T3BUYWlsQ2FsbEZv
cndhcmRBcmd1bWVudHM+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsr
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2NvbnN0cnVjdF92
YXJhcmdzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBj
b21waWxlT3BDYWxsPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBtX2Nh
bGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Nv
bnN0cnVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
Y29tcGlsZU9wQ2FsbDxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5r
SW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2FsbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGwoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENhbGw+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3RhaWxfY2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX3RhaWxfY2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2Fs
bFNsb3dDYXNlPE9wVGFpbENhbGw+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlu
a0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY3VycmVudElu
c3RydWN0aW9uLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfdmFyYXJn
cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfdmFyYXJn
cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9w
Q2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX3ZhcmFyZ3Mo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcFRh
aWxDYWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0lu
ZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21w
aWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHM+KGN1cnJlbnRJbnN0
cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2NvbnN0cnVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2NvbnN0cnVjdChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGls
ZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1f
Y2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29w
ZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOwogICAgIGF1dG8q
IHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgewpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQog
ICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9v
cGVuKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+
YXM8T3BJdGVyYXRvck9wZW4+KCk7CiAKQEAgLTUwNyw3ICs1MDcsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93QwogICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
aXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7
CiAgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CkBAIC02MDcsNyArNjA3LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pCiAgICAgZmFzdENhc2UubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2l0ZXJhdG9yX25leHQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKaW5kZXggYjg2ZTlhNDEwM2M4NTA2YzNmZGJiYWM1NGQ3
ZTk0ZTY2NjBhYWQ5OS4uNzUxNjUwOGI2Zjg4ZDg2YWY4YzZkNTY2ZjE4MzMxNGNjNWI2YTY5MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC01Nywx
OCArNTcsMjIgQEAgdm9pZCBnZW5lcmljVW53aW5kKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgQ2F0Y2hJbmZvIGhhbmRsZXIgPSB2bS5pbnRlcnByZXRlci0+dW53aW5kKHZtLCBj
YWxsRnJhbWUsIGV4Y2VwdGlvbik7IC8vIFRoaXMgbWF5IHVwZGF0ZSBjYWxsRnJhbWUuCiAKICAg
ICB2b2lkKiBjYXRjaFJvdXRpbmU7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGNhdGNoUENGb3JJ
bnRlcnByZXRlciA9IG51bGxwdHI7CisgICAgSlNPcldhc21JbnN0cnVjdGlvbiBjYXRjaFBDRm9y
SW50ZXJwcmV0ZXIgPSB7IHN0YXRpY19jYXN0PEpTSW5zdHJ1Y3Rpb24qPihudWxscHRyKSB9Owog
ICAgIGlmIChoYW5kbGVyLm1fdmFsaWQpIHsKICAgICAgICAgY2F0Y2hQQ0ZvckludGVycHJldGVy
ID0gaGFuZGxlci5tX2NhdGNoUENGb3JJbnRlcnByZXRlcjsKICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICBjYXRjaFJvdXRpbmUgPSBoYW5kbGVyLm1fbmF0aXZlQ29kZS5leGVjdXRhYmxlQWRkcmVz
cygpOwogI2Vsc2UKLSAgICAgICAgaWYgKGNhdGNoUENGb3JJbnRlcnByZXRlci0+aXNXaWRlMzIo
KSkKLSAgICAgICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyKGNh
dGNoUENGb3JJbnRlcnByZXRlci0+b3Bjb2RlSUQoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGNhdGNo
UENGb3JJbnRlcnByZXRlci0+aXNXaWRlMTYoKSkKLSAgICAgICAgICAgIGNhdGNoUm91dGluZSA9
IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyKGNhdGNoUENGb3JJbnRlcnByZXRlci0+b3Bjb2RlSUQo
KSk7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorI2Vycm9yIFdBU00gcmVxdWlyZXMgdGhlIEpJ
VCwgc28gdGhpcyBzZWN0aW9uIGFzc3VtZXMgd2UgYXJlIGluIEpTCisjZW5kaWYKKyAgICAgICAg
Y29uc3QgYXV0byogcGMgPSBzdGQ6OmdldDxjb25zdCBKU0luc3RydWN0aW9uKj4oY2F0Y2hQQ0Zv
ckludGVycHJldGVyKTsKKyAgICAgICAgaWYgKHBjLT5pc1dpZGUzMigpKQorICAgICAgICAgICAg
Y2F0Y2hSb3V0aW5lID0gTExJbnQ6OmdldFdpZGUzMkNvZGVQdHIocGMtPm9wY29kZUlEKCkpOwor
ICAgICAgICBlbHNlIGlmIChwYy0+aXNXaWRlMTYoKSkKKyAgICAgICAgICAgIGNhdGNoUm91dGlu
ZSA9IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJbnQ6OmdldENvZGVQdHIoY2F0Y2hQQ0Zv
ckludGVycHJldGVyLT5vcGNvZGVJRCgpKTsKKyAgICAgICAgICAgIGNhdGNoUm91dGluZSA9IExM
SW50OjpnZXRDb2RlUHRyKHBjLT5vcGNvZGVJRCgpKTsKICNlbmRpZgogICAgIH0gZWxzZQogICAg
ICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6aGFuZGxlVW5jYXVnaHRFeGNlcHRpb24odm0pLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAppbmRleCAwMmUyZjhhZWEzYzkzNzk3YjRlNWQxMmYzYmRhMmFiNWIzNDBmNmNkLi5iZmZi
MmY0YzMwMzBlZWVlMTRmODkwZWY4MWNhMGUzZTgxOTg3Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaApAQCAtMjIwLDcgKzIyMCw3IEBAIGlubGluZSBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgSklUOjpmYXN0UGF0aFJlc3VtZVBvaW50KCkgY29uc3QKICAgICBpZiAoaXRl
ciAhPSBtX2Zhc3RQYXRoUmVzdW1lTGFiZWxzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+
dmFsdWU7CiAgICAgLy8gTmV4dCBpbnN0cnVjdGlvbiBpbiBzZXF1ZW5jZQotICAgIGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlSW5kZXgpLnB0cigpOworICAgIGNvbnN0IGF1dG8qIGN1
cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0
KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgcmV0dXJuIG1fbGFiZWxzW21fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpXTsKIH0KIApAQCAtNDMy
LDcgKzQzMiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChKU1ZhbHVlUmVncyBqc1JlZywgVmlydHVhbFJlCiAgICAgICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChqc1JlZyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgaW50IEpJVDo6anVt
cFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGludCB0YXJnZXQpCitBTFdB
WVNfSU5MSU5FIGludCBKSVQ6Omp1bXBUYXJnZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIGludCB0YXJnZXQpCiB7CiAgICAgaWYgKHRhcmdldCkKICAgICAgICAgcmV0dXJuIHRh
cmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU2ZGZi
ODczNjUyM2E3NWMzY2E1MTJjOGZjMThjMzEzMjQ2MDFkNjguLjViODVjN2FjNTE3YTcwMmRjZmQ3
YTYyZWRmMDkyMTFhM2Q1ZDMzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtNDYsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBKSVQ6
OmVtaXRfb3BfbW92KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9tb3YoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTW92Pigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW92KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgc3RvcmVWYWx1ZShqc1JlZ1QxMCwgYWRkcmVzc0Zvcihkc3QpKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRW5kPigpOwogICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNS
LCBjYWxsRnJhbWVSZWdpc3RlcikpOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXQoKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbXAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSm1wPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVu
dEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTg0LDcgKzg0LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3Bfam1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB9CiAKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X29iamVjdChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmplY3Q+KCk7CiAKQEAgLTEwOCw3ICsx
MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKIH0KIAogCi12b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2lu
c3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcE92ZXJyaWRlc0hhc0luc3RhbmNlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9v
dmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB9CiAKIAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5jZW9mPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE5MiwxMCArMTkyLDEwIEBAIHZvaWQg
SklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIAorCiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5jZW9mPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgCkBAIC0yMjIsNyArMjIyLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2lzX2VtcHR5KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9p
c19lbXB0eShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0VtcHR5PigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTIzOSw3ICsyMzksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3R5cGVvZl9pc191bmRl
ZmluZWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHlwZW9mSXNVbmRlZmluZWQ+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMjY4LDcg
KzI2OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWRfb3Jf
bnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSXNVbmRlZmluZWRPck51bGw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVm
aW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAK
IAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJc0Jvb2xlYW4+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRz
dCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2lzX2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2lzX251bWJlcihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BJc051bWJlcj4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKICNpZiBVU0UoQklHSU5UMzIpCi12
b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElzQmlnSW50PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKQEAgLTM0NiwxNCArMzQ2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2lz
X2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogI2Vsc2UgLy8gaWYgIVVTRShC
SUdJTlQzMikKLU5PX1JFVFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IElu
c3RydWN0aW9uKikKK05PX1JFVFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIC8vIElmIHdlIG9ubHkgaGF2ZSBIZWFwQmlnSW50cywg
dGhlbiB3ZSBlbWl0IGlzQ2VsbFdpdGhUeXBlIGluc3RlYWQgb2YgaXNCaWdJbnQuCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbmRpZgogCi12b2lkIEpJVDo6ZW1pdF9v
cF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRz
dCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSXNPYmplY3Q+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2Rl
Lm1fZHN0OwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1p
dGl2ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvUHJp
bWl0aXZlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAg
LTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlf
a2V5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF90b19wcm9wZXJ0eV9rZXkoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9Q
cm9wZXJ0eUtleT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJvcGVydHlfa2V5KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NldF9m
dW5jdGlvbl9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BTZXRGdW5jdGlvbk5hbWU+KCk7CiAKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lLCBn
bG9iYWxPYmplY3RHUFIsIGZ1bmN0aW9uR1BSLCBuYW1lSlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9ub3QoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTm90PigpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9vcGVyYW5kLCBqc1JlZ1QxMCk7
CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pm
YWxzZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZmFsc2U+KCk7CiAgICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogdmFsdWVJc0ZhbHNleSIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamVx
X251bGwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxTnVsbD4oKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTUxNCw3ICs1MTQsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIG1hc3F1ZXJhZGVzR2xvYmFsT2JqZWN0SXNGb3JlaWduLmxpbmsodGhp
cyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBzcmMgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2puZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9q
dW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbChjb25zdCBKU0luc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BKdW5kZWZpbmVkT3JOdWxsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2
YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfanVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgYWRkSnVtcChicmFuY2hJZk51bGwoanNSZWdUMTApLCB0YXJnZXQpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9u
dWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpudW5kZWZpbmVkT3JOdWxsPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01NzAs
NyArNTcwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZEp1bXAoYnJhbmNoSWZOb3RO
dWxsKGpzUmVnVDEwKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
amVxX3B0cihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXFQdHI+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01ODgsNyArNTg4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmVx
X3B0cihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBzcmMgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNjExLDcgKzYxMSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXE+KCk7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2xocywgcmVnVDApOwpAQCAtNjIyLDcgKzYyMiw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTAp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BKZXE+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtNjM0LDcgKzYzNCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiAjZW5kaWYKIAotdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2p0cnVlKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRhcmdl
dCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVs
KTsKQEAgLTY3OCw3ICs2NzgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiAKICNpZiBVU0UoSlNWQUxV
RTY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BOZXE+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2xocywgcmVnVDApOwpAQCAtNjkwLDcgKzY5MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwog
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRl
Y29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTcwMiw3ICs3MDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICNlbmRpZgog
Ci12b2lkIEpJVDo6ZW1pdF9vcF90aHJvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wVGhyb3c+KCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CkBAIC03NTAsNyArNzUwLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZt
KQogI2lmIFVTRShKU1ZBTFVFNjQpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6
OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAg
LTgyNSwxOCArODI1LDE4IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX3N0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wU3RyaWN0RXE8T3BTdHJpY3RlcT4oY3VycmVudEluc3Ry
dWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0
cmljdEVxPE9wTnN0cmljdGVxPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1
bXAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIGludCB0YXJnZXQg
PSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7
CkBAIC05MDUsMTcgKzkwNSwxNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcFN0cmljdEVxSnVtcDxPcEpzdHJpY3Rl
cT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5zdHJpY3Rl
cShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3Bfam5zdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgY29tcGlsZU9wU3RyaWN0RXFKdW1wPE9wSm5zdHJpY3RlcT4oY3VycmVudEluc3RydWN0
aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtOTI2LDcgKzkyNiw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNo
VGVzdDMyKE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC05MzksNyArOTM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFMKIAogI2VuZGlmCiAKLXZvaWQgSklUOjplbWl0X29wX3RvX251bWJlcihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVt
YmVyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvTnVtYmVyPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3RWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05NTQsNyArOTU0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJlZywganNS
ZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvTnVtZXJpYz4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtOTc1LDcgKzk3NSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3RWUmVnLCBqc1JlZ1Qx
MCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvU3RyaW5nPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3RWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05OTAsNyArOTkwLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJlZywganNSZWdUMTApOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF90b19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RvX29iamVjdChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BUb09iamVjdD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0VlJl
ZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJlZywganNSZWdUMTApOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wQ2F0Y2g+KCk7CiAKQEAgLTEwNTIsMTIgKzEwNTIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9m
aWxlKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2lkZW50aXR5X3dpdGhf
cHJvZmlsZShjb25zdCBKU0luc3RydWN0aW9uKikKIHsKICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IGRvIGFueXRoaW5nIGhlcmUuLi4KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3BhcmVudF9z
Y29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3BhcmVudF9zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRQYXJlbnRTY29wZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgY3VycmVudFNjb3BlID0gYnl0
ZWNvZGUubV9zY29wZTsKQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9wYXJlbnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSlNJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNoSW1tPigpOwogICAgIHNpemVfdCB0YWJsZUluZGV4ID0g
Ynl0ZWNvZGUubV90YWJsZUluZGV4OwpAQCAtMTA5NCw3ICsxMDk0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEpTU3dpdGNoUHRyVGFnKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBm
YXN0IHBhdGguCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNDUyMQpAQCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2No
YXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBmYXJKdW1wKHJl
dHVyblZhbHVlR1BSLCBKU1N3aXRjaFB0clRhZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N3
aXRjaF9zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wU3dpdGNoU3RyaW5nPigpOwogICAgIHNpemVfdCB0YWJsZUluZGV4ID0gYnl0ZWNvZGUubV90
YWJsZUluZGV4OwpAQCAtMTE0Miw3ICsxMTQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNo
X3N0cmluZyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGZhckp1
bXAocmV0dXJuVmFsdWVHUFIsIEpTU3dpdGNoUHRyVGFnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfZXFfbnVsbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFcU51
bGw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBq
c1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXFOdWxsPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHZvaWQgSklU
OjplbWl0X29wX25lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3Bf
ZW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRv
ZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0
ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25n
aW5nCkBAIC0xMzM1LDcgKzEzMzUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9w
X2VudGVyX2hhbmRsZXIiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
c2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0U2NvcGU+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTM0NSw3ICsxMzQ1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyY0RzdCA9
IGJ5dGVjb2RlLm1fc3JjRHN0OwpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKGpzUmVnVDEwLnBheWxvYWRHUFIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcENyZWF0ZVRoaXM+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5
dGVjb2RlLm1fY2FsbGVlOwpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCBqc1JlZ1QxMCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2NoZWNrX3Rkeihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcENoZWNrVGR6PigpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xNDA5LDcg
KzE0MDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogLy8gU2xvdyBjYXNlcwogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lcShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApA
QCAtMTQyMCw3ICsxNDIwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9uZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKQEAgLTE0MzIsNyArMTQzMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgcmV0dXJuVmFs
dWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZQogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihO
b25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5l
cShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IApAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXMKIAogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2RlYnVnKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1Zyhjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWJ1Zz4oKTsKICAgICBsb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwpAQCAtMTQ2Niw3ICsxNDY2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBub0RlYnVnZ2VyUmVxdWVzdHMubGluayh0aGlzKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVj
dGlvbikKIHsKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmV0dXJuRWFybHlGcm9tSW5maW5p
dGVMb29wc0ZvckZ1enppbmcoKSAmJiBtX3VubGlua2VkQ29kZUJsb2NrLT5sb29wSGludHNBcmVF
bGlnaWJsZUZvckZ1enppbmdFYXJseVJldHVybigpKSkgewogICAgICAgICB1aW50cHRyX3QqIHB0
ciA9IHZtKCkuZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9uKTsKQEAgLTE0
OTQsNyArMTQ5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9v
cF9oaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9o
aW50KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAv
LyBFbWl0IHRoZSBzbG93IHBhdGggZm9yIHRoZSBKSVQgb3B0aW1pemF0aW9uIGNoZWNrOgpAQCAt
MTUyMSwyNiArMTUyMSwyNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogI2VuZGlmCiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQg
SklUOjplbWl0X29wX2NoZWNrX3RyYXBzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+dHJh
cHMoKS50cmFwQml0c0FkZHJlc3MoKSksIFRydXN0ZWRJbW0zMihWTVRyYXBzOjpBc3luY0V2ZW50
cykpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfbm9wKGNvbnN0IEluc3RydWN0aW9uKikKK3Zv
aWQgSklUOjplbWl0X29wX25vcChjb25zdCBKU0luc3RydWN0aW9uKikKIHsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9iZWdpbihjb25zdCBJbnN0cnVjdGlvbiopCit2b2lk
IEpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2luKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQog
ewogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X3N1cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29w
X3N1cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIHN1YjMyKFRy
dXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmdfc3Vw
ZXJTYW1wbGVyQ291bnQpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja190cmFw
cyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSlNJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtMTU4MSw3ICsxNTgxLDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0
b3IoVk0mIHYKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogb3BfY2hlY2tfdHJhcHNfaGFuZGxlciIpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcE5ld1JlZ2V4cD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC0xNTk0LDcgKzE1OTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVn
ZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE2MTYsMjggKzE2MTYsMjggQEAgdm9pZCBKSVQ6OmVt
aXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jQ29tbW9u
PE9wTmV3RnVuYz4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jQ29tbW9uPE9wTmV3R2Vu
ZXJhdG9yRnVuYz4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jQ29t
bW9uPE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jQ29tbW9u
PE9wTmV3QXN5bmNGdW5jPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJD
b21tb24oY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE2NTksMjcgKzE2NTksMjcgQEAgdm9p
ZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXdfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5ld0Z1bmNFeHA+KGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19n
ZW5lcmF0b3JfZnVuY19leHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5ld0dlbmVyYXRvckZ1bmNFeHA+KGN1
cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5j
X2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb248T3BOZXdBc3luY0Z1bmNFeHA+
KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9Ci0gICAgCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5
bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHAoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5j
RXhwckNvbW1vbjxPcE5ld0FzeW5jR2VuZXJhdG9yRnVuY0V4cD4oY3VycmVudEluc3RydWN0aW9u
KTsKIH0KLSAgICAKLXZvaWQgSklUOjplbWl0X29wX25ld19hcnJheShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXk+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTY5MSw3ICsxNjkxLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlLCBkc3Qs
IGFyZ3VtZW50R1BSMCwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIsIHNpemUpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXpl
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0FycmF5V2l0aFNpemU+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTcwOCw3ICsxNzA4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3
QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUsIGRzdCwgZ2xvYmFsT2JqZWN0R1BSLCBwcm9maWxlR1BS
LCBzaXplSlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxl
X3R5cGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIG1f
aXNTaGFyZWFibGUgPSBmYWxzZTsKIApAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAganVtcFRvRW5kLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VS
VCh2bSgpLnNoYWRvd0NoaWNrZW4oKSk7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CkBAIC0x
Nzg4LDcgKzE3ODgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJv
bG9ndWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdAogICAgIGxvZ1NoYWRvd0No
aWNrZW5Qcm9sb2d1ZVBhY2tldChzaGFkb3dQYWNrZXRSZWcsIHNjcmF0Y2gxUmVnLCByZWdUMyk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hh
ZG93X2NoaWNrZW5fdGFpbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5zaGFkb3dDaGlja2VuKCkpOwogICAgIHVwZGF0
ZVRvcENhbGxGcmFtZSgpOwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBsb2dTaGFkb3dDaGlja2VuVGFpbFBhY2tldChzaGFkb3dQYWNrZXRSZWcsIGpz
UmVnVDMyLCByZWdUNCwgcmVnVDEsIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX2NvbnRy
b2xfZmxvdyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
bV9pc1NoYXJlYWJsZSA9IGZhbHNlOwogCkBAIC0xODIxLDcgKzE4MjEsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9hcmd1bWVudF9jb3VudChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBcmd1bWVu
dENvdW50PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAg
LTE4MzIsNyArMTgzMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIHJlc3VsdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0
aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Jlc3RfbGVuZ3RoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFJl
c3RMZW5ndGg+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpA
QCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3Vt
ZW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfYXJndW1lbnQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QXJn
dW1lbnQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAt
MTg3MSw3ICsxODcxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9v
Zihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQ
cm90b3R5cGVPZj4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCmluZGV4IDQ0Mjk0ODUzNmU3MzFlYmUwNmE4YWU3MGY4MzY0M2ViMjM2MmY0MDIu
LjgxOTk3ODBjOTU2NzA4ZWRhYjZiNTk5MzY0ODU4MmI1ZDViZDFhYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcEVxU2xvd0NvbW1vbihWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2VxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVxPigpOwogCkBAIC04
Niw3ICs4Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Rz
dCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25lcShjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXE+KCk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKZXE+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5z
dHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGFkZEp1bXAoYnJhbmNoMzIoRXF1YWwsIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwganNS
ZWdUMzIucGF5bG9hZEdQUigpKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5l
cShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3Bfam5lcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwogICAgIHVu
c2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5t
X3RhcmdldExhYmVsKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkSnVtcChicmFu
Y2gzMihOb3RFcXVhbCwganNSZWdUMTAucGF5bG9hZEdQUigpLCBqc1JlZ1QzMi5wYXlsb2FkR1BS
KCkpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9lcShjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFcT4oKTsK
IApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgcmV0dXJuVmFsdWVKU1IpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lcT4oKTsKIApAQCAtMTM4LDcgKzEzOCw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2RzdCwgcmV0dXJuVmFsdWVKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEplcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CkBAIC0xNDgsNyArMTQ4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFu
Y2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2puZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQg
PSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7
CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxQ29tbW9uKFZp
cnR1YWxSZWdpc3RlciBzcmMxLCAgVmlydHVhbFJlZ2lzdGVyIHNyYzIpCiAgICAgZmlyc3RJc09i
amVjdC5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0
ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3RyaWN0ZXE+KCk7CiAgICAgY29t
cGlsZU9wU3RyaWN0RXFDb21tb24oYnl0ZWNvZGUubV9saHMsIGJ5dGVjb2RlLm1fcmhzKTsKQEAg
LTE4Niw3ICsxODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9kc3QsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVx
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9uc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTnN0cmljdGVxPigp
OwogICAgIGNvbXBpbGVPcFN0cmljdEVxQ29tbW9uKGJ5dGVjb2RlLm1fbGhzLCBieXRlY29kZS5t
X3Jocyk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2RzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BK
c3RyaWN0ZXE+KCk7CiAgICAgaW50IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0
aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBhZGRKdW1wKGJyYW5jaDMyKEVxdWFsLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIGpz
UmVnVDMyLnBheWxvYWRHUFIoKSksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pu
c3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5z
dHJpY3RlcT4oKTsKICAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBhZGRKdW1wKGJyYW5jaDMyKE5vdEVxdWFsLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCks
IGpzUmVnVDMyLnBheWxvYWRHUFIoKSksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qc3RyaWN0ZXEoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0
cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAog
ICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQ
UiksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYzBjYjcyZmI2MGQ5
MzUzNTM5ZTk0MTdhY2JmODRlNTEwOGQzODUwMi4uZWZjOWEwZThiYjAyZTIyNTgxMTg0NjIzZDEw
NjBhODkzNWNkZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC0yODI1LDcgKzI4MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYgogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRK
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JC
YXNlbGluZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBKU0luc3RydWN0aW9uKiBwYykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTI4NzcsNyArMjg3Nyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25S
ZXNvbHZlU2NvcGVGb3JCYXNlbGluZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXNvbHZlZFNjb3BlKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZyb21TY29wZSwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI5MTksNyArMjkxOSw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqCiAgICAgfSkpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dFRvU2NvcGUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dFRvU2NvcGUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBKU0luc3RydWN0aW9uKiBwYykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDVlOWY1YzcwNWE1
ODkzOTA3MTFiYWY3MzcwYjAwNGIyNjFmZGI4NC4uMmE1OWY2NGU4ODVhZDVhMjVlMTg2NzJmOTZj
M2RkNWJiODY1YmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTY4LDcgKzY4LDEwIEBAIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAKIHN0cnVjdCBFQ01B
TW9kZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3Rl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOworc3RydWN0IEpTT3Bjb2Rl
VHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxKU09wY29kZVRy
YWl0cz47CiAKIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogCkBAIC0yOTQsOSArMjk3LDkgQEAg
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5l
cmljLCBFbmNvZGVkSlNWYWx1ZSwgKEoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5
VHlwZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgs
IGludDMyX3QgbWluKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRj
aFN0cmluZ1dpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMp
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJvbVNjb3BlLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNJbnN0cnVjdGlvbiogYnl0ZWNv
ZGVQQykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0luc3RydWN0aW9uKiBieXRlY29kZVBDKSk7
CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZs
eVRvSGF2ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHksIGNoYXIqLCAoVk0qLCBK
U09iamVjdCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVhbGxvY2F0
ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZSwgY2hhciosIChWTSosIEpTT2JqZWN0Kiwg
c2l6ZV90IG5ld1NpemUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggOGViMjEzOGExMWM5Y2I5Njk5ZmMzZmEyOWRhYTIyZTU1MmIx
OWM4MS4uYzhiOGIwYmYzZGUxZjNjZmI3YmRkOWIwMWMyN2E0NzY3OTk5MzdmOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2dldF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTIyLDcg
KzEyMiw3IEBAIHZvaWQgSklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QgT3Bjb2Rl
VHlwZSYgYnl0ZWNvZGUsIFZlY3RvcjxTbG93Q2FzZUVuCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGdlbmVyYXRlR2V0QnlWYWxT
bG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCksIGl0ZXIpOwogfQpA
QCAtMTY1LDcgKzE2NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UCiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpT
Uik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIEFTU0VSVChoYXNB
bnlTbG93Q2FzZXMoaXRlcikpOwogCkBAIC0yNjAsNyArMjYwLDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXIKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NldF9wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2U7CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKQEAgLTMxOCw3ICsz
MTgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZz
ZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0zNzAsNyArMzcwLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKQEAgLTQxNywxNCArNDE3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJy
aWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi10ZW1wbGF0ZSB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWw+KGNvbnN0IEluc3RydWN0aW9uKik7Cit0ZW1wbGF0
ZSB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWw+KGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qKTsKIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92
YWxfZGlyZWN0KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9u
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC00ODMsNyArNDgzLDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3Zh
bF9jYWxsU2xvd09wZXJhdGlvblQKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtNTg0LDcgKzU4NCw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25h
bWVfY2FsbFNsb3dPcGVyCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFB1dEdldHRlckJ5SWQ+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBh
eWxvYWQoYnl0ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyQnlJZCwgcmVn
VDIsIHJlZ1QwLCBtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpLmltcGwoKSwgb3B0aW9ucywgcmVnVDEpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFB1dFNldHRlckJ5SWQ+KCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBh
eWxvYWQoYnl0ZWNvZGUubV9iYXNlLCByZWdUMCk7CkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgcmVn
VDIsIHJlZ1QwLCBtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpLmltcGwoKSwgb3B0aW9ucywgcmVnVDEpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyU2V0dGVyQnlJZD4oKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyUGF5bG9hZChieXRlY29kZS5tX2Jhc2UsIHJlZ1QwKTsKQEAgLTYx
NSw3ICs2MTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCByZWdUMywgcmVnVDAsIG1fdW5saW5rZWRDb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuaW1wbCgpLCBhdHRyaWJ1dGUsIHJl
Z1QxLCByZWdUMik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0
ZXJCeVZhbD4oKTsKIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9n
ZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJCeVZhbCwgZ2xvYmFsT2JqZWN0R1JQLCBi
YXNlR1BSLCBwcm9wZXJ0eUpTUiwgYXR0cmlidXRlcywgc2V0dGVyR1BSKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFNldHRlckJ5VmFsPigpOwogCkBAIC02NTMsNyAr
NjUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1
dFNldHRlckJ5VmFsLCBnbG9iYWxPYmplY3RHUlAsIGJhc2VHUFIsIHByb3BlcnR5SlNSLCBhdHRy
aWJ1dGVzLCBzZXR0ZXJHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Rl
bF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTY5Miw3ICs2OTIsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2Up
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRl
Y29kZUluZGV4KTsKQEAgLTc2Miw3ICs3NjIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaAog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbiIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNv
bnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsK
ICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUlu
ZGV4KTsKQEAgLTg3NCw3ICs4NzQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVAogICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BUcnlHZXRCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0g
Ynl0ZWNvZGUubV9kc3Q7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5
X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsK
ICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUlu
ZGV4KTsKQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC05NjcsNyArOTY3LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVz
dWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTk5Myw3ICs5OTMsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgQ2FsbCgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwpAQCAtMTAzOCw3ICsxMDM4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCBy
ZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkg
PT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTExMDAsNyArMTEwMCw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRo
X3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZFdpdGhUaGlzPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0g
Ynl0ZWNvZGUubV9kc3Q7CkBAIC0xMTM4LDcgKzExMzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3Qg
SlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zm
c2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMTIwMSw3ICsxMjAxLDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpc19jYWxsU2xvd08KICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1
dEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNl
OwpAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihi
YXNlVlJlZywgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
YnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMTMxMCw3ICsxMzEwLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGgKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElu
QnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0
OwpAQCAtMTM0Miw3ICsxMzQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9p
bl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5
X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTEzNzAsNyArMTM3MCw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lu
X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKQEAgLTE0MDYsNyArMTQwNiw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1Ip
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRl
Y29kZUluZGV4KTsKQEAgLTE0ODYsMzEgKzE0ODYsMzEgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2
YXRlU2xvdyhBY2Nlc3NUeXBlIHR5cGUpCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhh
c1ByaXZhdGVOYW1lPigpOwogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRl
Y29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVO
YW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSlNJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKICAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJp
dmF0ZU5hbWUpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaGFz
X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0
ZUJyYW5kPigpOwogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5t
X2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKICAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJy
YW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BSZXNvbHZlU2NvcGU+KCk7CiAgICAg
UmVzb2x2ZVR5cGUgcHJvZmlsZWRSZXNvbHZlVHlwZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fcHJv
ZmlsZWRDb2RlQmxvY2spLm1fcmVzb2x2ZVR5cGU7CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9yZXNvbHZlX3Nj
b3BlR2VuZXJhdG9yKFZNJiB2bQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3Jlc29sdmVfc2NvcGUiKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEZyb21TY29wZT4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CkBAIC0xOTc0LDcgKzE5NzQsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9z
Y29wZUdlbmVyYXRvcihWTSYgdgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9mcm9tX3Njb3BlIik7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKQEAgLTIxMTMsNyArMjExMyw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApA
QCAtMjE3Myw3ICsyMTczLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0RnJvbUFyZ3VtZW50cz4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CkBAIC0yMTg2LDcgKzIxODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJv
bV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dFRvQXJndW1lbnRzPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBh
cmd1bWVudHMgPSBieXRlY29kZS5tX2FyZ3VtZW50czsKQEAgLTIyMDEsNyArMjIwMSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGFyZ3VtZW50cywgdmFsdWUsIFNo
b3VsZEZpbHRlclZhbHVlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2Zp
ZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0SW50ZXJuYWxGaWVsZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJu
YWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BQdXRJbnRlcm5hbEZpZWxkPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtMjIzMSw3ICsyMjMxLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJvcGVydHlFbnVtZXJhdG9yPigpOwogCkBAIC0yMjY1
LDcgKzIyNjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGRvbmVDYXNlcy5saW5r
KHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0
b3JfbmV4dChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yTmV4dD4o
KTsKIApAQCAtMjMyOCw3ICsyMzI4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZG9uZS5saW5r
KHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVt
ZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9n
ZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgZ2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCksIGl0ZXIpOwogfQpAQCAtMjQ1OCw0OCAr
MjQ1OCw0OCBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29u
c3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bgogICAgIGRvbmUubGluayh0aGlzKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3Jf
aW5fYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckhhc093blByb3BlcnR5PigpLCBzbG93X3BhdGhf
ZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KTsKIH0KIAogI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5z
dHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29u
c3QgSlNJbnN0cnVjdGlvbiopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSlNJ
bnN0cnVjdGlvbiopCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBz
bG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xv
d19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlf
dmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25f
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKQogewogICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9w
cm9wZXJ0eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggZDBiMzczODkyMWE0ZjAwMTUxMmU3ZGVlM2E4NDQz
YzUxOTNiZDI2Yy4uNjcwNzc1N2JjNWM0YTI2Y2UzOWVjMmE4NWM0YWFlNjg3Mzk1NzVhMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTgzLDcgKzgzLDcg
QEAgdm9pZCBpbml0aWFsaXplKCkKIAogICAgIHN0YXRpY19hc3NlcnQobGxpbnRfdGhyb3dfZnJv
bV9zbG93X3BhdGhfdHJhbXBvbGluZSA8IFVJTlQ4X01BWCk7CiAgICAgc3RhdGljX2Fzc2VydCh3
YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUgPCBVSU5UOF9NQVgpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpIHsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggKyAxOyArK2kp
IHsKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldID0g
bGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKICAgICAgICAgZ19qc2NDb25m
aWcubGxpbnQud2FzbUV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXSA9IHdhc21fdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmgKaW5kZXggMzdjMWFmZTZkZTc2Yzg5MzVhYzc0NmQ2MGZiNDk3ZDMxZTZlN2NhOS4u
YzAzMzNkMzQyYjA5YjAzMDQwMTBmNDQ2Mjg0M2ZjMDg5NDgyOWVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCB2b2lkIGluaXRpYWxpemUoKTsKIAotICAgIGZyaWVuZCBJbnN0cnVj
dGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Ci0gICAgZnJpZW5kIEluc3RydWN0aW9uKiB3
YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CisgICAgZnJpZW5kIEpTSW5zdHJ1Y3Rpb24qIGV4
Y2VwdGlvbkluc3RydWN0aW9ucygpOworICAgIGZyaWVuZCBXYXNtSW5zdHJ1Y3Rpb24qIHdhc21F
eGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKICAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVNYXAoKTsK
ICAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVNYXBXaWRlMTYoKTsKICAgICBmcmllbmQgT3Bjb2Rl
KiBvcGNvZGVNYXBXaWRlMzIoKTsKQEAgLTc0LDE0ICs3NCwxNCBAQCBwcml2YXRlOgogCiB2b2lk
IGluaXRpYWxpemUoKTsKIAotaW5saW5lIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlv
bnMoKQoraW5saW5lIEpTSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCiB7Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPihnX2pzY0NvbmZpZy5sbGlu
dC5leGNlcHRpb25JbnN0cnVjdGlvbnMpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpT
SW5zdHJ1Y3Rpb24qPihnX2pzY0NvbmZpZy5sbGludC5leGNlcHRpb25JbnN0cnVjdGlvbnMpOwog
fQotICAgIAotaW5saW5lIEluc3RydWN0aW9uKiB3YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkK
KworaW5saW5lIFdhc21JbnN0cnVjdGlvbiogd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9ucygpCiB7
Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KGdfanNjQ29uZmlnLmxsaW50
Lndhc21FeGNlcHRpb25JbnN0cnVjdGlvbnMpOworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V2Fz
bUluc3RydWN0aW9uKj4oZ19qc2NDb25maWcubGxpbnQud2FzbUV4Y2VwdGlvbkluc3RydWN0aW9u
cyk7CiB9CiAKIGlubGluZSBPcGNvZGUqIG9wY29kZU1hcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCmluZGV4IGU4ODMxNTMyOGNjYjhmODVi
M2Y1ZGY3MTU1OGEwY2JjY2IzNTg1NmMuLmQyMWMxYTIxMDI4NDhmMGYzOTc1YjkyZDMzMDFhM2Ni
ZTdmZmIxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
TExJbnQgewogCi1JbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhWTSYgdm0pCitKU0luc3RydWN0
aW9uKiByZXR1cm5Ub1Rocm93KFZNJiB2bSkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogI2lm
IExMSU5UX1RSQUNJTkcKQEAgLTUwLDcgKzUwLDcgQEAgSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhy
b3coVk0mIHZtKQogICAgIHJldHVybiBMTEludDo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiB9
CiAKLUluc3RydWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhWTSYgdm0pCitXYXNtSW5zdHJ1Y3Rp
b24qIHdhc21SZXR1cm5Ub1Rocm93KFZNJiB2bSkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwog
I2lmIExMSU5UX1RSQUNJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuaAppbmRleCBlNWY5MDIxZmFkYjhlZmNiMjU4N2MwY2E2MDE3NmViZjFkY2JhYzRh
Li5mZGEzNTMyZGNjMGE4ODVjNDE4ZTY2NzZhMjI5MmRjNDMzYjUzN2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCkBAIC0zMywxNiArMzMsMTkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwotc3RydWN0
IEluc3RydWN0aW9uOwogdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmFzZUluc3RydWN0aW9uOworc3RydWN0
IEpTT3Bjb2RlVHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxK
U09wY29kZVRyYWl0cz47CisKIG5hbWVzcGFjZSBMTEludCB7CiAKIC8vIEdpdmVzIHlvdSBhIFBD
IHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBh
ZHZhbmNlZAogLy8gYmV0d2VlbiAxIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3Ry
dWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlCiAvLyBpbnRlcnByZXRlcidzIGV4Y2VwdGlvbiBo
YW5kbGVyLgotSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mKTsKLUluc3RydWN0aW9uKiB3
YXNtUmV0dXJuVG9UaHJvdyhWTSYpOworSlNJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhWTSYp
OworV2FzbUluc3RydWN0aW9uKiB3YXNtUmV0dXJuVG9UaHJvdyhWTSYpOwogCiAvLyBVc2UgdGhp
cyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRvVGhyb3coVk0mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDdhMGU3ZGZl
NjU2YmY0MzQwNGNlOGNlNmZhNTNlOThkZTExZmQ5ZTguLjBjNWJmOWUxZDYyMWU2YmJiN2MxYTk2
MDY5MDA4YzNmNTM4YzE0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIGlubGluZSBKU1ZhbHVlIGdldE9w
ZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7IHJl
dHVyCiAgICAgKCh0YXJnZXRPZmZzZXQpID8gKHRhcmdldE9mZnNldCkgOiBjb2RlQmxvY2stPm91
dE9mTGluZUp1bXBPZmZzZXQocGMpKQogCiAjZGVmaW5lIEpVTVBfVE8odGFyZ2V0KSBkbyB7IFwK
LSAgICAgICAgcGMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgKHRhcmdldCkpOyBcCisgICAgICAgIHBj
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocGMpICsgKHRhcmdldCkpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2Up
CiAKICNkZWZpbmUgTExJTlRfQlJBTkNIKGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAg
IFwKQEAgLTIyMCw3ICsyMjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gdm9pZCBz
bG93UGF0aExvZ0YoY29uc3QgY2hhciosIGNvbnN0IFR5cGVzJi4uLikgeyB9CiAKICNlbmRpZiAv
LyBMTElOVF9UUkFDSU5HCiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Ry
YWNlX29wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBsbGludF90cmFjZV9vcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3Ry
dWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgaWYgKCFPcHRp
b25zOjp0cmFjZUxMSW50RXhlY3V0aW9uKCkpCiAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7CkBA
IC0yMzgsNyArMjM4LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJh
Y2Vfb3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW4KICAgICBMTElOVF9FTkQo
KTsKIH0KIAotZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVy
ZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBsbGludF90cmFjZV92YWx1ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVj
dGlvbiogcGMsIGludCBmcm9tV2hlcmUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogewogICAg
IGlmICghT3B0aW9uczo6dHJhY2VMTEludEV4ZWN1dGlvbigpKQogICAgICAgICBMTElOVF9FTkRf
SU1QTCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChyZXN1bHQp
OwogfQogCi1zdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJh
c2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorc3Rh
dGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlv
biogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAKQEAgLTgwNCw3ICs4
MDQsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZAogICAgIHZtLndyaXRlQmFycmllcihjb2Rl
QmxvY2spOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IElu
c3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0
QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCitzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRH
ZXRCeUlEKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC0yMDA2LDcgKzIwMDYsNyBAQCBlbnVtIGNsYXNzIFNldEFyZ3Vt
ZW50c1dpdGggewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT3AsIFNldEFyZ3VtZW50c1dpdGgg
c2V0PgotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2YXJhcmdzU2V0dXAoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCkK
K2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmFyYXJnc1NldHVwKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCkKIHsK
ICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKIApAQCAtMjA1Niw3ICsyMDU2LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF92YXJhcmdzKQogICAgIHJldHVy
biB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RWYXJhcmdzLCBTZXRBcmd1bWVudHNXaXRoOjpPYmpl
Y3Q+KGNhbGxGcmFtZSwgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCi1pbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXR1
cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9f
U0VUX1BDKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENhbGxFdmFsPigpOwpAQCAt
MjM3NiwxMyArMjM3NiwxMyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck5leHRDaGVja3Bv
aW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsTwogICAgICAgICB2YWx1
ZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+dmFsdWUpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3Bh
dGNoVG9OZXh0SW5zdHJ1Y3Rpb25EdXJpbmdFeGl0KFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBwYykKK2lubGluZSBTbG93UGF0
aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbkR1cmluZ0V4aXQoVGhyb3dTY29w
ZSYgc2NvcGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0luc3RydWN0aW9uU3RyZWFtOjpSZWYg
cGMpCiB7CiAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZW5jb2Rl
UmVzdWx0KHJldHVyblRvVGhyb3coc2NvcGUudm0oKSksIG51bGxwdHIpOwogCiAgICAgaWYgKE9w
dGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBK
SVRUeXBlOjpJbnRlcnByZXRlclRodW5rKSB7Ci0gICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBu
ZXh0UEMgPSBwYy5uZXh0KCkucHRyKCk7CisgICAgICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIG5l
eHRQQyA9IHBjLm5leHQoKS5wdHIoKTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KG5leHRQQywgTExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmso
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA3ZWM4MDE1ZWU4YzVhZWM0YzUyOWQ2
ZGM1MjgyYTM0M2M3NGE0YmViLi43YmQxMDdiOTU1ZTVlOGM1NTk1MjUwZTUxYmNmZjdjNzZiODRj
OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApA
QCAtMjYsMjQgKzI2LDI0IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbW1vblNsb3dQ
YXRocy5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1lOwotc3RydWN0IElu
c3RydWN0aW9uOwogc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgTExJbnQgewog
Ci1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKENhbGxG
cmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpIFJF
RkVSRU5DRURfRlJPTV9BU007Ci1leHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90
cmFjZV92YWx1ZShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUs
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBSRUZFUkVOQ0VEX0ZST01fQVNNOworZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChDYWxsRnJhbWUqLCBjb25z
dCBKU0luc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpIFJFRkVSRU5DRURf
RlJPTV9BU007CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1
ZShDYWxsRnJhbWUqLCBjb25zdCBKU0luc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQpIFJFRkVSRU5DRURfRlJPTV9BU007CiBleHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSBsbGludF9saW5rX2NhbGwoQ2FsbEZyYW1lKiwgSlNDZWxsKiwgQ2FsbExp
bmtJbmZvKikgUkVGRVJFTkNFRF9GUk9NX0FTTTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3ZpcnR1YWxfY2FsbChDYWxsRnJhbWUqLCBKU0NlbGwqLCBDYWxsTGlua0luZm8q
KSBSRUZFUkVOQ0VEX0ZST01fQVNNOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJp
ZXJfc2xvdyhDYWxsRnJhbWUqLCBKU0NlbGwqKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRF
Uk5BTDsKIAogI2RlZmluZSBMTElOVF9TTE9XX1BBVEhfREVDTChuYW1lKSBcCi0gICAgZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfIyNuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCisgICAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfIyNuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9u
KiBwYykKIAogI2RlZmluZSBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wobmFtZSkgXAogICAg
IExMSU5UX1NMT1dfUEFUSF9ERUNMKG5hbWUpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVS
TkFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KaW5kZXggNGZhNGZiM2Q3OTFiMzM0NzgwZDhkODgwNmFiMDJkOGViY2Y3MDU4YS4u
YThlN2M3Mzk5ZDU4MWE1OTYwZDBhYTdhYTcyNDMzNWRiMDM1NGM3NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMzIw
LDggKzMyMCwxMCBAQCBlbmQKIAogIyBPcGNvZGUgb2Zmc2V0cwogY29uc3QgT3Bjb2RlSUROYXJy
b3dTaXplID0gMSAjIE9wY29kZUlECi1jb25zdCBPcGNvZGVJRFdpZGUxNlNpemUgPSAyICMgV2lk
ZTE2IFByZWZpeCArIE9wY29kZUlECi1jb25zdCBPcGNvZGVJRFdpZGUzMlNpemUgPSAyICMgV2lk
ZTMyIFByZWZpeCArIE9wY29kZUlECitjb25zdCBPcGNvZGVJRFdpZGUxNlNpemVKUyA9IDIgIyBX
aWRlMTYgUHJlZml4ICsgT3Bjb2RlSUQKK2NvbnN0IE9wY29kZUlEV2lkZTMyU2l6ZUpTID0gMiAj
IFdpZGUzMiBQcmVmaXggKyBPcGNvZGVJRAorY29uc3QgT3Bjb2RlSURXaWRlMTZTaXplV2FzbSA9
IDIgIyBXaWRlMTYgUHJlZml4ICsgT3Bjb2RlSUQoMSBieXRlKQorY29uc3QgT3Bjb2RlSURXaWRl
MzJTaXplV2FzbSA9IDIgIyBXaWRlMzIgUHJlZml4ICsgT3Bjb2RlSUQoMSBieXRlKQogCiBpZiBY
ODZfNjRfV0lOIG9yIENfTE9PUF9XSU4KICAgICBjb25zdCBHaWdhY2FnZUNvbmZpZyA9IF9nX2dp
Z2FjYWdlQ29uZmlnCkBAIC0zNTgsMzUgKzM2MCw1MSBAQCBtYWNybyBkaXNwYXRjaEluZGlyZWN0
KG9mZnNldFJlZykKICAgICBkaXNwYXRjaChvZmZzZXRSZWcpCiBlbmQKIAotbWFjcm8gZ2VuZXJp
Y0Rpc3BhdGNoT3AoZGlzcGF0Y2gsIHNpemUsIG9wY29kZU5hbWUpCittYWNybyBnZW5lcmljRGlz
cGF0Y2hPcEpTKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1lKQogICAgIG1hY3JvIGRpc3BhdGNo
TmFycm93KCkKLSAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3Ro
IC0gMSkgKiAxICsgT3Bjb2RlSUROYXJyb3dTaXplKQorICAgICAgICBkaXNwYXRjaCgoY29uc3Rl
eHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogMSArIE9wY29kZUlETmFycm93U2l6ZSkKICAgICBl
bmQKIAogICAgIG1hY3JvIGRpc3BhdGNoV2lkZTE2KCkKLSAgICAgICAgZGlzcGF0Y2goKGNvbnN0
ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoIC0gMSkgKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplKQor
ICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGgpICogMiArIE9w
Y29kZUlEV2lkZTE2U2l6ZUpTKQogICAgIGVuZAogCiAgICAgbWFjcm8gZGlzcGF0Y2hXaWRlMzIo
KQotICAgICAgICBkaXNwYXRjaCgoY29uc3RleHByICVvcGNvZGVOYW1lJV9sZW5ndGggLSAxKSAq
IDQgKyBPcGNvZGVJRFdpZGUzMlNpemUpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9w
Y29kZU5hbWUlX2xlbmd0aCkgKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplSlMpCisgICAgZW5kCisK
KyAgICBzaXplKGRpc3BhdGNoTmFycm93LCBkaXNwYXRjaFdpZGUxNiwgZGlzcGF0Y2hXaWRlMzIs
IG1hY3JvIChkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQpCitlbmQKKworbWFjcm8gZ2VuZXJpY0Rp
c3BhdGNoT3BXYXNtKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVOYW1lKQorICAgIG1hY3JvIGRpc3Bh
dGNoTmFycm93KCkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVu
Z3RoKSAqIDEgKyBPcGNvZGVJRE5hcnJvd1NpemUpCisgICAgZW5kCisKKyAgICBtYWNybyBkaXNw
YXRjaFdpZGUxNigpCisgICAgICAgIGRpc3BhdGNoKChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xl
bmd0aCkgKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplV2FzbSkKKyAgICBlbmQKKworICAgIG1hY3Jv
IGRpc3BhdGNoV2lkZTMyKCkKKyAgICAgICAgZGlzcGF0Y2goKGNvbnN0ZXhwciAlb3Bjb2RlTmFt
ZSVfbGVuZ3RoKSAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVXYXNtKQogICAgIGVuZAogCiAgICAg
c2l6ZShkaXNwYXRjaE5hcnJvdywgZGlzcGF0Y2hXaWRlMTYsIGRpc3BhdGNoV2lkZTMyLCBtYWNy
byAoZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogZW5kCiAKIG1hY3JvIGRpc3BhdGNoT3Aoc2l6
ZSwgb3Bjb2RlTmFtZSkKLSAgICBnZW5lcmljRGlzcGF0Y2hPcChkaXNwYXRjaCwgc2l6ZSwgb3Bj
b2RlTmFtZSkKKyAgICBnZW5lcmljRGlzcGF0Y2hPcEpTKGRpc3BhdGNoLCBzaXplLCBvcGNvZGVO
YW1lKQogZW5kCiAKIAogbWFjcm8gZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwg
ZHN0KQotICAgIHNpemUoZ2V0dU9wZXJhbmROYXJyb3csIGdldHVPcGVyYW5kV2lkZTE2LCBnZXR1
T3BlcmFuZFdpZGUzMiwgbWFjcm8gKGdldHUpCisgICAgc2l6ZShnZXR1T3BlcmFuZE5hcnJvdywg
Z2V0dU9wZXJhbmRXaWRlMTZKUywgZ2V0dU9wZXJhbmRXaWRlMzJKUywgbWFjcm8gKGdldHUpCiAg
ICAgICAgIGdldHUob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBlbmQpCiBlbmQK
IAogbWFjcm8gZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgc2l6
ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZTE2LCBnZXRPcGVyYW5kV2lkZTMyLCBt
YWNybyAoZ2V0KQorICAgIHNpemUoZ2V0T3BlcmFuZE5hcnJvdywgZ2V0T3BlcmFuZFdpZGUxNkpT
LCBnZXRPcGVyYW5kV2lkZTMySlMsIG1hY3JvIChnZXQpCiAgICAgICAgIGdldChvcGNvZGVTdHJ1
Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgIGVuZCkKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDk4NzZlZjZlZjc0
MmFjZWVkYWUyNjlhMmFiNDU0YzViNjJjZDUxNmIuLmU3YTRkMTk4ODhhYjM5MTJiZGQ3NzdhYmFk
MDBhODBmNDg5OWQ4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
QUxXQVlTX0lOTElORSBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0
PE9wY29kZT4obV92YWx1ZSk7IH0KIAogICAgIG9wZXJhdG9yIENhbGxGcmFtZSooKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8Q2FsbEZyYW1lKj4obV92YWx1ZSk7IH0KLSAgICBvcGVyYXRvciBjb25z
dCBJbnN0cnVjdGlvbiooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24q
PihtX3ZhbHVlKTsgfQorICAgIG9wZXJhdG9yIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qKCkgeyByZXR1
cm4gYml0d2lzZV9jYXN0PGNvbnN0IEpTSW5zdHJ1Y3Rpb24qPihtX3ZhbHVlKTsgfQogICAgIG9w
ZXJhdG9yIEpTQ2VsbCooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4obV92YWx1ZSk7
IH0KICAgICBvcGVyYXRvciBQcm90b0NhbGxGcmFtZSooKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
UHJvdG9DYWxsRnJhbWUqPihtX3ZhbHVlKTsgfQogICAgIG9wZXJhdG9yIFJlZ2lzdGVyKigpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxSZWdpc3Rlcio+KG1fdmFsdWUpOyB9CkBAIC0yODcsNyArMjg3
LDcgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRyeU9wY29kZUlELCB2b2lk
KiBleGVjdXRhYmxlQWRkcmVzcywgVk0qIHZtLAogICAgICAgICAvLyBpbml0aWFsaXplZCB0aGUg
b3Bjb2RlTWFwIGFib3ZlLiBUaGlzIGlzIGJlY2F1c2UgZ2V0Q29kZVB0cigpCiAgICAgICAgIC8v
IGNhbiBkZXBlbmQgb24gdGhlIG9wY29kZU1hcC4KICAgICAgICAgdWludDhfdCogZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oTExJbnQ6OmV4Y2VwdGlv
bkluc3RydWN0aW9ucygpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heE9w
Y29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1h
eEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMTsgKytpKQogICAgICAgICAgICAgZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zW2ldID0gbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKIAog
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAyMjcxNmY4MWJi
ZDkwNzhjOTZmZWUxMWRkOGM0MTBlMmE1OWFkNGYyLi5hY2U4NzExNjcyZTcwMjE2ZDM5YTQ4ZGYx
NWZkNjZkNmI1N2M0MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMzQsMjAgKzM0LDIwIEBAIG1h
Y3JvIGdldE9wZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBs
b2FkYnNpIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCArIE9wY29k
ZUlETmFycm93U2l6ZVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZFdp
ZGUxNihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRoIGNvbnN0ZXhwciAl
b3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVb
UEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUxNkpTKG9wY29kZVN0cnVjdCwg
ZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGggY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVs
ZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZUpTW1BCLCBQQywgMV0sIGRzdAog
ZW5kCiAKLW1hY3JvIGdldE9wZXJhbmRXaWRlMTYob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRz
dCkKLSAgICBsb2FkaHNpIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRl
eCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXRPcGVy
YW5kV2lkZTE2SlMob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaHNpIGNv
bnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdp
ZGUxNlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZFdpZGUz
MihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bj
b2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNvZGVJRFdpZGUzMlNpemVbUEIs
IFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUzMkpTKG9wY29kZVN0cnVjdCwgZmll
bGROYW1lLCBkc3QpCisgICAgbG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5h
bWUlX2luZGV4ICogNCArIE9wY29kZUlEV2lkZTMyU2l6ZUpTW1BCLCBQQywgMV0sIGRzdAogZW5k
CiAKLW1hY3JvIGdldE9wZXJhbmRXaWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkK
LSAgICBsb2FkaXMgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICog
NCArIE9wY29kZUlEV2lkZTMyU2l6ZVtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldE9wZXJhbmRX
aWRlMzJKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpcyBjb25zdGV4
cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJT
aXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAogbWFjcm8gbWFrZVJldHVybihnZXQsIGRpc3Bh
dGNoLCBmbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYzQ1MzM1MWQ0OTI2Y2Y3NGU4ZDZlZjg1ODU5ODc0YTQ1
YmFkNTlmYS4uNWRlN2JjYzdmZDBkNGYwNDBmMmRmOTRiZDQ3MzQ1ZDgzNTg2OTQ0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KQEAgLTM5LDIwICszOSwzNiBAQCBtYWNybyBnZXRPcGVyYW5kTmFycm93KG9wY29kZVN0
cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgbG9hZGJzcSBjb25zdGV4cHIgJW9wY29kZVN0cnVj
dCVfJWZpZWxkTmFtZSVfaW5kZXggKyBPcGNvZGVJRE5hcnJvd1NpemVbUEIsIFBDLCAxXSwgZHN0
CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMTYob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUs
IGRzdCkKLSAgICBsb2FkaCBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5k
ZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0dU9w
ZXJhbmRXaWRlMTZKUyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRoIGNv
bnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdp
ZGUxNlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXRPcGVyYW5kV2lkZTE2
KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGhzcSBjb25zdGV4cHIgJW9w
Y29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURXaWRlMTZTaXplW1BC
LCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMTZXYXNtKG9wY29kZVN0cnVjdCwg
ZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGggY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVs
ZE5hbWUlX2luZGV4ICogMiArIE9wY29kZUlEV2lkZTE2U2l6ZVdhc21bUEIsIFBDLCAxXSwgZHN0
CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzIob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUs
IGRzdCkKLSAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5k
ZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplW1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0T3Bl
cmFuZFdpZGUxNkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9hZGhzcSBj
b25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiAyICsgT3Bjb2RlSURX
aWRlMTZTaXplSlNbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0T3BlcmFuZFdpZGUz
MihvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRpcyBjb25zdGV4cHIgJW9w
Y29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplW1BC
LCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0T3BlcmFuZFdpZGUxNldhc20ob3Bjb2RlU3RydWN0LCBm
aWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaHNxIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmll
bGROYW1lJV9pbmRleCAqIDIgKyBPcGNvZGVJRFdpZGUxNlNpemVXYXNtW1BCLCBQQywgMV0sIGRz
dAorZW5kCisKK21hY3JvIGdldHVPcGVyYW5kV2lkZTMySlMob3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKKyAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVf
aW5kZXggKiA0ICsgT3Bjb2RlSURXaWRlMzJTaXplSlNbUEIsIFBDLCAxXSwgZHN0CitlbmQKKwor
bWFjcm8gZ2V0dU9wZXJhbmRXaWRlMzJXYXNtKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3Qp
CisgICAgbG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4ICog
NCArIE9wY29kZUlEV2lkZTMyU2l6ZVdhc21bUEIsIFBDLCAxXSwgZHN0CitlbmQKKworbWFjcm8g
Z2V0T3BlcmFuZFdpZGUzMkpTKG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCisgICAgbG9h
ZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyBPcGNv
ZGVJRFdpZGUzMlNpemVKU1tQQiwgUEMsIDFdLCBkc3QKK2VuZAorCittYWNybyBnZXRPcGVyYW5k
V2lkZTMyV2FzbShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRpcyBjb25z
dGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgT3Bjb2RlSURXaWRl
MzJTaXplV2FzbVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCiBtYWNybyBtYWtlUmV0dXJuKGdldCwg
ZGlzcGF0Y2gsIGZuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dl
YkFzc2VtYmx5LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5h
c20KaW5kZXggM2U1Mzc5MDUyMjcxOWQ2NjBkZGFmMjJkM2VmM2VjZmYzZTU2NjVmZi4uNzEzNWY0
ZjZmYzIwY2IzOWU4NWJhYmMxZDFjZjFlYWI1OGI2MmJkNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC00NjAsNyArNDYwLDcgQEAgZW5kCiAjIFdh
c20gd3JhcHBlciBvZiBnZXQvZ2V0dSB0aGF0IG9wZXJhdGUgb24gY3R4CiBtYWNybyB3Z2V0cyhj
dHgsIGZpZWxkLCBkc3QpCiAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwg
c2l6ZSkKLSAgICAgICAgc2l6ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZTE2LCBn
ZXRPcGVyYW5kV2lkZTMyLCBtYWNybyAoZ2V0KQorICAgICAgICBzaXplKGdldE9wZXJhbmROYXJy
b3csIGdldE9wZXJhbmRXaWRlMTZXYXNtLCBnZXRPcGVyYW5kV2lkZTMyV2FzbSwgbWFjcm8gKGdl
dCkKICAgICAgICAgICAgIGdldChvcGNvZGVTdHJ1Y3QsIGZpZWxkLCBkc3QpCiAgICAgICAgIGVu
ZCkKICAgICBlbmQpCkBAIC00NjgsNyArNDY4LDcgQEAgZW5kCiAKIG1hY3JvIHdnZXR1KGN0eCwg
ZmllbGQsIGRzdCkKICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzaXpl
KQotICAgICAgICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBnZXR1T3BlcmFuZFdpZGUxNiwgZ2V0
dU9wZXJhbmRXaWRlMzIsIG1hY3JvIChnZXR1KQorICAgICAgICBzaXplKGdldHVPcGVyYW5kTmFy
cm93LCBnZXR1T3BlcmFuZFdpZGUxNldhc20sIGdldHVPcGVyYW5kV2lkZTMyV2FzbSwgbWFjcm8g
KGdldHUpCiAgICAgICAgICAgICBnZXR1KG9wY29kZVN0cnVjdCwgZmllbGQsIGRzdCkKICAgICAg
ICAgZW5kKQogICAgIGVuZCkKQEAgLTQ3OCw3ICs0NzgsNyBAQCBlbmQKIAogbWFjcm8gZGlzcGF0
Y2goY3R4KQogICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNpemUpCi0g
ICAgICAgIGdlbmVyaWNEaXNwYXRjaE9wKHdhc21EaXNwYXRjaCwgc2l6ZSwgb3Bjb2RlTmFtZSkK
KyAgICAgICAgZ2VuZXJpY0Rpc3BhdGNoT3BXYXNtKHdhc21EaXNwYXRjaCwgc2l6ZSwgb3Bjb2Rl
TmFtZSkKICAgICBlbmQpCiBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IGNhMjRlNzU0MGFiNGRkZTUxMWE1OTY2YTE3MWQ2OTg5MzY1
M2UxNWIuLjJmZDBiNjdhOWM1NWNiZTBkNGI2ZTc3MjM0ODY1Y2QxZTA2MmE1MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTk4Myw3ICs5
ODMsNyBAQCBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRTdHJpbmdKdW1wVGFibGU+
IG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAgIENhY2hlZFZlY3RvcjxFeHBy
ZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9u
czsKICAgICBDYWNoZWRIYXNoTWFwPHVuc2lnbmVkLCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURh
dGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwot
ICAgIENhY2hlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNv
bnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOworICAgIENhY2hlZFZlY3RvcjxKU0luc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CiAg
ICAgQ2FjaGVkVmVjdG9yPENhY2hlZEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOwogICAgIENhY2hl
ZFZlY3RvcjxDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1w
bD4sIElkZW50aWZpZXJSZXBIYXNoPj4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogICAgIHVu
c2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwpAQCAtMTQzOSwxOCArMTQz
OSwxOCBAQCBwcml2YXRlOgogICAgIEVuY29kZWRUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIENh
Y2hlZEluc3RydWN0aW9uU3RyZWFtIDogcHVibGljIENhY2hlZE9iamVjdDxJbnN0cnVjdGlvblN0
cmVhbT4geworY2xhc3MgQ2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW0gOiBwdWJsaWMgQ2FjaGVkT2Jq
ZWN0PEpTSW5zdHJ1Y3Rpb25TdHJlYW0+IHsKIHB1YmxpYzoKLSAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgc3RyZWFtKQorICAgIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEpTSW5zdHJ1Y3Rpb25TdHJlYW0mIHN0cmVh
bSkKICAgICB7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25zLmVuY29kZShlbmNvZGVyLCBzdHJlYW0u
bV9pbnN0cnVjdGlvbnMpOwogICAgIH0KIAotICAgIEluc3RydWN0aW9uU3RyZWFtKiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAgICBKU0luc3RydWN0aW9uU3RyZWFtKiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikgY29uc3QKICAgICB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90LCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYsIEluc3RydWN0aW9uU3RyZWFtTWFsbG9jPiBpbnN0
cnVjdGlvbnNWZWN0b3I7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25zLmRlY29kZShkZWNvZGVyLCBp
bnN0cnVjdGlvbnNWZWN0b3IpOwotICAgICAgICByZXR1cm4gbmV3IEluc3RydWN0aW9uU3RyZWFt
KFdURk1vdmUoaW5zdHJ1Y3Rpb25zVmVjdG9yKSk7CisgICAgICAgIHJldHVybiBuZXcgSlNJbnN0
cnVjdGlvblN0cmVhbShXVEZNb3ZlKGluc3RydWN0aW9uc1ZlY3RvcikpOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTE4NzksNyArMTg3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2smKTsKICAgICB2b2lkIGRlY29kZShEZWNvZGVy
JiwgVW5saW5rZWRDb2RlQmxvY2smKSBjb25zdDsKIAotICAgIEluc3RydWN0aW9uU3RyZWFtKiBp
bnN0cnVjdGlvbnMoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlv
bnMuZGVjb2RlKGRlY29kZXIpOyB9CisgICAgSlNJbnN0cnVjdGlvblN0cmVhbSogaW5zdHJ1Y3Rp
b25zKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmRlY29k
ZShkZWNvZGVyKTsgfQogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3RlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdGhpc1JlZ2lzdGVyOyB9CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVn
aXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0KQEAgLTE5NjYsMTEgKzE5
NjYsMTEgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4gbV9z
b3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCiAgICAgQ2FjaGVkUHRyPENhY2hlZEluc3RydWN0
aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsKLSAgICBDYWNoZWRWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBDYWNoZWRWZWN0b3I8SlNJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwogICAgIENhY2hlZFZlY3RvcjxDYWNo
ZWRKU1ZhbHVlPiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIENhY2hlZFZlY3RvcjxTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOwog
ICAgIENhY2hlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvPiBtX2V4cHJlc3Npb25JbmZvOwot
ICAgIENhY2hlZEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PiBtX291dE9m
TGluZUp1bXBUYXJnZXRzOworICAgIENhY2hlZEhhc2hNYXA8SlNJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCBpbnQ+IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAKICAgICBDYWNoZWRWZWN0b3I8
Q2FjaGVkSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVk
V3JpdGVCYXJyaWVyPENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+IG1fZnVuY3Rpb25EZWNsczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IDhjZjEwZDI2NDZiZTNjZGYxYTNhMjM3MWM1NTE4NjFiYTY0MmRjMWEuLjFlZWVlMmNi
OWU0NmM0NGYxOWM4ZDRmMDJiNjUxMDdiMzNkNGE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTEyLDEwICsxMTIsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChiQ29uZGl0aW9uKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBwYyA9IGJ5dGVj
b2RlLm1fdGFyZ2V0TGFiZWwgXAotICAgICAgICAgICAgICAgID8gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSAr
IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpIFwKKyAgICAgICAgICAgICAgICA/IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgSlNJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHBjKSArIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpIFwKICAgICAgICAgICAgICAgICA6IGNv
ZGVCbG9jay0+b3V0T2ZMaW5lSnVtcFRhcmdldChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcGMgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsg
cGMtPnNpemUoKSk7IFwKKyAgICAgICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBK
U0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgcGMt
PnNpemUoKSk7IFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIApAQCAtNTUyLDcgKzU1Miw3
IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfbmVnYXRlKQogfQogCiAj
aWYgRU5BQkxFKERGR19KSVQpCi1zdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5h
cnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgbGVmdCwgSlNWYWx1ZSByaWdo
dCkKK3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSlNJbnN0cnVjdGlvbiogcGMs
IEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7CiAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxl
Rm9yUEMocGMpOwogCkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQ
cm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29kZUIK
ICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KICNlbHNlCi1zdGF0
aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0
KiwgQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1Zh
bHVlKSB7IH0KK3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3Ao
SlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBjb25zdCBKU0luc3RydWN0aW9uKiwgSlNWYWx1
ZSwgSlNWYWx1ZSwgSlNWYWx1ZSkgeyB9CiAjZW5kaWYKIAogSlNDX0RFRklORV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF90b19udW1iZXIpCkBAIC04NDYsNyArODQ2LDcgQEAgSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pc19jb25zdHJ1Y3RvcikKIH0KIAogdGVtcGxh
dGU8T3Bjb2RlU2l6ZSB3aWR0aD4KLUFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0
ZXJhdG9yT3BlblRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMpCitBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBpdGVyYXRvck9w
ZW5UcnlGYXN0SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSlNJbnN0cnVjdGlv
biogcGMpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRv
ck9wZW4sIHdpZHRoPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKTsKQEAgLTg5Miw3ICs4OTIsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BB
VEgoaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIpCiB9CiAKIHRlbXBsYXRlPE9wY29kZVNp
emUgd2lkdGg+Ci1BTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBpdGVyYXRvck5leHRU
cnlGYXN0SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5
cGUgaXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFRocm93
U2NvcGUmIHRocm93U2NvcGUsIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JOZXh0LCB3aWR0aD4oKTsKICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDliMjQ3
YjdlNTY5NjMxMmZjZmM0NmY5OGFhZjE3NTQ2ZmQ4NDk2YmEuLmRjNmE4ZDEwOTMxNzNjYjEwNjA5
MzFhMDAwNTY4OTcyYTZjMGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDgsMTMgKzI0OCwxMiBAQCBpbmxpbmUgSlNBcnJh
eSogYWxsb2NhdGVOZXdBcnJheUJ1ZmZlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0ltbXV0YWJsZQogfSAvLyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzCiAKIGNsYXNzIENhbGxG
cmFtZTsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKG5hbWUpIFwKLSAgICBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG5hbWUsIFNs
b3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKikpCisgICAg
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihuYW1lLCBTbG93UGF0aFJldHVyblR5cGUsIChDYWxs
RnJhbWUqLCBjb25zdCBKU0luc3RydWN0aW9uKikpCiAKICNkZWZpbmUgSlNDX0RFRklORV9DT01N
T05fU0xPV19QQVRIKG5hbWUpIFwKLSAgICBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04obmFtZSwg
U2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYykpCisgICAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG5hbWUsIFNsb3dQYXRoUmV0
dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBKU0luc3RydWN0aW9uKiBwYykp
CiAKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVj
ayk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJp
dHlDaGVjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxl
QmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcAppbmRleCAxNzBmMWE2MGRhYmIyNTY3MWMwZWQ2
Y2QzNzVjMGI5YjEyOGQxNjY1Li4yNjk4ODZiZmMyMTI3ZDM0ZWUxNDYwZDc3ODcxYWNhMzg1Zjg4
NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRG
dXp6ZXJBZ2VudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zp
bGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKQEAgLTc1LDggKzc1LDggQEAgU3BlY3VsYXRlZFR5
cGUgRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlOjpnZXRQcmVkaWN0aW9uKENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb24KICAgICBWZWN0b3I8U3RyaW5nPiB1cmxQYXJ0cyA9IHNvdXJjZVVSTC5zcGxp
dCgnLycpOwogICAgIHByZWRpY3Rpb25UYXJnZXQuc291cmNlRmlsZW5hbWUgPSB1cmxQYXJ0cy5p
c0VtcHR5KCkgPyBzb3VyY2VVUkwgOiB1cmxQYXJ0cy5sYXN0KCk7CiAKLSAgICBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKTsK
LSAgICBjb25zdCBJbnN0cnVjdGlvbiogYW5JbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChi
eXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBjb25zdCBhdXRvJiBpbnN0cnVjdGlvbnMgPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpOworICAgIGNvbnN0IGF1dG8qIGFuSW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgcHJlZGljdGlvblRhcmdl
dC5vcGNvZGVJZCA9IGFuSW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKICAgICBpbnQgc3RhcnRM
b2NhdGlvbiA9IHByZWRpY3Rpb25UYXJnZXQuZGl2b3QgLSBwcmVkaWN0aW9uVGFyZ2V0LnN0YXJ0
T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29u
ZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAppbmRleCA5
YjY5MTNmOTQwY2MyOTBiZWUyYzI2ZDRlNWFkYzc4YjliYzFiY2FjLi41NWI3YTBmOGMyMmE5OWRl
NWI1YWM5MmI4MWIyZWY4MTNhMWRkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NDb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaApAQCAtMTAxLDggKzEwMSw4IEBAIHN0cnVjdCBDb25maWcgewogICAgIHZv
aWQgKCpzaGVsbFRpbWVvdXRDaGVja0NhbGxiYWNrKShWTSYpOwogCiAgICAgc3RydWN0IHsKLSAg
ICAgICAgdWludDhfdCBleGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3RoICsgMV07
Ci0gICAgICAgIHVpbnQ4X3Qgd2FzbUV4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5n
dGggKyAxXTsKKyAgICAgICAgdWludDhfdCBleGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4Qnl0ZWNv
ZGVTdHJ1Y3RMZW5ndGggKyAxXTsKKyAgICAgICAgdWludDhfdCB3YXNtRXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zW21heEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMV07CiAgICAgICAgIGNvbnN0IHZvaWQq
IGdhdGVNYXBbbnVtYmVyT2ZHYXRlc107CiAgICAgfSBsbGludDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGU4YTRlN2E2MjMzOWQzNmJlYTBmNzI1
N2I0MTczNWVjODI0M2VmNTcuLjI5NDlkMDkyNWZjMDQ0NzRhNmRkMjgwNzc1ZTRhMzU4ZjRjMGFl
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTcz
LDcgKzczLDYgQEAgY2xhc3MgQ0xvb3A7CiAKIHN0cnVjdCBDbGFzc0luZm87CiBzdHJ1Y3QgRHVt
cENvbnRleHQ7Ci1zdHJ1Y3QgSW5zdHJ1Y3Rpb247CiBzdHJ1Y3QgTWV0aG9kVGFibGU7CiBlbnVt
IGNsYXNzIFVua25vd24geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TbG93UGF0aEZ1bmN0aW9uLmgKaW5kZXggYmZjMzhjNjUwOWQxNTgxNWNkYzU0MTcwNDVjYzcy
ODdmZGMxOTY3Mi4uMzI2N2VhOTQ4ZjhkOGIzOTIzNjUxNzgzMDI1MzJlM2U4YTIyZDA0YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaApA
QCAtMzAsOCArMzAsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxsRnJhbWU7Ci1z
dHJ1Y3QgSW5zdHJ1Y3Rpb247Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVj
dGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3VzaW5nIEpTSW5zdHJ1Y3Rpb24gPSBCYXNl
SW5zdHJ1Y3Rpb248SlNPcGNvZGVUcmFpdHM+OwogCi11c2luZyBTbG93UGF0aEZ1bmN0aW9uID0g
U2xvd1BhdGhSZXR1cm5UeXBlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKENhbGxGcmFtZSos
IGNvbnN0IEluc3RydWN0aW9uKik7Cit1c2luZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhS
ZXR1cm5UeXBlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKENhbGxGcmFtZSosIGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggZjY2ZGFhYjhjNzExNTAxZTNmZTlkMWYzN2YyMzYxMmQzYWE0MTA2
NS4uZTMyZGNiMGFkMzRiMjNiY2RhMjQ3MWEwM2VlOTJjYjUyMzMzODIzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBWTTo6c2V0
Q3Jhc2hPblZNQ3JlYXRpb24oYm9vbCBzaG91bGRDcmFzaCkKICAgICB2bUNyZWF0aW9uU2hvdWxk
Q3Jhc2ggPSBzaG91bGRDcmFzaDsKIH0KIAotdm9pZCBWTTo6YWRkTG9vcEhpbnRFeGVjdXRpb25D
b3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3ZvaWQgVk06OmFkZExvb3BI
aW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb29wSGludEV4ZWN1dGlvbkNvdW50TG9jayB9OwogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5hZGQoaW5zdHJ1Y3Rp
b24sIHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVpbnRwdHJfdD4+KDAsIG51
bGxwdHIpKTsKQEAgLTE0NTYsMTQgKzE0NTYsMTQgQEAgdm9pZCBWTTo6YWRkTG9vcEhpbnRFeGVj
dXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICArK2FkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3Q7CiB9CiAKLXVpbnRwdHJfdCogVk06OmdldExvb3BI
aW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit1aW50
cHRyX3QqIFZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9vcEhpbnRFeGVjdXRp
b25Db3VudExvY2sgfTsKICAgICBhdXRvIGl0ZXIgPSBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRz
LmZpbmQoaW5zdHJ1Y3Rpb24pOwogICAgIHJldHVybiBpdGVyLT52YWx1ZS5zZWNvbmQuZ2V0KCk7
CiB9CiAKLXZvaWQgVk06OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit2b2lkIFZNOjpyZW1vdmVMb29wSGludEV4ZWN1dGlvbkNv
dW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2sgfTsKICAgICBhdXRvIGl0ZXIgPSBt
X2xvb3BIaW50RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggNzg2Y2Q2MDNmNGMzYTI3OWQ4YmE4NWRjMTMyYTQ3M2NhNjhj
MDBmZS4uZGM2ODM2M2NkNDY5MzY4NGE5Yzg2NWZmZmVlYmJkN2U4ODk2ZDgzYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJWTVRyYXBzLmgiCiAjaW5jbHVkZSAiV2FzbUNvbnRleHQu
aCIKKyNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRv
ci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgpAQCAtMTYxLDcgKzE2MiwxNCBAQCBjbGFzcyBTaWduYXR1cmU7CiB9CiAKIHN0cnVj
dCBFbnRyeUZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOworCit0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBKU09wY29kZVRyYWl0czsKK3N0cnVjdCBX
YXNtT3Bjb2RlVHJhaXRzOwordXNpbmcgSlNJbnN0cnVjdGlvbiA9IEJhc2VJbnN0cnVjdGlvbjxK
U09wY29kZVRyYWl0cz47Cit1c2luZyBXYXNtSW5zdHJ1Y3Rpb24gPSBCYXNlSW5zdHJ1Y3Rpb248
V2FzbU9wY29kZVRyYWl0cz47CisKK3VzaW5nIEpTT3JXYXNtSW5zdHJ1Y3Rpb24gPSBzdGQ6OnZh
cmlhbnQ8Y29uc3QgSlNJbnN0cnVjdGlvbiosIGNvbnN0IFdhc21JbnN0cnVjdGlvbio+OwogCiBj
bGFzcyBRdWV1ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsK
QEAgLTY2OSw3ICs2NzcsNyBAQCBwdWJsaWM6CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWVGb3JD
YXRjaDsKICAgICBDYWxsZWVCaXRzIGNhbGxlZUZvcldhc21DYXRjaDsKICAgICB2b2lkKiB0YXJn
ZXRNYWNoaW5lUENGb3JUaHJvdzsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogdGFyZ2V0SW50ZXJw
cmV0ZXJQQ0ZvclRocm93OworICAgIEpTT3JXYXNtSW5zdHJ1Y3Rpb24gdGFyZ2V0SW50ZXJwcmV0
ZXJQQ0ZvclRocm93OwogICAgIHVpbnQzMl90IG9zckV4aXRJbmRleDsKICAgICB2b2lkKiBvc3JF
eGl0SnVtcERlc3RpbmF0aW9uOwogICAgIFJlZ0V4cCogbV9leGVjdXRpbmdSZWdFeHAgeyBudWxs
cHRyIH07CkBAIC04NTUsOSArODYzLDkgQEAgcHVibGljOgogICAgICAgICBTZXRGb3JTY29wZTxF
eGNlcHRpb24qPiBtX3NhdmVkTGFzdEV4Y2VwdGlvbjsKICAgICB9OwogCi0gICAgdm9pZCBhZGRM
b29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICB1aW50cHRy
X3QqIGdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
IHZvaWQgcmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgdm9pZCBhZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSlNJbnN0cnVjdGlv
biopOworICAgIHVpbnRwdHJfdCogZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihj
b25zdCBKU0luc3RydWN0aW9uKik7CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgd3JpdGVCYXJy
aWVyKGNvbnN0IEpTQ2VsbCogZnJvbSkgeyBoZWFwLndyaXRlQmFycmllcihmcm9tKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU1Zh
bHVlIHRvKSB7IGhlYXAud3JpdGVCYXJyaWVyKGZyb20sIHRvKTsgfQpAQCAtMTAwMCw3ICsxMDA4
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuT25UZXJtaW5hdGlv
biB7IGZhbHNlIH07CiAKICAgICBMb2NrIG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2s7Ci0g
ICAgSGFzaE1hcDxjb25zdCBJbnN0cnVjdGlvbiosIHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1
bmlxdWVfcHRyPHVpbnRwdHJfdD4+PiBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzOworICAgIEhh
c2hNYXA8Y29uc3QgSlNJbnN0cnVjdGlvbiosIHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlx
dWVfcHRyPHVpbnRwdHJfdD4+PiBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzOwogCiAjaWYgRU5B
QkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCiAgICAgRG9lc0dDQ2hlY2sgbV9kb2VzR0M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCmluZGV4IDY0MzI3ZTk5YzE1
NDBlNmViZDYyMWE2NGQxYzFiOWU5NGJjN2I0NGUuLmEzMjFjNTJmMTVlY2E1MjIxM2VjZDZlZTky
MTcyNzE5ODExYjMyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21DYWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUu
Y3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
YXNtQ2FsbGVlLmgiCisjaW5jbHVkZSAicnVudGltZS9WTS5oIgogCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogCkBAIC0xMDAsOSArMTAxLDkgQEAgTExJbnRDYWxsZWU6OkxMSW50Q2FsbGVlKEZ1
bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yJiBnZW5lcmF0b3IsIHNpemVfdCBpbmRleCwgc3QKICAg
ICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9uID0gKm1faW5zdHJ1Y3Rpb25zLT5hdCh1bmxpbmtl
ZEhhbmRsZXIubV90YXJnZXQpLnB0cigpOwogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gdGFyZ2V0OwogICAgICAgICAgICAgaWYgKHVubGlua2Vk
SGFuZGxlci5tX3R5cGUgPT0gSGFuZGxlclR5cGU6OkNhdGNoKQotICAgICAgICAgICAgICAgIHRh
cmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50Ojpo
YW5kbGVXYXNtQ2F0Y2goaW5zdHJ1Y3Rpb24ud2lkdGg8V2FzbU9wY29kZVRyYWl0cz4oKSkuY29k
ZSgpKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRp
b25IYW5kbGVyUHRyVGFnPihMTEludDo6aGFuZGxlV2FzbUNhdGNoKGluc3RydWN0aW9uLndpZHRo
KCkpLmNvZGUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0g
Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmhhbmRsZVdh
c21DYXRjaEFsbChpbnN0cnVjdGlvbi53aWR0aDxXYXNtT3Bjb2RlVHJhaXRzPigpKS5jb2RlKCkp
OworICAgICAgICAgICAgICAgIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWc+KExMSW50OjpoYW5kbGVXYXNtQ2F0Y2hBbGwoaW5zdHJ1Y3Rpb24ud2lkdGgo
KSkuY29kZSgpKTsKIAogICAgICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVubGlua2VkSGFu
ZGxlciwgdGFyZ2V0KTsKICAgICAgICAgfQpAQCAtMTQ0LDEzICsxNDUsMTMgQEAgc3RkOjp0dXBs
ZTx2b2lkKiwgdm9pZCo+IExMSW50Q2FsbGVlOjpyYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsg
bnVsbHB0ciwgbnVsbHB0ciB9OwogfQogCi1JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IExMSW50
Q2FsbGVlOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0
ZWNvZGVPZmZzZXQpCitXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBMTEludENhbGxlZTo6
b3V0T2ZMaW5lSnVtcE9mZnNldChXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29k
ZU9mZnNldCkKIHsKICAgICBBU1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5jb250YWlucyhi
eXRlY29kZU9mZnNldCkpOwogICAgIHJldHVybiBtX291dE9mTGluZUp1bXBUYXJnZXRzLmdldChi
eXRlY29kZU9mZnNldCk7CiB9CiAKLWNvbnN0IEluc3RydWN0aW9uKiBMTEludENhbGxlZTo6b3V0
T2ZMaW5lSnVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCitjb25zdCBXYXNtSW5zdHJ1
Y3Rpb24qIExMSW50Q2FsbGVlOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IFdhc21JbnN0cnVj
dGlvbiogcGMpCiB7CiAgICAgaW50IG9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0KHBjKTsKICAgICBp
bnQgdGFyZ2V0ID0gb3V0T2ZMaW5lSnVtcE9mZnNldChvZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUNhbGxlZS5oCmluZGV4IGIxODRjNzliMDA5ODBmNzA5Yjg0MGZiMGM4MTky
MzY4NDRmNjA3MzEuLjZlZjY2NDdlMmY0Mzc3YzZjMGMxZjgxN2RmYzkyNDRjZmRiODgxMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKQEAgLTIzNiw3ICsyMzYsNyBA
QCBwdWJsaWM6CiAgICAgdWludDMyX3QgbnVtQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1Bcmd1bWVudHM7IH0KICAgICBjb25zdCBGaXhlZFZlY3RvcjxUeXBlPiYgY29uc3RhbnRUeXBl
cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRUeXBlczsgfQogICAgIGNvbnN0IEZpeGVkVmVj
dG9yPHVpbnQ2NF90PiYgY29uc3RhbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0K
LSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gKm1faW5zdHJ1Y3Rpb25zOyB9CisgICAgY29uc3QgV2FzbUluc3RydWN0aW9uU3RyZWFtJiBp
bnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdWludDY0X3QgZ2V0Q29uc3RhbnQoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29u
c3QgeyByZXR1cm4gbV9jb25zdGFudHNbcmVnLnRvQ29uc3RhbnRJbmRleCgpXTsgfQogICAgIEFM
V0FZU19JTkxJTkUgVHlwZSBnZXRDb25zdGFudFR5cGUoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29u
c3QKQEAgLTI0NSwyMCArMjQ1LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29uc3Rh
bnRUeXBlc1tyZWcudG9Db25zdGFudEluZGV4KCldOwogICAgIH0KIAotICAgIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIHsgcmV0dXJuIG1fanVtcFRhcmdl
dHMuc2l6ZSgpOyB9Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBsYXN0SnVtcFRhcmdl
dCgpIHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CisgICAgV2FzbUluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIHsgcmV0dXJuIG1fanVtcFRhcmdl
dHMuc2l6ZSgpOyB9CisgICAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBU
YXJnZXQoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQogCi0gICAgY29uc3QgSW5z
dHJ1Y3Rpb24qIG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICBJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCk7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAg
IGNvbnN0IFdhc21JbnN0cnVjdGlvbiogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBXYXNtSW5z
dHJ1Y3Rpb24qKTsKKyAgICBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVK
dW1wT2Zmc2V0KFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKKyAgICBXYXNtSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IFdhc21JbnN0cnVj
dGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBvdXRP
ZkxpbmVKdW1wT2Zmc2V0KGluc3RydWN0aW9uLm9mZnNldCgpKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldChjb25zdCBJbnN0cnVj
dGlvbiogcmV0dXJuQWRkcmVzcykKKyAgICBpbmxpbmUgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgV2FzbUluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNz
KQogICAgIHsKICAgICAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2luc3Ry
dWN0aW9ucy0+YXQoMCkucHRyKCk7Ci0gICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0Vu
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgbV9pbnN0cnVjdGlvbnMtPnNpemUoKSk7
CisgICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgV2FzbUluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluc3Ry
dWN0aW9uc0JlZ2luKSArIG1faW5zdHJ1Y3Rpb25zLT5zaXplKCkpOwogICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9uc0JlZ2luICYmIHJldHVybkFkZHJl
c3MgPCBpbnN0cnVjdGlvbnNFbmQpOwogICAgICAgICByZXR1cm4gcmV0dXJuQWRkcmVzcyAtIGlu
c3RydWN0aW9uc0JlZ2luOwogICAgIH0KQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAg
fQogI2VuZGlmCiAKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKKyAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFy
Z2V0cyA9IEhhc2hNYXA8V2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CiAKIHBy
aXZhdGU6CiAgICAgTExJbnRDYWxsZWUoRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3ImLCBzaXpl
X3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJik7
CkBAIC0zMDEsOSArMzAxLDkgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX251bUFyZ3VtZW50
cyB7IDAgfTsKICAgICBGaXhlZFZlY3RvcjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7CiAgICAgRml4
ZWRWZWN0b3I8dWludDY0X3Q+IG1fY29uc3RhbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0
cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21J
bnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAgICAgY29uc3Qgdm9pZCogbV9pbnN0
cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwotICAgIEZpeGVkVmVjdG9yPEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgRml4ZWRWZWN0b3I8V2FzbUlu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgRml4ZWRWZWN0b3I8
Y29uc3QgU2lnbmF0dXJlKj4gbV9zaWduYXR1cmVzOwogICAgIE91dE9mTGluZUp1bXBUYXJnZXRz
IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAgICAgTExJbnRUaWVyVXBDb3VudGVyIG1fdGllclVw
Q291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4IDQxNzQ5MTNkNjhjYjY1Yzgx
ZTY4MTI3Nzk1ZDMwMmEwYTg3NmJiMzcuLjMxZWUyMTVkZWRmNzgxODAxMTVmZDI0ZmJhNmZhM2Y5
NzJiODNhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcApAQCAtMzMsMTkgKzMzLDE5IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLXZvaWQgRnVuY3Rpb25Db2Rl
QmxvY2tHZW5lcmF0b3I6OnNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rp
b25TdHJlYW0+IGluc3RydWN0aW9ucykKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6
OnNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3RydWN0aW9uU3RyZWFtPiBp
bnN0cnVjdGlvbnMpCiB7CiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9u
cyk7CiAgICAgbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyID0gbV9pbnN0cnVjdGlvbnMtPnJhd1Bv
aW50ZXIoKTsKIH0KIAotdm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkT3V0T2ZM
aW5lSnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0LCBp
bnQgdGFyZ2V0KQordm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkT3V0T2ZMaW5l
SnVtcFRhcmdldChXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwg
aW50IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0YXJnZXQpOwogICAgIG1fb3V0T2ZM
aW5lSnVtcFRhcmdldHMuc2V0KGJ5dGVjb2RlT2Zmc2V0LCB0YXJnZXQpOwogfQogCi1JbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjpvdXRPZkxpbmVK
dW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCitXYXNt
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0
T2ZMaW5lSnVtcE9mZnNldChXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9m
ZnNldCkKIHsKICAgICBBU1NFUlQobV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5jb250YWlucyhieXRl
Y29kZU9mZnNldCkpOwogICAgIHJldHVybiBtX291dE9mTGluZUp1bXBUYXJnZXRzLmdldChieXRl
Y29kZU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDdlNGE0MGJmNDUwODZkZjc3
OGEzMzMxMDk1MjFhYmE3ZjczZmM3OWUuLmExZTM5YTFlNmQ2MWVlMWIxZmViZTEwMmZiODJlMGY1
ZTI3Zjg4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC04MSw3ICs4MSw4IEBAIHB1Ymxp
YzoKICAgICB1aW50MzJfdCBudW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUFyZ3Vt
ZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxUeXBlPiYgY29uc3RhbnRUeXBlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc3RhbnRUeXBlczsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNv
bnN0YW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9Ci0gICAgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptX2luc3RydWN0aW9u
czsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0KKyAgICBjb25zdCBXYXNtSW5zdHJ1Y3Rpb25TdHJl
YW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptX2luc3RydWN0aW9uczsgfQogCiAg
ICAgdm9pZCBzZXROdW1WYXJzKHVuc2lnbmVkIG51bVZhcnMpIHsgbV9udW1WYXJzID0gbnVtVmFy
czsgfQogICAgIHZvaWQgc2V0TnVtQ2FsbGVlTG9jYWxzKHVuc2lnbmVkIG51bUNhbGxlZUxvY2Fs
cykgeyBtX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsgfQpAQCAtOTMsMjcgKzk0
LDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29uc3RhbnRUeXBlc1tyZWcudG9Db25z
dGFudEluZGV4KCldOwogICAgIH0KIAotICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6dW5p
cXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4pOwotICAgIHZvaWQgYWRkSnVtcFRhcmdldChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGp1bXBUYXJnZXQpIHsgbV9qdW1wVGFyZ2V0cy5hcHBlbmQo
anVtcFRhcmdldCk7IH0KLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG51bWJlck9mSnVt
cFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsgfQotICAgIEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgbGFzdEp1bXBUYXJnZXQoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRz
Lmxhc3QoKTsgfQorICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6dW5pcXVlX3B0cjxXYXNt
SW5zdHJ1Y3Rpb25TdHJlYW0+KTsKKyAgICB2b2lkIGFkZEp1bXBUYXJnZXQoV2FzbUluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQganVtcFRhcmdldCkgeyBtX2p1bXBUYXJnZXRzLmFwcGVuZChqdW1w
VGFyZ2V0KTsgfQorICAgIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG51bWJlck9mSnVt
cFRhcmdldHMoKSB7IHJldHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsgfQorICAgIFdhc21JbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxhc3RKdW1wVGFyZ2V0KCkgeyByZXR1cm4gbV9qdW1wVGFy
Z2V0cy5sYXN0KCk7IH0KIAotICAgIHZvaWQgYWRkT3V0T2ZMaW5lSnVtcFRhcmdldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQgdGFyZ2V0KTsKLSAgICBJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7Ci0g
ICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQorICAgIHZvaWQgYWRkT3V0T2ZMaW5l
SnVtcFRhcmdldChXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50IHRhcmdldCk7Cisg
ICAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChXYXNt
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7CisgICAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNl
dChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHJldHVybkFk
ZHJlc3MpCisgICAgaW5saW5lIFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2Rl
T2Zmc2V0KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICB7CiAgICAg
ICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gbV9pbnN0cnVjdGlvbnMtPmF0KDAp
LnB0cigpOwotICAgICAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGlu
c3RydWN0aW9uc0JlZ2luKSArIG1faW5zdHJ1Y3Rpb25zLT5zaXplKCkpOworICAgICAgICBjb25z
dCBhdXRvKiBpbnN0cnVjdGlvbnNFbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFdhc21JbnN0
cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvbnNCZWdpbikg
KyBtX2luc3RydWN0aW9ucy0+c2l6ZSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJu
QWRkcmVzcyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rp
b25zRW5kKTsKICAgICAgICAgcmV0dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdp
bjsKICAgICB9CiAKLSAgICBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50
VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiYgdGllclVwQ291bnRlcigpIHsgcmV0dXJuIG1f
dGllclVwQ291bnRlcjsgfQorICAgIEhhc2hNYXA8V2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiYgdGllclVwQ291bnRlcigpIHsg
cmV0dXJuIG1fdGllclVwQ291bnRlcjsgfQogCiAgICAgdW5zaWduZWQgYWRkU2lnbmF0dXJlKGNv
bnN0IFNpZ25hdHVyZSYpOwogCkBAIC0xMjUsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
YWRkRXhjZXB0aW9uSGFuZGxlcihjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyKSB7
IG1fZXhjZXB0aW9uSGFuZGxlcnMuYXBwZW5kKGhhbmRsZXIpOyB9CiAKIHByaXZhdGU6Ci0gICAg
dXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQsIGludD47CisgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBIYXNoTWFwPFdh
c21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCiAgICAgdWludDMyX3QgbV9mdW5j
dGlvbkluZGV4OwogCkBAIC0xMzYsMTIgKzEzNywxMiBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90
IG1fbnVtQXJndW1lbnRzIHsgMCB9OwogICAgIFZlY3RvcjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7
CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX2NvbnN0YW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAgIGNvbnN0IHZvaWQqIG1f
aW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51bGxwdHIgfTsKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKKyAgICBWZWN0b3I8V2FzbUluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgVmVjdG9yPGNvbnN0IFNpZ25h
dHVyZSo+IG1fc2lnbmF0dXJlczsKICAgICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBtX291dE9mTGlu
ZUp1bXBUYXJnZXRzOwotICAgIEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgTExJ
bnRUaWVyVXBDb3VudGVyOjpPU1JFbnRyeURhdGE+IG1fdGllclVwQ291bnRlcjsKKyAgICBIYXNo
TWFwPFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBMTEludFRpZXJVcENvdW50ZXI6Ok9T
UkVudHJ5RGF0YT4gbV90aWVyVXBDb3VudGVyOwogICAgIFZlY3RvcjxKdW1wVGFibGU+IG1fanVt
cFRhYmxlczsKICAgICBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4gbV9leGNlcHRpb25IYW5k
bGVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2Vu
ZXJhdG9yVHJhaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2VuZXJhdG9y
VHJhaXRzLmgKaW5kZXggNmE4OGJiNGQwYjhhN2FmZjgxZDk4MDcwZGE2MjdhNTM5Njg2ZWQwMS4u
NzA4MjNjODE2OTM0NzU1NTI5YzA4YTY2Yzk3ODY4ZjIyMWIyYzAwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdlbmVyYXRvclRyYWl0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HZW5lcmF0b3JUcmFpdHMuaApAQCAtMzcsNiArMzcs
NyBAQCBzdHJ1Y3QgR2VuZXJhdG9yVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IFdhc21P
cGNvZGVJRDsKICAgICB1c2luZyBPcE5vcCA9IFdhc21Ob3A7CiAgICAgdXNpbmcgQ29kZUJsb2Nr
ID0gc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPjsKKyAgICB1c2lu
ZyBJbnN0cnVjdGlvblR5cGUgPSBXYXNtSW5zdHJ1Y3Rpb247CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBPcGNvZGVJRCBvcGNvZGVGb3JEaXNhYmxpbmdPcHRpbWl6YXRpb25zID0gd2FzbV91bnJlYWNo
YWJsZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwCmluZGV4IGI0MGU3MjFmOTc1MzRlMTI0YTU4ZDIyNGQ2ZGE1YTIzZGNhNzE1
NGUuLjEzNTY5MGRhMmQ2MGI3Y2JjNjk5YmEyNTYzNGRiMjVlNDdjMGRkMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtNDc0
LDcgKzQ3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZVByZXZpb3VzQmxvY2tGb3JD
YXRjaChDb250cm9sVHlwZSYsIFN0YWNrJik7CiAKICAgICBzdHJ1Y3QgU3dpdGNoRW50cnkgewot
ICAgICAgICBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldDsKKyAgICAgICAgV2FzbUlu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0OwogICAgICAgICBpbnQqIGp1bXBUYXJnZXQ7
CiAgICAgfTsKIApAQCAtNTEwLDcgKzUxMCw3IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxG
dW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQnl0CiB9
CiAKIAotdXNpbmcgQnVmZmVyID0gSW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uQnVmZmVy
OwordXNpbmcgQnVmZmVyID0gV2FzbUluc3RydWN0aW9uU3RyZWFtOjpJbnN0cnVjdGlvbkJ1ZmZl
cjsKIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCdWZmZXI+KiB0aHJlYWRTcGVjaWZpY0J1ZmZlclB0
cjsKIAogc3RhdGljIFRocmVhZFNwZWNpZmljPEJ1ZmZlcj4mIHRocmVhZFNwZWNpZmljQnVmZmVy
KCkKQEAgLTEyMjgsNyArMTIyOCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFN3aXRjaChF
eHByZXNzaW9uVHlwZSBjb25kaXRpb24sIGNvbnN0IFZlY3RvcjxDb250cm9sVHlwCiAgICAgV2Fz
bVN3aXRjaDo6ZW1pdCh0aGlzLCBjb25kaXRpb24sIHRhYmxlSW5kZXgpOwogCiAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0ID0gbV9s
YXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7CisgICAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgb2Zmc2V0ID0gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7CiAKICAgICBhdXRvIGFkZFRh
cmdldCA9IFsmXShDb250cm9sVHlwZSYgdGFyZ2V0KSB7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4g
dGFyZ2V0TGFiZWwgPSB0YXJnZXQudGFyZ2V0TGFiZWxGb3JCcmFuY2goKTsKQEAgLTE4NTAsMTMg
KzE4NTAsMTMgQEAgdm9pZCBHZW5lcmljTGFiZWw8V2FzbTo6R2VuZXJhdG9yVHJhaXRzPjo6c2V0
TG9jYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPFdhc20KIAogI2RlZmluZSBDQVNFKF9fb3Ap
IFwKICAgICBjYXNlIF9fb3A6Om9wY29kZUlEOiAgXAotICAgICAgICBpbnN0cnVjdGlvbi0+Y2Fz
dDxfX29wLCBXYXNtT3Bjb2RlVHJhaXRzPigpLT5zZXRUYXJnZXRMYWJlbChCb3VuZExhYmVsKHRh
cmdldCksIFsmXSgpIHsgXAorICAgICAgICBpbnN0cnVjdGlvbi0+Y2FzdDxfX29wPigpLT5zZXRU
YXJnZXRMYWJlbChCb3VuZExhYmVsKHRhcmdldCksIFsmXSgpIHsgXAogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLm1fY29kZUJsb2NrLT5hZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KGluc3RydWN0aW9uLm9m
ZnNldCgpLCB0YXJnZXQpOyBcCiAgICAgICAgICAgICByZXR1cm4gQm91bmRMYWJlbCgpOyBcCiAg
ICAgICAgIH0pOyBcCiAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rp
b24tPm9wY29kZUlEPFdhc21PcGNvZGVUcmFpdHM+KCkpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0
cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBDQVNFKFdhc21KbXApCiAgICAgICAgIENB
U0UoV2FzbUp0cnVlKQogICAgICAgICBDQVNFKFdhc21KZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRUaWVyVXBDb3VudGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuY3BwCmluZGV4IDA3
NWM5YWFiY2Y4YzFiOTZmOWNlMzgwOWNjYjM2MzczYzAyNWIwZGIuLmU2OTA4NmQ0MTdkNDkxNjU3
YWNiMTM0OWY2NjU5Mzk1M2FhYzgyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAotdm9pZCBMTEludFRpZXJVcENv
dW50ZXI6OmFkZE9TUkVudHJ5RGF0YUZvckxvb3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBv
ZmZzZXQsIE9TUkVudHJ5RGF0YSYmIGRhdGEpCit2b2lkIExMSW50VGllclVwQ291bnRlcjo6YWRk
T1NSRW50cnlEYXRhRm9yTG9vcChXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQs
IE9TUkVudHJ5RGF0YSYmIGRhdGEpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX29zckVudHJ5
RGF0YS5hZGQob2Zmc2V0LCBXVEZNb3ZlKGRhdGEpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1hdXRvIExMSW50VGllclVwQ291bnRl
cjo6b3NyRW50cnlEYXRhRm9yTG9vcChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkg
Y29uc3QgLT4gY29uc3QgT1NSRW50cnlEYXRhJgorYXV0byBMTEludFRpZXJVcENvdW50ZXI6Om9z
ckVudHJ5RGF0YUZvckxvb3AoV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0KSBj
b25zdCAtPiBjb25zdCBPU1JFbnRyeURhdGEmCiB7CiAgICAgYXV0byBlbnRyeSA9IG1fb3NyRW50
cnlEYXRhLmZpbmQob2Zmc2V0KTsKICAgICBSRUxFQVNFX0FTU0VSVChlbnRyeSAhPSBtX29zckVu
dHJ5RGF0YS5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTExJbnRUaWVyVXBDb3VudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TExJbnRUaWVyVXBDb3VudGVyLmgKaW5kZXggMTQwYTgyYzhlNGEzMTg3OTNjY2ZiODMyMWMwMjUw
MTk2YzgzNGVmYi4uZWViNzhmYmJlNTk3NmExZWE1YmM1NjM3NjE3NTE5YjJhOWU3NTEyMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50VGllclVwQ291bnRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFRpZXJVcENvdW50
ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IHZhbHVlczsKICAgICB9OwogCi0gICAgTExJbnRUaWVyVXBDb3VudGVyKEhhc2hNYXA8
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhPiYmIG9zckVudHJ5RGF0YSkK
KyAgICBMTEludFRpZXJVcENvdW50ZXIoSGFzaE1hcDxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgT1NSRW50cnlEYXRhPiYmIG9zckVudHJ5RGF0YSkKICAgICAgICAgOiBtX29zckVudHJ5
RGF0YShXVEZNb3ZlKG9zckVudHJ5RGF0YSkpCiAgICAgewogICAgICAgICBvcHRpbWl6ZUFmdGVy
V2FybVVwKCk7CkBAIC03NiwxNCArNzYsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgc2V0TmV3
VGhyZXNob2xkKE9wdGlvbnM6OnRocmVzaG9sZEZvck9NR09wdGltaXplU29vbigpKTsKICAgICB9
CiAKLSAgICB2b2lkIGFkZE9TUkVudHJ5RGF0YUZvckxvb3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgT1NSRW50cnlEYXRhJiYpOworICAgIHZvaWQgYWRkT1NSRW50cnlEYXRhRm9yTG9vcChX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50cnlEYXRhJiYpOwogCi0gICAgY29u
c3QgT1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGFGb3JMb29wKEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQpIGNvbnN0OworICAgIGNvbnN0IE9TUkVudHJ5RGF0YSYgb3NyRW50cnlEYXRhRm9yTG9v
cChXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCkgY29uc3Q7CiAKICAgICBMb2NrIG1fbG9j
azsKICAgICBDb21waWxhdGlvblN0YXR1cyBtX2NvbXBpbGF0aW9uU3RhdHVzIHsgQ29tcGlsYXRp
b25TdGF0dXM6Ok5vdENvbXBpbGVkIH07CiAgICAgQ29tcGlsYXRpb25TdGF0dXMgbV9sb29wQ29t
cGlsYXRpb25TdGF0dXMgeyBDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQgfTsKLSAgICBI
YXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIE9TUkVudHJ5RGF0YT4gbV9vc3JFbnRy
eURhdGE7CisgICAgSGFzaE1hcDxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgT1NSRW50
cnlEYXRhPiBtX29zckVudHJ5RGF0YTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IGNm
MjdmZWEzMjkwZDMwODBjMDJmNDJiYTU5NmVjMjhiMmY4OTU0ZGIuLjJhODY3ZDZjNzNmZGVmM2U5
MTg3MDZhM2YwNzJjMGQ1ODI5OTNjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TbG93UGF0aHMuY3BwCkBAIC0yODksMTMgKzI4OSwxMyBAQCBXQVNNX1NMT1dfUEFUSF9E
RUNMKHRyYWNlKQogICAgIGlmICghT3B0aW9uczo6dHJhY2VMTEludEV4ZWN1dGlvbigpKQogICAg
ICAgICBXQVNNX0VORF9JTVBMKCk7CiAKLSAgICBXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQgPSBwYy0+
b3Bjb2RlSUQ8V2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBwYy0+b3Bjb2RlSUQoKTsKICAgICBkYXRhTG9nRigiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcg
YmMjJXp1LCAlcywgcGMgPSAlcFxuIiwKICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAg
ICAgICBDQUxMRUUoKSwKICAgICAgICAgY2FsbEZyYW1lLAogICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oQ0FMTEVFKCktPmJ5dGVjb2RlT2Zmc2V0KHBjKSksCi0gICAgICAgIHBjLT5uYW1l
PFdhc21PcGNvZGVUcmFpdHM+KCksCisgICAgICAgIHBjLT5uYW1lKCksCiAgICAgICAgIHBjKTsK
ICAgICBpZiAob3Bjb2RlSUQgPT0gd2FzbV9lbnRlcikgewogICAgICAgICBkYXRhTG9nRigiRnJh
bWUgd2lsbCBldmVudHVhbGx5IHJldHVybiB0byAlcFxuIiwgY2FsbEZyYW1lLT5yZXR1cm5QQygp
LnZhbHVlKCkpOwpAQCAtMzE4LDEzICszMTgsMTMgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChvdXRf
b2ZfbGluZV9qdW1wX3RhcmdldCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTChyZWZfZnVuYykKIHsK
LSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZWZGdW5jLCBXYXNtT3Bjb2RlVHJh
aXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJlZkZ1bmM+KCk7CiAg
ICAgV0FTTV9SRVRVUk4oV2FzbTo6b3BlcmF0aW9uV2FzbVJlZkZ1bmMoaW5zdGFuY2UsIGluc3Ry
dWN0aW9uLm1fZnVuY3Rpb25JbmRleCkpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxl
X2dldCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUdldCwgV2Fz
bU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJs
ZUdldD4oKTsKICAgICBpbnQzMl90IGluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2luZGV4KS51
bmJveGVkSW50MzIoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSBXYXNtOjpvcGVyYXRp
b25HZXRXYXNtVGFibGVFbGVtZW50KGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgs
IGluZGV4KTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTMzNCw3ICszMzQsNyBAQCBXQVNNX1NMT1df
UEFUSF9ERUNMKHRhYmxlX2dldCkKIAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9zZXQpCiB7
Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVTZXQsIFdhc21PcGNvZGVU
cmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVTZXQ+KCk7
CiAgICAgdWludDMyX3QgaW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1faW5kZXgpLnVuYm94ZWRV
SW50MzIoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV92
YWx1ZSkuZW5jb2RlZEpTVmFsdWUoKTsKICAgICBpZiAoIVdhc206Om9wZXJhdGlvblNldFdhc21U
YWJsZUVsZW1lbnQoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5kZXgsIHZh
bHVlKSkKQEAgLTM0NCw3ICszNDQsNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX3NldCkK
IAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9pbml0KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rp
b24gPSBwYy0+YXM8V2FzbVRhYmxlSW5pdCwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRv
IGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUluaXQ+KCk7CiAgICAgdWludDMyX3QgZHN0
T2Zmc2V0ID0gUkVBRChpbnN0cnVjdGlvbi5tX2RzdE9mZnNldCkudW5ib3hlZFVJbnQzMigpOwog
ICAgIHVpbnQzMl90IHNyY09mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zcmNPZmZzZXQpLnVu
Ym94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBsZW5ndGggPSBSRUFEKGluc3RydWN0aW9uLm1f
bGVuZ3RoKS51bmJveGVkVUludDMyKCk7CkBAIC0zNTcsMjAgKzM1NywyMCBAQCBXQVNNX1NMT1df
UEFUSF9ERUNMKGVsZW1fZHJvcCkKIHsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKIAot
ICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUVsZW1Ecm9wLCBXYXNtT3Bjb2RlVHJh
aXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUVsZW1Ecm9wPigpOwog
ICAgIFdhc206Om9wZXJhdGlvbldhc21FbGVtRHJvcChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9l
bGVtZW50SW5kZXgpOwogICAgIFdBU01fRU5EKCk7CiB9CiAKIFdBU01fU0xPV19QQVRIX0RFQ0wo
dGFibGVfc2l6ZSkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZVNp
emUsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxX
YXNtVGFibGVTaXplPigpOwogICAgIFdBU01fUkVUVVJOKFdhc206Om9wZXJhdGlvbkdldFdhc21U
YWJsZVNpemUoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCkpOwogfQogCiBXQVNN
X1NMT1dfUEFUSF9ERUNMKHRhYmxlX2ZpbGwpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBj
LT5hczxXYXNtVGFibGVGaWxsLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1
Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlRmlsbD4oKTsKICAgICB1aW50MzJfdCBvZmZzZXQgPSBS
RUFEKGluc3RydWN0aW9uLm1fb2Zmc2V0KS51bmJveGVkVUludDMyKCk7CiAgICAgRW5jb2RlZEpT
VmFsdWUgZmlsbCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9maWxsKS5lbmNvZGVkSlNWYWx1ZSgpOwog
ICAgIHVpbnQzMl90IHNpemUgPSBSRUFEKGluc3RydWN0aW9uLm1fc2l6ZSkudW5ib3hlZFVJbnQz
MigpOwpAQCAtMzgxLDcgKzM4MSw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wodGFibGVfZmlsbCkK
IAogV0FTTV9TTE9XX1BBVEhfREVDTCh0YWJsZV9jb3B5KQogewotICAgIGF1dG8gaW5zdHJ1Y3Rp
b24gPSBwYy0+YXM8V2FzbVRhYmxlQ29weSwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRv
IGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21UYWJsZUNvcHk+KCk7CiAgICAgaW50MzJfdCBkc3RP
ZmZzZXQgPSBSRUFEKGluc3RydWN0aW9uLm1fZHN0T2Zmc2V0KS51bmJveGVkSW50MzIoKTsKICAg
ICBpbnQzMl90IHNyY09mZnNldCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zcmNPZmZzZXQpLnVuYm94
ZWRJbnQzMigpOwogICAgIGludDMyX3QgbGVuZ3RoID0gUkVBRChpbnN0cnVjdGlvbi5tX2xlbmd0
aCkudW5ib3hlZEludDMyKCk7CkBAIC0zOTIsNyArMzkyLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVD
TCh0YWJsZV9jb3B5KQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dyb3cpCiB7Ci0gICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFibGVHcm93LCBXYXNtT3Bjb2RlVHJhaXRz
PigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhYmxlR3Jvdz4oKTsKICAg
ICBFbmNvZGVkSlNWYWx1ZSBmaWxsID0gUkVBRChpbnN0cnVjdGlvbi5tX2ZpbGwpLmVuY29kZWRK
U1ZhbHVlKCk7CiAgICAgdWludDMyX3Qgc2l6ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zaXplKS51
bmJveGVkVUludDMyKCk7CiAgICAgV0FTTV9SRVRVUk4oV2FzbTo6b3BlcmF0aW9uV2FzbVRhYmxl
R3JvdyhpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBmaWxsLCBzaXplKSk7CkBA
IC00MDAsMTQgKzQwMCwxNCBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKHRhYmxlX2dyb3cpCiAKIFdB
U01fU0xPV19QQVRIX0RFQ0woZ3Jvd19tZW1vcnkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtR3Jvd01lbW9yeSwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGlu
c3RydWN0aW9uID0gcGMtPmFzPFdhc21Hcm93TWVtb3J5PigpOwogICAgIGludDMyX3QgZGVsdGEg
PSBSRUFEKGluc3RydWN0aW9uLm1fZGVsdGEpLnVuYm94ZWRJbnQzMigpOwogICAgIFdBU01fUkVU
VVJOKFdhc206Om9wZXJhdGlvbkdyb3dNZW1vcnkoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZGVsdGEp
KTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfZmlsbCkKIHsKLSAgICBhdXRvIGlu
c3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlGaWxsLCBXYXNtT3Bjb2RlVHJhaXRzPigpOwor
ICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUZpbGw+KCk7CiAgICAgdWlu
dDMyX3QgZHN0QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9kc3RBZGRyZXNzKS51bmJveGVk
VUludDMyKCk7CiAgICAgdWludDMyX3QgdGFyZ2V0VmFsdWUgPSBSRUFEKGluc3RydWN0aW9uLm1f
dGFyZ2V0VmFsdWUpLnVuYm94ZWRVSW50MzIoKTsKICAgICB1aW50MzJfdCBjb3VudCA9IFJFQUQo
aW5zdHJ1Y3Rpb24ubV9jb3VudCkudW5ib3hlZFVJbnQzMigpOwpAQCAtNDE4LDcgKzQxOCw3IEBA
IFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2ZpbGwpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wo
bWVtb3J5X2NvcHkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5
Q29weSwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFz
PFdhc21NZW1vcnlDb3B5PigpOwogICAgIHVpbnQzMl90IGRzdEFkZHJlc3MgPSBSRUFEKGluc3Ry
dWN0aW9uLm1fZHN0QWRkcmVzcykudW5ib3hlZFVJbnQzMigpOwogICAgIHVpbnQzMl90IHNyY0Fk
ZHJlc3MgPSBSRUFEKGluc3RydWN0aW9uLm1fc3JjQWRkcmVzcykudW5ib3hlZFVJbnQzMigpOwog
ICAgIHVpbnQzMl90IGNvdW50ID0gUkVBRChpbnN0cnVjdGlvbi5tX2NvdW50KS51bmJveGVkVUlu
dDMyKCk7CkBAIC00MjksNyArNDI5LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfY29w
eSkKIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfaW5pdCkKIHsKLSAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlJbml0LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbU1lbW9yeUluaXQ+KCk7CiAgICAgdWludDMy
X3QgZHN0QWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9kc3RBZGRyZXNzKS51bmJveGVkVUlu
dDMyKCk7CiAgICAgdWludDMyX3Qgc3JjQWRkcmVzcyA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9zcmNB
ZGRyZXNzKS51bmJveGVkVUludDMyKCk7CiAgICAgdWludDMyX3QgbGVuZ3RoID0gUkVBRChpbnN0
cnVjdGlvbi5tX2xlbmd0aCkudW5ib3hlZFVJbnQzMigpOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIFdB
U01fU0xPV19QQVRIX0RFQ0woZGF0YV9kcm9wKQogewogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtRGF0YURyb3AsIFdhc21P
cGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtRGF0YURy
b3A+KCk7CiAgICAgV2FzbTo6b3BlcmF0aW9uV2FzbURhdGFEcm9wKGluc3RhbmNlLCBpbnN0cnVj
dGlvbi5tX2RhdGFTZWdtZW50SW5kZXgpOwogICAgIFdBU01fRU5EKCk7CiB9CkBAIC00NzQsNyAr
NDc0LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsKQogewogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbCwgV2Fz
bU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxs
PigpOwogICAgIHJldHVybiBkb1dhc21DYWxsKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0
aW9uSW5kZXgpOwogfQogCkBAIC00ODIsNyArNDgyLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChj
YWxsX25vX3RscykKIHsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKIAotICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxOb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKTsK
KyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsTm9UbHM+KCk7CiAgICAgcmV0
dXJuIGRvV2FzbUNhbGwoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCk7CiB9
CiAKQEAgLTUxMSwxNCArNTExLDE0IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZG9XYXNt
Q2FsbEluZGlyZWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBXYXNtOjpJbnN0YW5jCiAKIFdBU01f
U0xPV19QQVRIX0RFQ0woY2FsbF9pbmRpcmVjdCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0g
cGMtPmFzPFdhc21DYWxsSW5kaXJlY3QsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBp
bnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbEluZGlyZWN0PigpOwogICAgIHVuc2lnbmVkIGZ1
bmN0aW9uSW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCkudW5ib3hlZElu
dDMyKCk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVjdChjYWxsRnJhbWUsIGluc3RhbmNl
LCBmdW5jdGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluc3RydWN0aW9uLm1f
c2lnbmF0dXJlSW5kZXgpOwogfQogCiBXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfaW5kaXJlY3Rf
bm9fdGxzKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxJbmRpcmVj
dE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbUNhbGxJbmRpcmVjdE5vVGxzPigpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgg
PSBSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCkudW5ib3hlZEludDMyKCk7CiAgICAg
cmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVjdChjYWxsRnJhbWUsIGluc3RhbmNlLCBmdW5jdGlvbklu
ZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5k
ZXgpOwogfQpAQCAtNTQ4LDM1ICs1NDgsMzUgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBk
b1dhc21DYWxsUmVmKENhbGxGcmFtZSogY2FsbEZyYW1lLCBXYXNtOjpJbnN0YW5jZSogY2EKIAog
V0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZikKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0g
cGMtPmFzPFdhc21DYWxsUmVmLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1
Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWY+KCk7CiAgICAgSlNWYWx1ZSByZWZlcmVuY2UgPSBK
U1ZhbHVlOjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uUmVmZXJlbmNlKS5lbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihjYWxsRnJhbWUsIGluc3Rh
bmNlLCByZWZlcmVuY2UsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOwogfQogCiBXQVNN
X1NMT1dfUEFUSF9ERUNMKGNhbGxfcmVmX25vX3RscykKIHsKLSAgICBhdXRvIGluc3RydWN0aW9u
ID0gcGMtPmFzPFdhc21DYWxsUmVmTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0
byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJlZk5vVGxzPigpOwogICAgIEpTVmFsdWUg
cmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvblJl
ZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIGRvV2FzbUNhbGxSZWYoY2Fs
bEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4
KTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3JlZikKIHsKLSAgICBhdXRv
IGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWYsIFdhc21PcGNvZGVUcmFpdHM+
KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtU2V0R2xvYmFsUmVmPigpOwog
ICAgIGluc3RhbmNlLT5zZXRHbG9iYWwoaW5zdHJ1Y3Rpb24ubV9nbG9iYWxJbmRleCwgUkVBRChp
bnN0cnVjdGlvbi5tX3ZhbHVlKS5qc1ZhbHVlKCkpOwogICAgIFdBU01fRU5EX0lNUEwoKTsKIH0K
IAogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3JlZl9wb3J0YWJsZV9iaW5kaW5nKQog
ewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVNldEdsb2JhbFJlZlBvcnRhYmxl
QmluZGluZywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21TZXRHbG9iYWxSZWZQb3J0YWJsZUJpbmRpbmc+KCk7CiAgICAgaW5zdGFuY2UtPnNl
dEdsb2JhbChpbnN0cnVjdGlvbi5tX2dsb2JhbEluZGV4LCBSRUFEKGluc3RydWN0aW9uLm1fdmFs
dWUpLmpzVmFsdWUoKSk7CiAgICAgV0FTTV9FTkRfSU1QTCgpOwogfQogCiBXQVNNX1NMT1dfUEFU
SF9ERUNMKG1lbW9yeV9hdG9taWNfd2FpdDMyKQogewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBw
Yy0+YXM8V2FzbU1lbW9yeUF0b21pY1dhaXQzMiwgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBh
dXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlBdG9taWNXYWl0MzI+KCk7CiAgICAg
dW5zaWduZWQgYmFzZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9wb2ludGVyKS51bmJveGVkSW50MzIo
KTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBpbnN0cnVjdGlvbi5tX29mZnNldDsKICAgICB1aW50
MzJfdCB2YWx1ZSA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV92YWx1ZSkudW5ib3hlZEludDMyKCk7CkBA
IC01ODksNyArNTg5LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfYXRvbWljX3dhaXQz
MikKIAogV0FTTV9TTE9XX1BBVEhfREVDTChtZW1vcnlfYXRvbWljX3dhaXQ2NCkKIHsKLSAgICBh
dXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21NZW1vcnlBdG9taWNXYWl0NjQsIFdhc21PcGNv
ZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5QXRv
bWljV2FpdDY0PigpOwogICAgIHVuc2lnbmVkIGJhc2UgPSBSRUFEKGluc3RydWN0aW9uLm1fcG9p
bnRlcikudW5ib3hlZEludDMyKCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gaW5zdHJ1Y3Rpb24u
bV9vZmZzZXQ7CiAgICAgdWludDY0X3QgdmFsdWUgPSBSRUFEKGluc3RydWN0aW9uLm1fdmFsdWUp
LnVuYm94ZWRJbnQ2NCgpOwpAQCAtNjAyLDcgKzYwMiw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wo
bWVtb3J5X2F0b21pY193YWl0NjQpCiAKIFdBU01fU0xPV19QQVRIX0RFQ0wobWVtb3J5X2F0b21p
Y19ub3RpZnkpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtTWVtb3J5QXRv
bWljTm90aWZ5LCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBw
Yy0+YXM8V2FzbU1lbW9yeUF0b21pY05vdGlmeT4oKTsKICAgICB1bnNpZ25lZCBiYXNlID0gUkVB
RChpbnN0cnVjdGlvbi5tX3BvaW50ZXIpLnVuYm94ZWRJbnQzMigpOwogICAgIHVuc2lnbmVkIG9m
ZnNldCA9IGluc3RydWN0aW9uLm1fb2Zmc2V0OwogICAgIGludDMyX3QgY291bnQgPSBSRUFEKGlu
c3RydWN0aW9uLm1fY291bnQpLnVuYm94ZWRJbnQzMigpOwpAQCAtNjIxLDcgKzYyMSw3IEBAIFdB
U01fU0xPV19QQVRIX0RFQ0wodGhyb3cpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGhyb3csIFdhc21PcGNvZGVUcmFpdHM+KCk7
CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGhyb3c+KCk7CiAgICAgY29uc3Qg
V2FzbTo6VGFnJiB0YWcgPSBpbnN0YW5jZS0+dGFnKGluc3RydWN0aW9uLm1fZXhjZXB0aW9uSW5k
ZXgpOwogCiAgICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+IHZhbHVlcyh0YWcucGFyYW1ldGVyQ291
bnQoKSk7CkBAIC02NTUsNyArNjU1LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChyZXRocm93KQog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8
V2FzbVJldGhyb3csIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9
IHBjLT5hczxXYXNtUmV0aHJvdz4oKTsKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IFJFQUQoaW5z
dHJ1Y3Rpb24ubV9leGNlcHRpb24pLmpzVmFsdWUoKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CiAKQEAgLTY5OSwxNCArNjk5LDE0IEBA
IFdBU01fU0xPV19QQVRIX0RFQ0wocmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbikKICAgICAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGluc3RydWN0aW9uLm1fZXhjZXB0aW9uKSA9IHRocm93
blZhbHVlOwogICAgIH07CiAKLSAgICBpZiAocGMtPmlzPFdhc21DYXRjaCwgV2FzbU9wY29kZVRy
YWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21DYXRjaCwgV2FzbU9wY29k
ZVRyYWl0cz4oKSk7Ci0gICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaEFsbCwgV2FzbU9wY29k
ZVRyYWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbCwg
V2FzbU9wY29kZVRyYWl0cz4oKSk7Ci0gICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaE5vVGxz
LCBXYXNtT3Bjb2RlVHJhaXRzPigpKQotICAgICAgICBoYW5kbGVDYXRjaChwYy0+YXM8V2FzbUNh
dGNoTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCkpOwotICAgIGVsc2UgaWYgKHBjLT5pczxXYXNt
Q2F0Y2hBbGxOb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKSkKLSAgICAgICAgaGFuZGxlQ2F0Y2hB
bGwocGMtPmFzPFdhc21DYXRjaEFsbE5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpKTsKKyAgICBp
ZiAocGMtPmlzPFdhc21DYXRjaD4oKSkKKyAgICAgICAgaGFuZGxlQ2F0Y2gocGMtPmFzPFdhc21D
YXRjaD4oKSk7CisgICAgZWxzZSBpZiAocGMtPmlzPFdhc21DYXRjaEFsbD4oKSkKKyAgICAgICAg
aGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbD4oKSk7CisgICAgZWxzZSBpZiAocGMt
PmlzPFdhc21DYXRjaE5vVGxzPigpKQorICAgICAgICBoYW5kbGVDYXRjaChwYy0+YXM8V2FzbUNh
dGNoTm9UbHM+KCkpOworICAgIGVsc2UgaWYgKHBjLT5pczxXYXNtQ2F0Y2hBbGxOb1Rscz4oKSkK
KyAgICAgICAgaGFuZGxlQ2F0Y2hBbGwocGMtPmFzPFdhc21DYXRjaEFsbE5vVGxzPigpKTsKICAg
ICBlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKQEAgLTcxNywx
OSArNzE3LDE5IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wocmV0cmlldmVfYW5kX2NsZWFyX2V4Y2Vw
dGlvbikKICAgICBXQVNNX1JFVFVSTl9UV08ocGMsIHBheWxvYWQpOwogfQogCi1leHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24oQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgV2FzbTo6SW5zdGFuY2UqIGlu
c3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlIGV4Y2VwdGlvblR5cGUpCitleHRlcm4gIkMiIFNs
b3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24oQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMsIFdhc206Okluc3RhbmNlKiBp
bnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSBleGNlcHRpb25UeXBlKQogewogICAgIFVOVVNF
RF9QQVJBTShwYyk7CiAgICAgV0FTTV9SRVRVUk5fVFdPKG9wZXJhdGlvbldhc21Ub0pTRXhjZXB0
aW9uKGNhbGxGcmFtZSwgZXhjZXB0aW9uVHlwZSwgaW5zdGFuY2UpLCBudWxscHRyKTsKIH0KIAot
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnQoY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50MzJfdCB4KQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnQoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywg
dWludDMyX3QgeCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PHVpbnQ2NF90PihfX2J1aWx0aW5fcG9wY291bnQoeCkpKTsKICAgICBXQVNNX1JF
VFVSTl9UV08ocGMsIHJlc3VsdCk7CiB9CiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IHNsb3dfcGF0aF93YXNtX3BvcGNvdW50bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRf
dCB4KQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291
bnRsbChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCB1aW50NjRfdCB4KQogewogICAgIHZvaWQq
IHJlc3VsdCA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9fYnVp
bHRpbl9wb3Bjb3VudGxsKHgpKSk7CiAgICAgV0FTTV9SRVRVUk5fVFdPKHBjLCByZXN1bHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCmluZGV4IGI2NGNlN2Nk
ZTQxYWFhMDY4OTdlOGZmZmVkODJhOGQwNjQzMmRmZDAuLjQ2MDllMzZiMDM5MjRkMTBlYTAyNzQ1
NjEwZjBmMmZlNGU4MzFmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xv
d1BhdGhzLmgKQEAgLTM0LDkgKzM0LDEyIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2Fs
bEZyYW1lOwotc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCit0
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJhc2VJbnN0cnVjdGlvbjsKK3N0cnVjdCBXYXNtT3Bj
b2RlVHJhaXRzOwordXNpbmcgV2FzbUluc3RydWN0aW9uID0gQmFzZUluc3RydWN0aW9uPFdhc21P
cGNvZGVUcmFpdHM+OworCiBuYW1lc3BhY2UgV2FzbSB7CiBjbGFzcyBJbnN0YW5jZTsKIH0KQEAg
LTQ0LDcgKzQ3LDcgQEAgY2xhc3MgSW5zdGFuY2U7CiBuYW1lc3BhY2UgTExJbnQgewogCiAjZGVm
aW5lIFdBU01fU0xPV19QQVRIX0RFQ0wobmFtZSkgXAotICAgIGV4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtXyMjbmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UpCisgICAgZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fIyNuYW1lKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5z
dGFuY2UpCiAKICNkZWZpbmUgV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wobmFtZSkgXAogICAg
IFdBU01fU0xPV19QQVRIX0RFQ0wobmFtZSkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJO
QUwKQEAgLTg3LDkgKzkwLDkgQEAgV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wodGhyb3cpOwog
V0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0aHJvdyk7CiBXQVNNX1NMT1dfUEFUSF9ISURE
RU5fREVDTChyZXRyaWV2ZV9hbmRfY2xlYXJfZXhjZXB0aW9uKTsKIAotZXh0ZXJuICJDIiBTbG93
UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKENhbGxGcmFtZSos
IGNvbnN0IEluc3RydWN0aW9uKiwgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBXYXNtOjpFeGNl
cHRpb25UeXBlKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKLWV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3BvcGNvdW50KGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdWludDMyX3QpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwotZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnRsbChjb25z
dCBJbnN0cnVjdGlvbiogcGMsIHVpbnQ2NF90KSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRF
Uk5BTDsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3Rocm93
X2V4Y2VwdGlvbihDYWxsRnJhbWUqLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qLCBXYXNtOjpJbnN0
YW5jZSogaW5zdGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUpIFJFRkVSRU5DRURfRlJPTV9BU00g
V1RGX0lOVEVSTkFMOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dh
c21fcG9wY291bnQoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWludDMyX3QpIFJFRkVSRU5D
RURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
c2xvd19wYXRoX3dhc21fcG9wY291bnRsbChjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qIHBjLCB1aW50
NjRfdCkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>