<?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>230329</bug_id>
          
          <creation_ts>2021-09-15 17:19:09 -0700</creation_ts>
          <short_desc>Use SharedMemory for transferring appended buffers from SourceBuffer to the GPU process</short_desc>
          <delta_ts>2021-11-20 15:19:21 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232422</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233401</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1793908</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-15 17:19:09 -0700</bug_when>
    <thetext>Use SharedMemory for transferring appended buffers from SourceBuffer to the GPU process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793910</commentid>
    <comment_count>1</comment_count>
      <attachid>438307</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-15 17:20:47 -0700</bug_when>
    <thetext>Created attachment 438307
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793919</commentid>
    <comment_count>2</comment_count>
      <attachid>438307</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-15 17:49:25 -0700</bug_when>
    <thetext>Comment on attachment 438307
WIP

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

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParser.cpp:139
&gt; +        [&amp;](const Ref&lt;SharedBuffer&gt;&amp; buffer)
&gt; +        {
&gt; +            buffer-&gt;copyTo(destination, sizeToRead);
&gt; +            return buffer-&gt;size();

This is definitely wrong; it doesn&apos;t take the `position` parameter into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793979</commentid>
    <comment_count>3</comment_count>
      <attachid>438328</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-16 01:58:11 -0700</bug_when>
    <thetext>Created attachment 438328
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794961</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-19 20:00:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/83291495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795039</commentid>
    <comment_count>5</comment_count>
      <attachid>438664</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-20 06:02:31 -0700</bug_when>
    <thetext>Created attachment 438664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795049</commentid>
    <comment_count>6</comment_count>
      <attachid>438668</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-20 06:33:56 -0700</bug_when>
    <thetext>Created attachment 438668
Mark SourceBufferPrivate::append with WTF_EXPORT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795050</commentid>
    <comment_count>7</comment_count>
      <attachid>438669</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-20 06:35:24 -0700</bug_when>
    <thetext>Created attachment 438669
Patch

Mark SourceBufferPrivate::append with WTF_EXPORT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795060</commentid>
    <comment_count>8</comment_count>
      <attachid>438673</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-20 07:05:37 -0700</bug_when>
    <thetext>Created attachment 438673
Patch

Mark SourceBufferPrivate::append with WTF_EXPORT #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795331</commentid>
    <comment_count>9</comment_count>
      <attachid>438673</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-09-20 16:05:09 -0700</bug_when>
    <thetext>Comment on attachment 438673
Patch

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

&gt; Source/WebCore/ChangeLog:23
&gt; +        will throw; as such, there&apos;s no need to append the data to a vector.

You mean throw an exception?

&gt; Source/WebCore/platform/SharedBuffer.cpp:307
&gt; +    for (i += 1; i &lt; m_segments.size(); ++i) {

Probably s/i += 1;/++i/g?

&gt; Source/WebCore/platform/graphics/SourceBufferPrivate.cpp:1321
&gt; +    WTFCrash();

Maybe `ASSERT_NOT_REACHED();` is better?

&gt; Source/WebCore/platform/graphics/SourceBufferPrivate.h:71
&gt; +    WEBCORE_EXPORT virtual void append(Vector&lt;unsigned char&gt;&amp;&amp;);

Seems a good fit for protected method?

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:363
&gt; +    Status ReadInto(std::size_t numToRead, CMBlockBufferRef outputBuffer, uint64_t* numActuallyRead)

Can this function share some code with `Read()`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795341</commentid>
    <comment_count>10</comment_count>
      <attachid>438673</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-09-20 16:27:17 -0700</bug_when>
    <thetext>Comment on attachment 438673
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/SourceBufferPrivate.cpp:1321
&gt;&gt; +    WTFCrash();
&gt; 
&gt; Maybe `ASSERT_NOT_REACHED();` is better?

RELEASE_ASSERT_NOT_REACHED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795397</commentid>
    <comment_count>11</comment_count>
      <attachid>438673</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-20 19:54:00 -0700</bug_when>
    <thetext>Comment on attachment 438673
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/SourceBufferPrivate.h:71
&gt;&gt; +    WEBCORE_EXPORT virtual void append(Vector&lt;unsigned char&gt;&amp;&amp;);
&gt; 
&gt; Seems a good fit for protected method?

no. This should be a pure virtual method. It is the main public entry points. However that&apos;s not what existing SourceBufferPrivate are currently implementing.

Once all have been switched to the new type, we can remove this one entirely

&gt;&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:363
&gt;&gt; +    Status ReadInto(std::size_t numToRead, CMBlockBufferRef outputBuffer, uint64_t* numActuallyRead)
&gt; 
&gt; Can this function share some code with `Read()`?

There&apos;s too many differences between to only make the code more complicated. So there&apos;s very little to gain from it.
ReadInto doesn&apos;t do reads and copy. 

It build CMBlockBuffer that keeps references to the original content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795412</commentid>
    <comment_count>12</comment_count>
      <attachid>438776</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-20 22:35:12 -0700</bug_when>
    <thetext>Created attachment 438776
Patch

Apply comments, and tweaks to ShareBuffer::copyTo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795611</commentid>
    <comment_count>13</comment_count>
      <attachid>438776</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-21 09:51:28 -0700</bug_when>
    <thetext>Comment on attachment 438776
Patch

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

r=me with one change and a couple of nits.

&gt; Source/WebCore/platform/SharedBuffer.cpp:288
&gt; +    ASSERT(length + offset &lt;= size());
&gt;      auto destinationPtr = static_cast&lt;uint8_t*&gt;(destination);
&gt; -    auto remaining = std::min(length, size());
&gt; -    for (auto&amp; segment : m_segments) {
&gt; -        size_t amountToCopyThisTime = std::min(remaining, segment.segment-&gt;size());
&gt; -        memcpy(destinationPtr, segment.segment-&gt;data(), amountToCopyThisTime);
&gt; +    auto remaining = std::min(length, size() - offset);

I _think_ this could result in an out-of-bounds read if the ASSERT() case at the top is violated and `offset &gt; size()`.  Might want to add an early return in that case.

&gt; Source/WebCore/platform/SharedBuffer.cpp:291
&gt; +    for (;; ++segment) {

This...

&gt; Source/WebCore/platform/SharedBuffer.cpp:305
&gt; +        break;
&gt; +    }
&gt; +    for (++segment; segment != end(); ++segment) {

...and this. Is there a reason to break up the for loop this way? Seems like the `break` could be replaced by a `++segment` and the loops joined.

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:357
&gt; +    static void FreeBlock(void* refcon, void*, size_t)

Nit: could this be named &quot;FreeDataSegment&quot; instead?

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:406
&gt; +                CMBlockBufferCustomBlockSource allocator;
&gt; +                allocator.version = 0;
&gt; +                allocator.AllocateBlock = nullptr;
&gt; +                allocator.FreeBlock = FreeBlock;
&gt; +                allocator.refCon = firstSegment.ptr();

Nit: this could be &quot;...alloctator = { 0, nullptr, FreeDataSegment, firstSegment.ptr() };&quot; and be much more compact without sacrificing too much readability. You could also do something like {.version= 0, .AllocateBlock = nullptr} if the names are important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795886</commentid>
    <comment_count>14</comment_count>
      <attachid>438776</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-21 17:35:16 -0700</bug_when>
    <thetext>Comment on attachment 438776
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:406
&gt;&gt; +                allocator.refCon = firstSegment.ptr();
&gt; 
&gt; Nit: this could be &quot;...alloctator = { 0, nullptr, FreeDataSegment, firstSegment.ptr() };&quot; and be much more compact without sacrificing too much readability. You could also do something like {.version= 0, .AllocateBlock = nullptr} if the names are important.

I did what the CMBlockBufferCustomBlockSource documentation advised to do. `To avoid link-time issues, it is recommended that clients fill CMBlockBufferCustomBlockSource&apos;s function pointer fields `
I played it safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795935</commentid>
    <comment_count>15</comment_count>
      <attachid>438913</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-21 21:01:17 -0700</bug_when>
    <thetext>Created attachment 438913
Patch

Apply comment, re-write SharedBuffer::copyTo, now using a O(LOG(N)) search for the first segment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795937</commentid>
    <comment_count>16</comment_count>
      <attachid>438915</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-21 21:04:48 -0700</bug_when>
    <thetext>Created attachment 438915
Patch

update reviewer in Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795939</commentid>
    <comment_count>17</comment_count>
      <attachid>438916</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-21 21:09:42 -0700</bug_when>
    <thetext>Created attachment 438916
Patch

Renamed FreeBlock to FreeDataSegment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795961</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-21 23:25:40 -0700</bug_when>
    <thetext>Committed r282865 (241996@main): &lt;https://commits.webkit.org/241996@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438916.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438307</attachid>
            <date>2021-09-15 17:20:47 -0700</date>
            <delta_ts>2021-09-16 01:58:08 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-230329-20210915172046.patch</filename>
            <type>text/plain</type>
            <size>20989</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZjQ1ODRmZjM1MjgyNTZjZTkw
NzA1ODQ2YzgwZGE1ZWRlMDY0NjgzYy4uYjA4MDM0YTRjNGI5NDNlMTFiYzg2Mzg0YTMxODU1ZTRj
NDZiMDM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjph
Ym9ydElmVXBkYXRpbmcoKQogCiAgICAgLy8gNC4xLiBBYm9ydCB0aGUgYnVmZmVyIGFwcGVuZCBh
bGdvcml0aG0gaWYgaXQgaXMgcnVubmluZy4KICAgICBtX2FwcGVuZEJ1ZmZlclRpbWVyLnN0b3Ao
KTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nQXBwZW5k
RGF0YSA9IG51bGxwdHI7CiAgICAgbV9wcml2YXRlLT5hYm9ydCgpOwogCiAgICAgLy8gNC4yLiBT
ZXQgdGhlIHVwZGF0aW5nIGF0dHJpYnV0ZSB0byBmYWxzZS4KQEAgLTQ5NCw3ICs0OTQsMTAgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLAogCiAgICAgLy8gTk9URTogUmV0dXJuIHRvIDMuMiBhcHBl
bmRCdWZmZXIoKQogICAgIC8vIDMuIEFkZCBkYXRhIHRvIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1
ZmZlci4KLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBp
ZiAoIW1fcGVuZGluZ0FwcGVuZERhdGEpCisgICAgICAgIG1fcGVuZGluZ0FwcGVuZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVu
ZGluZ0FwcGVuZERhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKIAogICAgIC8vIDQuIFNldCB0aGUg
dXBkYXRpbmcgYXR0cmlidXRlIHRvIHRydWUuCiAgICAgbV91cGRhdGluZyA9IHRydWU7CkBAIC01
MjUsNyArNTI4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQo
KQogICAgIC8vIFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9r
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCiAgICAgLy8gMS4gTG9vcCBUb3A6IElmIHRo
ZSBpbnB1dCBidWZmZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3JlIGRhdGEg
c3RlcCBiZWxvdy4KLSAgICBpZiAoIW1fcGVuZGluZ0FwcGVuZERhdGEuc2l6ZSgpKSB7CisgICAg
aWYgKCFtX3BlbmRpbmdBcHBlbmREYXRhIHx8ICFtX3BlbmRpbmdBcHBlbmREYXRhLT5zaXplKCkp
IHsKICAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3Vs
dDo6QXBwZW5kU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUzNCw4ICs1
MzcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAgICAg
Ly8gcmVqZWN0cyBhcHBlbmRpbmcgdGhlIGJ1ZmZlciBmb3Igd2hhdGV2ZXIgcmVhc29uLgogICAg
IC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGd1YXJhbnRlZSB0aGUgbW92ZSBm
cm9tIHRoaXMgVmVjdG9yLCBhbmQgd2Ugc2hvdWxkCiAgICAgLy8gYXNzZXJ0IGhlcmUgdG8gY29u
ZmlybSB0aGF0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
ODAwMy4KLSAgICBtX3ByaXZhdGUtPmFwcGVuZChXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEp
KTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmNsZWFyKCk7CisgICAgbV9wcml2YXRlLT5hcHBl
bmQobV9wZW5kaW5nQXBwZW5kRGF0YS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQg
cmVzdWx0KQpAQCAtMTIxMSw3ICsxMjEzLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlUmVwb3J0RXh0cmFNZW1vcnlDb3N0KHVpbnQ2NF90IGV4dHJhTWVtb3J5CiAK
IHZvaWQgU291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCh1aW50NjRfdCBl
eHRyYU1lbW9yeSkKIHsKLSAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QgPSBtX3BlbmRpbmdB
cHBlbmREYXRhLmNhcGFjaXR5KCkgKyBleHRyYU1lbW9yeTsKKyAgICB1aW50NjRfdCBleHRyYU1l
bW9yeUNvc3QgPSBleHRyYU1lbW9yeTsKKyAgICBpZiAobV9wZW5kaW5nQXBwZW5kRGF0YSkKKyAg
ICAgICAgZXh0cmFNZW1vcnlDb3N0ICs9IG1fcGVuZGluZ0FwcGVuZERhdGEtPnNpemUoKTsKKwog
ICAgIGlmIChleHRyYU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA4ODhkMmQ2ZTk4ZGFiZjk3ZGFiZTFjOTFmMjQ4YjEwODVk
NjkyYjYxLi5hNzIzM2QyMWUwODFhYTRhOGQ4NDI1NGIyOTNhNzMyZjY4NDEzZThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAg
LTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBt
X29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX3BlbmRp
bmdBcHBlbmREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERh
dGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1Ry
YWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCmluZGV4IDA1NGNlNWE0MjkyNGM0ZDlmMGM2OWYyZGE4NmQ5MDc3OWE5MTA4MTUuLmU0
MTE0YmIxYmM5ZGRmOGE4ZDY0ZTBjZTRjZmYxZDhhNjA4NjQ3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTIsNiArNTIsMTIgQEAgU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVE
YXRhKSl9KTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQoreworICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlk
ZXIpKX0pOworfQorCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKQEAgLTMxMiw3ICszMTgsOCBA
QCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QK
ICNpZiBVU0UoR1NUUkVBTUVSKQogICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAg
ICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29u
c3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3Zp
ZGVyJiBwcm92aWRlcikgeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CiAgICAgKTsKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzk1LDcg
KzQwMiw4IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICNpZiBVU0UoR1NUUkVBTUVSKQogICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLT5zaXplKCk7IH0sCiAjZW5kaWYKLSAgICAg
ICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIGRh
dGEuc2l6ZSgpOyB9CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlk
ZXImIHByb3ZpZGVyKSB7IHJldHVybiBwcm92aWRlci5zaXplKCk7IH0KICAgICApOwogICAgIHJl
dHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDIzNjlhYWQ4YjM1NjM5ZTJlYTVhOWFkMTgy
Njg1NTM3OTVlNmI3NzAuLjdiOTY1ZmJlZjk2OWE3YmU4YjgzMWEzMmZmZDlhMzM0MTQ1MjAxNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Bh
bi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTQ4LDYgKzE0
OSwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAorICAgICAgICBzdHJ1Y3Qg
UHJvdmlkZXIgeworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBk
YXRhOworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICAgICAg
fTsKKworICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBw
cm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3Zp
ZGVyKSkpOyB9CisKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTE3MSw2ICsxNzksOCBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CisgICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKICAgICAgICAgVmFy
aWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQpAQCAtMTgyLDEwICsxOTIsMTMgQEAg
cHVibGljOgogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEsCisgICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwogICAgICAgICBm
cmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIH07CiAKKyAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKICAg
ICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYpPiYpIGNvbnN0OwogICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCkBAIC0yMTYsNiArMjI5LDcgQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKICNpZiBVU0UoQ0YpCiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRl
eCBlZGI1MWFkNTYwMzQ2MTc0NTY0ZTIxMTFjZWQyODEyNWZhYzEwMmFiLi42MWZiNDVkOGVlN2Zm
Y2UxNmJjYWFlNTQ1ZGY1YTdiNjRiNjBlZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5n
ZXMuaCIKICNpbmNsdWRlICJTYW1wbGVNYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZVJh
bmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02Niw3ICs2Nyw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFw
cGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBhcHBlbmQoYnVmZmVyLT5leHRyYWN0RGF0
YSgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRp
YVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGFmMmEyZTZjMDRhZjUzYjYyYTM1YmIwNzkxYjZjYzU4
OTAwOWUxYTUuLmVjNGUzNDEyZWQ1NTY3YWM3NTMxOTUxN2YyOTdkMDBhNjNhNTZjZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1w
b3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0
ICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0
ICJWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWQXNzZXRUcmFjay5oPgpAQCAtMjExLDggKzIxMiw4IEBAIFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIAogdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdz
KQogewotICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQu
dGFrZVZlY3RvcigpKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZERhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7
CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlm
IChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRp
bnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3
aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCmluZGV4IDkyZDljOGRkNTJmN2M1MjAyZDE2ZTdmOGFmYTcwN2VkMmI2NTdlN2Uu
LjQxMzYxYWM2MTk0OTY4ODgwMzhlZWQ2YzgxM2E2NDgzZjkwOWRhYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAg
dm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBw
ZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsK
ICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9t
TWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZmZhMmZiYTBkZjA2ZThlZGQ2NGFiY2Ni
ZDRmN2FhZTUzMDA5N2Y1Mi4uOWE4NDY5NjE1ODg5ODJkOWE3YThkMWRkNTdkMzBhNzRkZWE3MTVi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0KQEAgLTU3Miw5ICs1NzIsOSBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBn
bG9iYWxEYXRhUGFyc2VyUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKIH0KIAotdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImRh
dGEgbGVuZ3RoID0gIiwgZGF0YS5zaXplKCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVCghbV9oYXNT
ZXNzaW9uU2VtYXBob3JlKTsKICAgICBBU1NFUlQoIW1fYWJvcnRTZW1hcGhvcmUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXggMTZiY2JlMGM1NzdmYzQyMGRiYTQ3NzBlMTM2NTUzZDk3
MDM1OGUzMy4uYjYwNTQyM2VhNDUzZTFkNTI4ZTUxZTc0OGVkNzY3OWY4ZTJiZDE3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04Miw2ICs4MiwxMSBAQCBTb3VyY2VCdWZmZXJQYXJz
ZXI6OlNlZ21lbnQ6OlNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgc2VnbWVudCkKIHsKIH0KIAor
U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgIDogbV9zZWdtZW50KFdURk1vdmUoYnVmZmVyKSkKK3sKK30KKwogI2lmIEhB
VkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OlNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBzZWdtZW50KQogICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCkBAIC0xMDEsNiArMTA2LDEwIEBAIHNpemVf
dCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgICAgICBbXShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHZlY3RvcikKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIHZlY3Rvci5zaXplKCk7CisgICAgICAgIH0sCisgICAgICAgIFtdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIt
PnNpemUoKTsKICAgICAgICAgfQogICAgICk7CiB9CkBAIC0xMjMsMTEgKzEzMiwxNiBAQCBzaXpl
X3QgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6
ZV90IHNpemVUb1JlYWQsIHVpbgogICAgICAgICB7CiAgICAgICAgICAgICBtZW1jcHkoZGVzdGlu
YXRpb24sIHZlY3Rvci5kYXRhKCkgKyBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7CiAgICAgICAgICAg
ICByZXR1cm4gc2l6ZVRvUmVhZDsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ1ZmZlci0+Y29w
eVRvKGRlc3RpbmF0aW9uLCBzaXplVG9SZWFkKTsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIt
PnNpemUoKTsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTb3VyY2VC
dWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VWZWN0b3IoKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU291
cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKIHsKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JF
QURFUikKQEAgLTEzNSwxMiArMTQ5LDE2IEBAIFZlY3Rvcjx1aW50OF90PiBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OnRha2VWZWN0b3IoKQogICAgICAgICB7CiAgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJl
YWQoMCwgdmVjdG9yLnNpemUoKSwgdmVjdG9yLmRhdGEoKSkpOwotICAgICAgICAgICAgcmV0dXJu
IHZlY3RvcjsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KHZlY3RvcikpOwogICAgICAgICB9LAogI2VuZGlmCiAgICAgICAgIFtdKFZlY3Rvcjx1aW50OF90
PiYgdmVjdG9yKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZSh2
ZWN0b3IsIHsgfSk7CisgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rk
OjpleGNoYW5nZSh2ZWN0b3IsIHsgfSkpOworICAgICAgICB9LAorICAgICAgICBbJl0oUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
ZXhjaGFuZ2UoYnVmZmVyLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgfQogICAg
ICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDRlZTg2YjJjZmE2MGVlYTZkZjZkMjk3
NzUyNTcwNWUyNjNlNWE1OWMuLjMzNTIyYTY0MDMwMDA0NmQxMGVjMTdhZGVlNTllNWYzY2VmYTlk
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHBhbC9z
cGkvY29jb2EvTWVkaWFUb29sYm94U1BJLmg+CkBAIC02Niw5ICs2NywxMCBAQCBwdWJsaWM6CiAj
aWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKICAgICAgICAgU2VnbWVudChSZXRhaW5Q
dHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYmKTsKICNlbmRpZgorICAgICAgICBTZWdtZW50KFJl
ZjxTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmKTsK
ICAgICAgICAgU2VnbWVudChTZWdtZW50JiYpID0gZGVmYXVsdDsKLSAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHRha2VWZWN0b3IoKTsKKyAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJl
ZEJ1ZmZlcigpOwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgICAgIHNpemVf
dCByZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90LCB1aW50OF90KiBkZXN0aW5hdGlvbikgY29u
c3Q7CkBAIC03OCw3ICs4MCw4IEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRf
UkVBREVSKQogICAgICAgICAgICAgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4sCiAj
ZW5kaWYKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PgorICAgICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+LAorICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgPiBtX3NlZ21l
bnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKaW5kZXggZDhkY2IxMTAxM2NlNzY3ZTg0
M2Y5OTc2MGQ3NDk5YjliZTZjMGM3My4uNWRhOWRkYTY0MzFkMzkxMWUwODZkYjEzMjdlMDcxYjAz
Mzc0Yjk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCkBAIC0xOTIsOSArMTkyLDEzIEBAIHZvaWQg
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5
Q2hhbmdlZChib29sIGZsYWcpCiAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGZsYWcpLCBtX2lkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphcHBlbmQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBidWZmZXJIYW5kbGUpCiB7Ci0gICAgbV9zb3VyY2VC
dWZmZXJQcml2YXRlLT5hcHBlbmQoZGF0YS52ZWN0b3IoKSk7CisgICAgYXV0byBzaGFyZWRNZW1v
cnkgPSBTaGFyZWRNZW1vcnk6Om1hcChidWZmZXJIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5hcHBlbmQoc2hhcmVkTWVtb3J5
LT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggYzkxMjkwMTU4ZDgzZWM5NjAyNWVjOTU5
MzNmMmEzMWI3NWU1ZWEzZi4uNzdkODI3YWIzMDMyYTE2NGIzZjRhNzZlMDE4MTg2ZmY3YjkxNDMx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlLmg+CkBAIC04Nyw3ICs4OCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAgdm9pZCBjYW5Td2l0Y2hUb1R5cGUoY29u
c3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIHNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZSk7Ci0g
ICAgdm9pZCBhcHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKICAgICB2b2lkIGFib3J0KCk7CiAg
ICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCk7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291
cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZmVmZThmNTVm
OWQ4ODU5YzFiNTA5ZjY3YjUyM2Y3Yzc4NTA4ZDc5Yi4uOGY2MjBiYTJlOTZmZmY2MzJlZjNkMDMy
YTViMGM0Nzg0OThmZTIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMjksNyArMjksNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBOb3RS
ZWZDb3VudGVkIHsKICAgICBTZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgQ2FuU3dpdGNoVG9U
eXBlKFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKSAtPiAoYm9vbCBjYW5Td2l0Y2gp
IFN5bmNocm9ub3VzCiAgICAgU2V0TW9kZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2Rl
IGFwcGVuZE1vZGUpCi0gICAgQXBwZW5kKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIEFw
cGVuZChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGRhdGEpCiAgICAgQWJvcnQoKQog
ICAgIFJlc2V0UGFyc2VyU3RhdGUoKQogICAgIFJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IDZiYWNhMzRkYzcwZDQzYzlm
OTRiZTNjZDMxNmVkYmRkMWUzZTU5M2YuLjM0YjRhODAyYmFjMDY3OTI2YzAzMTU0NWQzZjYzNmJl
NDVlNmI0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4
LDYgKzQ4LDE4IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5Owog
fQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICAgICAgW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgLT4gY29uc3QgdWludDhfdCogeworICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlz
LT5kYXRhKCkpOworICAgICAgICB9LAorICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoKSAtPiBzaXplX3QgeworICAgICAgICAgICAgcmV0dXJuIHByb3RlY3RlZFRoaXMt
PnNpemUoKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
dm9pZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6dGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9yeUxl
ZGdlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IDU2
YTFmNTY5OTc3MDVkYTAwYTlkYzQ2MTlmZTEyMzE0YWRkZmQyZjYuLmM3MGVkOWZmNjFmMzE0ODBh
NWNlMjY4ODk0MzViZTdkYWZlZTQxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuaApAQCAtMTUzLDYgKzE1Myw4IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3Rl
bSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXpl
KCk7CiAKKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKwogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCiAgICAgV1RGOjpNYWNoU2VuZFJp
Z2h0IGNyZWF0ZVNlbmRSaWdodChQcm90ZWN0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuY3BwCmluZGV4IGZjYjAxMjIyMzQzZTc1OGRlNjY0NjY4MzUyYmQxMjg0YTdmZmU0
MzQuLjQ1OGUzYmE0YjA4YzgwODcxMWU1ZjJlYWYwNjUxZTdmZGRjNGZkNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNzgsMTIgKzc4LDE5IEBAIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlKCkKICAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4m
JiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpBcHBlbmQoSVBDOjpEYXRh
UmVmZXJlbmNlKGRhdGEpKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICBh
dXRvIHNoYXJlZERhdGEgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoZGF0YSk7CisgICAgU2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIHNoYXJlZERhdGEtPmNyZWF0ZUhhbmRsZSho
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworCisgICAgLy8gVGFr
ZSBvd25lcnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFyayBpdCBhcyBtZWRpYS1yZWxhdGVk
IG1lbW9yeS4KKyAgICBoYW5kbGUudGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9yeUxlZGdlcjo6
TWVkaWEpOworCisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpBcHBlbmQoU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIHNoYXJlZERhdGEtPnNpemUoKSB9KSwgbV9yZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjphYm9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDE4Yjk5MDZj
ZGNjNjM0YzdiODAxNDUxMzdiM2UwYjljNDk1ODY4ODMuLjM2MDE3NWJmYmU5ZDFhZjgzZWQ1Nzkx
MzczYjc3NWVlNzUwYWM3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3
ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRl
cwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9p
ZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291
cmNlKCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438328</attachid>
            <date>2021-09-16 01:58:11 -0700</date>
            <delta_ts>2021-09-20 06:02:26 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-230329-20210916185810.patch</filename>
            <type>text/plain</type>
            <size>26088</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZjQ1ODRmZjM1MjgyNTZjZTkw
NzA1ODQ2YzgwZGE1ZWRlMDY0NjgzYy4uYWYwYWMzNWZjZTkyMzQ4NjJhNTM1MmNkMjE4ZWUwZGE3
NDRlNDVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjph
Ym9ydElmVXBkYXRpbmcoKQogCiAgICAgLy8gNC4xLiBBYm9ydCB0aGUgYnVmZmVyIGFwcGVuZCBh
bGdvcml0aG0gaWYgaXQgaXMgcnVubmluZy4KICAgICBtX2FwcGVuZEJ1ZmZlclRpbWVyLnN0b3Ao
KTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nQXBwZW5k
RGF0YSA9IG51bGxwdHI7CiAgICAgbV9wcml2YXRlLT5hYm9ydCgpOwogCiAgICAgLy8gNC4yLiBT
ZXQgdGhlIHVwZGF0aW5nIGF0dHJpYnV0ZSB0byBmYWxzZS4KQEAgLTQ5NCw3ICs0OTQsOCBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsCiAKICAgICAvLyBOT1RFOiBSZXR1cm4gdG8gMy4yIGFwcGVu
ZEJ1ZmZlcigpCiAgICAgLy8gMy4gQWRkIGRhdGEgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVm
ZmVyLgotICAgIG1fcGVuZGluZ0FwcGVuZERhdGEuYXBwZW5kKGRhdGEsIHNpemUpOworICAgIEFT
U0VSVCghbV9wZW5kaW5nQXBwZW5kRGF0YSk7CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwogCiAgICAgLy8gNC4gU2V0IHRoZSB1cGRh
dGluZyBhdHRyaWJ1dGUgdG8gdHJ1ZS4KICAgICBtX3VwZGF0aW5nID0gdHJ1ZTsKQEAgLTUyNCwx
OCArNTI1LDE0IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkK
ICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXIt
bG9vcAogICAgIC8vIFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGlu
dm9rZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4g
TG9vcCBUb3A6IElmIHRoZSBpbnB1dCBidWZmZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUg
bmVlZCBtb3JlIGRhdGEgc3RlcCBiZWxvdy4KLSAgICBpZiAoIW1fcGVuZGluZ0FwcGVuZERhdGEu
c2l6ZSgpKSB7CisgICAgaWYgKCFhcHBlbmREYXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsK
ICAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6
QXBwZW5kU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIE1hbnVh
bGx5IGNsZWFyIG91dCB0aGUgbV9wZW5kaW5nQXBwZW5kRGF0YSBWZWN0b3IsIGluIGNhc2UgdGhl
IHBsYXRmb3JtIGltcGxlbWVudGF0aW9uCi0gICAgLy8gcmVqZWN0cyBhcHBlbmRpbmcgdGhlIGJ1
ZmZlciBmb3Igd2hhdGV2ZXIgcmVhc29uLgotICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRp
b24gc2hvdWxkIGd1YXJhbnRlZSB0aGUgbW92ZSBmcm9tIHRoaXMgVmVjdG9yLCBhbmQgd2Ugc2hv
dWxkCi0gICAgLy8gYXNzZXJ0IGhlcmUgdG8gY29uZmlybSB0aGF0LiBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODAwMy4KLSAgICBtX3ByaXZhdGUtPmFwcGVu
ZChXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRh
LmNsZWFyKCk7CisgICAgbV9wcml2YXRlLT5hcHBlbmQoYXBwZW5kRGF0YS5yZWxlYXNlTm9uTnVs
bCgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZShBcHBlbmRSZXN1bHQgcmVzdWx0KQpAQCAtMTIxMSw3ICsxMjA4LDEwIEBAIHZvaWQg
U291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlUmVwb3J0RXh0cmFNZW1vcnlDb3N0KHVp
bnQ2NF90IGV4dHJhTWVtb3J5CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9y
eUFsbG9jYXRlZCh1aW50NjRfdCBleHRyYU1lbW9yeSkKIHsKLSAgICB1aW50NjRfdCBleHRyYU1l
bW9yeUNvc3QgPSBtX3BlbmRpbmdBcHBlbmREYXRhLmNhcGFjaXR5KCkgKyBleHRyYU1lbW9yeTsK
KyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QgPSBleHRyYU1lbW9yeTsKKyAgICBpZiAobV9w
ZW5kaW5nQXBwZW5kRGF0YSkKKyAgICAgICAgZXh0cmFNZW1vcnlDb3N0ICs9IG1fcGVuZGluZ0Fw
cGVuZERhdGEtPnNpemUoKTsKKwogICAgIGlmIChleHRyYU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRl
ZEV4dHJhTWVtb3J5Q29zdCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA4ODhkMmQ2ZTk4ZGFi
Zjk3ZGFiZTFjOTFmMjQ4YjEwODVkNjkyYjYxLi5hNzIzM2QyMWUwODFhYTRhOGQ4NDI1NGIyOTNh
NzMyZjY4NDEzZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogCiAgICAgV1RG
OjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiBtX3BlbmRpbmdBcHBlbmREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsK
IAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDA1NGNlNWE0MjkyNGM0ZDlmMGM2OWYy
ZGE4NmQ5MDc3OWE5MTA4MTUuLjJmODU1MjY3Njg3NTZiNmIzMDFjYTBmMDA4ZDE0MmVhYTE5ZWQw
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTIsNiAr
NTIsMTIgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgOiBtX3NpemUocHJv
dmlkZXIuc2l6ZSgpKQoreworICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworfQorCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEp
KTsKQEAgLTIzNiw2ICsyNDIsMTEgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
b3B5KCkgY29uc3QKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkp
OworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248
dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBh
dXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTI2NywxMCArMjc4LDM0IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkg
Y29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGxlbmd0aCkgY29uc3QKIHsKLSAgICBBU1NFUlQobGVuZ3RoIDw9IHNpemUoKSk7CisgICAg
cmV0dXJuIGNvcHlUbyhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKK30KKwordm9pZCBTaGFyZWRC
dWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3QKK3sKKyAgICBBU1NFUlQobGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7CiAg
ICAgYXV0byBkZXN0aW5hdGlvblB0ciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkZXN0aW5hdGlv
bik7Ci0gICAgYXV0byByZW1haW5pbmcgPSBzdGQ6Om1pbihsZW5ndGgsIHNpemUoKSk7Ci0gICAg
Zm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykgeworICAgIGF1dG8gcmVtYWluaW5nID0g
c3RkOjptaW4obGVuZ3RoLCBzaXplKCkgLSBvZmZzZXQpOworCisgICAgc2l6ZV90IGkgPSAwOwor
ICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0ID0gMDsKKyAgICBmb3IgKDsgaSA8IG1fc2VnbWVudHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHNbaV07Cisg
ICAgICAgIGlmIChvZmZzZXQgPCBjdXJyZW50T2Zmc2V0ICsgc2VnbWVudC5zZWdtZW50LT5zaXpl
KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBwb3NpdGlvbkluU2VnbWVudCA9IG9mZnNldCAtIGN1
cnJlbnRPZmZzZXQ7CisgICAgICAgICAgICBzaXplX3QgYW1vdW50VG9Db3B5VGhpc1RpbWUgPSBz
dGQ6Om1pbihyZW1haW5pbmcsIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25JblNl
Z21lbnQpOworICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uUHRyLCBzZWdtZW50LnNlZ21l
bnQtPmRhdGEoKSArIHBvc2l0aW9uSW5TZWdtZW50LCBhbW91bnRUb0NvcHlUaGlzVGltZSk7Cisg
ICAgICAgICAgICByZW1haW5pbmcgLT0gYW1vdW50VG9Db3B5VGhpc1RpbWU7CisgICAgICAgICAg
ICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBk
ZXN0aW5hdGlvblB0ciArPSBhbW91bnRUb0NvcHlUaGlzVGltZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2VnbWVudC5zZWdtZW50LT5z
aXplKCk7CisgICAgfQorCisgICAgZm9yIChpICs9IDE7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGF1dG8mIHNlZ21lbnQgPSBtX3NlZ21lbnRzW2ldOwogICAgICAgICBz
aXplX3QgYW1vdW50VG9Db3B5VGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpKTsKICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uUHRyLCBzZWdtZW50
LnNlZ21lbnQtPmRhdGEoKSwgYW1vdW50VG9Db3B5VGhpc1RpbWUpOwogICAgICAgICByZW1haW5p
bmcgLT0gYW1vdW50VG9Db3B5VGhpc1RpbWU7CkBAIC0zMTIsNyArMzQ3LDggQEAgY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKEdT
VFJFQU1FUikKICAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYg
ZGF0YSkgeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlk
ZXIpIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6
dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM5NSw3ICs0MzEsOCBAQCBz
aXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAjaWYgVVNFKEdT
VFJFQU1FUikKICAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYg
ZGF0YSkgeyByZXR1cm4gZGF0YS0+c2l6ZSgpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsg
fQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyBy
ZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRl
cikgeyByZXR1cm4gcHJvdmlkZXIuc2l6ZSgpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCAyMzY5YWFkOGIzNTYzOWUyZWE1YTlhZDE4MjY4NTUzNzk1ZTZi
NzcwLi5iOGZkNjExMjVmNGJhNDc3YmEyMTM3MTM5MjEyYWI2N2Y2ZmRhN2ZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTEyMyw2ICsxMjQsNyBAQCBwdWJs
aWM6CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgdm9pZCBjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHZvaWQgY29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKIAogICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11
dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgogICAg
IC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2Vn
bWVudC4KQEAgLTE0OCw2ICsxNTAsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9
CiAKKyAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgICAgIFdURjo6RnVuY3Rpb248
Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgICAgIFdURjo6RnVuY3Rpb248c2l6ZV90
KCk+IHNpemU7CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQorCiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC0x
NzEsNiArMTgwLDggQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAgIERhdGFTZWdtZW50KEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKICAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHBy
b3ZpZGVyKQorICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikp
IHsgfQogCiAgICAgICAgIFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKQEAg
LTE4MiwxMCArMTkzLDEzIEBAIHB1YmxpYzoKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgICAgICAg
ICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKKyAgICAgICAgICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRh
YmxlRGF0YTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIm
Jik7CisKICAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwogICAgIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCkBAIC0yMTYsNiArMjMwLDcg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKICNpZiBVU0Uo
Q0YpCiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaAppbmRleCBlZGI1MWFkNTYwMzQ2MTc0NTY0ZTIxMTFjZWQyODEyNWZhYzEwMmFiLi42MWZi
NDVkOGVlN2ZmY2UxNmJjYWFlNTQ1ZGY1YTdiNjRiNjBlZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJTYW1wbGVNYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02Niw3ICs2Nyw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2
YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBhcHBlbmQoYnVmZmVyLT5l
eHRyYWN0RGF0YSgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
ZEZyb21NZWRpYVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGFmMmEyZTZjMDRhZjUzYjYyYTM1YmIw
NzkxYjZjYzU4OTAwOWUxYTUuLmVjNGUzNDEyZWQ1NTY3YWM3NTMxOTUxN2YyOTdkMDBhNjNhNTZj
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpD
LmgiCiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgi
CisjaW1wb3J0ICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgi
CiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgogI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRUcmFjay5oPgpAQCAtMjExLDggKzIxMiw4IEBAIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIAogdm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZs
YWdzIGZsYWdzKQogewotICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNlZ21lbnQudGFrZVZlY3RvcigpKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZERhdGEtPmNy
ZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVk
QnVmZmVyKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgp
OwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6
OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0
YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVp
dHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDkyZDljOGRkNTJmN2M1MjAyZDE2ZTdmOGFmYTcwN2Vk
MmI2NTdlN2UuLjQxMzYxYWM2MTk0OTY4ODgwMzhlZWQ2YzgxM2E2NDgzZjkwOWRhYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aApAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFE
YXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJp
ZGVzCi0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAg
IHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQo
KSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJl
bW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZmZhMmZiYTBkZjA2ZThl
ZGQ2NGFiY2NiZDRmN2FhZTUzMDA5N2Y1Mi4uOWE4NDY5NjE1ODg5ODJkOWE3YThkMWRkNTdkMzBh
NzRkZWE3MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU3Miw5ICs1NzIsOSBAQCBzdGF0aWMgZGlzcGF0Y2hf
cXVldWVfdCBnbG9iYWxEYXRhUGFyc2VyUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsK
IH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBl
bmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS5zaXplKCkpOworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VS
VCghbV9oYXNTZXNzaW9uU2VtYXBob3JlKTsKICAgICBBU1NFUlQoIW1fYWJvcnRTZW1hcGhvcmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXggMTZiY2JlMGM1NzdmYzQyMGRiYTQ3NzBl
MTM2NTUzZDk3MDM1OGUzMy4uZDQ5OGY2MzMyNTM5MTU0NGRjM2MwY2M4NmNmYjdlNTVhMDdmMWQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04Miw2ICs4MiwxMSBAQCBTb3VyY2VC
dWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgc2VnbWVudCkK
IHsKIH0KIAorU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorICAgIDogbV9zZWdtZW50KFdURk1vdmUoYnVmZmVyKSkKK3sKK30K
KwogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiBTb3VyY2VCdWZmZXJQYXJzZXI6
OlNlZ21lbnQ6OlNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBzZWdt
ZW50KQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCkBAIC0xMDEsNiArMTA2LDEw
IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAg
ICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIHZlY3RvcikKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHZlY3Rvci5zaXplKCk7CisgICAgICAgIH0sCisgICAgICAgIFtdKGNvbnN0
IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBidWZmZXItPnNpemUoKTsKICAgICAgICAgfQogICAgICk7CiB9CkBAIC0xMjMsMTEgKzEzMiwx
NiBAQCBzaXplX3QgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3Np
dGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbgogICAgICAgICB7CiAgICAgICAgICAgICBtZW1j
cHkoZGVzdGluYXRpb24sIHZlY3Rvci5kYXRhKCkgKyBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7CiAg
ICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVhZDsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ1
ZmZlci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7CisgICAgICAg
ICAgICByZXR1cm4gc2l6ZVRvUmVhZDsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVZlY3Rvcjx1
aW50OF90PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VWZWN0b3IoKQorUmVmPFNo
YXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVy
KCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9Q
TFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTEzNSwxMiArMTQ5LDE2IEBAIFZlY3Rvcjx1aW50OF90
PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VWZWN0b3IoKQogICAgICAgICB7CiAg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAgICAgICAgICB2
ZWN0b3Iuc2hyaW5rKHJlYWQoMCwgdmVjdG9yLnNpemUoKSwgdmVjdG9yLmRhdGEoKSkpOwotICAg
ICAgICAgICAgcmV0dXJuIHZlY3RvcjsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwogICAgICAgICB9LAogI2VuZGlmCiAgICAgICAgIFtd
KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZSh2ZWN0b3IsIHsgfSk7CisgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RkOjpleGNoYW5nZSh2ZWN0b3IsIHsgfSkpOworICAgICAgICB9LAorICAg
ICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsK
ICAgICAgICAgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDRlZTg2YjJj
ZmE2MGVlYTZkZjZkMjk3NzUyNTcwNWUyNjNlNWE1OWMuLjMzNTIyYTY0MDMwMDA0NmQxMGVjMTdh
ZGVlNTllNWYzY2VmYTlkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51
bXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgog
I2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvTWVkaWFUb29sYm94U1BJLmg+CkBAIC02Niw5ICs2Nywx
MCBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKICAgICAgICAg
U2VnbWVudChSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYmKTsKICNlbmRpZgorICAg
ICAgICBTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50KFZlY3Rv
cjx1aW50OF90PiYmKTsKICAgICAgICAgU2VnbWVudChTZWdtZW50JiYpID0gZGVmYXVsdDsKLSAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VWZWN0b3IoKTsKKyAgICAgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAgICAgICAgIHNpemVfdCByZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90LCB1aW50OF90KiBk
ZXN0aW5hdGlvbikgY29uc3Q7CkBAIC03OCw3ICs4MCw4IEBAIHB1YmxpYzoKICNpZiBIQVZFKE1U
X1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICAgICAgUmV0YWluUHRyPE1UUGx1Z2luQnl0
ZVNvdXJjZVJlZj4sCiAjZW5kaWYKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PgorICAgICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+LAorICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KICAg
ICAgICAgPiBtX3NlZ21lbnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAppbmRleCBlZWQ2ZTIwMjg5OGM3NDgwYzBlNDljZDU0Y2QzMzkxYWJiYTU0NzExLi5lOGVm
ZWRiNGZmMjhkNTczYjYxYzAwOGRjYWE0NjZhYWQxNWUzMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHN0YXRpYyBib29sIGlzV2VibVBh
cnNlckF2YWlsYWJsZSgpCiAKIHVzaW5nIG5hbWVzcGFjZSB3ZWJtOwogCi1jbGFzcyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpTdHJlYW1pbmdWZWN0b3JSZWFkZXIgZmluYWwgOiBwdWJsaWMgd2Vi
bTo6UmVhZGVyIHsKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNlZ21lbnRSZWFkZXIg
ZmluYWwgOiBwdWJsaWMgd2VibTo6UmVhZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFNlZ21lbnQoU2VnbWVudCYmIHNlZ21lbnQpCkBA
IC01OTUsNyArNTk1LDcgQEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihX
VEY6Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQorICAgIDogbV9yZWFk
ZXIoV1RGOjptYWtlVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkpCiB7CiAgICAgaWYgKGlzV2Vi
bVBhcnNlckF2YWlsYWJsZSgpKQogICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaAppbmRleCA5NTI5NzZiMjcyZjcxMTg1YmI3ODdmNWFhMzQyM2M0Zjg3ZDZjNGE2Li4w
YmNkZjkzNTcyYjcxYzBkYzE1MzRiZjBiYzUyMWVhNzZiMmI5N2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlQVZGT2Jq
QzsKIGNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFy
c2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgY2xhc3Mg
U2VnbWVudFJlYWRlcjsKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2YWls
YWJsZSgpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwpAQCAtMjgxLDcgKzI4MSw3IEBA
IHByaXZhdGU6CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Ok5vbmUgfTsKIAotICAgIFVu
aXF1ZVJlZjxTdHJlYW1pbmdWZWN0b3JSZWFkZXI+IG1fcmVhZGVyOworICAgIFVuaXF1ZVJlZjxT
ZWdtZW50UmVhZGVyPiBtX3JlYWRlcjsKIAogICAgIFZlY3RvcjxVbmlxdWVSZWY8VHJhY2tEYXRh
Pj4gbV90cmFja3M7CiAgICAgdXNpbmcgQmxvY2tWYXJpYW50ID0gVmFyaWFudDx3ZWJtOjpCbG9j
aywgd2VibTo6U2ltcGxlQmxvY2s+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKaW5kZXggMTBhMmJkMTVkZTM2ZDQ5NTY1ZTFkMDM3MGU4YjAyN2Y1MDY4NDkwMy4uOGFi
ZWFlMTA0NmQ2N2MzZjEzODhhMmQ2ZTZiOTllOTE4ZTFkMzcwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMTIzLDcgKzExMjMsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpzZXRSZXBhaW50UmVjdHMoY29uc3QgTGF5ZXJSZXBhaW50UmVjdHMmIHJlY3RzKQog
CiB2b2lkIFJlbmRlckxheWVyOjpjbGVhclJlcGFpbnRSZWN0cygpCiB7Ci0gICAgQVNTRVJUKCFt
X3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkpOworICAgIC8vIEFTU0VSVCghbV92aXNpYmxlQ29u
dGVudFN0YXR1c0RpcnR5KTsKICAgICBtX3JlcGFpbnRSZWN0c1ZhbGlkID0gZmFsc2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IGQ4ZGNiMTEwMTNjZTc2N2U4NDNmOTk3NjBkNzQ5OWI5
YmU2YzBjNzMuLmQwMDZhY2VhMDhhZjdiMTgxNjgwNjQzODEyNWVlOWUxODk2NGI2NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmNwcApAQCAtMTkyLDkgKzE5MiwxMyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBm
bGFnKQogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZERpcnR5Q2hhbmdlZChmbGFnKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkK
K3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYgYnVmZmVySGFuZGxlKQogewotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+
YXBwZW5kKGRhdGEudmVjdG9yKCkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVt
b3J5OjptYXAoYnVmZmVySGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVk
QnVmZmVyKGJ1ZmZlckhhbmRsZS5kYXRhU2l6ZSkpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5OjphYm9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGM5MTI5MDE1OGQ4M2VjOTYw
MjVlYzk1OTMzZjJhMzFiNzVlNWVhM2YuLjc3ZDgyN2FiMzAzMmExNjRiM2Y0YTc2ZTAxODE4NmZm
N2I5MTQzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgi
CisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgpAQCAtODcsNyArODgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgY2FuU3dpdGNoVG9U
eXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBzZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1v
ZGUpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAgICAgdm9pZCBhYm9y
dCgpOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21N
ZWRpYVNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZl
ZmU4ZjU1ZjlkODg1OWMxYjUwOWY2N2I1MjNmN2M3ODUwOGQ3OWIuLjhmNjIwYmEyZTk2ZmZmNjMy
ZWYzZDAzMmE1YjBjNDc4NDk4ZmUyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTI5LDcgKzI5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIENhblN3
aXRjaFRvVHlwZShXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSkgLT4gKGJvb2wgY2Fu
U3dpdGNoKSBTeW5jaHJvbm91cwogICAgIFNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBw
ZW5kTW9kZSBhcHBlbmRNb2RlKQotICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkK
KyAgICBBcHBlbmQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFi
b3J0KCkKICAgICBSZXNldFBhcnNlclN0YXRlKCkKICAgICBSZW1vdmVkRnJvbU1lZGlhU291cmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCA2YmFjYTM0ZGM3
MGQ0M2M5Zjk0YmUzY2QzMTZlZGJkZDFlM2U1OTNmLi43NTZiMjQwYjZmYTdiYjViZThlY2JmZTcw
Zjk1OWM5ODczMTY3OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
CkBAIC00OCw2ICs0OCwxOSBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1l
bW9yeTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRC
dWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAoreworICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBz
aXplKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgICAgIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+
ZGF0YSgpKTsKKyAgICAgICAgfSwKKyAgICAgICAgW2RhdGFTaXplXSAoKSAtPiBzaXplX3Qgewor
ICAgICAgICAgICAgcmV0dXJuIGRhdGFTaXplOworICAgICAgICB9CisgICAgfSk7Cit9CisKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjp0YWtlT3duZXJz
aGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmgKaW5kZXggNTZhMWY1Njk5NzcwNWRhMDBhOWRjNDYxOWZlMTIzMTRhZGRmZDJm
Ni4uZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5z
aWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAorICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworCiBwcml2YXRlOgogI2lmIE9TKERB
UldJTikKICAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KFByb3RlY3Rpb24p
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9T
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZmNiMDEyMjIzNDNl
NzU4ZGU2NjQ2NjgzNTJiZDEyODRhN2ZmZTQzNC4uNDU4ZTNiYTRiMDhjODA4NzExZTVmMmVhZjA2
NTFlN2ZkZGM0ZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCwx
MiArNzgsMTkgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1h
cCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBw
ZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OkFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSkpLCBtX3JlbW90ZVNvdXJj
ZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZE1lbW9yeTo6
Y29weUJ1ZmZlcihkYXRhKTsKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAg
c2hhcmVkRGF0YS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisKKyAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFu
ZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgorICAgIGhhbmRsZS50YWtlT3duZXJz
aGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7CisKKyAgICBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OkFwcGVuZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2hh
cmVkRGF0YS0+c2l6ZSgpIH0pLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQog
CiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmgKaW5kZXggMThiOTkwNmNkY2M2MzRjN2I4MDE0NTEzN2IzZTBiOWM0OTU4Njg4
My4uMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNv
dXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmlu
YWw7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAg
IHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438664</attachid>
            <date>2021-09-20 06:02:31 -0700</date>
            <delta_ts>2021-09-20 06:37:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230329-20210920230230.patch</filename>
            <type>text/plain</type>
            <size>61602</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzNTRjZTU2ZTg3Mjc5
OWU1NGQ4NDA1Y2FmZjA1NmFjYmFlYTI5My4uYzEzNjYyNTAzMzdhZGZkZGFkZWQ3NjcwZjg2ZWNk
NTEwMTNkNDdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIxLTA5LTIwICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9y
eSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8g
dGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAg
ICBVc2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgVmVjdG9yIHRvIHBhc3MgZGF0YSB0byB0aGUg
U291cmNlQnVmZmVyJ3MgcmVsYXRlZAorICAgICAgICBjbGFzc2VzIChTb3VyY2VCdWZmZXIsIFNv
dXJjZUJ1ZmZlclByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclBhcnNlcikuCisgICAgICAgIE1vZGlm
eSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIHRvIG5ldmVyIHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRp
b24gYW5kIGNvcHkKKyAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgY29udGVudC4gSW5zdGVh
ZCwgd2UgdXNlIENNQmxvY2tCdWZmZXIgb2JqZWN0cyB0aGF0IHJldGFpbiB0aGUKKyAgICAgICAg
YmFja2luZyBTaGFyZWRCdWZmZXIgYW5kIHVzZSBvZmZzZXRzIGluc2lkZSB0aGlzIFNoYXJlZEJ1
ZmZlciB0byByZWZlcmVuY2UgdGhlIGRhdGEuCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMgcmVxdWlyZXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBhcyBhIE5TRGF0YSBjYW4gd3JhcCBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gY2hhbmdlIGZyb20gYW4gb2JzZXJ2YWJsZSBzdGFu
ZHBvaW50IG90aGVyIHRoYW4gdGhlIEdQVSBtZW1vcnkgdXNhZ2UKKyAgICAgICAgYmVpbmcgZHJh
c3RpY2FsbHkgcmVkdWNlZCAoZnJvbSA3MDBNQiB3aGVuIHdhdGNoaW5nIGEgNEsvNjBmcHMgWW91
VHViZSB2aWRlbyB0byBqdXN0IG92ZXIgMjAwTUIKKyAgICAgICAgb24gYW4gaU1hYyBQcm8gKHdo
aWNoIG9ubHkgaGFzIHNvZnR3YXJlIFZQOSBkZWNvZGluZykuCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIGFyZSBmdWxseSBleGVyY2lzaW5nIHRoaXMgbmV3IGNvZGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6IFNpbXBsaWZ5IGxvZ2ljIGFyb3VuZCBt
X3BlbmRpbmdBcHBlbmREYXRhIG1lbWJlci4KKyAgICAgICAgT25seSBvbmUgYXBwZW5kQnVmZmVy
IG9wZXJhdGlvbiBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZSBvdGhlcndpc2UgYXBw
ZW5kQnVmZmVyCisgICAgICAgIHdpbGwgdGhyb3c7IGFzIHN1Y2gsIHRoZXJlJ3Mgbm8gbmVlZCB0
byBhcHBlbmQgdGhlIGRhdGEgdG8gYSB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OmFib3J0SWZVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
YXBwZW5kQnVmZmVyVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oOiBBZGQgbmV3IERhdGFTZWdtZW50IHR5cGUgdGhhdCB0YWtlcyBhIFByb3ZpZGVyIGlu
IGNvbnN0cnVjdG9yLgorICAgICAgICBBIFByb3ZpZGVyIHByb3ZpZGVzIHR3byBGdW5jdGlvbiBt
ZW1iZXJzIGRhdGEgYW5kIHNpemUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwOiBUaGUgQXVkaW9GaWxlUmVhZGVyQ29jb2EgcmVxdWlyZWQK
KyAgICAgICAgdGhlIENNQmxvY2tCdWZmZXIgY29udGFpbmluZyB0aGUgY29tcHJlc3NlZCBjb250
ZW50IHRvIGJlIGNvbnRpZ3VvdXMuIFRoaXMgaXMgbm8KKyAgICAgICAgbG9uZ2VyIGd1YXJhbnRl
ZWQgc28gZW5zdXJlIHRoYXQgdGhlIENNQmxvY2tCdWZmZXIgaXMgY29udGlndW91cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6Y29udGlndW91c0NvbXBsZXRl
QmxvY2tCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6VHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpj
cmVhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6QXVkaW9UcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tE
YXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVz
ZXQpOgorCiAyMDIxLTA5LTA3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVjb2Rpbmcgd2VibSBmaWxlIHdpdGggbW9yZSB0aGFuIDIgY2hhbm5lbHMgd2ls
bCBmYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzQyZThkZjYzMmE0OGMzZDk1ZTIxY2Q4ODcw
OGIyZTRhOGI0ODE3Li5lNjU4M2RlOTkxNTk4MWY3YTg0MjI2YzljNzg3OTMxYjI2ZmE2Nzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOS0yMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgZm9y
IHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRvIHRoZSBH
UFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOiBBZGQgcmVx
dWlyZWQgQ29yZU1lZGlhIG1ldGhvZHMuCisKIDIwMjEtMDktMDcgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWNvZGluZyB3ZWJtIGZpbGUgd2l0aCBtb3Jl
IHRoYW4gMiBjaGFubmVscyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBmNDU4NGZmMzUyODI1NmNlOTA3
MDU4NDZjODBkYTVlZGUwNjQ2ODNjLi5iYWVlOWExMWI1MDFhNDE1YzRjZjliZDZmMzU3OTM1ZDY0
MzIyMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIK
ICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlz
dC5oIgpAQCAtMzk0LDcgKzM5NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphYm9ydElmVXBkYXRp
bmcoKQogCiAgICAgLy8gNC4xLiBBYm9ydCB0aGUgYnVmZmVyIGFwcGVuZCBhbGdvcml0aG0gaWYg
aXQgaXMgcnVubmluZy4KICAgICBtX2FwcGVuZEJ1ZmZlclRpbWVyLnN0b3AoKTsKLSAgICBtX3Bl
bmRpbmdBcHBlbmREYXRhLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IG51bGxw
dHI7CiAgICAgbV9wcml2YXRlLT5hYm9ydCgpOwogCiAgICAgLy8gNC4yLiBTZXQgdGhlIHVwZGF0
aW5nIGF0dHJpYnV0ZSB0byBmYWxzZS4KQEAgLTQ5NCw3ICs0OTUsOCBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGRhdGEsCiAKICAgICAvLyBOT1RFOiBSZXR1cm4gdG8gMy4yIGFwcGVuZEJ1ZmZlcigpCiAg
ICAgLy8gMy4gQWRkIGRhdGEgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyLgotICAgIG1f
cGVuZGluZ0FwcGVuZERhdGEuYXBwZW5kKGRhdGEsIHNpemUpOworICAgIEFTU0VSVCghbV9wZW5k
aW5nQXBwZW5kRGF0YSk7CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIHNpemUpOwogCiAgICAgLy8gNC4gU2V0IHRoZSB1cGRhdGluZyBhdHRyaWJ1
dGUgdG8gdHJ1ZS4KICAgICBtX3VwZGF0aW5nID0gdHJ1ZTsKQEAgLTUyNCwxOCArNTI2LDE0IEBA
IHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAgICAvLyBodHRw
czovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9vcAogICAgIC8v
IFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9rZWQsIHJ1biB0
aGUgZm9sbG93aW5nIHN0ZXBzOgogCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0
YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6IElm
IHRoZSBpbnB1dCBidWZmZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3JlIGRh
dGEgc3RlcCBiZWxvdy4KLSAgICBpZiAoIW1fcGVuZGluZ0FwcGVuZERhdGEuc2l6ZSgpKSB7Cisg
ICAgaWYgKCFhcHBlbmREYXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291
cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2Vl
ZGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIE1hbnVhbGx5IGNsZWFyIG91
dCB0aGUgbV9wZW5kaW5nQXBwZW5kRGF0YSBWZWN0b3IsIGluIGNhc2UgdGhlIHBsYXRmb3JtIGlt
cGxlbWVudGF0aW9uCi0gICAgLy8gcmVqZWN0cyBhcHBlbmRpbmcgdGhlIGJ1ZmZlciBmb3Igd2hh
dGV2ZXIgcmVhc29uLgotICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGd1
YXJhbnRlZSB0aGUgbW92ZSBmcm9tIHRoaXMgVmVjdG9yLCBhbmQgd2Ugc2hvdWxkCi0gICAgLy8g
YXNzZXJ0IGhlcmUgdG8gY29uZmlybSB0aGF0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODAwMy4KLSAgICBtX3ByaXZhdGUtPmFwcGVuZChXVEZNb3ZlKG1f
cGVuZGluZ0FwcGVuZERhdGEpKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmNsZWFyKCk7Cisg
ICAgbV9wcml2YXRlLT5hcHBlbmQoYXBwZW5kRGF0YS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAog
dm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBl
bmRSZXN1bHQgcmVzdWx0KQpAQCAtMTIxMSw3ICsxMjA5LDEwIEBAIHZvaWQgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlUmVwb3J0RXh0cmFNZW1vcnlDb3N0KHVpbnQ2NF90IGV4dHJh
TWVtb3J5CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCh1
aW50NjRfdCBleHRyYU1lbW9yeSkKIHsKLSAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QgPSBt
X3BlbmRpbmdBcHBlbmREYXRhLmNhcGFjaXR5KCkgKyBleHRyYU1lbW9yeTsKKyAgICB1aW50NjRf
dCBleHRyYU1lbW9yeUNvc3QgPSBleHRyYU1lbW9yeTsKKyAgICBpZiAobV9wZW5kaW5nQXBwZW5k
RGF0YSkKKyAgICAgICAgZXh0cmFNZW1vcnlDb3N0ICs9IG1fcGVuZGluZ0FwcGVuZERhdGEtPnNp
emUoKTsKKwogICAgIGlmIChleHRyYU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5
Q29zdCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA4ODhkMmQ2ZTk4ZGFiZjk3ZGFiZTFjOTFm
MjQ4YjEwODVkNjkyYjYxLi5hNzIzM2QyMWUwODFhYTRhOGQ4NDI1NGIyOTNhNzMyZjY4NDEzZThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmgKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2
b2lkKigpPiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiBtX3BlbmRpbmdBcHBlbmREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGlu
Z0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0
cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKaW5kZXggYTE5MTc4MTQ3M2RjYWM3NmM1YjA0
MTU1NjkxODQxNDcwZDNhMjI0My4uZjIzZDY2MzIyMGRjNzQyOThiOWI5ZGQ5MDFkMGNjNjVmYWE1
NWM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5jcHAKQEAgLTExMyw2ICsxMTMsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0XwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMsIE9TU3RhdHVz
LCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCBDTUJsb2NrQnVmZmVyUmVmIHNv
dXJjZUJ1ZmZlciwgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tC
dWZmZXJDdXN0b21CbG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRU
b0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxv
Y2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgc291cmNl
QnVmZmVyLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwg
ZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSwgUEFMX0VYUE9SVCkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQXBwZW5kQnVmZmVyUmVmZXJlbmNlLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYg
dGhlQnVmZmVyLCBDTUJsb2NrQnVmZmVyUmVmIHRhcmdldEJCdWYsIHNpemVfdCBvZmZzZXRUb0Rh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MpLCAodGhlQnVm
ZmVyLCB0YXJnZXRCQnVmLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZsYWdzKSwgUEFMX0VY
UE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29y
ZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHksIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgc3RydWN0dXJlQWxsb2NhdG9yLCB1aW50MzJfdCBzdWJCbG9ja0NhcGFjaXR5LCBDTUJsb2Nr
QnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0
cnVjdHVyZUFsbG9jYXRvciwgc3ViQmxvY2tDYXBhY2l0eSwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0
KSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlLCBGb3Vy
Q2hhckNvZGUsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBP
UlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVN
ZWRpYSwgQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZSwgQ01NZWRpYVR5cGUsIChDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCBkNGZmMDQ2OGMz
MThjMmYzNDVkYTk4NDU5ZmU3MTQ5YjM3NWI0M2RlLi41ZmRmZjg0NzliNTMxNWNkYWFiMTBjNzY5
YjVmZTllNjQ0YzI1MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oCkBAIC0xNzUsNiArMTc1LDEwIEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQs
CiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlQ29udGlndW91cywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1
cmVBbGxvY2F0b3IsIENNQmxvY2tCdWZmZXJSZWYgc291cmNlQnVmZmVyLCBDRkFsbG9jYXRvclJl
ZiBibG9ja0FsbG9jYXRvciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBj
dXN0b21CbG9ja1NvdXJjZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgs
IENNQmxvY2tCdWZmZXJGbGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJP
dXQpLCAoc3RydWN0dXJlQWxsb2NhdG9yLCBzb3VyY2VCdWZmZXIsIGJsb2NrQWxsb2NhdG9yLCBj
dXN0b21CbG9ja1NvdXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tC
dWZmZXJPdXQpKQogI2RlZmluZSBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29udGlndW91cyBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQXBwZW5kQnVmZmVy
UmVmZXJlbmNlLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyLCBDTUJsb2Nr
QnVmZmVyUmVmIHRhcmdldEJCdWYsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MpLCAodGhlQnVmZmVyLCB0YXJnZXRCQnVmLCBv
ZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZsYWdzKSkKKyNkZWZpbmUgQ01CbG9ja0J1ZmZlckFw
cGVuZEJ1ZmZlclJlZmVyZW5jZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckFwcGVu
ZEJ1ZmZlclJlZmVyZW5jZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIENNQmxvY2tCdWZmZXJDcmVhdGVFbXB0eSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJl
ZiBzdHJ1Y3R1cmVBbGxvY2F0b3IsIHVpbnQzMl90IHN1YkJsb2NrQ2FwYWNpdHksIENNQmxvY2tC
dWZmZXJGbGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3Ry
dWN0dXJlQWxsb2NhdG9yLCBzdWJCbG9ja0NhcGFjaXR5LCBmbGFncywgYmxvY2tCdWZmZXJPdXQp
KQorI2RlZmluZSBDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkgc29mdExpbmtfQ29yZU1lZGlhX0NN
QmxvY2tCdWZmZXJDcmVhdGVFbXB0eQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUsIEZvdXJDaGFy
Q29kZSwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01G
b3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUsIENNTWVk
aWFUeXBlLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMDU0Y2U1YTQyOTI0YzRkOWYwYzY5
ZjJkYTg2ZDkwNzc5YTkxMDgxNS4uMmY4NTUyNjc2ODc1NmI2YjMwMWNhMGYwMDhkMTQyZWFhMTll
ZDAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01Miw2
ICs1MiwxMiBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKKyAgICA6IG1fc2l6ZShw
cm92aWRlci5zaXplKCkpCit7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7Cit9CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0
YSkpOwpAQCAtMjM2LDYgKzI0MiwxMSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBjbG9uZTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIp
KSk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAg
IGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMjY3LDEwICsyNzgsMzQgQEAgYm9vbCBT
aGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4
KSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgbGVuZ3RoKSBjb25zdAogewotICAgIEFTU0VSVChsZW5ndGggPD0gc2l6ZSgpKTsKKyAg
ICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOworfQorCit2b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdAoreworICAgIEFTU0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsK
ICAgICBhdXRvIGRlc3RpbmF0aW9uUHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc3RpbmF0
aW9uKTsKLSAgICBhdXRvIHJlbWFpbmluZyA9IHN0ZDo6bWluKGxlbmd0aCwgc2l6ZSgpKTsKLSAg
ICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKSB7CisgICAgYXV0byByZW1haW5pbmcg
PSBzdGQ6Om1pbihsZW5ndGgsIHNpemUoKSAtIG9mZnNldCk7CisKKyAgICBzaXplX3QgaSA9IDA7
CisgICAgc2l6ZV90IGN1cnJlbnRPZmZzZXQgPSAwOworICAgIGZvciAoOyBpIDwgbV9zZWdtZW50
cy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvJiBzZWdtZW50ID0gbV9zZWdtZW50c1tpXTsK
KyAgICAgICAgaWYgKG9mZnNldCA8IGN1cnJlbnRPZmZzZXQgKyBzZWdtZW50LnNlZ21lbnQtPnNp
emUoKSkgeworICAgICAgICAgICAgc2l6ZV90IHBvc2l0aW9uSW5TZWdtZW50ID0gb2Zmc2V0IC0g
Y3VycmVudE9mZnNldDsKKyAgICAgICAgICAgIHNpemVfdCBhbW91bnRUb0NvcHlUaGlzVGltZSA9
IHN0ZDo6bWluKHJlbWFpbmluZywgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbklu
U2VnbWVudCk7CisgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21lbnQuc2Vn
bWVudC0+ZGF0YSgpICsgcG9zaXRpb25JblNlZ21lbnQsIGFtb3VudFRvQ29weVRoaXNUaW1lKTsK
KyAgICAgICAgICAgIHJlbWFpbmluZyAtPSBhbW91bnRUb0NvcHlUaGlzVGltZTsKKyAgICAgICAg
ICAgIGlmICghcmVtYWluaW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGRlc3RpbmF0aW9uUHRyICs9IGFtb3VudFRvQ29weVRoaXNUaW1lOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudE9mZnNldCArPSBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKTsKKyAgICB9CisKKyAgICBmb3IgKGkgKz0gMTsgaSA8IG1fc2VnbWVudHMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHNbaV07CiAgICAgICAg
IHNpemVfdCBhbW91bnRUb0NvcHlUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFpbmluZywgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkpOwogICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21l
bnQuc2VnbWVudC0+ZGF0YSgpLCBhbW91bnRUb0NvcHlUaGlzVGltZSk7CiAgICAgICAgIHJlbWFp
bmluZyAtPSBhbW91bnRUb0NvcHlUaGlzVGltZTsKQEAgLTMxMiw3ICszNDcsOCBAQCBjb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICNpZiBVU0Uo
R1NUUkVBTUVSKQogICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiBkYXRhKSB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29u
c3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92
aWRlcikgeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RG
Ojp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzk1LDcgKzQzMSw4IEBA
IHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICNpZiBVU0Uo
R1NUUkVBTUVSKQogICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiBkYXRhKSB7IHJldHVybiBkYXRhLT5zaXplKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29u
c3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEuc2l6ZSgp
OyB9CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7
IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3Zp
ZGVyKSB7IHJldHVybiBwcm92aWRlci5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6
OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCmluZGV4IDIzNjlhYWQ4YjM1NjM5ZTJlYTVhOWFkMTgyNjg1NTM3OTVl
NmI3NzAuLmI4ZmQ2MTEyNWY0YmE0NzdiYTIxMzcxMzkyMTJhYjY3ZjZmZGE3ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTIzLDYgKzEyNCw3IEBAIHB1
YmxpYzoKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKICAgICB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OwogCiAgICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGlt
bXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCiAg
ICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFT
ZWdtZW50LgpAQCAtMTQ4LDYgKzE1MCwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7
IH0KIAorICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICAgICAgV1RGOjpGdW5jdGlv
bjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxzaXpl
X3QoKT4gc2l6ZTsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKICNpZiBVU0UoRk9VTkRBVElPTikKICAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKQEAg
LTE3MSw2ICsxODAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgRGF0YVNlZ21lbnQoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYg
cHJvdmlkZXIpCisgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVy
KSkgeyB9CiAKICAgICAgICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQpA
QCAtMTgyLDEwICsxOTMsMTMgQEAgcHVibGljOgogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgICAg
ICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgICAgICBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11
dGFibGVEYXRhOwogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIH07CiAK
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmKTsKKwogICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKQEAgLTIxNiw2ICsyMzAs
NyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6
ZV90KTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwogI2lmIFVT
RShDRikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9G
aWxlUmVhZGVyQ29jb2EuY3BwCmluZGV4IDFiMGQ0OGUzOWE4YzdiN2JjYTJlOWRiMzQyNmE5MTQ4
YTA2OGFlOGUuLjIwNzc2YzlhM2RmMmE1ZTUyOTYwYmI0ODY2MDUwOWJlZTI4NTk0MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRl
ckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0ZpbGVSZWFkZXJDb2NvYS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlh
U2FtcGxlQVZGT2JqQy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCIK
ICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KQEAgLTEyOSw2ICsxMzAs
NyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAKIHB1YmxpYzoKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1f
dHJhY2s7CiAjZW5kaWYKQEAgLTE4MCw2ICsxODIsNyBAQCBib29sIEF1ZGlvRmlsZVJlYWRlcjo6
aXNNYXliZVdlYk0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKSBjb25zdAog
CiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRl
cjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpIGNv
bnN0CiB7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRh
U2l6ZSk7CiAgICAgYXV0byBwYXJzZXIgPSBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTSgpKTsKICAgICBib29sIGVycm9yID0gZmFsc2U7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gYXVkaW9UcmFja0lkOwpAQCAtMjEyLDEyICsyMTUsMTIgQEAgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEo
Y29uc3QgdWkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdHJhY2stPnNldERpc2NhcmRQ
YWRkaW5nKGRpc2NhcmRQYWRkaW5nKTsKICAgICB9KTsKLSAgICBTb3VyY2VCdWZmZXJQYXJzZXI6
OlNlZ21lbnQgc2VnbWVudCh7IGRhdGEsIGRhdGFTaXplIH0pOworICAgIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudCBzZWdtZW50KG1ha2VSZWYoYnVmZmVyLmdldCgpKSk7CiAgICAgcGFyc2Vy
LT5hcHBlbmREYXRhKFdURk1vdmUoc2VnbWVudCkpOwogICAgIGlmICghdHJhY2spCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHBhcnNlci0+Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKCk7
Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+KEF1ZGlvRmls
ZVJlYWRlcldlYk1EYXRhIHsgdHJhY2sucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShkdXJhdGlv
biksIFdURk1vdmUoc2FtcGxlcykgfSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxl
UmVhZGVyV2ViTURhdGE+KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgV1RGTW92ZShidWZmZXIp
LCB0cmFjay5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGR1cmF0aW9uKSwgV1RGTW92ZShzYW1w
bGVzKSB9KTsKIH0KIAogc3RydWN0IFBhc3N0aHJvdWdoVXNlckRhdGEgewpAQCAtMzQ3LDE2ICsz
NTAsMjEgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2Vi
TURhdGEoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXMKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fd2VibURhdGEtPm1fc2FtcGxlcy5zaXplKCk7IGkrKykgewogICAgICAgICBhdXRvJiBz
YW1wbGUgPSBtX3dlYm1EYXRhLT5tX3NhbXBsZXNbaV07CiAgICAgICAgIENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZUJ1ZmZlciA9IHNhbXBsZS0+c2FtcGxlQnVmZmVyKCk7Ci0gICAgICAgIGF1dG8g
YnVmZmVyID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsK
LSAgICAgICAgQVNTRVJUKFBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGJ1ZmZl
ciwgMCwgMCkpOwotICAgICAgICBpZiAoIVBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1
b3VzKGJ1ZmZlciwgMCwgMCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1
ZGlvLCAiVW5hYmxlIHRvIHJlYWQgc2FtcGxlIGNvbnRlbnQgKG5vdCBjb250aWd1b3VzKSIpOwot
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgYXV0byByYXdCdWZmZXIgPSBQQUw6OkNN
U2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIpOworICAgICAgICBSZXRhaW5Q
dHI8Q01CbG9ja0J1ZmZlclJlZj4gYnVmZmVyID0gcmF3QnVmZmVyOworICAgICAgICAvLyBNYWtl
IHN1cmUgYmxvY2sgYnVmZmVyIGlzIGNvbnRpZ3VvdXMuCisgICAgICAgIGlmICghUEFMOjpDTUJs
b2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMocmF3QnVmZmVyLCAwLCAwKSkgeworICAgICAgICAg
ICAgQ01CbG9ja0J1ZmZlclJlZiBjb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIGlmIChQQUw6OkNNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51bGxwdHIsIHJhd0J1
ZmZlciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgMCwgMCwgJmNvbnRpZ3VvdXNCdWZmZXIpICE9IGtD
TUJsb2NrQnVmZmVyTm9FcnIpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChX
ZWJBdWRpbywgImZhaWxlZCB0byBjcmVhdGUgY29udGlndW91cyBibG9jayBidWZmZXIiKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVm
ZmVyID0gYWRvcHRDRihjb250aWd1b3VzQnVmZmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHNp
emVfdCBzcmNTaXplID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChidWZmZXIpOwor
ICAgICAgICBzaXplX3Qgc3JjU2l6ZSA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgo
YnVmZmVyLmdldCgpKTsKICAgICAgICAgY2hhciogc3JjRGF0YSA9IG51bGxwdHI7Ci0gICAgICAg
IGlmIChQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihidWZmZXIsIDAsIG51bGxwdHIs
IG51bGxwdHIsICZzcmNEYXRhKSAhPSBub0VycikgeworICAgICAgICBpZiAoUEFMOjpDTUJsb2Nr
QnVmZmVyR2V0RGF0YVBvaW50ZXIoYnVmZmVyLmdldCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAm
c3JjRGF0YSkgIT0gbm9FcnIpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1
ZGlvLCAiVW5hYmxlIHRvIHJldHJpZXZlIGRhdGEiKTsKICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMjI2NjViYmU2NjA5N2I1Yjg5ZDA0MDJl
YTI0OTRlOTVmZWEwZjc0Ny4uMzRhZjJhYWNhNjg3OTJiZWU2MDE0MGQyMjc4YzBkNDQ0MzYwNDYw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJNZWRpYVNh
bXBsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlNhbXBs
ZU1hcC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+CkBAIC0xMzE1LDYgKzEzMTYsMTYgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5h
bFNhbXBsZSkKICAgICB1cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAK
K3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
KQoreworICAgIFdURkNyYXNoKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBw
ZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChidWZmZXItPmV4
dHJhY3REYXRhKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5oCmluZGV4IGVkYjUxYWQ1NjAzNDYxNzQ1NjRlMjExMWNlZDI4MTI1ZmFjMTAyYWIuLjQ0
N2VjYTNiNGRiZGE5MmI0NDU5ZmJmN2I3YTE0ODk4ZGJlNTIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCiBlbnVtIGNsYXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1v
ZGUgOiB1aW50OF90IHsKQEAgLTY2LDcgKzY3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY3RpdmUoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2ln
bmVkIGNoYXI+JiYpID0gMDsKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZCBzaG91bGQgbmV2
ZXIgYmUgY2FsbGVkIGRpcmVjdGx5IGFuZCBiZSBvdmVycmlkZGVuIGluc3RlYWQuCisgICAgdmly
dHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CisgICAgdmlydHVhbCB2
b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBhZjJhMmU2
YzA0YWY1M2I2MmEzNWJiMDc5MWI2Y2M1ODkwMDllMWE1Li5lYzRlMzQxMmVkNTU2N2FjNzUzMTk1
MTdmMjk3ZDAwYTYzYTU2Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgIk1l
ZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQg
IlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2ltcG9y
dCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KQEAgLTIxMSw4
ICsyMTIsOCBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQygpCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShT
ZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKLSAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnRha2VWZWN0b3IoKSk7Ci0gICAgYXV0byBuc0RhdGEg
PSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNl
Z21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVy
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdz
ID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5k
U3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVh
bURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA5MmQ5YzhkZDUyZjdjNTIw
MmQxNmU3ZjhhZmE3MDdlZDJiNjU3ZTdlLi40MTM2MWFjNjE5NDk2ODg4MDM4ZWVkNmM4MTNhNjQ4
M2Y5MDlkYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRf
dCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZm
ZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4
IGZmYTJmYmEwZGYwNmU4ZWRkNjRhYmNjYmQ0ZjdhYWU1MzAwOTdmNTIuLjlhODQ2OTYxNTg4OTgy
ZDlhN2E4ZDFkZDU3ZDMwYTc0ZGVhNzE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC01NzIsOSArNTcyLDkgQEAg
c3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCkKICAgICByZXR1
cm4gZ2xvYmFsUXVldWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFw
cGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEtPnNpemUo
KSk7CiAKICAgICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9yZSk7CiAgICAgQVNTRVJUKCFt
X2Fib3J0U2VtYXBob3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IDE2YmNiZTBj
NTc3ZmM0MjBkYmE0NzcwZTEzNjU1M2Q5NzAzNThlMzMuLjMzYmUzNTJhNTQzNDQ2ZjIxZTIzYWE1
NjI3MGRjZWFlMTY4NjE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRlICJDb250ZW50VHlw
ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCiAjaW5j
bHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNvZnRMaW5rLmg+CkBAIC03Nyw4ICs3OCw4IEBA
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihm
bG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFZlY3Rv
cjx1aW50OF90PiYmIHNlZ21lbnQpCi0gICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkK
K1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CiAKQEAgLTk4
LDkgKzk5LDkgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNv
bnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJj
ZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCisgICAgICAgIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2
ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+c2l6ZSgpOwogICAgICAg
ICB9CiAgICAgKTsKIH0KQEAgLTExOSwxNSArMTIwLDE1IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwg
dWluCiAgICAgICAgICAgICByZXR1cm4gc2l6ZVJlYWQ7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAg
ICAgICAgWyZdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewotICAgICAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uLCB2ZWN0b3IuZGF0YSgpICsgcG9zaXRpb24sIHNpemVUb1JlYWQpOwor
ICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVzdGluYXRpb24sIHBvc2l0aW9uLCBzaXplVG9S
ZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXplVG9SZWFkOwogICAgICAgICB9CiAgICAgKTsK
IH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVZl
Y3RvcigpCitSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRh
a2VTaGFyZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwK
ICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpAQCAtMTM1LDEyICsxMzYsMjggQEAg
VmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVZlY3Rvcigp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSgpKTsK
ICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3Iu
ZGF0YSgpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmVjdG9yOworICAgICAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgIH0sCisjZW5k
aWYKKyAgICAgICAgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSk7CisgICAgICAgIH0KKyAgICApOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAorI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1B
VF9SRUFERVIpCisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNl
UmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtdKFZlY3Rvcjx1aW50
OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6ZXhjaGFuZ2UodmVjdG9yLCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5w
dHIoKTsKICAgICAgICAgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDRl
ZTg2YjJjZmE2MGVlYTZkZjZkMjk3NzUyNTcwNWUyNjNlNWE1OWMuLjZlYzQzOGZlOTFkNThiYjhk
OGFkZDFhZDIwM2Y1NjExZjk5MGU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC00Myw2
ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGU7CiBjbGFz
cyBNZWRpYVNhbXBsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBP
UlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJj
ZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjYsOSArNjcsMTEgQEAgcHVibGljOgogI2lm
IEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRy
PE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiB0YWtlVmVjdG9yKCk7CisgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRC
dWZmZXIoKTsKKyAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFj
a2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsK
ICAgICAgICAgc2l6ZV90IHJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3QsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uKSBjb25zdDsKQEAgLTc4LDcgKzgxLDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRf
UExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRl
U291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+CisgICAgICAg
ICAgICBSZWY8U2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGVlZDZlMjAyODk4Yzc0ODBjMGU0
OWNkNTRjZDMzOTFhYmJhNTQ3MTEuLjY3ZDY0N2QyNDgyOTEyZGY4M2MxYjRmM2RhMDIzMGNiNTRm
ZGIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0yNzMsNyArMjcz
LDcgQEAgc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkKIAogdXNpbmcgbmFtZXNw
YWNlIHdlYm07CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlN0cmVhbWluZ1ZlY3Rv
clJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgeworY2xhc3MgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6U2VnbWVudFJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU2Vn
bWVudChTZWdtZW50JiYgc2VnbWVudCkKQEAgLTM1NCw2ICszNTQsODAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOwogICAgIH0KIAorICAgIHN0
YXRpYyB2b2lkIEZyZWVCbG9jayh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCisgICAgewor
ICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBidWZmZXItPmRlcmVmKCk7CisgICAgfQorCisg
ICAgU3RhdHVzIFJlYWRJbnRvKHN0ZDo6c2l6ZV90IG51bVRvUmVhZCwgQ01CbG9ja0J1ZmZlclJl
ZiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90KiBudW1BY3R1YWxseVJlYWQpCisgICAgeworICAgICAg
ICBBU1NFUlQob3V0cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5UmVhZCk7CisgICAgICAgIGlmICgh
bnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RF
bm91Z2hNZW1vcnkpOworCisgICAgICAgICpudW1BY3R1YWxseVJlYWQgPSAwOworICAgICAgICBp
ZiAoIW91dHB1dEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90
RW5vdWdoTWVtb3J5KTsKKworICAgICAgICB3aGlsZSAobnVtVG9SZWFkICYmIG1fY3VycmVudFNl
Z21lbnQgIT0gbV9kYXRhLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvJiBjdXJyZW50U2VnbWVu
dCA9ICptX2N1cnJlbnRTZWdtZW50OworCisgICAgICAgICAgICBpZiAobV9wb3NpdGlvbldpdGhp
blNlZ21lbnQgPj0gY3VycmVudFNlZ21lbnQuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgYWR2
YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1
cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgQ01CbG9ja0J1ZmZl
clJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICB1aW50NjRfdCBsYXN0
UmVhZCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudDsKKyAgICAgICAgICAgIGlmICghc2hhcmVkQnVmZmVyKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2UgY291bGQgcG90ZW50aWFsbHkgYWxsb2NhdGUgbW9yZSBtZW1vcnkg
dGhhbiBuZWVkZWQgaWYgdGhlIHJlYWQgaXMgcGFydGlhbC4KKyAgICAgICAgICAgICAgICBhdXRv
IGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCBudW1Ub1JlYWQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxw
dHIsIDAsIG51bVRvUmVhZCwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLCAmcmF3
QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJO
b0VycikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91
Z2hNZW1vcnkpOworICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7
CisgICAgICAgICAgICAgICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIo
cmF3QmxvY2tCdWZmZXIsIDAsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFy
KiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAgaWYgKGVyciAhPSBrQ01CbG9j
a0J1ZmZlck5vRXJyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSBjdXJyZW50U2Vn
bWVudC5yZWFkKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBudW1Ub1JlYWQsIGJsb2NrQnVmZmVy
RGF0YSk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVT
ZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBz
aW5nbGUgRGF0YVNlZ21lbnQiKTsKKyAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBk
b2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAg
IC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhl
IGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KKyAgICAgICAg
ICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVu
dDsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVt
VG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsK
KyAgICAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgYWxsb2NhdG9y
OworICAgICAgICAgICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0gMDsKKyAgICAgICAgICAgICAg
ICBhbGxvY2F0b3IuQWxsb2NhdGVCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgYWxs
b2NhdG9yLkZyZWVCbG9jayA9IEZyZWVCbG9jazsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iu
cmVmQ29uID0gZmlyc3RTZWdtZW50LnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0U2VnbWVu
dC0+cmVmKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJD
cmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nh
c3Q8dWludDhfdCo+KGZpcnN0U2VnbWVudC0+ZGF0YSgpKSksIGZpcnN0U2VnbWVudC0+c2l6ZSgp
LCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgY2FuUmVhZCwg
MCwgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJsb2Nr
QnVmZmVyTm9FcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
Tm90RW5vdWdoTWVtb3J5KTsKKyAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IGNhblJlYWQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGJsb2NrQnVmZmVyID0gYWRvcHRDRihyYXdC
bG9ja0J1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckFw
cGVuZEJ1ZmZlclJlZmVyZW5jZShvdXRwdXRCdWZmZXIsIHJhd0Jsb2NrQnVmZmVyLCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAg
ICAgICBtX3Bvc2l0aW9uICs9IGxhc3RSZWFkOworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVh
ZCArPSBsYXN0UmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IGxh
c3RSZWFkOworICAgICAgICAgICAgbnVtVG9SZWFkIC09IGxhc3RSZWFkOworICAgICAgICAgICAg
aWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID09IGN1cnJlbnRTZWdtZW50LnNpemUoKSkKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOworICAgICAgICB9CisgICAgICAg
IGlmICghbnVtVG9SZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CisgICAgICAgIGlmICgqbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a1dvdWxkQmxvY2spOworICAgIH0KKwogICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiAgICAgdm9pZCByZXNldCgpCkBAIC01
OTUsNyArNjY5LDcgQEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihXVEY6
Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQorICAgIDogbV9yZWFkZXIo
V1RGOjptYWtlVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkpCiB7CiAgICAgaWYgKGlzV2VibVBh
cnNlckF2YWlsYWJsZSgpKQogICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKQEAgLTEwOTksNjYgKzExNzMsNDMgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGwKIAogI2RlZmluZSBQQVJTRVJfTE9HX0VSUk9SX0lGX1BP
U1NJQkxFKC4uLikgaWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJzZXIoKS5sb2dnZXJQdHIo
KS0+ZXJyb3IobG9nQ2hhbm5lbCgpLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIobG9n
Q2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlmaWVyKCkpLCBfX1ZBX0FS
R1NfXykKIAotI2lmIEVOQUJMRShWUDkpCi12b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZp
ZGVvVHJhY2tEYXRhOjpyZXNldCgpCitSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZl
cihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewotICAgIG1fY3VycmVudEJs
b2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICBUcmFja0RhdGE6OnJlc2V0KCk7CisgICAgaWYgKCFv
ZmZzZXQgJiYgIWxlbmd0aCAmJiBQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyht
X2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIDAsIDApKQorICAgICAgICByZXR1cm4gbV9jb21w
bGV0ZUJsb2NrQnVmZmVyOworICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Q29udGlndW91c0J1ZmZl
ciA9IG51bGxwdHI7CisgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMo
bnVsbHB0ciwgbV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBv
ZmZzZXQsIGxlbmd0aCwgMCwgJnJhd0NvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVy
Tm9FcnIpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQgdG8g
Y3JlYXRlIGNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICByZXR1cm4gYWRvcHRDRihyYXdDb250aWd1b3VzQnVmZmVyKTsKIH0KLSNl
bmRpZgogCi13ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0Rh
dGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNvbnN0IEZyYW1lTWV0
YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNvbnN0IENNVGltZSYg
cHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQord2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImIHJl
YWRlciwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2NF90KiBieXRl
c1JlbWFpbmluZykKIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3
QmxvY2tCdWZmZXIgPSBudWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVudFBhY2tldFNpemUgJiYg
Km1fY3VycmVudFBhY2tldFNpemUgIT0gbWV0YWRhdGEuc2l6ZSkgewotICAgICAgICAvLyBUaGUg
cGFja2V0J3MgbWV0YWRhdGEgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudGx5IHBlbmRpbmcgcGFy
dGlhbCBwYWNrZXQ7IHJlc3RhcnQuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01F
U1NBR0UoIlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNp
Y2FsIHN0YXRlIik7Ci0gICAgICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7Ci0gICAgICAgIG1f
Y3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6
ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobV9jb21wbGV0ZVBhY2tldFNpemUgJiYgKm1fY29t
cGxldGVQYWNrZXRTaXplICE9IG1ldGFkYXRhLnNpemUpIHsKKyAgICAgICAgLy8gVGhlIHBhY2tl
dCdzIG1ldGFkYXRhIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnRseSBwZW5kaW5nIGNvbXBsZXRl
IHBhY2tldDsgcmVzdGFydC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FH
RSgiVHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRlIik7
CisgICAgICAgIHJlc2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRQYWNrZXRTaXpl
KQotICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gbWV0YWRhdGEuc2l6ZTsKKyAgICBpZiAo
IW1fY29tcGxldGVQYWNrZXRTaXplKQorICAgICAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IG1l
dGFkYXRhLnNpemU7CiAKICAgICBpZiAoIW1fY3VycmVudEJsb2NrQnVmZmVyKSB7Ci0gICAgICAg
IGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsICptX2N1cnJlbnRQYWNrZXRTaXplLCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCAwLCAqbV9jdXJyZW50UGFja2V0U2l6ZSwgMCwgJnJhd0Jsb2Nr
QnVmZmVyKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJP
Ul9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQg
d2l0aCBlcnJvciIsIGVycik7CisgICAgICAgIEFTU0VSVCghbV9wYXJ0aWFsQnl0ZXNSZWFkKTsK
KyAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbU1heEJsb2NrQnVmZmVyQ2FwYWNpdHksIDAsICZyYXdCbG9ja0J1ZmZlcik7Cisg
ICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VyciB8fCAhcmF3QmxvY2tCdWZmZXIp
IHsKKyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZm
ZXJDcmVhdGVFbXB0eSBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1
cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLQogICAgICAgICBt
X2N1cnJlbnRCbG9ja0J1ZmZlciA9IGFkb3B0Q0YocmF3QmxvY2tCdWZmZXIpOwotICAgICAgICBt
X3BhcnRpYWxCeXRlc1JlYWQgPSAwOwotCi0gICAgICAgIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckFzc3VyZUJsb2NrTWVtb3J5KG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpKTsKLSAgICAgICAg
aWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01B
dWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGgg
ZXJyb3IiLCBlcnIpOwotICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwotICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCptX2N1cnJlbnRQYWNrZXRTaXpl
IDwgbV9wYXJ0aWFsQnl0ZXNSZWFkICsgKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIFBBUlNF
Ul9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkludmFsaWQgZnJhbWUgc2l6ZSBhbGxvY2F0ZWQsIGln
bm9yaW5nIHRoZSBlbnRpcmUgZnJhbWUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkICs9
ICpieXRlc1JlbWFpbmluZzsKLSAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwotICAgIH0KICAgICB3aGlsZSAoKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIHNp
emVfdCBzZWdtZW50U2l6ZUF0UG9zaXRpb24gPSAwOwotICAgICAgICB1aW50OF90KiBibG9ja0J1
ZmZlckRhdGEgPSBudWxscHRyOwotICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckdldERhdGFQb2ludGVyKG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCBtX3BhcnRpYWxCeXRl
c1JlYWQsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVm
ZmVyRGF0YSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJS
T1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBl
cnJvciIsIGVycik7Ci0gICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCpieXRlc1JlbWFpbmluZyA8IHNlZ21lbnRT
aXplQXRQb3NpdGlvbikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiQW4gZXJyb3Igb2NjdXJyZWQsIGRlc3RpbmF0aW9uIGJ1ZmZlciB0b28gc21hbGwgdG8gY29u
dGFpbiBvdXIgZnJhbWUiKTsKLSAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKLSAgICAgICAgfQogICAgICAgICB1aW50NjRfdCBieXRlc1JlYWQ7Ci0gICAg
ICAgIGF1dG8gc3RhdHVzID0gcmVhZGVyLlJlYWQoKmJ5dGVzUmVtYWluaW5nLCAodWludDhfdCop
YmxvY2tCdWZmZXJEYXRhLCAmYnl0ZXNSZWFkKTsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBzdGF0
aWNfY2FzdDxTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTZWdtZW50UmVhZGVyJj4ocmVhZGVyKS5S
ZWFkSW50bygqYnl0ZXNSZW1haW5pbmcsIG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCAmYnl0
ZXNSZWFkKTsKICAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IGJ5dGVzUmVhZDsKICAgICAgICAg
bV9wYXJ0aWFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKIApAQCAtMTE2NiwxMiArMTIxNywzMyBA
QCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNv
bnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAg
ICB9CiAKLSAgICBBU1NFUlQobV9wYXJ0aWFsQnl0ZXNSZWFkIDw9ICptX2N1cnJlbnRQYWNrZXRT
aXplKTsKLSAgICBpZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY3VycmVudFBhY2tldFNpemUp
CisgICAgQVNTRVJUKG1fcGFydGlhbEJ5dGVzUmVhZCA8PSAqbV9jb21wbGV0ZVBhY2tldFNpemUp
OworICAgIGlmIChtX3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jb21wbGV0ZVBhY2tldFNpemUpCiAg
ICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprT2tQYXJ0aWFsKTsKIAot
ICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRpb25UaW1lLCBzYW1wbGVDb3VudCwgbWV0
YWRhdGEpOworICAgIGlmICghbV9jb21wbGV0ZUJsb2NrQnVmZmVyKQorICAgICAgICBtX2NvbXBs
ZXRlQmxvY2tCdWZmZXIgPSBXVEZNb3ZlKG1fY3VycmVudEJsb2NrQnVmZmVyKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZl
cmVuY2UobV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5n
ZXQoKSwgMCwgMCwgMCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBBUlNFUl9M
T0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2Ug
dG8gY29tcGxldGUgYmxvY2sgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICB9CisgICAg
ICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgbV9wYXJ0aWFs
Qnl0ZXNSZWFkID0gMDsKKworICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjpr
T2tDb21wbGV0ZWQpOworfQogCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNv
bnN0IENNVGltZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQoreworI2lmIEVO
QUJMRShWUDkpCisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0YWRh
dGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRfb2soKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXR1czsKKworICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRp
b25UaW1lLCBzYW1wbGVDb3VudCwgbWV0YWRhdGEpOwogICAgIHJlc2V0KCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CkBAIC0xMTg2LDggKzEyNTgsMTQgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNv
bnN0IENNVGltZSYgcHIKIHsKICNpZiBFTkFCTEUoVlA5KQogICAgIHVpbnQ4X3QqIGJsb2NrQnVm
ZmVyRGF0YSA9IG51bGxwdHI7Ci0gICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7
Ci0gICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihtX2N1cnJl
bnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwgJnNlZ21lbnRTaXplQXRQb3NpdGlvbiwgbnVsbHB0ciwg
KGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG1heEhlYWRl
clNpemUgPSAzMjsgLy8gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgVlA5IHVuY29tcHJlc3NlZCBo
ZWFkZXIgaXMgMTQ0IGJpdHMgYW5kIDExIGJ5dGVzIGZvciBWUDguIFJvdW5kIGhpZ2guCisgICAg
c2l6ZV90IHNlZ21lbnRIZWFkZXJMZW5ndGggPSBzdGQ6Om1pbihtYXhIZWFkZXJTaXplLCAqbV9j
b21wbGV0ZVBhY2tldFNpemUpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3Vv
dXNDb21wbGV0ZUJsb2NrQnVmZmVyKDAsIHNlZ21lbnRIZWFkZXJMZW5ndGgpOworICAgIGlmICgh
Y29udGlndW91c0J1ZmZlcikgeworICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxF
KCJWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyIGZhaWxlZCB0byBjcmVhdGUgY29u
dGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBl
cnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihjb250aWd1b3VzQnVmZmVyLmdl
dCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpOwogICAg
IGlmIChlcnIpIHsKICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9j
a0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTE5Niw3ICsxMjc0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIKICAg
ICBib29sIGlzS2V5ID0gZmFsc2U7CiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IGZvcm1hdERlc2NyaXB0aW9uOwogICAgIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6VlA5
KSB7Ci0gICAgICAgIGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIo
YmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICBpZiAoIW1f
aGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2Vn
bWVudEhlYWRlckxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKG1f
aGVhZGVyUGFyc2VyLmtleSgpKSB7CkBAIC0xMjA5LDcgKzEyODcsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29uc3Qg
Q01UaW1lJiBwcgogICAgICAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShmb3Jt
YXREZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjb2RlYygpID09IENv
ZGVjVHlwZTo6VlA4KSB7Ci0gICAgICAgIGF1dG8gaGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRl
cihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbik7CisgICAgICAgIGF1dG8g
aGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRIZWFk
ZXJMZW5ndGgpOwogICAgICAgICBpZiAoaGVhZGVyICYmIGhlYWRlci0+a2V5ZnJhbWUpIHsKICAg
ICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKICAgICAgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRp
b24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoKmhlYWRlciwgdHJhY2so
KS52aWRlby52YWx1ZSgpLmNvbG91cik7CkBAIC0xMjIyLDcgKzEzMDAsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29u
c3QgQ01UaW1lJiBwcgogICAgIH0KIAogICAgIGF1dG8gdHJhY2sgPSB0aGlzLT50cmFjaygpOwot
ICAgIC8vIEZJWE1FOiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBmcmFtZSwg
YnV0IG9ubHkgdGhpcyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1ZmZl
cmAuCisgICAgLy8gRklYTUU6IEEgYmxvY2sgbWlnaHQgY29udGFpbiBtb3JlIHRoYW4gb25lIGZy
YW1lLCBidXQgb25seSB0aGlzIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50byBgY29tcGxldGVCbG9j
a0J1ZmZlcmAuCiAgICAgLy8gQmVsb3cgd2UgY3JlYXRlIHNhbXBsZSBidWZmZXJzIGZvciBlYWNo
IGZyYW1lLCBlYWNoIHdpdGggdGhlIGJsb2NrJ3MgdGltZWNvZGUgYW5kIGBudW1fZnJhbWVzYCB2
YWx1ZS4KICAgICAvLyBTaG91bGRuJ3Qgd2UgY3JlYXRlIGp1c3Qgb25lIHNhbXBsZSBidWZmZXIg
b25jZSBhbGwgdGhlIGJsb2NrJ3MgZnJhbWVzIGhhdmUgYmVlbiByZWFkIGludG8gYGN1cnJlbnRC
bG9ja0J1ZmZlcmA/CiAKQEAgLTEyMzEsOSArMTMwOSw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUm
IHByCiAgICAgICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICog
cHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUgLyBrX3VzX2luX3NlY29uZHM7CiAKICAgICBDTVNh
bXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBmcmFt
ZVNpemUgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fY3VycmVudEJsb2NrQnVm
ZmVyLmdldCgpKTsKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nID0geyBQQUw6OkNNVGlt
ZU1ha2UoZHVyYXRpb24sIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlKSwgcHJlc2VudGF0aW9u
VGltZSwgcHJlc2VudGF0aW9uVGltZSB9OwotICAgIGVyciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJD
cmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQo
KSwgdGhpcy0+Zm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxlQ291bnQsIDEsICZ0aW1p
bmcsIDEsICZmcmFtZVNpemUsICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGVyciA9IFBBTDo6Q01T
YW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxv
Y2tCdWZmZXIuZ2V0KCksIHRoaXMtPmZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBsZUNv
dW50LCAxLCAmdGltaW5nLCAxLCAmKm1fY29tcGxldGVQYWNrZXRTaXplLCAmcmF3U2FtcGxlQnVm
ZmVyKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwog
ICAgICAgICByZXR1cm47CkBAIC0xMjYzLDU2ICsxMzQwLDI3IEBAIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRp
bWUmIHByCiAjZW5kaWYgLy8gRU5BQkxFKFZQOSkKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXQoKQordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQogeworICAgIG1OdW1GcmFtZXNJ
bkNvbXBsZXRlQmxvY2sgPSAwOwogICAgIG1fcGFja2V0RGVzY3JpcHRpb25zLmNsZWFyKCk7Ci0g
ICAgbV9wYWNrZXRzRGF0YS5jbGVhcigpOwotICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQg
PSBzdGQ6Om51bGxvcHQ7Ci0gICAgVHJhY2tEYXRhOjpyZXNldCgpOworICAgIG1fY3VycmVudFBh
Y2tldEJ5dGVPZmZzZXQgPSAwOworICAgIFRyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKTsKIH0K
IAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpj
b25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYgcmVhZGVyLCBjb25zdCBGcmFtZU1ldGFkYXRh
JiBtZXRhZGF0YSwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nLCBjb25zdCBDTVRpbWUmIHByZXNl
bnRhdGlvblRpbWUsIGludCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NFUlQoc2FtcGxlQ291bnQp
OwotCi0gICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICBt
X2J5dGVPZmZzZXQgPSBtZXRhZGF0YS5wb3NpdGlvbjsKLSAgICAgICAgbV9zYW1wbGVQcmVzZW50
YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKLSAgICB9Ci0KLSAgICBpZiAobV9jdXJyZW50
UGFja2V0U2l6ZSAmJiAqbV9jdXJyZW50UGFja2V0U2l6ZSAhPSBtZXRhZGF0YS5zaXplKSB7Ci0g
ICAgICAgIC8vIFRoZSBwYWNrZXQncyBtZXRhZGF0YSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50
bHkgcGVuZGluZyBwYXJ0aWFsIHBhY2tldDsgcmVzdGFydC4KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEX1dJVEhfTUVTU0FHRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHdl
Ym0gaW4gbm9uc2Vuc2ljYWwgc3RhdGUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0g
MDsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0K
LSAgICBpZiAoIW1fY3VycmVudFBhY2tldFNpemUpCi0gICAgICAgIG1fY3VycmVudFBhY2tldFNp
emUgPSBtZXRhZGF0YS5zaXplOwotCi0gICAgLy8gRW5zdXJlIHdlIGhhdmUgcm9vbSB0byBzdG9y
ZSB0aGUgZnVsbCBwZW5kaW5nIGZyYW1lLgotICAgIGlmIChtX3BhY2tldHNEYXRhLnNpemUoKSA8
IG1fcGFja2V0c0J5dGVzUmVhZCArIG1ldGFkYXRhLnNpemUpCi0gICAgICAgIG1fcGFja2V0c0Rh
dGEuZ3JvdyhtX3BhY2tldHNCeXRlc1JlYWQgKyBtZXRhZGF0YS5zaXplKTsKLQotICAgIGlmICgh
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCkKLSAgICAgICAgbV9jdXJyZW50UGFja2V0Qnl0ZU9m
ZnNldCA9IG1fcGFja2V0c0J5dGVzUmVhZDsKLQotICAgIHdoaWxlICgqYnl0ZXNSZW1haW5pbmcp
IHsKLSAgICAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwotICAgICAgICBhdXRvIHN0YXR1cyA9IHJl
YWRlci5SZWFkKCpieXRlc1JlbWFpbmluZywgbV9wYWNrZXRzRGF0YS5kYXRhKCkgKyBtX3BhY2tl
dHNCeXRlc1JlYWQgKyBtX3BhcnRpYWxCeXRlc1JlYWQsICZieXRlc1JlYWQpOwotICAgICAgICAq
Ynl0ZXNSZW1haW5pbmcgLT0gYnl0ZXNSZWFkOwotICAgICAgICBtX3BhcnRpYWxCeXRlc1JlYWQg
Kz0gYnl0ZXNSZWFkOwotCi0gICAgICAgIGlmICghc3RhdHVzLmNvbXBsZXRlZF9vaygpKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9CisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJh
bWVEYXRhKHJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1
cy5jb21wbGV0ZWRfb2soKSkKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKIAotICAgIEFTU0VSVCht
X3BhcnRpYWxCeXRlc1JlYWQgPD0gKm1fY3VycmVudFBhY2tldFNpemUpOwotICAgIGlmIChtX3Bh
cnRpYWxCeXRlc1JlYWQgPCAqbV9jdXJyZW50UGFja2V0U2l6ZSkKLSAgICAgICAgcmV0dXJuIHdl
Ym06OlN0YXR1cyh3ZWJtOjpTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgIC8vIEF0dGVtcHRzIHRv
IG1pbmltaXNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRpb25zIGR1ZSB0byByZXBldGl0
dmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSBjYWxscyBpbiByZWFkRnJhbWVE
YXRhLgorICAgIG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2srKzsKKyAgICBpZiAobU51bUZyYW1l
c0luQ29tcGxldGVCbG9jayA+IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5KQorICAgICAgICBtTWF4
QmxvY2tCdWZmZXJDYXBhY2l0eSA9IG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2s7CiAKLSAgICBt
X3BhY2tldHNCeXRlc1JlYWQgKz0gbV9wYXJ0aWFsQnl0ZXNSZWFkOwotICAgIG1fcGFydGlhbEJ5
dGVzUmVhZCA9IDA7CisgICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKIAogICAg
IGlmICghZm9ybWF0RGVzY3JpcHRpb24oKSkgewogICAgICAgICBpZiAoIXRyYWNrKCkuY29kZWNf
cHJpdmF0ZS5pc19wcmVzZW50KCkpIHsKQEAgLTEzMjUsOCArMTM3MywxOSBAQCB3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURh
dGEod2VibTo6UmVhZAogICAgICAgICBpZiAoY29kZWMoKSA9PSBDb2RlY1R5cGU6OlZvcmJpcykK
ICAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlVm9yYmlzQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbihwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CisgICAgICAgICAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihtX2N1
cnJlbnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgICAgICAg
ICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHVuYWJs
ZSB0byBjcmVhdGUgY29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdWludDhfdCogYmxvY2tCdWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1
dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoY29udGlndW91c0J1ZmZl
ci5nZXQoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsK
KyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJy
b3IiLCBlcnIpOworICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVt
YWluaW5nKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIE9wdXNDb29raWVDb250ZW50cyBj
b29raWVDb250ZW50czsKLSAgICAgICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJp
dmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksIG1fcGFja2V0c0J5dGVzUmVhZCwg
bV9wYWNrZXRzRGF0YS5kYXRhKCksIGNvb2tpZUNvbnRlbnRzKSkgeworICAgICAgICAgICAgaWYg
KCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRh
dGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRl
bnRzKSkgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkZh
aWxlZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVy
biBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KQEAgLTEzNTUs
MTAgKzE0MTQsMjEgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICB9IGVsc2UgaWYgKGNv
ZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CiAgICAgICAgIC8vIE9wdXMgdGVjaG5pY2FsbHkg
YWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1wYWNrZXQgdmFsdWVzIHRv
IGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8vIENvcmVBdWRpbyBkb2Vz
bid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFuZ2Ugb24gYSBwZXItcGFj
a2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVuCi0gICAgICAgIC8vIHRoYXQga2luZCBv
ZiB2YXJpYWJsaWxpdHkgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIC8vIHRoYXQga2luZCBvZiB2
YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNv
b2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9IHRyYWNrKCkuY29kZWNf
cHJpdmF0ZS52YWx1ZSgpOwotICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZh
dGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCBtX3BhY2tldHNCeXRlc1JlYWQsIG1f
cGFja2V0c0RhdGEuZGF0YSgpLCBjb29raWVDb250ZW50cykKKyAgICAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIobV9jdXJyZW50UGFja2V0
Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKKyAgICAgICAgaWYgKCFjb250aWd1
b3VzQnVmZmVyKSB7CisgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJB
dWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YTogdW5hYmxlIHRvIGNyZWF0ZSBjb250aWd1
b3VzIGRhdGEgYmxvY2siKTsKKyAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKKyAgICAgICAgfQorICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRhdGEg
PSBudWxscHRyOworICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQ
b2ludGVyKGNvbnRpZ3VvdXNCdWZmZXIuZ2V0KCksIDAsIG51bGxwdHIsIG51bGxwdHIsIChjaGFy
KiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBm
YWlsZWQgd2l0aCBlcnJvciIsIGVycik7CisgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2
YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxl
dGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQogICAgICAgICAg
ICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0
CiAgICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVE
dXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1
cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwpAQCAt
MTM2NiwxNCArMTQzNiwxNSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oKm1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQpLCAwLCBzdGF0aWNfY2FzdDxVSW50MzI+
KCptX2N1cnJlbnRQYWNrZXRTaXplKSB9KTsKLSAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0
ID0gc3RkOjpudWxsb3B0OwotICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxvcHQ7
CisgICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY29t
cGxldGVQYWNrZXRTaXplKSB9KTsKKyAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ICs9ICpt
X2NvbXBsZXRlUGFja2V0U2l6ZTsKKyAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gc2FtcGxlRHVyYXRpb24gPSBQQUw6OkNNVGltZUdldFNlY29uZHMo
UEFMOjpDTVRpbWVTdWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRhdGlv
blRpbWUpKSArIFBBTDo6Q01UaW1lR2V0U2Vjb25kcyhtX3BhY2tldER1cmF0aW9uKSAqIHNhbXBs
ZUNvdW50OwotCi0gICAgaWYgKHNhbXBsZUR1cmF0aW9uID49IG1fbWluaW11bVNhbXBsZUR1cmF0
aW9uKQorICAgIGlmIChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1TYW1wbGVEdXJhdGlvbikg
ewogICAgICAgICBjcmVhdGVTYW1wbGVCdWZmZXIobWV0YWRhdGEucG9zaXRpb24pOworICAgICAg
ICByZXNldCgpOworICAgIH0KIAogICAgIEFTU0VSVCghKmJ5dGVzUmVtYWluaW5nKTsKICAgICBy
ZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06OlN0YXR1czo6a09rQ29tcGxldGVkKTsKQEAgLTEzODEs
MzkgKzE0NTIsMTcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKIAogdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCiB7Ci0gICAgaWYgKG1fcGFja2V0
RGVzY3JpcHRpb25zLmlzRW1wdHkoKSB8fCAhbV9wYWNrZXRzQnl0ZXNSZWFkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fcGFja2V0c0RhdGEuaXNFbXB0eSgpKTsKLQotICAgIENN
QmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyID0gUEFM
OjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG51bGxwdHIsIG1fcGFja2V0c0J5dGVzUmVhZCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0
ciwgMCwgbV9wYWNrZXRzQnl0ZXNSZWFkLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0Zs
YWcsICZibG9ja0J1ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBQQVJTRVJfTE9HX0VS
Uk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxl
ZCB3aXRoICVkIiwgZXJyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGJ1ZmZl
ciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOwotCi0gICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVy
UmVwbGFjZURhdGFCeXRlcyhtX3BhY2tldHNEYXRhLmRhdGEoKSwgYnVmZmVyLmdldCgpLCAwLCBt
X3BhY2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdp
dGggJWQiLCBlcnIpOworICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVC
dWZmZXIgPSBudWxscHRyOwotICAgIGVyciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0
ZVJlYWR5V2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIu
Z2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25zLnNp
emUoKSwgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5kYXRh
KCksICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2FtcGxl
QnVmZmVyQ3JlYXRlUmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fY29tcGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQo
KSwgbV9wYWNrZXREZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUs
IG1fcGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYg
KGVycikgewogICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUF1ZGlvU2Ft
cGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVy
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9w
dENGKHJhd1NhbXBsZUJ1ZmZlcik7CiAKLSAgICBtX3BhY2tldHNEYXRhLnJlbW92ZSgwLCBtX3Bh
Y2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0KQotICAg
ICAgICAqbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCAtPSBtX3BhY2tldHNCeXRlc1JlYWQ7Ci0g
ICAgbV9wYWNrZXRzQnl0ZXNSZWFkID0gMDsKLSAgICBtX3BhY2tldERlc2NyaXB0aW9ucy5jbGVh
cigpOwotCiAgICAgYXV0byB0cmFja0lEID0gdHJhY2soKS50cmFja191aWQudmFsdWUoKTsKICAg
ICBwYXJzZXIoKS5wcm92aWRlTWVkaWFEYXRhKFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJhY2tJ
RCwgbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0KTsKIH0KQEAgLTE0MjEsOCArMTQ3MCwxMSBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZm
ZXIoc3RkOjpvcHRpb25hbDxzaQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBl
bmRpbmdBdWRpb0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrcykg
ewotICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlRyYWNrRGF0YTo6VHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBkb3duY2FzdDxBdWRpb1Ry
YWNrRGF0YT4odHJhY2suZ2V0KCkpLmNyZWF0ZVNhbXBsZUJ1ZmZlcigpOworICAgICAgICBpZiAo
dHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6
VHlwZTo6QXVkaW8pIHsKKyAgICAgICAgICAgIEF1ZGlvVHJhY2tEYXRhJiBhdWRpb1RyYWNrID0g
ZG93bmNhc3Q8QXVkaW9UcmFja0RhdGE+KHRyYWNrLmdldCgpKTsKKyAgICAgICAgICAgIGF1ZGlv
VHJhY2suY3JlYXRlU2FtcGxlQnVmZmVyKCk7CisgICAgICAgICAgICBhdWRpb1RyYWNrLnJlc2V0
Q29tcGxldGVkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaAppbmRleCA5NTI5NzZiMjcyZjcxMTg1YmI3ODdmNWFhMzQyM2M0Zjg3ZDZjNGE2Li42
OGExMjAwMGUyNGU2OThkZjBhYzk0OTA1YTcxNzZlMGNiMTBmMWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlQVZGT2Jq
QzsKIGNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFy
c2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgY2xhc3Mg
U2VnbWVudFJlYWRlcjsKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2YWls
YWJsZSgpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwpAQCAtMTU1LDMwICsxNTUsNDIg
QEAgcHVibGljOgogICAgICAgICB2b2lkIHNldEZvcm1hdERlc2NyaXB0aW9uKFJldGFpblB0cjxD
TUZvcm1hdERlc2NyaXB0aW9uUmVmPiYmIGRlc2NyaXB0aW9uKSB7IG1fZm9ybWF0RGVzY3JpcHRp
b24gPSBXVEZNb3ZlKGRlc2NyaXB0aW9uKTsgfQogCiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk0mIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyOyB9Ci0gICAgICAgIAorCiAg
ICAgICAgIHZpcnR1YWwgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVy
JiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwg
aW50KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprSW52YWxpZEVsZW1lbnRJ
ZCk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXRDb21wbGV0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2Nv
bXBsZXRlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZvaWQgcmVz
ZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgcmVzZXRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIG1fY29t
cGxldGVQYWNrZXRTaXplID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbV9wYXJ0aWFsQnl0
ZXNSZWFkID0gMDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsK
ICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbV9jdXJyZW50UGFja2V0U2l6ZTsKLSAgICAgICAgLy8gU2l6ZSBvZiB0aGUgY3VycmVudGx5
IHBhcnNlZCBwYWNrZXQsIHBvc3NpYmx5IGluY29tcGxldGUuCi0gICAgICAgIHNpemVfdCBtX3Bh
cnRpYWxCeXRlc1JlYWQgeyAwIH07CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVm
PiBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICAgICAgd2VibTo6U3RhdHVzIHJlYWRGcmFtZURhdGEod2VibTo6UmVh
ZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmlu
Zyk7CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2NvbXBsZXRlQmxvY2tC
dWZmZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2NvbXBsZXRlUGFja2V0U2l6
ZTsKKyAgICAgICAgLy8gSW5pdGlhbCBhbGxvY2F0aW9uIHNpemUgb2YgZW1wdHkgQ01CbG9ja0J1
ZmZlci4KKyAgICAgICAgc2l6ZV90IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5IHsgMCB9OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQ29kZWNUeXBlIG1fY29kZWM7CiAgICAgICAgIHdlYm06OlRy
YWNrRW50cnkgbV90cmFjazsKICAgICAgICAgVHlwZSBtX3RyYWNrVHlwZTsKICAgICAgICAgUmV0
YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZm9ybWF0RGVzY3JpcHRpb247CisgICAg
ICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICAg
ICAgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSYgbV9wYXJzZXI7CisgICAgICAgIC8vIFNpemUg
b2YgdGhlIGN1cnJlbnRseSBpbmNvbXBsZXRlIHBhcnNlZCBwYWNrZXQuCisgICAgICAgIHNpemVf
dCBtX3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CiAgICAgfTsKIAogICAgIGNsYXNzIFZpZGVvVHJh
Y2tEYXRhIDogcHVibGljIFRyYWNrRGF0YSB7CkBAIC0xOTMsOSArMjA1LDYgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShWUDkpCi0gICAgICAgIHZvaWQgcmVz
ZXQoKSBmaW5hbDsKLSNlbmRpZgogICAgICAgICB3ZWJtOjpTdGF0dXMgY29uc3VtZUZyYW1lRGF0
YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgdWludDY0X3QqLCBj
b25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwogCiAgICAgcHJpdmF0ZToKQEAgLTIwNCw3ICsyMTMs
NiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVlA5KQogICAgICAgICB2cDlfcGFyc2VyOjpWcDlI
ZWFkZXJQYXJzZXIgbV9oZWFkZXJQYXJzZXI7Ci0gICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVm
ZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICNlbmRpZgogICAgIH07CiAKQEAgLTIyMiw3
ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB3ZWJtOjpTdGF0dXMgY29u
c3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwg
dWludDY0X3QqLCBjb25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwotICAgICAgICB2b2lkIHJlc2V0
KCkgZmluYWw7CisgICAgICAgIHZvaWQgcmVzZXRDb21wbGV0ZWQoKSBmaW5hbDsKICAgICAgICAg
dm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhdGVzdEJ5dGVS
YW5nZU9mZnNldCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjMwLDE1ICsy
MzgsMTEgQEAgcHVibGljOgogCiAgICAgICAgIENNVGltZSBtX3NhbXBsZVByZXNlbnRhdGlvblRp
bWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tldER1cmF0aW9uOwotICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gbV9wYWNrZXRzRGF0YTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY3Vy
cmVudFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIC8vIFNpemUgb2YgdGhlIGNvbXBsZXRlIHBh
Y2tldHMgcGFyc2VkIHNvIGZhci4KLSAgICAgICAgc2l6ZV90IG1fcGFja2V0c0J5dGVzUmVhZCB7
IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fYnl0ZU9mZnNldCB7IDAgfTsKKyAgICAgICAgc2l6ZV90
IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgeyAwIH07CiAgICAgICAgIHVpbnQ4X3QgbV9mcmFt
ZXNQZXJQYWNrZXQgeyAwIH07CiAgICAgICAgIFNlY29uZHMgbV9mcmFtZUR1cmF0aW9uIHsgMF9z
IH07CiAgICAgICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX3BhY2tl
dERlc2NyaXB0aW9uczsKLQorICAgICAgICBzaXplX3QgbU51bUZyYW1lc0luQ29tcGxldGVCbG9j
ayB7IDAgfTsKICAgICAgICAgLy8gRklYTUU6IDAuNSAtIDEuMCBzZWNvbmRzIGlzIGEgYmV0dGVy
IGR1cmF0aW9uIHBlciBzYW1wbGUgYnVmZmVyLCBidXQgdXNlIDIgc2Vjb25kcyBzbyBhdCBsZWFz
dCB0aGUgZmlyc3QKICAgICAgICAgLy8gc2FtcGxlIGJ1ZmZlciB3aWxsIHBsYXkgdW50aWwgd2Ug
Zml4IE1lZGlhU2FtcGxlQ3Vyc29yOjpjcmVhdGVTYW1wbGVCdWZmZXIgdG8gZGVhbCB3aXRoIGBl
bmRDdXJzb3JgLgogICAgICAgICBmbG9hdCBtX21pbmltdW1TYW1wbGVEdXJhdGlvbiB7IDIgfTsK
QEAgLTI4MSw3ICsyODUsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpOb25lIH07CiAKLSAgICBVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPiBtX3JlYWRl
cjsKKyAgICBVbmlxdWVSZWY8U2VnbWVudFJlYWRlcj4gbV9yZWFkZXI7CiAKICAgICBWZWN0b3I8
VW5pcXVlUmVmPFRyYWNrRGF0YT4+IG1fdHJhY2tzOwogICAgIHVzaW5nIEJsb2NrVmFyaWFudCA9
IFZhcmlhbnQ8d2VibTo6QmxvY2ssIHdlYm06OlNpbXBsZUJsb2NrPjsK
</data>
<flag name="commit-queue"
          id="462113"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>438668</attachid>
            <date>2021-09-20 06:33:56 -0700</date>
            <delta_ts>2021-09-20 06:36:25 -0700</delta_ts>
            <desc>Mark SourceBufferPrivate::append with WTF_EXPORT</desc>
            <filename>bug-230329-20210920233355.patch</filename>
            <type>text/plain</type>
            <size>69507</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzNTRjZTU2ZTg3Mjc5
OWU1NGQ4NDA1Y2FmZjA1NmFjYmFlYTI5My4uYzEzNjYyNTAzMzdhZGZkZGFkZWQ3NjcwZjg2ZWNk
NTEwMTNkNDdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIxLTA5LTIwICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9y
eSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8g
dGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAg
ICBVc2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgVmVjdG9yIHRvIHBhc3MgZGF0YSB0byB0aGUg
U291cmNlQnVmZmVyJ3MgcmVsYXRlZAorICAgICAgICBjbGFzc2VzIChTb3VyY2VCdWZmZXIsIFNv
dXJjZUJ1ZmZlclByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclBhcnNlcikuCisgICAgICAgIE1vZGlm
eSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIHRvIG5ldmVyIHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRp
b24gYW5kIGNvcHkKKyAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgY29udGVudC4gSW5zdGVh
ZCwgd2UgdXNlIENNQmxvY2tCdWZmZXIgb2JqZWN0cyB0aGF0IHJldGFpbiB0aGUKKyAgICAgICAg
YmFja2luZyBTaGFyZWRCdWZmZXIgYW5kIHVzZSBvZmZzZXRzIGluc2lkZSB0aGlzIFNoYXJlZEJ1
ZmZlciB0byByZWZlcmVuY2UgdGhlIGRhdGEuCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMgcmVxdWlyZXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBhcyBhIE5TRGF0YSBjYW4gd3JhcCBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gY2hhbmdlIGZyb20gYW4gb2JzZXJ2YWJsZSBzdGFu
ZHBvaW50IG90aGVyIHRoYW4gdGhlIEdQVSBtZW1vcnkgdXNhZ2UKKyAgICAgICAgYmVpbmcgZHJh
c3RpY2FsbHkgcmVkdWNlZCAoZnJvbSA3MDBNQiB3aGVuIHdhdGNoaW5nIGEgNEsvNjBmcHMgWW91
VHViZSB2aWRlbyB0byBqdXN0IG92ZXIgMjAwTUIKKyAgICAgICAgb24gYW4gaU1hYyBQcm8gKHdo
aWNoIG9ubHkgaGFzIHNvZnR3YXJlIFZQOSBkZWNvZGluZykuCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIGFyZSBmdWxseSBleGVyY2lzaW5nIHRoaXMgbmV3IGNvZGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6IFNpbXBsaWZ5IGxvZ2ljIGFyb3VuZCBt
X3BlbmRpbmdBcHBlbmREYXRhIG1lbWJlci4KKyAgICAgICAgT25seSBvbmUgYXBwZW5kQnVmZmVy
IG9wZXJhdGlvbiBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZSBvdGhlcndpc2UgYXBw
ZW5kQnVmZmVyCisgICAgICAgIHdpbGwgdGhyb3c7IGFzIHN1Y2gsIHRoZXJlJ3Mgbm8gbmVlZCB0
byBhcHBlbmQgdGhlIGRhdGEgdG8gYSB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OmFib3J0SWZVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
YXBwZW5kQnVmZmVyVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oOiBBZGQgbmV3IERhdGFTZWdtZW50IHR5cGUgdGhhdCB0YWtlcyBhIFByb3ZpZGVyIGlu
IGNvbnN0cnVjdG9yLgorICAgICAgICBBIFByb3ZpZGVyIHByb3ZpZGVzIHR3byBGdW5jdGlvbiBt
ZW1iZXJzIGRhdGEgYW5kIHNpemUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwOiBUaGUgQXVkaW9GaWxlUmVhZGVyQ29jb2EgcmVxdWlyZWQK
KyAgICAgICAgdGhlIENNQmxvY2tCdWZmZXIgY29udGFpbmluZyB0aGUgY29tcHJlc3NlZCBjb250
ZW50IHRvIGJlIGNvbnRpZ3VvdXMuIFRoaXMgaXMgbm8KKyAgICAgICAgbG9uZ2VyIGd1YXJhbnRl
ZWQgc28gZW5zdXJlIHRoYXQgdGhlIENNQmxvY2tCdWZmZXIgaXMgY29udGlndW91cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6Y29udGlndW91c0NvbXBsZXRl
QmxvY2tCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6VHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpj
cmVhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6QXVkaW9UcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tE
YXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVz
ZXQpOgorCiAyMDIxLTA5LTA3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVjb2Rpbmcgd2VibSBmaWxlIHdpdGggbW9yZSB0aGFuIDIgY2hhbm5lbHMgd2ls
bCBmYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzQyZThkZjYzMmE0OGMzZDk1ZTIxY2Q4ODcw
OGIyZTRhOGI0ODE3Li5lNjU4M2RlOTkxNTk4MWY3YTg0MjI2YzljNzg3OTMxYjI2ZmE2Nzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOS0yMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgZm9y
IHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRvIHRoZSBH
UFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOiBBZGQgcmVx
dWlyZWQgQ29yZU1lZGlhIG1ldGhvZHMuCisKIDIwMjEtMDktMDcgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWNvZGluZyB3ZWJtIGZpbGUgd2l0aCBtb3Jl
IHRoYW4gMiBjaGFubmVscyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjFiOWRlYjZiNWE1YWQxZjky
MzJlZTUwYTUzZDc3NDA3MWY1NTQ3Yi4uYjVjN2ZjZjEwY2FkZGMxOWE5MjEzNWYyMzI1YTUxMDM3
NzVmYTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wOS0yMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgZm9y
IHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRvIHRoZSBH
UFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAgICAgVXNl
IFNoYXJlZE1lbW9yeSB0byBwYXNzIFNvdXJjZUJ1ZmZlciBjb250ZW50IHRvIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5IGluIEdQVSBwcm9jZXNzLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgd3Jh
cHBpbmcgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6YXBwZW5kKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorCiAy
MDIxLTA5LTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRlYWNoIGBXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcGAgdG8gc25hcHNob3Qgdmlk
ZW8gZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcAppbmRleCBmNDU4NGZmMzUyODI1NmNlOTA3MDU4NDZjODBkYTVlZGUw
NjQ2ODNjLi5iYWVlOWExMWI1MDFhNDE1YzRjZjliZDZmMzU3OTM1ZDY0MzIyMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlh
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgpAQCAtMzk0LDcg
KzM5NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphYm9ydElmVXBkYXRpbmcoKQogCiAgICAgLy8g
NC4xLiBBYm9ydCB0aGUgYnVmZmVyIGFwcGVuZCBhbGdvcml0aG0gaWYgaXQgaXMgcnVubmluZy4K
ICAgICBtX2FwcGVuZEJ1ZmZlclRpbWVyLnN0b3AoKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRh
LmNsZWFyKCk7CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IG51bGxwdHI7CiAgICAgbV9wcml2
YXRlLT5hYm9ydCgpOwogCiAgICAgLy8gNC4yLiBTZXQgdGhlIHVwZGF0aW5nIGF0dHJpYnV0ZSB0
byBmYWxzZS4KQEAgLTQ5NCw3ICs0OTUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZm
ZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsCiAKICAg
ICAvLyBOT1RFOiBSZXR1cm4gdG8gMy4yIGFwcGVuZEJ1ZmZlcigpCiAgICAgLy8gMy4gQWRkIGRh
dGEgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyLgotICAgIG1fcGVuZGluZ0FwcGVuZERh
dGEuYXBwZW5kKGRhdGEsIHNpemUpOworICAgIEFTU0VSVCghbV9wZW5kaW5nQXBwZW5kRGF0YSk7
CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNp
emUpOwogCiAgICAgLy8gNC4gU2V0IHRoZSB1cGRhdGluZyBhdHRyaWJ1dGUgdG8gdHJ1ZS4KICAg
ICBtX3VwZGF0aW5nID0gdHJ1ZTsKQEAgLTUyNCwxOCArNTI2LDE0IEBAIHZvaWQgU291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAgICAvLyBodHRwczovL2R2Y3MudzMub3Jn
L2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRt
bCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9vcAogICAgIC8vIFdoZW4gdGhlIHNlZ21l
bnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9rZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgogCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9w
ZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6IElmIHRoZSBpbnB1dCBidWZm
ZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3JlIGRhdGEgc3RlcCBiZWxvdy4K
LSAgICBpZiAoIW1fcGVuZGluZ0FwcGVuZERhdGEuc2l6ZSgpKSB7CisgICAgaWYgKCFhcHBlbmRE
YXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0
ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIC8vIE1hbnVhbGx5IGNsZWFyIG91dCB0aGUgbV9wZW5kaW5n
QXBwZW5kRGF0YSBWZWN0b3IsIGluIGNhc2UgdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uCi0g
ICAgLy8gcmVqZWN0cyBhcHBlbmRpbmcgdGhlIGJ1ZmZlciBmb3Igd2hhdGV2ZXIgcmVhc29uLgot
ICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGd1YXJhbnRlZSB0aGUgbW92
ZSBmcm9tIHRoaXMgVmVjdG9yLCBhbmQgd2Ugc2hvdWxkCi0gICAgLy8gYXNzZXJ0IGhlcmUgdG8g
Y29uZmlybSB0aGF0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODAwMy4KLSAgICBtX3ByaXZhdGUtPmFwcGVuZChXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERh
dGEpKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmNsZWFyKCk7CisgICAgbV9wcml2YXRlLT5h
cHBlbmQoYXBwZW5kRGF0YS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQgcmVzdWx0
KQpAQCAtMTIxMSw3ICsxMjA5LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQ
cml2YXRlUmVwb3J0RXh0cmFNZW1vcnlDb3N0KHVpbnQ2NF90IGV4dHJhTWVtb3J5CiAKIHZvaWQg
U291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCh1aW50NjRfdCBleHRyYU1l
bW9yeSkKIHsKLSAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QgPSBtX3BlbmRpbmdBcHBlbmRE
YXRhLmNhcGFjaXR5KCkgKyBleHRyYU1lbW9yeTsKKyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNv
c3QgPSBleHRyYU1lbW9yeTsKKyAgICBpZiAobV9wZW5kaW5nQXBwZW5kRGF0YSkKKyAgICAgICAg
ZXh0cmFNZW1vcnlDb3N0ICs9IG1fcGVuZGluZ0FwcGVuZERhdGEtPnNpemUoKTsKKwogICAgIGlm
IChleHRyYU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaAppbmRleCA4ODhkMmQ2ZTk4ZGFiZjk3ZGFiZTFjOTFmMjQ4YjEwODVkNjkyYjYx
Li5hNzIzM2QyMWUwODFhYTRhOGQ4NDI1NGIyOTNhNzMyZjY4NDEzZThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMSw3
ICsyMjEsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1
ZVJvb3RQcm92aWRlcjsKIAotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX3BlbmRpbmdBcHBl
bmREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAg
ICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlz
dD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHAKaW5kZXggYTE5MTc4MTQ3M2RjYWM3NmM1YjA0MTU1NjkxODQxNDcwZDNh
MjI0My4uZjIzZDY2MzIyMGRjNzQyOThiOWI5ZGQ5MDFkMGNjNjVmYWE1NWM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKQEAgLTExMyw2
ICsxMTMsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0XwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwgQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgc3RydWN0dXJlQWxsb2NhdG9yLCBDTUJsb2NrQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgQ0ZB
bGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21CbG9j
a1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJs
b2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgc291cmNlQnVmZmVyLCBibG9ja0Fs
bG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZmxh
Z3MsIGJsb2NrQnVmZmVyT3V0KSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQXBwZW5kQnVm
ZmVyUmVmZXJlbmNlLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyLCBDTUJs
b2NrQnVmZmVyUmVmIHRhcmdldEJCdWYsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MpLCAodGhlQnVmZmVyLCB0YXJnZXRCQnVm
LCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZsYWdzKSwgUEFMX0VYUE9SVCkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlRW1wdHksIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxs
b2NhdG9yLCB1aW50MzJfdCBzdWJCbG9ja0NhcGFjaXR5LCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxh
Z3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRv
ciwgc3ViQmxvY2tDYXBhY2l0eSwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSwgUEFMX0VYUE9SVCkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlh
LCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlLCBGb3VyQ2hhckNvZGUsIChDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1lZGlhVHlwZSwgQ01NZWRpYVR5cGUsIChDTUZvcm1hdERlc2NyaXB0aW9u
UmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCBkNGZmMDQ2OGMzMThjMmYzNDVkYTk4NDU5
ZmU3MTQ5YjM3NWI0M2RlLi41ZmRmZjg0NzliNTMxNWNkYWFiMTBjNzY5YjVmZTllNjQ0YzI1MzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBA
IC0xNzUsNiArMTc1LDEwIEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQsCiAKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29u
dGlndW91cywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxvY2F0b3IsIENN
QmxvY2tCdWZmZXJSZWYgc291cmNlQnVmZmVyLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRv
ciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJj
ZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJG
bGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJl
QWxsb2NhdG9yLCBzb3VyY2VCdWZmZXIsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1NvdXJj
ZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQogI2Rl
ZmluZSBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29udGlndW91cyBzb2Z0TGlua19Db3JlTWVkaWFfQ01C
bG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQXBwZW5kQnVmZmVyUmVmZXJlbmNlLCBPU1N0
YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyLCBDTUJsb2NrQnVmZmVyUmVmIHRhcmdl
dEJCdWYsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVm
ZmVyRmxhZ3MgZmxhZ3MpLCAodGhlQnVmZmVyLCB0YXJnZXRCQnVmLCBvZmZzZXRUb0RhdGEsIGRh
dGFMZW5ndGgsIGZsYWdzKSkKKyNkZWZpbmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVy
ZW5jZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5j
ZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tC
dWZmZXJDcmVhdGVFbXB0eSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxv
Y2F0b3IsIHVpbnQzMl90IHN1YkJsb2NrQ2FwYWNpdHksIENNQmxvY2tCdWZmZXJGbGFncyBmbGFn
cywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9y
LCBzdWJCbG9ja0NhcGFjaXR5LCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQorI2RlZmluZSBDTUJs
b2NrQnVmZmVyQ3JlYXRlRW1wdHkgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDcmVh
dGVFbXB0eQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
Rm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUsIEZvdXJDaGFyQ29kZSwgKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01Gb3JtYXREZXNjcmlwdGlv
bkdldE1lZGlhU3ViVHlwZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dE1lZGlhU3ViVHlwZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUsIENNTWVkaWFUeXBlLCAoQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKaW5kZXggMDU0Y2U1YTQyOTI0YzRkOWYwYzY5ZjJkYTg2ZDkwNzc5YTkx
MDgxNS4uMmY4NTUyNjc2ODc1NmI2YjMwMWNhMGYwMDhkMTQyZWFhMTllZDAwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01Miw2ICs1MiwxMiBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVE
YXRhKQogICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKX0pOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKKyAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkp
Cit7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShwcm92aWRlcikpfSk7Cit9CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwpAQCAtMjM2LDYg
KzI0MiwxMSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAog
ICAgIHJldHVybiBjbG9uZTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKIHZvaWQg
U2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMg
PSBtX3NlZ21lbnRzOwpAQCAtMjY3LDEwICsyNzgsMzQgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OnN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdAogewotICAgIEFTU0VSVChsZW5ndGggPD0gc2l6ZSgpKTsKKyAgICByZXR1cm4gY29weVRv
KGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAor
eworICAgIEFTU0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBhdXRvIGRlc3Rp
bmF0aW9uUHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc3RpbmF0aW9uKTsKLSAgICBhdXRv
IHJlbWFpbmluZyA9IHN0ZDo6bWluKGxlbmd0aCwgc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHNl
Z21lbnQgOiBtX3NlZ21lbnRzKSB7CisgICAgYXV0byByZW1haW5pbmcgPSBzdGQ6Om1pbihsZW5n
dGgsIHNpemUoKSAtIG9mZnNldCk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgc2l6ZV90IGN1
cnJlbnRPZmZzZXQgPSAwOworICAgIGZvciAoOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkg
eworICAgICAgICBhdXRvJiBzZWdtZW50ID0gbV9zZWdtZW50c1tpXTsKKyAgICAgICAgaWYgKG9m
ZnNldCA8IGN1cnJlbnRPZmZzZXQgKyBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSkgeworICAgICAg
ICAgICAgc2l6ZV90IHBvc2l0aW9uSW5TZWdtZW50ID0gb2Zmc2V0IC0gY3VycmVudE9mZnNldDsK
KyAgICAgICAgICAgIHNpemVfdCBhbW91bnRUb0NvcHlUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFp
bmluZywgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbkluU2VnbWVudCk7CisgICAg
ICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpICsg
cG9zaXRpb25JblNlZ21lbnQsIGFtb3VudFRvQ29weVRoaXNUaW1lKTsKKyAgICAgICAgICAgIHJl
bWFpbmluZyAtPSBhbW91bnRUb0NvcHlUaGlzVGltZTsKKyAgICAgICAgICAgIGlmICghcmVtYWlu
aW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uUHRy
ICs9IGFtb3VudFRvQ29weVRoaXNUaW1lOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY3VycmVudE9mZnNldCArPSBzZWdtZW50LnNlZ21lbnQtPnNpemUoKTsKKyAgICB9
CisKKyAgICBmb3IgKGkgKz0gMTsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHNbaV07CiAgICAgICAgIHNpemVfdCBhbW91bnRU
b0NvcHlUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFpbmluZywgc2VnbWVudC5zZWdtZW50LT5zaXpl
KCkpOwogICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21lbnQuc2VnbWVudC0+ZGF0
YSgpLCBhbW91bnRUb0NvcHlUaGlzVGltZSk7CiAgICAgICAgIHJlbWFpbmluZyAtPSBhbW91bnRU
b0NvcHlUaGlzVGltZTsKQEAgLTMxMiw3ICszNDcsOCBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICNpZiBVU0UoR1NUUkVBTUVSKQogICAg
ICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVy
biBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRh
dGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4g
cHJvdmlkZXIuZGF0YSgpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzk1LDcgKzQzMSw4IEBAIHNpemVfdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICNpZiBVU0UoR1NUUkVBTUVSKQogICAg
ICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVy
biBkYXRhLT5zaXplKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLnNp
emUoKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBw
cm92aWRlci5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IDIzNjlhYWQ4YjM1NjM5ZTJlYTVhOWFkMTgyNjg1NTM3OTVlNmI3NzAuLmI4ZmQ2MTEy
NWY0YmE0NzdiYTIxMzcxMzkyMTJhYjY3ZjZmZGE3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTIzLDYgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKICAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgdm9pZCBjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCiAgICAgLy8g
RGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNl
IGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgpAQCAtMTQ4
LDYgKzE1MCwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAorICAgICAgICBz
dHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxjb25zdCB1aW50OF90
KigpPiBkYXRhOworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAg
ICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlk
ZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KHByb3ZpZGVyKSkpOyB9CisKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTE3MSw2ICsxODAsOCBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKICAgICAg
ICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQpAQCAtMTgyLDEwICsxOTMs
MTMgQEAgcHVibGljOgogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgICAgICAgICBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEsCisgICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwogICAg
ICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIH07CiAKKyAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKwogICAgIHZv
aWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKQEAgLTIxNiw2ICsyMzAsNyBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwogI2lmIFVTRShDRikKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
Y3BwCmluZGV4IDFiMGQ0OGUzOWE4YzdiN2JjYTJlOWRiMzQyNmE5MTQ4YTA2OGFlOGUuLjIwNzc2
YzlhM2RmMmE1ZTUyOTYwYmI0ODY2MDUwOWJlZTI4NTk0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2Nv
YS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCIKICNpbmNsdWRlIDxBdWRp
b1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KQEAgLTEyOSw2ICsxMzAsNyBAQCBjbGFzcyBBdWRp
b0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1
YmxpYzoKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQogICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYK
QEAgLTE4MCw2ICsxODIsNyBAQCBib29sIEF1ZGlvRmlsZVJlYWRlcjo6aXNNYXliZVdlYk0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CisgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6ZSk7CiAgICAgYXV0
byBwYXJzZXIgPSBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2VyV2ViTSgpKTsKICAgICBi
b29sIGVycm9yID0gZmFsc2U7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYXVkaW9UcmFj
a0lkOwpAQCAtMjEyLDEyICsyMTUsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRl
cldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgdHJhY2stPnNldERpc2NhcmRQYWRkaW5nKGRpc2NhcmRQ
YWRkaW5nKTsKICAgICB9KTsKLSAgICBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQgc2VnbWVu
dCh7IGRhdGEsIGRhdGFTaXplIH0pOworICAgIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudCBz
ZWdtZW50KG1ha2VSZWYoYnVmZmVyLmdldCgpKSk7CiAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdU
Rk1vdmUoc2VnbWVudCkpOwogICAgIGlmICghdHJhY2spCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHBhcnNlci0+Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKCk7Ci0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRh
IHsgdHJhY2sucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShkdXJhdGlvbiksIFdURk1vdmUoc2Ft
cGxlcykgfSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+
KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgV1RGTW92ZShidWZmZXIpLCB0cmFjay5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKGR1cmF0aW9uKSwgV1RGTW92ZShzYW1wbGVzKSB9KTsKIH0KIAog
c3RydWN0IFBhc3N0aHJvdWdoVXNlckRhdGEgewpAQCAtMzQ3LDE2ICszNTAsMjEgQEAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEoQXVkaW9CdWZm
ZXJMaXN0JiBidWZmZXJMaXMKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fd2VibURhdGEt
Pm1fc2FtcGxlcy5zaXplKCk7IGkrKykgewogICAgICAgICBhdXRvJiBzYW1wbGUgPSBtX3dlYm1E
YXRhLT5tX3NhbXBsZXNbaV07CiAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZl
ciA9IHNhbXBsZS0+c2FtcGxlQnVmZmVyKCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gUEFMOjpD
TVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsKLSAgICAgICAgQVNTRVJU
KFBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGJ1ZmZlciwgMCwgMCkpOwotICAg
ICAgICBpZiAoIVBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGJ1ZmZlciwgMCwg
MCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAiVW5hYmxlIHRv
IHJlYWQgc2FtcGxlIGNvbnRlbnQgKG5vdCBjb250aWd1b3VzKSIpOwotICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgYXV0byByYXdCdWZmZXIgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0
RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIpOworICAgICAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZl
clJlZj4gYnVmZmVyID0gcmF3QnVmZmVyOworICAgICAgICAvLyBNYWtlIHN1cmUgYmxvY2sgYnVm
ZmVyIGlzIGNvbnRpZ3VvdXMuCisgICAgICAgIGlmICghUEFMOjpDTUJsb2NrQnVmZmVySXNSYW5n
ZUNvbnRpZ3VvdXMocmF3QnVmZmVyLCAwLCAwKSkgeworICAgICAgICAgICAgQ01CbG9ja0J1ZmZl
clJlZiBjb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChQQUw6OkNN
QmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51bGxwdHIsIHJhd0J1ZmZlciwgbnVsbHB0ciwg
bnVsbHB0ciwgMCwgMCwgMCwgJmNvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVyTm9F
cnIpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgImZhaWxl
ZCB0byBjcmVhdGUgY29udGlndW91cyBibG9jayBidWZmZXIiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmZmVyID0gYWRvcHRDRihj
b250aWd1b3VzQnVmZmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBzcmNTaXplID0g
UEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChidWZmZXIpOworICAgICAgICBzaXplX3Qg
c3JjU2l6ZSA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoYnVmZmVyLmdldCgpKTsK
ICAgICAgICAgY2hhciogc3JjRGF0YSA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChQQUw6OkNNQmxv
Y2tCdWZmZXJHZXREYXRhUG9pbnRlcihidWZmZXIsIDAsIG51bGxwdHIsIG51bGxwdHIsICZzcmNE
YXRhKSAhPSBub0VycikgeworICAgICAgICBpZiAoUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBv
aW50ZXIoYnVmZmVyLmdldCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAmc3JjRGF0YSkgIT0gbm9F
cnIpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAiVW5hYmxlIHRv
IHJldHJpZXZlIGRhdGEiKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggMjI2NjViYmU2NjA5N2I1Yjg5ZDA0MDJlYTI0OTRlOTVmZWEwZjc0
Ny4uMzRhZjJhYWNhNjg3OTJiZWU2MDE0MGQyMjc4YzBkNDQ0MzYwNDYwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlNhbXBsZU1hcC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQu
aCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CkBAIC0xMzE1LDYgKzEzMTYsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpk
aWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1
cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKK3ZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKQoreworICAgIFdURkNy
YXNoKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVk
YjUxYWQ1NjAzNDYxNzQ1NjRlMjExMWNlZDI4MTI1ZmFjMTAyYWIuLjIyZTg1Njg3NTFjZDJmYTEy
MjYxMWFkY2YwMmRhNDU2YzYwNzYxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1l
UmFuZ2VzOwogCiBlbnVtIGNsYXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsK
QEAgLTY2LDcgKzY3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNv
dXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpID0g
MDsKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGRp
cmVjdGx5IGFuZCBiZSBvdmVycmlkZGVuIGluc3RlYWQuCisgICAgdmlydHVhbCB2b2lkIGFwcGVu
ZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBhZjJhMmU2
YzA0YWY1M2I2MmEzNWJiMDc5MWI2Y2M1ODkwMDllMWE1Li5lYzRlMzQxMmVkNTU2N2FjNzUzMTk1
MTdmMjk3ZDAwYTYzYTU2Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgIk1l
ZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQg
IlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2ltcG9y
dCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KQEAgLTIxMSw4
ICsyMTIsOCBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQygpCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShT
ZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKLSAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnRha2VWZWN0b3IoKSk7Ci0gICAgYXV0byBuc0RhdGEg
PSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNl
Z21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVy
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdz
ID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5k
U3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVh
bURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA5MmQ5YzhkZDUyZjdjNTIw
MmQxNmU3ZjhhZmE3MDdlZDJiNjU3ZTdlLi40MTM2MWFjNjE5NDk2ODg4MDM4ZWVkNmM4MTNhNjQ4
M2Y5MDlkYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRf
dCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZm
ZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4
IGZmYTJmYmEwZGYwNmU4ZWRkNjRhYmNjYmQ0ZjdhYWU1MzAwOTdmNTIuLjlhODQ2OTYxNTg4OTgy
ZDlhN2E4ZDFkZDU3ZDMwYTc0ZGVhNzE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC01NzIsOSArNTcyLDkgQEAg
c3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCkKICAgICByZXR1
cm4gZ2xvYmFsUXVldWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFw
cGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEtPnNpemUo
KSk7CiAKICAgICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9yZSk7CiAgICAgQVNTRVJUKCFt
X2Fib3J0U2VtYXBob3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IDE2YmNiZTBj
NTc3ZmM0MjBkYmE0NzcwZTEzNjU1M2Q5NzAzNThlMzMuLjMzYmUzNTJhNTQzNDQ2ZjIxZTIzYWE1
NjI3MGRjZWFlMTY4NjE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRlICJDb250ZW50VHlw
ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCiAjaW5j
bHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNvZnRMaW5rLmg+CkBAIC03Nyw4ICs3OCw4IEBA
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihm
bG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFZlY3Rv
cjx1aW50OF90PiYmIHNlZ21lbnQpCi0gICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkK
K1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CiAKQEAgLTk4
LDkgKzk5LDkgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNv
bnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJj
ZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCisgICAgICAgIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2
ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+c2l6ZSgpOwogICAgICAg
ICB9CiAgICAgKTsKIH0KQEAgLTExOSwxNSArMTIwLDE1IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwg
dWluCiAgICAgICAgICAgICByZXR1cm4gc2l6ZVJlYWQ7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAg
ICAgICAgWyZdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewotICAgICAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uLCB2ZWN0b3IuZGF0YSgpICsgcG9zaXRpb24sIHNpemVUb1JlYWQpOwor
ICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVzdGluYXRpb24sIHBvc2l0aW9uLCBzaXplVG9S
ZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXplVG9SZWFkOwogICAgICAgICB9CiAgICAgKTsK
IH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVZl
Y3RvcigpCitSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRh
a2VTaGFyZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwK
ICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpAQCAtMTM1LDEyICsxMzYsMjggQEAg
VmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVZlY3Rvcigp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSgpKTsK
ICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3Iu
ZGF0YSgpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmVjdG9yOworICAgICAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgIH0sCisjZW5k
aWYKKyAgICAgICAgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSk7CisgICAgICAgIH0KKyAgICApOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAorI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1B
VF9SRUFERVIpCisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNl
UmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtdKFZlY3Rvcjx1aW50
OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6ZXhjaGFuZ2UodmVjdG9yLCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5w
dHIoKTsKICAgICAgICAgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDRl
ZTg2YjJjZmE2MGVlYTZkZjZkMjk3NzUyNTcwNWUyNjNlNWE1OWMuLjZlYzQzOGZlOTFkNThiYjhk
OGFkZDFhZDIwM2Y1NjExZjk5MGU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC00Myw2
ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGU7CiBjbGFz
cyBNZWRpYVNhbXBsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBP
UlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJj
ZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjYsOSArNjcsMTEgQEAgcHVibGljOgogI2lm
IEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRy
PE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiB0YWtlVmVjdG9yKCk7CisgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRC
dWZmZXIoKTsKKyAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFj
a2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsK
ICAgICAgICAgc2l6ZV90IHJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3QsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uKSBjb25zdDsKQEAgLTc4LDcgKzgxLDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRf
UExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRl
U291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+CisgICAgICAg
ICAgICBSZWY8U2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGVlZDZlMjAyODk4Yzc0ODBjMGU0
OWNkNTRjZDMzOTFhYmJhNTQ3MTEuLjY3ZDY0N2QyNDgyOTEyZGY4M2MxYjRmM2RhMDIzMGNiNTRm
ZGIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0yNzMsNyArMjcz
LDcgQEAgc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkKIAogdXNpbmcgbmFtZXNw
YWNlIHdlYm07CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlN0cmVhbWluZ1ZlY3Rv
clJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgeworY2xhc3MgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6U2VnbWVudFJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU2Vn
bWVudChTZWdtZW50JiYgc2VnbWVudCkKQEAgLTM1NCw2ICszNTQsODAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOwogICAgIH0KIAorICAgIHN0
YXRpYyB2b2lkIEZyZWVCbG9jayh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCisgICAgewor
ICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBidWZmZXItPmRlcmVmKCk7CisgICAgfQorCisg
ICAgU3RhdHVzIFJlYWRJbnRvKHN0ZDo6c2l6ZV90IG51bVRvUmVhZCwgQ01CbG9ja0J1ZmZlclJl
ZiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90KiBudW1BY3R1YWxseVJlYWQpCisgICAgeworICAgICAg
ICBBU1NFUlQob3V0cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5UmVhZCk7CisgICAgICAgIGlmICgh
bnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RF
bm91Z2hNZW1vcnkpOworCisgICAgICAgICpudW1BY3R1YWxseVJlYWQgPSAwOworICAgICAgICBp
ZiAoIW91dHB1dEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90
RW5vdWdoTWVtb3J5KTsKKworICAgICAgICB3aGlsZSAobnVtVG9SZWFkICYmIG1fY3VycmVudFNl
Z21lbnQgIT0gbV9kYXRhLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvJiBjdXJyZW50U2VnbWVu
dCA9ICptX2N1cnJlbnRTZWdtZW50OworCisgICAgICAgICAgICBpZiAobV9wb3NpdGlvbldpdGhp
blNlZ21lbnQgPj0gY3VycmVudFNlZ21lbnQuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgYWR2
YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1
cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgQ01CbG9ja0J1ZmZl
clJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICB1aW50NjRfdCBsYXN0
UmVhZCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudDsKKyAgICAgICAgICAgIGlmICghc2hhcmVkQnVmZmVyKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2UgY291bGQgcG90ZW50aWFsbHkgYWxsb2NhdGUgbW9yZSBtZW1vcnkg
dGhhbiBuZWVkZWQgaWYgdGhlIHJlYWQgaXMgcGFydGlhbC4KKyAgICAgICAgICAgICAgICBhdXRv
IGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCBudW1Ub1JlYWQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxw
dHIsIDAsIG51bVRvUmVhZCwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLCAmcmF3
QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJO
b0VycikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91
Z2hNZW1vcnkpOworICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7
CisgICAgICAgICAgICAgICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIo
cmF3QmxvY2tCdWZmZXIsIDAsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFy
KiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAgaWYgKGVyciAhPSBrQ01CbG9j
a0J1ZmZlck5vRXJyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSBjdXJyZW50U2Vn
bWVudC5yZWFkKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBudW1Ub1JlYWQsIGJsb2NrQnVmZmVy
RGF0YSk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVT
ZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBz
aW5nbGUgRGF0YVNlZ21lbnQiKTsKKyAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBk
b2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAg
IC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhl
IGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KKyAgICAgICAg
ICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVu
dDsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVt
VG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsK
KyAgICAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgYWxsb2NhdG9y
OworICAgICAgICAgICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0gMDsKKyAgICAgICAgICAgICAg
ICBhbGxvY2F0b3IuQWxsb2NhdGVCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgYWxs
b2NhdG9yLkZyZWVCbG9jayA9IEZyZWVCbG9jazsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iu
cmVmQ29uID0gZmlyc3RTZWdtZW50LnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0U2VnbWVu
dC0+cmVmKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJD
cmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nh
c3Q8dWludDhfdCo+KGZpcnN0U2VnbWVudC0+ZGF0YSgpKSksIGZpcnN0U2VnbWVudC0+c2l6ZSgp
LCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgY2FuUmVhZCwg
MCwgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJsb2Nr
QnVmZmVyTm9FcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
Tm90RW5vdWdoTWVtb3J5KTsKKyAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IGNhblJlYWQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGJsb2NrQnVmZmVyID0gYWRvcHRDRihyYXdC
bG9ja0J1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckFw
cGVuZEJ1ZmZlclJlZmVyZW5jZShvdXRwdXRCdWZmZXIsIHJhd0Jsb2NrQnVmZmVyLCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAg
ICAgICBtX3Bvc2l0aW9uICs9IGxhc3RSZWFkOworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVh
ZCArPSBsYXN0UmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IGxh
c3RSZWFkOworICAgICAgICAgICAgbnVtVG9SZWFkIC09IGxhc3RSZWFkOworICAgICAgICAgICAg
aWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID09IGN1cnJlbnRTZWdtZW50LnNpemUoKSkKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOworICAgICAgICB9CisgICAgICAg
IGlmICghbnVtVG9SZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CisgICAgICAgIGlmICgqbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a1dvdWxkQmxvY2spOworICAgIH0KKwogICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiAgICAgdm9pZCByZXNldCgpCkBAIC01
OTUsNyArNjY5LDcgQEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihXVEY6
Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQorICAgIDogbV9yZWFkZXIo
V1RGOjptYWtlVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkpCiB7CiAgICAgaWYgKGlzV2VibVBh
cnNlckF2YWlsYWJsZSgpKQogICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKQEAgLTEwOTksNjYgKzExNzMsNDMgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGwKIAogI2RlZmluZSBQQVJTRVJfTE9HX0VSUk9SX0lGX1BP
U1NJQkxFKC4uLikgaWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJzZXIoKS5sb2dnZXJQdHIo
KS0+ZXJyb3IobG9nQ2hhbm5lbCgpLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIobG9n
Q2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlmaWVyKCkpLCBfX1ZBX0FS
R1NfXykKIAotI2lmIEVOQUJMRShWUDkpCi12b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZp
ZGVvVHJhY2tEYXRhOjpyZXNldCgpCitSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZl
cihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewotICAgIG1fY3VycmVudEJs
b2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICBUcmFja0RhdGE6OnJlc2V0KCk7CisgICAgaWYgKCFv
ZmZzZXQgJiYgIWxlbmd0aCAmJiBQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyht
X2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIDAsIDApKQorICAgICAgICByZXR1cm4gbV9jb21w
bGV0ZUJsb2NrQnVmZmVyOworICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Q29udGlndW91c0J1ZmZl
ciA9IG51bGxwdHI7CisgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMo
bnVsbHB0ciwgbV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBv
ZmZzZXQsIGxlbmd0aCwgMCwgJnJhd0NvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVy
Tm9FcnIpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQgdG8g
Y3JlYXRlIGNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICByZXR1cm4gYWRvcHRDRihyYXdDb250aWd1b3VzQnVmZmVyKTsKIH0KLSNl
bmRpZgogCi13ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0Rh
dGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNvbnN0IEZyYW1lTWV0
YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNvbnN0IENNVGltZSYg
cHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQord2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImIHJl
YWRlciwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2NF90KiBieXRl
c1JlbWFpbmluZykKIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3
QmxvY2tCdWZmZXIgPSBudWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVudFBhY2tldFNpemUgJiYg
Km1fY3VycmVudFBhY2tldFNpemUgIT0gbWV0YWRhdGEuc2l6ZSkgewotICAgICAgICAvLyBUaGUg
cGFja2V0J3MgbWV0YWRhdGEgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudGx5IHBlbmRpbmcgcGFy
dGlhbCBwYWNrZXQ7IHJlc3RhcnQuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01F
U1NBR0UoIlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNp
Y2FsIHN0YXRlIik7Ci0gICAgICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7Ci0gICAgICAgIG1f
Y3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6
ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobV9jb21wbGV0ZVBhY2tldFNpemUgJiYgKm1fY29t
cGxldGVQYWNrZXRTaXplICE9IG1ldGFkYXRhLnNpemUpIHsKKyAgICAgICAgLy8gVGhlIHBhY2tl
dCdzIG1ldGFkYXRhIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnRseSBwZW5kaW5nIGNvbXBsZXRl
IHBhY2tldDsgcmVzdGFydC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FH
RSgiVHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRlIik7
CisgICAgICAgIHJlc2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRQYWNrZXRTaXpl
KQotICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gbWV0YWRhdGEuc2l6ZTsKKyAgICBpZiAo
IW1fY29tcGxldGVQYWNrZXRTaXplKQorICAgICAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IG1l
dGFkYXRhLnNpemU7CiAKICAgICBpZiAoIW1fY3VycmVudEJsb2NrQnVmZmVyKSB7Ci0gICAgICAg
IGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsICptX2N1cnJlbnRQYWNrZXRTaXplLCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCAwLCAqbV9jdXJyZW50UGFja2V0U2l6ZSwgMCwgJnJhd0Jsb2Nr
QnVmZmVyKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJP
Ul9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQg
d2l0aCBlcnJvciIsIGVycik7CisgICAgICAgIEFTU0VSVCghbV9wYXJ0aWFsQnl0ZXNSZWFkKTsK
KyAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbU1heEJsb2NrQnVmZmVyQ2FwYWNpdHksIDAsICZyYXdCbG9ja0J1ZmZlcik7Cisg
ICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VyciB8fCAhcmF3QmxvY2tCdWZmZXIp
IHsKKyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZm
ZXJDcmVhdGVFbXB0eSBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1
cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLQogICAgICAgICBt
X2N1cnJlbnRCbG9ja0J1ZmZlciA9IGFkb3B0Q0YocmF3QmxvY2tCdWZmZXIpOwotICAgICAgICBt
X3BhcnRpYWxCeXRlc1JlYWQgPSAwOwotCi0gICAgICAgIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckFzc3VyZUJsb2NrTWVtb3J5KG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpKTsKLSAgICAgICAg
aWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01B
dWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGgg
ZXJyb3IiLCBlcnIpOwotICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwotICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCptX2N1cnJlbnRQYWNrZXRTaXpl
IDwgbV9wYXJ0aWFsQnl0ZXNSZWFkICsgKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIFBBUlNF
Ul9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkludmFsaWQgZnJhbWUgc2l6ZSBhbGxvY2F0ZWQsIGln
bm9yaW5nIHRoZSBlbnRpcmUgZnJhbWUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkICs9
ICpieXRlc1JlbWFpbmluZzsKLSAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwotICAgIH0KICAgICB3aGlsZSAoKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIHNp
emVfdCBzZWdtZW50U2l6ZUF0UG9zaXRpb24gPSAwOwotICAgICAgICB1aW50OF90KiBibG9ja0J1
ZmZlckRhdGEgPSBudWxscHRyOwotICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckdldERhdGFQb2ludGVyKG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCBtX3BhcnRpYWxCeXRl
c1JlYWQsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVm
ZmVyRGF0YSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJS
T1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBl
cnJvciIsIGVycik7Ci0gICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCpieXRlc1JlbWFpbmluZyA8IHNlZ21lbnRT
aXplQXRQb3NpdGlvbikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiQW4gZXJyb3Igb2NjdXJyZWQsIGRlc3RpbmF0aW9uIGJ1ZmZlciB0b28gc21hbGwgdG8gY29u
dGFpbiBvdXIgZnJhbWUiKTsKLSAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKLSAgICAgICAgfQogICAgICAgICB1aW50NjRfdCBieXRlc1JlYWQ7Ci0gICAg
ICAgIGF1dG8gc3RhdHVzID0gcmVhZGVyLlJlYWQoKmJ5dGVzUmVtYWluaW5nLCAodWludDhfdCop
YmxvY2tCdWZmZXJEYXRhLCAmYnl0ZXNSZWFkKTsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBzdGF0
aWNfY2FzdDxTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTZWdtZW50UmVhZGVyJj4ocmVhZGVyKS5S
ZWFkSW50bygqYnl0ZXNSZW1haW5pbmcsIG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCAmYnl0
ZXNSZWFkKTsKICAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IGJ5dGVzUmVhZDsKICAgICAgICAg
bV9wYXJ0aWFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKIApAQCAtMTE2NiwxMiArMTIxNywzMyBA
QCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNv
bnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAg
ICB9CiAKLSAgICBBU1NFUlQobV9wYXJ0aWFsQnl0ZXNSZWFkIDw9ICptX2N1cnJlbnRQYWNrZXRT
aXplKTsKLSAgICBpZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY3VycmVudFBhY2tldFNpemUp
CisgICAgQVNTRVJUKG1fcGFydGlhbEJ5dGVzUmVhZCA8PSAqbV9jb21wbGV0ZVBhY2tldFNpemUp
OworICAgIGlmIChtX3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jb21wbGV0ZVBhY2tldFNpemUpCiAg
ICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprT2tQYXJ0aWFsKTsKIAot
ICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRpb25UaW1lLCBzYW1wbGVDb3VudCwgbWV0
YWRhdGEpOworICAgIGlmICghbV9jb21wbGV0ZUJsb2NrQnVmZmVyKQorICAgICAgICBtX2NvbXBs
ZXRlQmxvY2tCdWZmZXIgPSBXVEZNb3ZlKG1fY3VycmVudEJsb2NrQnVmZmVyKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZl
cmVuY2UobV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5n
ZXQoKSwgMCwgMCwgMCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBBUlNFUl9M
T0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2Ug
dG8gY29tcGxldGUgYmxvY2sgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICB9CisgICAg
ICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgbV9wYXJ0aWFs
Qnl0ZXNSZWFkID0gMDsKKworICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjpr
T2tDb21wbGV0ZWQpOworfQogCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNv
bnN0IENNVGltZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQoreworI2lmIEVO
QUJMRShWUDkpCisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0YWRh
dGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRfb2soKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXR1czsKKworICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRp
b25UaW1lLCBzYW1wbGVDb3VudCwgbWV0YWRhdGEpOwogICAgIHJlc2V0KCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CkBAIC0xMTg2LDggKzEyNTgsMTQgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNv
bnN0IENNVGltZSYgcHIKIHsKICNpZiBFTkFCTEUoVlA5KQogICAgIHVpbnQ4X3QqIGJsb2NrQnVm
ZmVyRGF0YSA9IG51bGxwdHI7Ci0gICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7
Ci0gICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihtX2N1cnJl
bnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwgJnNlZ21lbnRTaXplQXRQb3NpdGlvbiwgbnVsbHB0ciwg
KGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG1heEhlYWRl
clNpemUgPSAzMjsgLy8gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgVlA5IHVuY29tcHJlc3NlZCBo
ZWFkZXIgaXMgMTQ0IGJpdHMgYW5kIDExIGJ5dGVzIGZvciBWUDguIFJvdW5kIGhpZ2guCisgICAg
c2l6ZV90IHNlZ21lbnRIZWFkZXJMZW5ndGggPSBzdGQ6Om1pbihtYXhIZWFkZXJTaXplLCAqbV9j
b21wbGV0ZVBhY2tldFNpemUpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3Vv
dXNDb21wbGV0ZUJsb2NrQnVmZmVyKDAsIHNlZ21lbnRIZWFkZXJMZW5ndGgpOworICAgIGlmICgh
Y29udGlndW91c0J1ZmZlcikgeworICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxF
KCJWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyIGZhaWxlZCB0byBjcmVhdGUgY29u
dGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBl
cnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihjb250aWd1b3VzQnVmZmVyLmdl
dCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpOwogICAg
IGlmIChlcnIpIHsKICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9j
a0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTE5Niw3ICsxMjc0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIKICAg
ICBib29sIGlzS2V5ID0gZmFsc2U7CiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IGZvcm1hdERlc2NyaXB0aW9uOwogICAgIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6VlA5
KSB7Ci0gICAgICAgIGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIo
YmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICBpZiAoIW1f
aGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2Vn
bWVudEhlYWRlckxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKG1f
aGVhZGVyUGFyc2VyLmtleSgpKSB7CkBAIC0xMjA5LDcgKzEyODcsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29uc3Qg
Q01UaW1lJiBwcgogICAgICAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShmb3Jt
YXREZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjb2RlYygpID09IENv
ZGVjVHlwZTo6VlA4KSB7Ci0gICAgICAgIGF1dG8gaGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRl
cihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbik7CisgICAgICAgIGF1dG8g
aGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRIZWFk
ZXJMZW5ndGgpOwogICAgICAgICBpZiAoaGVhZGVyICYmIGhlYWRlci0+a2V5ZnJhbWUpIHsKICAg
ICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKICAgICAgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRp
b24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoKmhlYWRlciwgdHJhY2so
KS52aWRlby52YWx1ZSgpLmNvbG91cik7CkBAIC0xMjIyLDcgKzEzMDAsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29u
c3QgQ01UaW1lJiBwcgogICAgIH0KIAogICAgIGF1dG8gdHJhY2sgPSB0aGlzLT50cmFjaygpOwot
ICAgIC8vIEZJWE1FOiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBmcmFtZSwg
YnV0IG9ubHkgdGhpcyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1ZmZl
cmAuCisgICAgLy8gRklYTUU6IEEgYmxvY2sgbWlnaHQgY29udGFpbiBtb3JlIHRoYW4gb25lIGZy
YW1lLCBidXQgb25seSB0aGlzIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50byBgY29tcGxldGVCbG9j
a0J1ZmZlcmAuCiAgICAgLy8gQmVsb3cgd2UgY3JlYXRlIHNhbXBsZSBidWZmZXJzIGZvciBlYWNo
IGZyYW1lLCBlYWNoIHdpdGggdGhlIGJsb2NrJ3MgdGltZWNvZGUgYW5kIGBudW1fZnJhbWVzYCB2
YWx1ZS4KICAgICAvLyBTaG91bGRuJ3Qgd2UgY3JlYXRlIGp1c3Qgb25lIHNhbXBsZSBidWZmZXIg
b25jZSBhbGwgdGhlIGJsb2NrJ3MgZnJhbWVzIGhhdmUgYmVlbiByZWFkIGludG8gYGN1cnJlbnRC
bG9ja0J1ZmZlcmA/CiAKQEAgLTEyMzEsOSArMTMwOSw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUm
IHByCiAgICAgICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICog
cHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUgLyBrX3VzX2luX3NlY29uZHM7CiAKICAgICBDTVNh
bXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBmcmFt
ZVNpemUgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fY3VycmVudEJsb2NrQnVm
ZmVyLmdldCgpKTsKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nID0geyBQQUw6OkNNVGlt
ZU1ha2UoZHVyYXRpb24sIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlKSwgcHJlc2VudGF0aW9u
VGltZSwgcHJlc2VudGF0aW9uVGltZSB9OwotICAgIGVyciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJD
cmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQo
KSwgdGhpcy0+Zm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxlQ291bnQsIDEsICZ0aW1p
bmcsIDEsICZmcmFtZVNpemUsICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGVyciA9IFBBTDo6Q01T
YW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxv
Y2tCdWZmZXIuZ2V0KCksIHRoaXMtPmZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBsZUNv
dW50LCAxLCAmdGltaW5nLCAxLCAmKm1fY29tcGxldGVQYWNrZXRTaXplLCAmcmF3U2FtcGxlQnVm
ZmVyKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwog
ICAgICAgICByZXR1cm47CkBAIC0xMjYzLDU2ICsxMzQwLDI3IEBAIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRp
bWUmIHByCiAjZW5kaWYgLy8gRU5BQkxFKFZQOSkKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXQoKQordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQogeworICAgIG1OdW1GcmFtZXNJ
bkNvbXBsZXRlQmxvY2sgPSAwOwogICAgIG1fcGFja2V0RGVzY3JpcHRpb25zLmNsZWFyKCk7Ci0g
ICAgbV9wYWNrZXRzRGF0YS5jbGVhcigpOwotICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQg
PSBzdGQ6Om51bGxvcHQ7Ci0gICAgVHJhY2tEYXRhOjpyZXNldCgpOworICAgIG1fY3VycmVudFBh
Y2tldEJ5dGVPZmZzZXQgPSAwOworICAgIFRyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKTsKIH0K
IAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpj
b25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYgcmVhZGVyLCBjb25zdCBGcmFtZU1ldGFkYXRh
JiBtZXRhZGF0YSwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nLCBjb25zdCBDTVRpbWUmIHByZXNl
bnRhdGlvblRpbWUsIGludCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NFUlQoc2FtcGxlQ291bnQp
OwotCi0gICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICBt
X2J5dGVPZmZzZXQgPSBtZXRhZGF0YS5wb3NpdGlvbjsKLSAgICAgICAgbV9zYW1wbGVQcmVzZW50
YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKLSAgICB9Ci0KLSAgICBpZiAobV9jdXJyZW50
UGFja2V0U2l6ZSAmJiAqbV9jdXJyZW50UGFja2V0U2l6ZSAhPSBtZXRhZGF0YS5zaXplKSB7Ci0g
ICAgICAgIC8vIFRoZSBwYWNrZXQncyBtZXRhZGF0YSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50
bHkgcGVuZGluZyBwYXJ0aWFsIHBhY2tldDsgcmVzdGFydC4KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEX1dJVEhfTUVTU0FHRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHdl
Ym0gaW4gbm9uc2Vuc2ljYWwgc3RhdGUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0g
MDsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0K
LSAgICBpZiAoIW1fY3VycmVudFBhY2tldFNpemUpCi0gICAgICAgIG1fY3VycmVudFBhY2tldFNp
emUgPSBtZXRhZGF0YS5zaXplOwotCi0gICAgLy8gRW5zdXJlIHdlIGhhdmUgcm9vbSB0byBzdG9y
ZSB0aGUgZnVsbCBwZW5kaW5nIGZyYW1lLgotICAgIGlmIChtX3BhY2tldHNEYXRhLnNpemUoKSA8
IG1fcGFja2V0c0J5dGVzUmVhZCArIG1ldGFkYXRhLnNpemUpCi0gICAgICAgIG1fcGFja2V0c0Rh
dGEuZ3JvdyhtX3BhY2tldHNCeXRlc1JlYWQgKyBtZXRhZGF0YS5zaXplKTsKLQotICAgIGlmICgh
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCkKLSAgICAgICAgbV9jdXJyZW50UGFja2V0Qnl0ZU9m
ZnNldCA9IG1fcGFja2V0c0J5dGVzUmVhZDsKLQotICAgIHdoaWxlICgqYnl0ZXNSZW1haW5pbmcp
IHsKLSAgICAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwotICAgICAgICBhdXRvIHN0YXR1cyA9IHJl
YWRlci5SZWFkKCpieXRlc1JlbWFpbmluZywgbV9wYWNrZXRzRGF0YS5kYXRhKCkgKyBtX3BhY2tl
dHNCeXRlc1JlYWQgKyBtX3BhcnRpYWxCeXRlc1JlYWQsICZieXRlc1JlYWQpOwotICAgICAgICAq
Ynl0ZXNSZW1haW5pbmcgLT0gYnl0ZXNSZWFkOwotICAgICAgICBtX3BhcnRpYWxCeXRlc1JlYWQg
Kz0gYnl0ZXNSZWFkOwotCi0gICAgICAgIGlmICghc3RhdHVzLmNvbXBsZXRlZF9vaygpKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9CisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJh
bWVEYXRhKHJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1
cy5jb21wbGV0ZWRfb2soKSkKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKIAotICAgIEFTU0VSVCht
X3BhcnRpYWxCeXRlc1JlYWQgPD0gKm1fY3VycmVudFBhY2tldFNpemUpOwotICAgIGlmIChtX3Bh
cnRpYWxCeXRlc1JlYWQgPCAqbV9jdXJyZW50UGFja2V0U2l6ZSkKLSAgICAgICAgcmV0dXJuIHdl
Ym06OlN0YXR1cyh3ZWJtOjpTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgIC8vIEF0dGVtcHRzIHRv
IG1pbmltaXNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRpb25zIGR1ZSB0byByZXBldGl0
dmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSBjYWxscyBpbiByZWFkRnJhbWVE
YXRhLgorICAgIG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2srKzsKKyAgICBpZiAobU51bUZyYW1l
c0luQ29tcGxldGVCbG9jayA+IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5KQorICAgICAgICBtTWF4
QmxvY2tCdWZmZXJDYXBhY2l0eSA9IG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2s7CiAKLSAgICBt
X3BhY2tldHNCeXRlc1JlYWQgKz0gbV9wYXJ0aWFsQnl0ZXNSZWFkOwotICAgIG1fcGFydGlhbEJ5
dGVzUmVhZCA9IDA7CisgICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKIAogICAg
IGlmICghZm9ybWF0RGVzY3JpcHRpb24oKSkgewogICAgICAgICBpZiAoIXRyYWNrKCkuY29kZWNf
cHJpdmF0ZS5pc19wcmVzZW50KCkpIHsKQEAgLTEzMjUsOCArMTM3MywxOSBAQCB3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURh
dGEod2VibTo6UmVhZAogICAgICAgICBpZiAoY29kZWMoKSA9PSBDb2RlY1R5cGU6OlZvcmJpcykK
ICAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlVm9yYmlzQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbihwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CisgICAgICAgICAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihtX2N1
cnJlbnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgICAgICAg
ICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHVuYWJs
ZSB0byBjcmVhdGUgY29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdWludDhfdCogYmxvY2tCdWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1
dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoY29udGlndW91c0J1ZmZl
ci5nZXQoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsK
KyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJy
b3IiLCBlcnIpOworICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVt
YWluaW5nKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIE9wdXNDb29raWVDb250ZW50cyBj
b29raWVDb250ZW50czsKLSAgICAgICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJp
dmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksIG1fcGFja2V0c0J5dGVzUmVhZCwg
bV9wYWNrZXRzRGF0YS5kYXRhKCksIGNvb2tpZUNvbnRlbnRzKSkgeworICAgICAgICAgICAgaWYg
KCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRh
dGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRl
bnRzKSkgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkZh
aWxlZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVy
biBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KQEAgLTEzNTUs
MTAgKzE0MTQsMjEgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICB9IGVsc2UgaWYgKGNv
ZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CiAgICAgICAgIC8vIE9wdXMgdGVjaG5pY2FsbHkg
YWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1wYWNrZXQgdmFsdWVzIHRv
IGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8vIENvcmVBdWRpbyBkb2Vz
bid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFuZ2Ugb24gYSBwZXItcGFj
a2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVuCi0gICAgICAgIC8vIHRoYXQga2luZCBv
ZiB2YXJpYWJsaWxpdHkgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIC8vIHRoYXQga2luZCBvZiB2
YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNv
b2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9IHRyYWNrKCkuY29kZWNf
cHJpdmF0ZS52YWx1ZSgpOwotICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZh
dGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCBtX3BhY2tldHNCeXRlc1JlYWQsIG1f
cGFja2V0c0RhdGEuZGF0YSgpLCBjb29raWVDb250ZW50cykKKyAgICAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIobV9jdXJyZW50UGFja2V0
Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKKyAgICAgICAgaWYgKCFjb250aWd1
b3VzQnVmZmVyKSB7CisgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJB
dWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YTogdW5hYmxlIHRvIGNyZWF0ZSBjb250aWd1
b3VzIGRhdGEgYmxvY2siKTsKKyAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKKyAgICAgICAgfQorICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRhdGEg
PSBudWxscHRyOworICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQ
b2ludGVyKGNvbnRpZ3VvdXNCdWZmZXIuZ2V0KCksIDAsIG51bGxwdHIsIG51bGxwdHIsIChjaGFy
KiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBm
YWlsZWQgd2l0aCBlcnJvciIsIGVycik7CisgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2
YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxl
dGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQogICAgICAgICAg
ICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0
CiAgICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVE
dXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1
cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwpAQCAt
MTM2NiwxNCArMTQzNiwxNSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oKm1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQpLCAwLCBzdGF0aWNfY2FzdDxVSW50MzI+
KCptX2N1cnJlbnRQYWNrZXRTaXplKSB9KTsKLSAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0
ID0gc3RkOjpudWxsb3B0OwotICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxvcHQ7
CisgICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY29t
cGxldGVQYWNrZXRTaXplKSB9KTsKKyAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ICs9ICpt
X2NvbXBsZXRlUGFja2V0U2l6ZTsKKyAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gc2FtcGxlRHVyYXRpb24gPSBQQUw6OkNNVGltZUdldFNlY29uZHMo
UEFMOjpDTVRpbWVTdWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRhdGlv
blRpbWUpKSArIFBBTDo6Q01UaW1lR2V0U2Vjb25kcyhtX3BhY2tldER1cmF0aW9uKSAqIHNhbXBs
ZUNvdW50OwotCi0gICAgaWYgKHNhbXBsZUR1cmF0aW9uID49IG1fbWluaW11bVNhbXBsZUR1cmF0
aW9uKQorICAgIGlmIChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1TYW1wbGVEdXJhdGlvbikg
ewogICAgICAgICBjcmVhdGVTYW1wbGVCdWZmZXIobWV0YWRhdGEucG9zaXRpb24pOworICAgICAg
ICByZXNldCgpOworICAgIH0KIAogICAgIEFTU0VSVCghKmJ5dGVzUmVtYWluaW5nKTsKICAgICBy
ZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06OlN0YXR1czo6a09rQ29tcGxldGVkKTsKQEAgLTEzODEs
MzkgKzE0NTIsMTcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKIAogdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCiB7Ci0gICAgaWYgKG1fcGFja2V0
RGVzY3JpcHRpb25zLmlzRW1wdHkoKSB8fCAhbV9wYWNrZXRzQnl0ZXNSZWFkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fcGFja2V0c0RhdGEuaXNFbXB0eSgpKTsKLQotICAgIENN
QmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyID0gUEFM
OjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG51bGxwdHIsIG1fcGFja2V0c0J5dGVzUmVhZCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0
ciwgMCwgbV9wYWNrZXRzQnl0ZXNSZWFkLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0Zs
YWcsICZibG9ja0J1ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBQQVJTRVJfTE9HX0VS
Uk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxl
ZCB3aXRoICVkIiwgZXJyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGJ1ZmZl
ciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOwotCi0gICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVy
UmVwbGFjZURhdGFCeXRlcyhtX3BhY2tldHNEYXRhLmRhdGEoKSwgYnVmZmVyLmdldCgpLCAwLCBt
X3BhY2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdp
dGggJWQiLCBlcnIpOworICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVC
dWZmZXIgPSBudWxscHRyOwotICAgIGVyciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0
ZVJlYWR5V2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIu
Z2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25zLnNp
emUoKSwgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5kYXRh
KCksICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2FtcGxl
QnVmZmVyQ3JlYXRlUmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fY29tcGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQo
KSwgbV9wYWNrZXREZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUs
IG1fcGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYg
KGVycikgewogICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUF1ZGlvU2Ft
cGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVy
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9w
dENGKHJhd1NhbXBsZUJ1ZmZlcik7CiAKLSAgICBtX3BhY2tldHNEYXRhLnJlbW92ZSgwLCBtX3Bh
Y2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0KQotICAg
ICAgICAqbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCAtPSBtX3BhY2tldHNCeXRlc1JlYWQ7Ci0g
ICAgbV9wYWNrZXRzQnl0ZXNSZWFkID0gMDsKLSAgICBtX3BhY2tldERlc2NyaXB0aW9ucy5jbGVh
cigpOwotCiAgICAgYXV0byB0cmFja0lEID0gdHJhY2soKS50cmFja191aWQudmFsdWUoKTsKICAg
ICBwYXJzZXIoKS5wcm92aWRlTWVkaWFEYXRhKFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJhY2tJ
RCwgbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0KTsKIH0KQEAgLTE0MjEsOCArMTQ3MCwxMSBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZm
ZXIoc3RkOjpvcHRpb25hbDxzaQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBl
bmRpbmdBdWRpb0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrcykg
ewotICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlRyYWNrRGF0YTo6VHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBkb3duY2FzdDxBdWRpb1Ry
YWNrRGF0YT4odHJhY2suZ2V0KCkpLmNyZWF0ZVNhbXBsZUJ1ZmZlcigpOworICAgICAgICBpZiAo
dHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6
VHlwZTo6QXVkaW8pIHsKKyAgICAgICAgICAgIEF1ZGlvVHJhY2tEYXRhJiBhdWRpb1RyYWNrID0g
ZG93bmNhc3Q8QXVkaW9UcmFja0RhdGE+KHRyYWNrLmdldCgpKTsKKyAgICAgICAgICAgIGF1ZGlv
VHJhY2suY3JlYXRlU2FtcGxlQnVmZmVyKCk7CisgICAgICAgICAgICBhdWRpb1RyYWNrLnJlc2V0
Q29tcGxldGVkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaAppbmRleCA5NTI5NzZiMjcyZjcxMTg1YmI3ODdmNWFhMzQyM2M0Zjg3ZDZjNGE2Li42
OGExMjAwMGUyNGU2OThkZjBhYzk0OTA1YTcxNzZlMGNiMTBmMWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlQVZGT2Jq
QzsKIGNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFy
c2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgY2xhc3Mg
U2VnbWVudFJlYWRlcjsKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2YWls
YWJsZSgpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwpAQCAtMTU1LDMwICsxNTUsNDIg
QEAgcHVibGljOgogICAgICAgICB2b2lkIHNldEZvcm1hdERlc2NyaXB0aW9uKFJldGFpblB0cjxD
TUZvcm1hdERlc2NyaXB0aW9uUmVmPiYmIGRlc2NyaXB0aW9uKSB7IG1fZm9ybWF0RGVzY3JpcHRp
b24gPSBXVEZNb3ZlKGRlc2NyaXB0aW9uKTsgfQogCiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk0mIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyOyB9Ci0gICAgICAgIAorCiAg
ICAgICAgIHZpcnR1YWwgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVy
JiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwg
aW50KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprSW52YWxpZEVsZW1lbnRJ
ZCk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXRDb21wbGV0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2Nv
bXBsZXRlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZvaWQgcmVz
ZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgcmVzZXRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIG1fY29t
cGxldGVQYWNrZXRTaXplID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbV9wYXJ0aWFsQnl0
ZXNSZWFkID0gMDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsK
ICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbV9jdXJyZW50UGFja2V0U2l6ZTsKLSAgICAgICAgLy8gU2l6ZSBvZiB0aGUgY3VycmVudGx5
IHBhcnNlZCBwYWNrZXQsIHBvc3NpYmx5IGluY29tcGxldGUuCi0gICAgICAgIHNpemVfdCBtX3Bh
cnRpYWxCeXRlc1JlYWQgeyAwIH07CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVm
PiBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICAgICAgd2VibTo6U3RhdHVzIHJlYWRGcmFtZURhdGEod2VibTo6UmVh
ZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmlu
Zyk7CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2NvbXBsZXRlQmxvY2tC
dWZmZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2NvbXBsZXRlUGFja2V0U2l6
ZTsKKyAgICAgICAgLy8gSW5pdGlhbCBhbGxvY2F0aW9uIHNpemUgb2YgZW1wdHkgQ01CbG9ja0J1
ZmZlci4KKyAgICAgICAgc2l6ZV90IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5IHsgMCB9OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQ29kZWNUeXBlIG1fY29kZWM7CiAgICAgICAgIHdlYm06OlRy
YWNrRW50cnkgbV90cmFjazsKICAgICAgICAgVHlwZSBtX3RyYWNrVHlwZTsKICAgICAgICAgUmV0
YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZm9ybWF0RGVzY3JpcHRpb247CisgICAg
ICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICAg
ICAgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSYgbV9wYXJzZXI7CisgICAgICAgIC8vIFNpemUg
b2YgdGhlIGN1cnJlbnRseSBpbmNvbXBsZXRlIHBhcnNlZCBwYWNrZXQuCisgICAgICAgIHNpemVf
dCBtX3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CiAgICAgfTsKIAogICAgIGNsYXNzIFZpZGVvVHJh
Y2tEYXRhIDogcHVibGljIFRyYWNrRGF0YSB7CkBAIC0xOTMsOSArMjA1LDYgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShWUDkpCi0gICAgICAgIHZvaWQgcmVz
ZXQoKSBmaW5hbDsKLSNlbmRpZgogICAgICAgICB3ZWJtOjpTdGF0dXMgY29uc3VtZUZyYW1lRGF0
YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgdWludDY0X3QqLCBj
b25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwogCiAgICAgcHJpdmF0ZToKQEAgLTIwNCw3ICsyMTMs
NiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVlA5KQogICAgICAgICB2cDlfcGFyc2VyOjpWcDlI
ZWFkZXJQYXJzZXIgbV9oZWFkZXJQYXJzZXI7Ci0gICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVm
ZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICNlbmRpZgogICAgIH07CiAKQEAgLTIyMiw3
ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB3ZWJtOjpTdGF0dXMgY29u
c3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwg
dWludDY0X3QqLCBjb25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwotICAgICAgICB2b2lkIHJlc2V0
KCkgZmluYWw7CisgICAgICAgIHZvaWQgcmVzZXRDb21wbGV0ZWQoKSBmaW5hbDsKICAgICAgICAg
dm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhdGVzdEJ5dGVS
YW5nZU9mZnNldCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjMwLDE1ICsy
MzgsMTEgQEAgcHVibGljOgogCiAgICAgICAgIENNVGltZSBtX3NhbXBsZVByZXNlbnRhdGlvblRp
bWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tldER1cmF0aW9uOwotICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gbV9wYWNrZXRzRGF0YTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY3Vy
cmVudFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIC8vIFNpemUgb2YgdGhlIGNvbXBsZXRlIHBh
Y2tldHMgcGFyc2VkIHNvIGZhci4KLSAgICAgICAgc2l6ZV90IG1fcGFja2V0c0J5dGVzUmVhZCB7
IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fYnl0ZU9mZnNldCB7IDAgfTsKKyAgICAgICAgc2l6ZV90
IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgeyAwIH07CiAgICAgICAgIHVpbnQ4X3QgbV9mcmFt
ZXNQZXJQYWNrZXQgeyAwIH07CiAgICAgICAgIFNlY29uZHMgbV9mcmFtZUR1cmF0aW9uIHsgMF9z
IH07CiAgICAgICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX3BhY2tl
dERlc2NyaXB0aW9uczsKLQorICAgICAgICBzaXplX3QgbU51bUZyYW1lc0luQ29tcGxldGVCbG9j
ayB7IDAgfTsKICAgICAgICAgLy8gRklYTUU6IDAuNSAtIDEuMCBzZWNvbmRzIGlzIGEgYmV0dGVy
IGR1cmF0aW9uIHBlciBzYW1wbGUgYnVmZmVyLCBidXQgdXNlIDIgc2Vjb25kcyBzbyBhdCBsZWFz
dCB0aGUgZmlyc3QKICAgICAgICAgLy8gc2FtcGxlIGJ1ZmZlciB3aWxsIHBsYXkgdW50aWwgd2Ug
Zml4IE1lZGlhU2FtcGxlQ3Vyc29yOjpjcmVhdGVTYW1wbGVCdWZmZXIgdG8gZGVhbCB3aXRoIGBl
bmRDdXJzb3JgLgogICAgICAgICBmbG9hdCBtX21pbmltdW1TYW1wbGVEdXJhdGlvbiB7IDIgfTsK
QEAgLTI4MSw3ICsyODUsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpOb25lIH07CiAKLSAgICBVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPiBtX3JlYWRl
cjsKKyAgICBVbmlxdWVSZWY8U2VnbWVudFJlYWRlcj4gbV9yZWFkZXI7CiAKICAgICBWZWN0b3I8
VW5pcXVlUmVmPFRyYWNrRGF0YT4+IG1fdHJhY2tzOwogICAgIHVzaW5nIEJsb2NrVmFyaWFudCA9
IFZhcmlhbnQ8d2VibTo6QmxvY2ssIHdlYm06OlNpbXBsZUJsb2NrPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHku
Y3BwCmluZGV4IGQ4ZGNiMTEwMTNjZTc2N2U4NDNmOTk3NjBkNzQ5OWI5YmU2YzBjNzMuLmQwMDZh
Y2VhMDhhZjdiMTgxNjgwNjQzODEyNWVlOWUxODk2NGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNw
cApAQCAtMTkyLDkgKzE5MiwxMyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3Vy
Y2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQogICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdl
ZChmbGFnKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgYnVm
ZmVySGFuZGxlKQogewotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKGRhdGEudmVj
dG9yKCkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoYnVmZmVy
SGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
aWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc291cmNlQnVmZmVy
UHJpdmF0ZS0+YXBwZW5kKHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZlckhh
bmRsZS5kYXRhU2l6ZSkpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphYm9y
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGM5MTI5MDE1OGQ4M2VjOTYwMjVlYzk1OTMzZjJhMzFi
NzVlNWVhM2YuLjc3ZDgyN2FiMzAzMmExNjRiM2Y0YTc2ZTAxODE4NmZmN2I5MTQzMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U291cmNlQnVmZmVyUHJpdmF0ZS5oPgpAQCAtODcsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRUeXBlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBzZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUpOwotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogICAgIHZvaWQg
cmVzZXRQYXJzZXJTdGF0ZSgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZlZmU4ZjU1ZjlkODg1OWMx
YjUwOWY2N2I1MjNmN2M3ODUwOGQ3OWIuLjhmNjIwYmEyZTk2ZmZmNjMyZWYzZDAzMmE1YjBjNDc4
NDk4ZmUyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDcg
KzI5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJveHkgTm90UmVmQ291bnRl
ZCB7CiAgICAgU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIENhblN3aXRjaFRvVHlwZShXZWJD
b3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSkgLT4gKGJvb2wgY2FuU3dpdGNoKSBTeW5jaHJv
bm91cwogICAgIFNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZSBhcHBlbmRN
b2RlKQotICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBBcHBlbmQoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFib3J0KCkKICAgICBSZXNl
dFBhcnNlclN0YXRlKCkKICAgICBSZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCA2YmFjYTM0ZGM3MGQ0M2M5Zjk0YmUzY2Qz
MTZlZGJkZDFlM2U1OTNmLi43NTZiMjQwYjZmYTdiYjViZThlY2JmZTcwZjk1OWM5ODczMTY3OGUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCw2ICs0OCwx
OSBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAorUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRh
dGFTaXplKSBjb25zdAoreworICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgW2RhdGFTaXplXSAoKSAtPiBzaXplX3QgeworICAgICAgICAgICAgcmV0
dXJuIGRhdGFTaXplOworICAgICAgICB9CisgICAgfSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiB2b2lkIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjp0YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVt
b3J5TGVkZ2VyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5k
ZXggNTZhMWY1Njk5NzcwNWRhMDBhOWRjNDYxOWZlMTIzMTRhZGRmZDJmNi4uZTM3MWJjZDczMDJj
Zjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUg
c3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFn
ZVNpemUoKTsKIAorICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QpIGNvbnN0OworCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKICAgICBXVEY6
Ok1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KFByb3RlY3Rpb24pIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZmNiMDEyMjIzNDNlNzU4ZGU2NjQ2NjgzNTJi
ZDEyODRhN2ZmZTQzNC4uNDU4ZTNiYTRiMDhjODA4NzExZTVmMmVhZjA2NTFlN2ZkZGM0ZmQ1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCwxMiArNzgsMTkgQEAgU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQogICAg
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVu
ZChJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSkpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXIpOworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihkYXRh
KTsKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgc2hhcmVkRGF0YS0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisK
KyAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1l
ZGlhLXJlbGF0ZWQgbWVtb3J5LgorICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVt
b3J5TGVkZ2VyOjpNZWRpYSk7CisKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVuZChTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2hhcmVkRGF0YS0+c2l6ZSgp
IH0pLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5k
ZXggMThiOTkwNmNkY2M2MzRjN2I4MDE0NTEzN2IzZTBiOWM0OTU4Njg4My4uMzYwMTc1YmZiZTlk
MWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBh
cHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5h
bDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRG
cm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438669</attachid>
            <date>2021-09-20 06:35:24 -0700</date>
            <delta_ts>2021-09-20 07:45:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230329-20210920233523.patch</filename>
            <type>text/plain</type>
            <size>69507</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzNTRjZTU2ZTg3Mjc5
OWU1NGQ4NDA1Y2FmZjA1NmFjYmFlYTI5My4uYzEzNjYyNTAzMzdhZGZkZGFkZWQ3NjcwZjg2ZWNk
NTEwMTNkNDdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIxLTA5LTIwICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9y
eSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8g
dGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAg
ICBVc2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgVmVjdG9yIHRvIHBhc3MgZGF0YSB0byB0aGUg
U291cmNlQnVmZmVyJ3MgcmVsYXRlZAorICAgICAgICBjbGFzc2VzIChTb3VyY2VCdWZmZXIsIFNv
dXJjZUJ1ZmZlclByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclBhcnNlcikuCisgICAgICAgIE1vZGlm
eSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIHRvIG5ldmVyIHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRp
b24gYW5kIGNvcHkKKyAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgY29udGVudC4gSW5zdGVh
ZCwgd2UgdXNlIENNQmxvY2tCdWZmZXIgb2JqZWN0cyB0aGF0IHJldGFpbiB0aGUKKyAgICAgICAg
YmFja2luZyBTaGFyZWRCdWZmZXIgYW5kIHVzZSBvZmZzZXRzIGluc2lkZSB0aGlzIFNoYXJlZEJ1
ZmZlciB0byByZWZlcmVuY2UgdGhlIGRhdGEuCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMgcmVxdWlyZXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBhcyBhIE5TRGF0YSBjYW4gd3JhcCBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gY2hhbmdlIGZyb20gYW4gb2JzZXJ2YWJsZSBzdGFu
ZHBvaW50IG90aGVyIHRoYW4gdGhlIEdQVSBtZW1vcnkgdXNhZ2UKKyAgICAgICAgYmVpbmcgZHJh
c3RpY2FsbHkgcmVkdWNlZCAoZnJvbSA3MDBNQiB3aGVuIHdhdGNoaW5nIGEgNEsvNjBmcHMgWW91
VHViZSB2aWRlbyB0byBqdXN0IG92ZXIgMjAwTUIKKyAgICAgICAgb24gYW4gaU1hYyBQcm8gKHdo
aWNoIG9ubHkgaGFzIHNvZnR3YXJlIFZQOSBkZWNvZGluZykuCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIGFyZSBmdWxseSBleGVyY2lzaW5nIHRoaXMgbmV3IGNvZGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6IFNpbXBsaWZ5IGxvZ2ljIGFyb3VuZCBt
X3BlbmRpbmdBcHBlbmREYXRhIG1lbWJlci4KKyAgICAgICAgT25seSBvbmUgYXBwZW5kQnVmZmVy
IG9wZXJhdGlvbiBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZSBvdGhlcndpc2UgYXBw
ZW5kQnVmZmVyCisgICAgICAgIHdpbGwgdGhyb3c7IGFzIHN1Y2gsIHRoZXJlJ3Mgbm8gbmVlZCB0
byBhcHBlbmQgdGhlIGRhdGEgdG8gYSB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OmFib3J0SWZVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
YXBwZW5kQnVmZmVyVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oOiBBZGQgbmV3IERhdGFTZWdtZW50IHR5cGUgdGhhdCB0YWtlcyBhIFByb3ZpZGVyIGlu
IGNvbnN0cnVjdG9yLgorICAgICAgICBBIFByb3ZpZGVyIHByb3ZpZGVzIHR3byBGdW5jdGlvbiBt
ZW1iZXJzIGRhdGEgYW5kIHNpemUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwOiBUaGUgQXVkaW9GaWxlUmVhZGVyQ29jb2EgcmVxdWlyZWQK
KyAgICAgICAgdGhlIENNQmxvY2tCdWZmZXIgY29udGFpbmluZyB0aGUgY29tcHJlc3NlZCBjb250
ZW50IHRvIGJlIGNvbnRpZ3VvdXMuIFRoaXMgaXMgbm8KKyAgICAgICAgbG9uZ2VyIGd1YXJhbnRl
ZWQgc28gZW5zdXJlIHRoYXQgdGhlIENNQmxvY2tCdWZmZXIgaXMgY29udGlndW91cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6Y29udGlndW91c0NvbXBsZXRl
QmxvY2tCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6VHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpj
cmVhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6QXVkaW9UcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tE
YXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVz
ZXQpOgorCiAyMDIxLTA5LTA3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVjb2Rpbmcgd2VibSBmaWxlIHdpdGggbW9yZSB0aGFuIDIgY2hhbm5lbHMgd2ls
bCBmYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzQyZThkZjYzMmE0OGMzZDk1ZTIxY2Q4ODcw
OGIyZTRhOGI0ODE3Li5lNjU4M2RlOTkxNTk4MWY3YTg0MjI2YzljNzg3OTMxYjI2ZmE2Nzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOS0yMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgZm9y
IHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRvIHRoZSBH
UFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOiBBZGQgcmVx
dWlyZWQgQ29yZU1lZGlhIG1ldGhvZHMuCisKIDIwMjEtMDktMDcgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWNvZGluZyB3ZWJtIGZpbGUgd2l0aCBtb3Jl
IHRoYW4gMiBjaGFubmVscyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjFiOWRlYjZiNWE1YWQxZjky
MzJlZTUwYTUzZDc3NDA3MWY1NTQ3Yi4uYjVjN2ZjZjEwY2FkZGMxOWE5MjEzNWYyMzI1YTUxMDM3
NzVmYTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wOS0yMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgZm9y
IHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRvIHRoZSBH
UFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAgICAgVXNl
IFNoYXJlZE1lbW9yeSB0byBwYXNzIFNvdXJjZUJ1ZmZlciBjb250ZW50IHRvIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5IGluIEdQVSBwcm9jZXNzLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgd3Jh
cHBpbmcgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6YXBwZW5kKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorCiAy
MDIxLTA5LTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRlYWNoIGBXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcGAgdG8gc25hcHNob3Qgdmlk
ZW8gZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcAppbmRleCBmNDU4NGZmMzUyODI1NmNlOTA3MDU4NDZjODBkYTVlZGUw
NjQ2ODNjLi5iYWVlOWExMWI1MDFhNDE1YzRjZjliZDZmMzU3OTM1ZDY0MzIyMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlh
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgpAQCAtMzk0LDcg
KzM5NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphYm9ydElmVXBkYXRpbmcoKQogCiAgICAgLy8g
NC4xLiBBYm9ydCB0aGUgYnVmZmVyIGFwcGVuZCBhbGdvcml0aG0gaWYgaXQgaXMgcnVubmluZy4K
ICAgICBtX2FwcGVuZEJ1ZmZlclRpbWVyLnN0b3AoKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRh
LmNsZWFyKCk7CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IG51bGxwdHI7CiAgICAgbV9wcml2
YXRlLT5hYm9ydCgpOwogCiAgICAgLy8gNC4yLiBTZXQgdGhlIHVwZGF0aW5nIGF0dHJpYnV0ZSB0
byBmYWxzZS4KQEAgLTQ5NCw3ICs0OTUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZm
ZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsCiAKICAg
ICAvLyBOT1RFOiBSZXR1cm4gdG8gMy4yIGFwcGVuZEJ1ZmZlcigpCiAgICAgLy8gMy4gQWRkIGRh
dGEgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyLgotICAgIG1fcGVuZGluZ0FwcGVuZERh
dGEuYXBwZW5kKGRhdGEsIHNpemUpOworICAgIEFTU0VSVCghbV9wZW5kaW5nQXBwZW5kRGF0YSk7
CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNp
emUpOwogCiAgICAgLy8gNC4gU2V0IHRoZSB1cGRhdGluZyBhdHRyaWJ1dGUgdG8gdHJ1ZS4KICAg
ICBtX3VwZGF0aW5nID0gdHJ1ZTsKQEAgLTUyNCwxOCArNTI2LDE0IEBAIHZvaWQgU291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAgICAvLyBodHRwczovL2R2Y3MudzMub3Jn
L2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRt
bCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9vcAogICAgIC8vIFdoZW4gdGhlIHNlZ21l
bnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9rZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgogCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9w
ZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6IElmIHRoZSBpbnB1dCBidWZm
ZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3JlIGRhdGEgc3RlcCBiZWxvdy4K
LSAgICBpZiAoIW1fcGVuZGluZ0FwcGVuZERhdGEuc2l6ZSgpKSB7CisgICAgaWYgKCFhcHBlbmRE
YXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0
ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIC8vIE1hbnVhbGx5IGNsZWFyIG91dCB0aGUgbV9wZW5kaW5n
QXBwZW5kRGF0YSBWZWN0b3IsIGluIGNhc2UgdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uCi0g
ICAgLy8gcmVqZWN0cyBhcHBlbmRpbmcgdGhlIGJ1ZmZlciBmb3Igd2hhdGV2ZXIgcmVhc29uLgot
ICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGd1YXJhbnRlZSB0aGUgbW92
ZSBmcm9tIHRoaXMgVmVjdG9yLCBhbmQgd2Ugc2hvdWxkCi0gICAgLy8gYXNzZXJ0IGhlcmUgdG8g
Y29uZmlybSB0aGF0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODAwMy4KLSAgICBtX3ByaXZhdGUtPmFwcGVuZChXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERh
dGEpKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmNsZWFyKCk7CisgICAgbV9wcml2YXRlLT5h
cHBlbmQoYXBwZW5kRGF0YS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQgcmVzdWx0
KQpAQCAtMTIxMSw3ICsxMjA5LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQ
cml2YXRlUmVwb3J0RXh0cmFNZW1vcnlDb3N0KHVpbnQ2NF90IGV4dHJhTWVtb3J5CiAKIHZvaWQg
U291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCh1aW50NjRfdCBleHRyYU1l
bW9yeSkKIHsKLSAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QgPSBtX3BlbmRpbmdBcHBlbmRE
YXRhLmNhcGFjaXR5KCkgKyBleHRyYU1lbW9yeTsKKyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNv
c3QgPSBleHRyYU1lbW9yeTsKKyAgICBpZiAobV9wZW5kaW5nQXBwZW5kRGF0YSkKKyAgICAgICAg
ZXh0cmFNZW1vcnlDb3N0ICs9IG1fcGVuZGluZ0FwcGVuZERhdGEtPnNpemUoKTsKKwogICAgIGlm
IChleHRyYU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaAppbmRleCA4ODhkMmQ2ZTk4ZGFiZjk3ZGFiZTFjOTFmMjQ4YjEwODVkNjkyYjYx
Li5hNzIzM2QyMWUwODFhYTRhOGQ4NDI1NGIyOTNhNzMyZjY4NDEzZThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMSw3
ICsyMjEsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1
ZVJvb3RQcm92aWRlcjsKIAotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX3BlbmRpbmdBcHBl
bmREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAg
ICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlz
dD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHAKaW5kZXggYTE5MTc4MTQ3M2RjYWM3NmM1YjA0MTU1NjkxODQxNDcwZDNh
MjI0My4uZjIzZDY2MzIyMGRjNzQyOThiOWI5ZGQ5MDFkMGNjNjVmYWE1NWM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKQEAgLTExMyw2
ICsxMTMsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0XwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwgQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgc3RydWN0dXJlQWxsb2NhdG9yLCBDTUJsb2NrQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgQ0ZB
bGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21CbG9j
a1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJs
b2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgc291cmNlQnVmZmVyLCBibG9ja0Fs
bG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZmxh
Z3MsIGJsb2NrQnVmZmVyT3V0KSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQXBwZW5kQnVm
ZmVyUmVmZXJlbmNlLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyLCBDTUJs
b2NrQnVmZmVyUmVmIHRhcmdldEJCdWYsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MpLCAodGhlQnVmZmVyLCB0YXJnZXRCQnVm
LCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZsYWdzKSwgUEFMX0VYUE9SVCkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlRW1wdHksIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxs
b2NhdG9yLCB1aW50MzJfdCBzdWJCbG9ja0NhcGFjaXR5LCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxh
Z3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRv
ciwgc3ViQmxvY2tDYXBhY2l0eSwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSwgUEFMX0VYUE9SVCkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlh
LCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlLCBGb3VyQ2hhckNvZGUsIChDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1lZGlhVHlwZSwgQ01NZWRpYVR5cGUsIChDTUZvcm1hdERlc2NyaXB0aW9u
UmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCBkNGZmMDQ2OGMzMThjMmYzNDVkYTk4NDU5
ZmU3MTQ5YjM3NWI0M2RlLi41ZmRmZjg0NzliNTMxNWNkYWFiMTBjNzY5YjVmZTllNjQ0YzI1MzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBA
IC0xNzUsNiArMTc1LDEwIEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQsCiAKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29u
dGlndW91cywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxvY2F0b3IsIENN
QmxvY2tCdWZmZXJSZWYgc291cmNlQnVmZmVyLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRv
ciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJj
ZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJG
bGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJl
QWxsb2NhdG9yLCBzb3VyY2VCdWZmZXIsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1NvdXJj
ZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQogI2Rl
ZmluZSBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29udGlndW91cyBzb2Z0TGlua19Db3JlTWVkaWFfQ01C
bG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQXBwZW5kQnVmZmVyUmVmZXJlbmNlLCBPU1N0
YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyLCBDTUJsb2NrQnVmZmVyUmVmIHRhcmdl
dEJCdWYsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVm
ZmVyRmxhZ3MgZmxhZ3MpLCAodGhlQnVmZmVyLCB0YXJnZXRCQnVmLCBvZmZzZXRUb0RhdGEsIGRh
dGFMZW5ndGgsIGZsYWdzKSkKKyNkZWZpbmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVy
ZW5jZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5j
ZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tC
dWZmZXJDcmVhdGVFbXB0eSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxv
Y2F0b3IsIHVpbnQzMl90IHN1YkJsb2NrQ2FwYWNpdHksIENNQmxvY2tCdWZmZXJGbGFncyBmbGFn
cywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9y
LCBzdWJCbG9ja0NhcGFjaXR5LCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQorI2RlZmluZSBDTUJs
b2NrQnVmZmVyQ3JlYXRlRW1wdHkgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDcmVh
dGVFbXB0eQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
Rm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUsIEZvdXJDaGFyQ29kZSwgKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01Gb3JtYXREZXNjcmlwdGlv
bkdldE1lZGlhU3ViVHlwZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dE1lZGlhU3ViVHlwZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUsIENNTWVkaWFUeXBlLCAoQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKaW5kZXggMDU0Y2U1YTQyOTI0YzRkOWYwYzY5ZjJkYTg2ZDkwNzc5YTkx
MDgxNS4uMmY4NTUyNjc2ODc1NmI2YjMwMWNhMGYwMDhkMTQyZWFhMTllZDAwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01Miw2ICs1MiwxMiBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVE
YXRhKQogICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKX0pOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKKyAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkp
Cit7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShwcm92aWRlcikpfSk7Cit9CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwpAQCAtMjM2LDYg
KzI0MiwxMSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAog
ICAgIHJldHVybiBjbG9uZTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKIHZvaWQg
U2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMg
PSBtX3NlZ21lbnRzOwpAQCAtMjY3LDEwICsyNzgsMzQgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OnN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdAogewotICAgIEFTU0VSVChsZW5ndGggPD0gc2l6ZSgpKTsKKyAgICByZXR1cm4gY29weVRv
KGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAor
eworICAgIEFTU0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBhdXRvIGRlc3Rp
bmF0aW9uUHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc3RpbmF0aW9uKTsKLSAgICBhdXRv
IHJlbWFpbmluZyA9IHN0ZDo6bWluKGxlbmd0aCwgc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHNl
Z21lbnQgOiBtX3NlZ21lbnRzKSB7CisgICAgYXV0byByZW1haW5pbmcgPSBzdGQ6Om1pbihsZW5n
dGgsIHNpemUoKSAtIG9mZnNldCk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgc2l6ZV90IGN1
cnJlbnRPZmZzZXQgPSAwOworICAgIGZvciAoOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkg
eworICAgICAgICBhdXRvJiBzZWdtZW50ID0gbV9zZWdtZW50c1tpXTsKKyAgICAgICAgaWYgKG9m
ZnNldCA8IGN1cnJlbnRPZmZzZXQgKyBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSkgeworICAgICAg
ICAgICAgc2l6ZV90IHBvc2l0aW9uSW5TZWdtZW50ID0gb2Zmc2V0IC0gY3VycmVudE9mZnNldDsK
KyAgICAgICAgICAgIHNpemVfdCBhbW91bnRUb0NvcHlUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFp
bmluZywgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbkluU2VnbWVudCk7CisgICAg
ICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpICsg
cG9zaXRpb25JblNlZ21lbnQsIGFtb3VudFRvQ29weVRoaXNUaW1lKTsKKyAgICAgICAgICAgIHJl
bWFpbmluZyAtPSBhbW91bnRUb0NvcHlUaGlzVGltZTsKKyAgICAgICAgICAgIGlmICghcmVtYWlu
aW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uUHRy
ICs9IGFtb3VudFRvQ29weVRoaXNUaW1lOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY3VycmVudE9mZnNldCArPSBzZWdtZW50LnNlZ21lbnQtPnNpemUoKTsKKyAgICB9
CisKKyAgICBmb3IgKGkgKz0gMTsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHNbaV07CiAgICAgICAgIHNpemVfdCBhbW91bnRU
b0NvcHlUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFpbmluZywgc2VnbWVudC5zZWdtZW50LT5zaXpl
KCkpOwogICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21lbnQuc2VnbWVudC0+ZGF0
YSgpLCBhbW91bnRUb0NvcHlUaGlzVGltZSk7CiAgICAgICAgIHJlbWFpbmluZyAtPSBhbW91bnRU
b0NvcHlUaGlzVGltZTsKQEAgLTMxMiw3ICszNDcsOCBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICNpZiBVU0UoR1NUUkVBTUVSKQogICAg
ICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVy
biBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRh
dGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4g
cHJvdmlkZXIuZGF0YSgpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzk1LDcgKzQzMSw4IEBAIHNpemVfdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICNpZiBVU0UoR1NUUkVBTUVSKQogICAg
ICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVy
biBkYXRhLT5zaXplKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLnNp
emUoKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBw
cm92aWRlci5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IDIzNjlhYWQ4YjM1NjM5ZTJlYTVhOWFkMTgyNjg1NTM3OTVlNmI3NzAuLmI4ZmQ2MTEy
NWY0YmE0NzdiYTIxMzcxMzkyMTJhYjY3ZjZmZGE3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTIzLDYgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKICAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgdm9pZCBjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCiAgICAgLy8g
RGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNl
IGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgpAQCAtMTQ4
LDYgKzE1MCwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAorICAgICAgICBz
dHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxjb25zdCB1aW50OF90
KigpPiBkYXRhOworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAg
ICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlk
ZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KHByb3ZpZGVyKSkpOyB9CisKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTE3MSw2ICsxODAsOCBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKICAgICAg
ICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQpAQCAtMTgyLDEwICsxOTMs
MTMgQEAgcHVibGljOgogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgICAgICAgICBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEsCisgICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwogICAg
ICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIH07CiAKKyAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKwogICAgIHZv
aWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKQEAgLTIxNiw2ICsyMzAsNyBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwogI2lmIFVTRShDRikKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
Y3BwCmluZGV4IDFiMGQ0OGUzOWE4YzdiN2JjYTJlOWRiMzQyNmE5MTQ4YTA2OGFlOGUuLjIwNzc2
YzlhM2RmMmE1ZTUyOTYwYmI0ODY2MDUwOWJlZTI4NTk0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2Nv
YS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCIKICNpbmNsdWRlIDxBdWRp
b1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KQEAgLTEyOSw2ICsxMzAsNyBAQCBjbGFzcyBBdWRp
b0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1
YmxpYzoKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQogICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYK
QEAgLTE4MCw2ICsxODIsNyBAQCBib29sIEF1ZGlvRmlsZVJlYWRlcjo6aXNNYXliZVdlYk0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CisgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6ZSk7CiAgICAgYXV0
byBwYXJzZXIgPSBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2VyV2ViTSgpKTsKICAgICBi
b29sIGVycm9yID0gZmFsc2U7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYXVkaW9UcmFj
a0lkOwpAQCAtMjEyLDEyICsyMTUsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRl
cldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgdHJhY2stPnNldERpc2NhcmRQYWRkaW5nKGRpc2NhcmRQ
YWRkaW5nKTsKICAgICB9KTsKLSAgICBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQgc2VnbWVu
dCh7IGRhdGEsIGRhdGFTaXplIH0pOworICAgIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudCBz
ZWdtZW50KG1ha2VSZWYoYnVmZmVyLmdldCgpKSk7CiAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdU
Rk1vdmUoc2VnbWVudCkpOwogICAgIGlmICghdHJhY2spCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHBhcnNlci0+Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKCk7Ci0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRh
IHsgdHJhY2sucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShkdXJhdGlvbiksIFdURk1vdmUoc2Ft
cGxlcykgfSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+
KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgV1RGTW92ZShidWZmZXIpLCB0cmFjay5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKGR1cmF0aW9uKSwgV1RGTW92ZShzYW1wbGVzKSB9KTsKIH0KIAog
c3RydWN0IFBhc3N0aHJvdWdoVXNlckRhdGEgewpAQCAtMzQ3LDE2ICszNTAsMjEgQEAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEoQXVkaW9CdWZm
ZXJMaXN0JiBidWZmZXJMaXMKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fd2VibURhdGEt
Pm1fc2FtcGxlcy5zaXplKCk7IGkrKykgewogICAgICAgICBhdXRvJiBzYW1wbGUgPSBtX3dlYm1E
YXRhLT5tX3NhbXBsZXNbaV07CiAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZl
ciA9IHNhbXBsZS0+c2FtcGxlQnVmZmVyKCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gUEFMOjpD
TVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsKLSAgICAgICAgQVNTRVJU
KFBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGJ1ZmZlciwgMCwgMCkpOwotICAg
ICAgICBpZiAoIVBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGJ1ZmZlciwgMCwg
MCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAiVW5hYmxlIHRv
IHJlYWQgc2FtcGxlIGNvbnRlbnQgKG5vdCBjb250aWd1b3VzKSIpOwotICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgYXV0byByYXdCdWZmZXIgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0
RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIpOworICAgICAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZl
clJlZj4gYnVmZmVyID0gcmF3QnVmZmVyOworICAgICAgICAvLyBNYWtlIHN1cmUgYmxvY2sgYnVm
ZmVyIGlzIGNvbnRpZ3VvdXMuCisgICAgICAgIGlmICghUEFMOjpDTUJsb2NrQnVmZmVySXNSYW5n
ZUNvbnRpZ3VvdXMocmF3QnVmZmVyLCAwLCAwKSkgeworICAgICAgICAgICAgQ01CbG9ja0J1ZmZl
clJlZiBjb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChQQUw6OkNN
QmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51bGxwdHIsIHJhd0J1ZmZlciwgbnVsbHB0ciwg
bnVsbHB0ciwgMCwgMCwgMCwgJmNvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVyTm9F
cnIpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgImZhaWxl
ZCB0byBjcmVhdGUgY29udGlndW91cyBibG9jayBidWZmZXIiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmZmVyID0gYWRvcHRDRihj
b250aWd1b3VzQnVmZmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBzcmNTaXplID0g
UEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChidWZmZXIpOworICAgICAgICBzaXplX3Qg
c3JjU2l6ZSA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoYnVmZmVyLmdldCgpKTsK
ICAgICAgICAgY2hhciogc3JjRGF0YSA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChQQUw6OkNNQmxv
Y2tCdWZmZXJHZXREYXRhUG9pbnRlcihidWZmZXIsIDAsIG51bGxwdHIsIG51bGxwdHIsICZzcmNE
YXRhKSAhPSBub0VycikgeworICAgICAgICBpZiAoUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBv
aW50ZXIoYnVmZmVyLmdldCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAmc3JjRGF0YSkgIT0gbm9F
cnIpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAiVW5hYmxlIHRv
IHJldHJpZXZlIGRhdGEiKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggMjI2NjViYmU2NjA5N2I1Yjg5ZDA0MDJlYTI0OTRlOTVmZWEwZjc0
Ny4uMzRhZjJhYWNhNjg3OTJiZWU2MDE0MGQyMjc4YzBkNDQ0MzYwNDYwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlNhbXBsZU1hcC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQu
aCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CkBAIC0xMzE1LDYgKzEzMTYsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpk
aWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1
cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKK3ZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKQoreworICAgIFdURkNy
YXNoKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVk
YjUxYWQ1NjAzNDYxNzQ1NjRlMjExMWNlZDI4MTI1ZmFjMTAyYWIuLjIyZTg1Njg3NTFjZDJmYTEy
MjYxMWFkY2YwMmRhNDU2YzYwNzYxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1l
UmFuZ2VzOwogCiBlbnVtIGNsYXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsK
QEAgLTY2LDcgKzY3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNv
dXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpID0g
MDsKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGRp
cmVjdGx5IGFuZCBiZSBvdmVycmlkZGVuIGluc3RlYWQuCisgICAgdmlydHVhbCB2b2lkIGFwcGVu
ZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBhZjJhMmU2
YzA0YWY1M2I2MmEzNWJiMDc5MWI2Y2M1ODkwMDllMWE1Li5lYzRlMzQxMmVkNTU2N2FjNzUzMTk1
MTdmMjk3ZDAwYTYzYTU2Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgIk1l
ZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQg
IlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2ltcG9y
dCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KQEAgLTIxMSw4
ICsyMTIsOCBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQygpCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShT
ZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKLSAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnRha2VWZWN0b3IoKSk7Ci0gICAgYXV0byBuc0RhdGEg
PSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNl
Z21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVy
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdz
ID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5k
U3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVh
bURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA5MmQ5YzhkZDUyZjdjNTIw
MmQxNmU3ZjhhZmE3MDdlZDJiNjU3ZTdlLi40MTM2MWFjNjE5NDk2ODg4MDM4ZWVkNmM4MTNhNjQ4
M2Y5MDlkYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRf
dCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZm
ZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4
IGZmYTJmYmEwZGYwNmU4ZWRkNjRhYmNjYmQ0ZjdhYWU1MzAwOTdmNTIuLjlhODQ2OTYxNTg4OTgy
ZDlhN2E4ZDFkZDU3ZDMwYTc0ZGVhNzE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC01NzIsOSArNTcyLDkgQEAg
c3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCkKICAgICByZXR1
cm4gZ2xvYmFsUXVldWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFw
cGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEtPnNpemUo
KSk7CiAKICAgICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9yZSk7CiAgICAgQVNTRVJUKCFt
X2Fib3J0U2VtYXBob3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IDE2YmNiZTBj
NTc3ZmM0MjBkYmE0NzcwZTEzNjU1M2Q5NzAzNThlMzMuLjMzYmUzNTJhNTQzNDQ2ZjIxZTIzYWE1
NjI3MGRjZWFlMTY4NjE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRlICJDb250ZW50VHlw
ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCiAjaW5j
bHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNvZnRMaW5rLmg+CkBAIC03Nyw4ICs3OCw4IEBA
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihm
bG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFZlY3Rv
cjx1aW50OF90PiYmIHNlZ21lbnQpCi0gICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkK
K1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CiAKQEAgLTk4
LDkgKzk5LDkgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNv
bnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJj
ZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCisgICAgICAgIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2
ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+c2l6ZSgpOwogICAgICAg
ICB9CiAgICAgKTsKIH0KQEAgLTExOSwxNSArMTIwLDE1IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwg
dWluCiAgICAgICAgICAgICByZXR1cm4gc2l6ZVJlYWQ7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAg
ICAgICAgWyZdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewotICAgICAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uLCB2ZWN0b3IuZGF0YSgpICsgcG9zaXRpb24sIHNpemVUb1JlYWQpOwor
ICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVzdGluYXRpb24sIHBvc2l0aW9uLCBzaXplVG9S
ZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXplVG9SZWFkOwogICAgICAgICB9CiAgICAgKTsK
IH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVZl
Y3RvcigpCitSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRh
a2VTaGFyZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwK
ICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpAQCAtMTM1LDEyICsxMzYsMjggQEAg
VmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVZlY3Rvcigp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSgpKTsK
ICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3Iu
ZGF0YSgpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmVjdG9yOworICAgICAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgIH0sCisjZW5k
aWYKKyAgICAgICAgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSk7CisgICAgICAgIH0KKyAgICApOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAorI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1B
VF9SRUFERVIpCisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNl
UmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtdKFZlY3Rvcjx1aW50
OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6ZXhjaGFuZ2UodmVjdG9yLCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5w
dHIoKTsKICAgICAgICAgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDRl
ZTg2YjJjZmE2MGVlYTZkZjZkMjk3NzUyNTcwNWUyNjNlNWE1OWMuLjZlYzQzOGZlOTFkNThiYjhk
OGFkZDFhZDIwM2Y1NjExZjk5MGU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC00Myw2
ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGU7CiBjbGFz
cyBNZWRpYVNhbXBsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBP
UlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJj
ZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjYsOSArNjcsMTEgQEAgcHVibGljOgogI2lm
IEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRy
PE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiB0YWtlVmVjdG9yKCk7CisgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRC
dWZmZXIoKTsKKyAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFj
a2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsK
ICAgICAgICAgc2l6ZV90IHJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3QsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uKSBjb25zdDsKQEAgLTc4LDcgKzgxLDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRf
UExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRl
U291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+CisgICAgICAg
ICAgICBSZWY8U2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGVlZDZlMjAyODk4Yzc0ODBjMGU0
OWNkNTRjZDMzOTFhYmJhNTQ3MTEuLjY3ZDY0N2QyNDgyOTEyZGY4M2MxYjRmM2RhMDIzMGNiNTRm
ZGIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0yNzMsNyArMjcz
LDcgQEAgc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkKIAogdXNpbmcgbmFtZXNw
YWNlIHdlYm07CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlN0cmVhbWluZ1ZlY3Rv
clJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgeworY2xhc3MgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6U2VnbWVudFJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU2Vn
bWVudChTZWdtZW50JiYgc2VnbWVudCkKQEAgLTM1NCw2ICszNTQsODAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOwogICAgIH0KIAorICAgIHN0
YXRpYyB2b2lkIEZyZWVCbG9jayh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCisgICAgewor
ICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBidWZmZXItPmRlcmVmKCk7CisgICAgfQorCisg
ICAgU3RhdHVzIFJlYWRJbnRvKHN0ZDo6c2l6ZV90IG51bVRvUmVhZCwgQ01CbG9ja0J1ZmZlclJl
ZiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90KiBudW1BY3R1YWxseVJlYWQpCisgICAgeworICAgICAg
ICBBU1NFUlQob3V0cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5UmVhZCk7CisgICAgICAgIGlmICgh
bnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RF
bm91Z2hNZW1vcnkpOworCisgICAgICAgICpudW1BY3R1YWxseVJlYWQgPSAwOworICAgICAgICBp
ZiAoIW91dHB1dEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90
RW5vdWdoTWVtb3J5KTsKKworICAgICAgICB3aGlsZSAobnVtVG9SZWFkICYmIG1fY3VycmVudFNl
Z21lbnQgIT0gbV9kYXRhLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvJiBjdXJyZW50U2VnbWVu
dCA9ICptX2N1cnJlbnRTZWdtZW50OworCisgICAgICAgICAgICBpZiAobV9wb3NpdGlvbldpdGhp
blNlZ21lbnQgPj0gY3VycmVudFNlZ21lbnQuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgYWR2
YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1
cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgQ01CbG9ja0J1ZmZl
clJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICB1aW50NjRfdCBsYXN0
UmVhZCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudDsKKyAgICAgICAgICAgIGlmICghc2hhcmVkQnVmZmVyKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2UgY291bGQgcG90ZW50aWFsbHkgYWxsb2NhdGUgbW9yZSBtZW1vcnkg
dGhhbiBuZWVkZWQgaWYgdGhlIHJlYWQgaXMgcGFydGlhbC4KKyAgICAgICAgICAgICAgICBhdXRv
IGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCBudW1Ub1JlYWQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxw
dHIsIDAsIG51bVRvUmVhZCwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLCAmcmF3
QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJO
b0VycikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91
Z2hNZW1vcnkpOworICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7
CisgICAgICAgICAgICAgICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIo
cmF3QmxvY2tCdWZmZXIsIDAsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFy
KiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAgaWYgKGVyciAhPSBrQ01CbG9j
a0J1ZmZlck5vRXJyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSBjdXJyZW50U2Vn
bWVudC5yZWFkKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBudW1Ub1JlYWQsIGJsb2NrQnVmZmVy
RGF0YSk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVT
ZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBz
aW5nbGUgRGF0YVNlZ21lbnQiKTsKKyAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBk
b2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAg
IC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhl
IGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KKyAgICAgICAg
ICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVu
dDsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVt
VG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsK
KyAgICAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgYWxsb2NhdG9y
OworICAgICAgICAgICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0gMDsKKyAgICAgICAgICAgICAg
ICBhbGxvY2F0b3IuQWxsb2NhdGVCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgYWxs
b2NhdG9yLkZyZWVCbG9jayA9IEZyZWVCbG9jazsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iu
cmVmQ29uID0gZmlyc3RTZWdtZW50LnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0U2VnbWVu
dC0+cmVmKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJD
cmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nh
c3Q8dWludDhfdCo+KGZpcnN0U2VnbWVudC0+ZGF0YSgpKSksIGZpcnN0U2VnbWVudC0+c2l6ZSgp
LCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgY2FuUmVhZCwg
MCwgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJsb2Nr
QnVmZmVyTm9FcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
Tm90RW5vdWdoTWVtb3J5KTsKKyAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IGNhblJlYWQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGJsb2NrQnVmZmVyID0gYWRvcHRDRihyYXdC
bG9ja0J1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckFw
cGVuZEJ1ZmZlclJlZmVyZW5jZShvdXRwdXRCdWZmZXIsIHJhd0Jsb2NrQnVmZmVyLCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAg
ICAgICBtX3Bvc2l0aW9uICs9IGxhc3RSZWFkOworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVh
ZCArPSBsYXN0UmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IGxh
c3RSZWFkOworICAgICAgICAgICAgbnVtVG9SZWFkIC09IGxhc3RSZWFkOworICAgICAgICAgICAg
aWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID09IGN1cnJlbnRTZWdtZW50LnNpemUoKSkKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOworICAgICAgICB9CisgICAgICAg
IGlmICghbnVtVG9SZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CisgICAgICAgIGlmICgqbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a1dvdWxkQmxvY2spOworICAgIH0KKwogICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiAgICAgdm9pZCByZXNldCgpCkBAIC01
OTUsNyArNjY5LDcgQEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihXVEY6
Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQorICAgIDogbV9yZWFkZXIo
V1RGOjptYWtlVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkpCiB7CiAgICAgaWYgKGlzV2VibVBh
cnNlckF2YWlsYWJsZSgpKQogICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKQEAgLTEwOTksNjYgKzExNzMsNDMgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGwKIAogI2RlZmluZSBQQVJTRVJfTE9HX0VSUk9SX0lGX1BP
U1NJQkxFKC4uLikgaWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJzZXIoKS5sb2dnZXJQdHIo
KS0+ZXJyb3IobG9nQ2hhbm5lbCgpLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIobG9n
Q2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlmaWVyKCkpLCBfX1ZBX0FS
R1NfXykKIAotI2lmIEVOQUJMRShWUDkpCi12b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZp
ZGVvVHJhY2tEYXRhOjpyZXNldCgpCitSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZl
cihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewotICAgIG1fY3VycmVudEJs
b2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICBUcmFja0RhdGE6OnJlc2V0KCk7CisgICAgaWYgKCFv
ZmZzZXQgJiYgIWxlbmd0aCAmJiBQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyht
X2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIDAsIDApKQorICAgICAgICByZXR1cm4gbV9jb21w
bGV0ZUJsb2NrQnVmZmVyOworICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Q29udGlndW91c0J1ZmZl
ciA9IG51bGxwdHI7CisgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMo
bnVsbHB0ciwgbV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBv
ZmZzZXQsIGxlbmd0aCwgMCwgJnJhd0NvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVy
Tm9FcnIpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQgdG8g
Y3JlYXRlIGNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICByZXR1cm4gYWRvcHRDRihyYXdDb250aWd1b3VzQnVmZmVyKTsKIH0KLSNl
bmRpZgogCi13ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0Rh
dGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNvbnN0IEZyYW1lTWV0
YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNvbnN0IENNVGltZSYg
cHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQord2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImIHJl
YWRlciwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2NF90KiBieXRl
c1JlbWFpbmluZykKIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3
QmxvY2tCdWZmZXIgPSBudWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVudFBhY2tldFNpemUgJiYg
Km1fY3VycmVudFBhY2tldFNpemUgIT0gbWV0YWRhdGEuc2l6ZSkgewotICAgICAgICAvLyBUaGUg
cGFja2V0J3MgbWV0YWRhdGEgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudGx5IHBlbmRpbmcgcGFy
dGlhbCBwYWNrZXQ7IHJlc3RhcnQuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01F
U1NBR0UoIlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNp
Y2FsIHN0YXRlIik7Ci0gICAgICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7Ci0gICAgICAgIG1f
Y3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6
ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobV9jb21wbGV0ZVBhY2tldFNpemUgJiYgKm1fY29t
cGxldGVQYWNrZXRTaXplICE9IG1ldGFkYXRhLnNpemUpIHsKKyAgICAgICAgLy8gVGhlIHBhY2tl
dCdzIG1ldGFkYXRhIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnRseSBwZW5kaW5nIGNvbXBsZXRl
IHBhY2tldDsgcmVzdGFydC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FH
RSgiVHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRlIik7
CisgICAgICAgIHJlc2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRQYWNrZXRTaXpl
KQotICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gbWV0YWRhdGEuc2l6ZTsKKyAgICBpZiAo
IW1fY29tcGxldGVQYWNrZXRTaXplKQorICAgICAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IG1l
dGFkYXRhLnNpemU7CiAKICAgICBpZiAoIW1fY3VycmVudEJsb2NrQnVmZmVyKSB7Ci0gICAgICAg
IGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsICptX2N1cnJlbnRQYWNrZXRTaXplLCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCAwLCAqbV9jdXJyZW50UGFja2V0U2l6ZSwgMCwgJnJhd0Jsb2Nr
QnVmZmVyKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJP
Ul9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQg
d2l0aCBlcnJvciIsIGVycik7CisgICAgICAgIEFTU0VSVCghbV9wYXJ0aWFsQnl0ZXNSZWFkKTsK
KyAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbU1heEJsb2NrQnVmZmVyQ2FwYWNpdHksIDAsICZyYXdCbG9ja0J1ZmZlcik7Cisg
ICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VyciB8fCAhcmF3QmxvY2tCdWZmZXIp
IHsKKyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZm
ZXJDcmVhdGVFbXB0eSBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1
cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLQogICAgICAgICBt
X2N1cnJlbnRCbG9ja0J1ZmZlciA9IGFkb3B0Q0YocmF3QmxvY2tCdWZmZXIpOwotICAgICAgICBt
X3BhcnRpYWxCeXRlc1JlYWQgPSAwOwotCi0gICAgICAgIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckFzc3VyZUJsb2NrTWVtb3J5KG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpKTsKLSAgICAgICAg
aWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01B
dWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGgg
ZXJyb3IiLCBlcnIpOwotICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwotICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCptX2N1cnJlbnRQYWNrZXRTaXpl
IDwgbV9wYXJ0aWFsQnl0ZXNSZWFkICsgKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIFBBUlNF
Ul9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkludmFsaWQgZnJhbWUgc2l6ZSBhbGxvY2F0ZWQsIGln
bm9yaW5nIHRoZSBlbnRpcmUgZnJhbWUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkICs9
ICpieXRlc1JlbWFpbmluZzsKLSAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwotICAgIH0KICAgICB3aGlsZSAoKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIHNp
emVfdCBzZWdtZW50U2l6ZUF0UG9zaXRpb24gPSAwOwotICAgICAgICB1aW50OF90KiBibG9ja0J1
ZmZlckRhdGEgPSBudWxscHRyOwotICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckdldERhdGFQb2ludGVyKG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCBtX3BhcnRpYWxCeXRl
c1JlYWQsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVm
ZmVyRGF0YSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJS
T1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBl
cnJvciIsIGVycik7Ci0gICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCpieXRlc1JlbWFpbmluZyA8IHNlZ21lbnRT
aXplQXRQb3NpdGlvbikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiQW4gZXJyb3Igb2NjdXJyZWQsIGRlc3RpbmF0aW9uIGJ1ZmZlciB0b28gc21hbGwgdG8gY29u
dGFpbiBvdXIgZnJhbWUiKTsKLSAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKLSAgICAgICAgfQogICAgICAgICB1aW50NjRfdCBieXRlc1JlYWQ7Ci0gICAg
ICAgIGF1dG8gc3RhdHVzID0gcmVhZGVyLlJlYWQoKmJ5dGVzUmVtYWluaW5nLCAodWludDhfdCop
YmxvY2tCdWZmZXJEYXRhLCAmYnl0ZXNSZWFkKTsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBzdGF0
aWNfY2FzdDxTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTZWdtZW50UmVhZGVyJj4ocmVhZGVyKS5S
ZWFkSW50bygqYnl0ZXNSZW1haW5pbmcsIG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCAmYnl0
ZXNSZWFkKTsKICAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IGJ5dGVzUmVhZDsKICAgICAgICAg
bV9wYXJ0aWFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKIApAQCAtMTE2NiwxMiArMTIxNywzMyBA
QCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNv
bnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAg
ICB9CiAKLSAgICBBU1NFUlQobV9wYXJ0aWFsQnl0ZXNSZWFkIDw9ICptX2N1cnJlbnRQYWNrZXRT
aXplKTsKLSAgICBpZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY3VycmVudFBhY2tldFNpemUp
CisgICAgQVNTRVJUKG1fcGFydGlhbEJ5dGVzUmVhZCA8PSAqbV9jb21wbGV0ZVBhY2tldFNpemUp
OworICAgIGlmIChtX3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jb21wbGV0ZVBhY2tldFNpemUpCiAg
ICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprT2tQYXJ0aWFsKTsKIAot
ICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRpb25UaW1lLCBzYW1wbGVDb3VudCwgbWV0
YWRhdGEpOworICAgIGlmICghbV9jb21wbGV0ZUJsb2NrQnVmZmVyKQorICAgICAgICBtX2NvbXBs
ZXRlQmxvY2tCdWZmZXIgPSBXVEZNb3ZlKG1fY3VycmVudEJsb2NrQnVmZmVyKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZl
cmVuY2UobV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5n
ZXQoKSwgMCwgMCwgMCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBBUlNFUl9M
T0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2Ug
dG8gY29tcGxldGUgYmxvY2sgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICB9CisgICAg
ICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgbV9wYXJ0aWFs
Qnl0ZXNSZWFkID0gMDsKKworICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjpr
T2tDb21wbGV0ZWQpOworfQogCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNv
bnN0IENNVGltZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQoreworI2lmIEVO
QUJMRShWUDkpCisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0YWRh
dGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRfb2soKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXR1czsKKworICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRp
b25UaW1lLCBzYW1wbGVDb3VudCwgbWV0YWRhdGEpOwogICAgIHJlc2V0KCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CkBAIC0xMTg2LDggKzEyNTgsMTQgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNv
bnN0IENNVGltZSYgcHIKIHsKICNpZiBFTkFCTEUoVlA5KQogICAgIHVpbnQ4X3QqIGJsb2NrQnVm
ZmVyRGF0YSA9IG51bGxwdHI7Ci0gICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7
Ci0gICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihtX2N1cnJl
bnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwgJnNlZ21lbnRTaXplQXRQb3NpdGlvbiwgbnVsbHB0ciwg
KGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG1heEhlYWRl
clNpemUgPSAzMjsgLy8gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgVlA5IHVuY29tcHJlc3NlZCBo
ZWFkZXIgaXMgMTQ0IGJpdHMgYW5kIDExIGJ5dGVzIGZvciBWUDguIFJvdW5kIGhpZ2guCisgICAg
c2l6ZV90IHNlZ21lbnRIZWFkZXJMZW5ndGggPSBzdGQ6Om1pbihtYXhIZWFkZXJTaXplLCAqbV9j
b21wbGV0ZVBhY2tldFNpemUpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3Vv
dXNDb21wbGV0ZUJsb2NrQnVmZmVyKDAsIHNlZ21lbnRIZWFkZXJMZW5ndGgpOworICAgIGlmICgh
Y29udGlndW91c0J1ZmZlcikgeworICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxF
KCJWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyIGZhaWxlZCB0byBjcmVhdGUgY29u
dGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBl
cnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihjb250aWd1b3VzQnVmZmVyLmdl
dCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpOwogICAg
IGlmIChlcnIpIHsKICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9j
a0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTE5Niw3ICsxMjc0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIKICAg
ICBib29sIGlzS2V5ID0gZmFsc2U7CiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IGZvcm1hdERlc2NyaXB0aW9uOwogICAgIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6VlA5
KSB7Ci0gICAgICAgIGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIo
YmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICBpZiAoIW1f
aGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2Vn
bWVudEhlYWRlckxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKG1f
aGVhZGVyUGFyc2VyLmtleSgpKSB7CkBAIC0xMjA5LDcgKzEyODcsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29uc3Qg
Q01UaW1lJiBwcgogICAgICAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShmb3Jt
YXREZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjb2RlYygpID09IENv
ZGVjVHlwZTo6VlA4KSB7Ci0gICAgICAgIGF1dG8gaGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRl
cihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbik7CisgICAgICAgIGF1dG8g
aGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRIZWFk
ZXJMZW5ndGgpOwogICAgICAgICBpZiAoaGVhZGVyICYmIGhlYWRlci0+a2V5ZnJhbWUpIHsKICAg
ICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKICAgICAgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRp
b24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoKmhlYWRlciwgdHJhY2so
KS52aWRlby52YWx1ZSgpLmNvbG91cik7CkBAIC0xMjIyLDcgKzEzMDAsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29u
c3QgQ01UaW1lJiBwcgogICAgIH0KIAogICAgIGF1dG8gdHJhY2sgPSB0aGlzLT50cmFjaygpOwot
ICAgIC8vIEZJWE1FOiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBmcmFtZSwg
YnV0IG9ubHkgdGhpcyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1ZmZl
cmAuCisgICAgLy8gRklYTUU6IEEgYmxvY2sgbWlnaHQgY29udGFpbiBtb3JlIHRoYW4gb25lIGZy
YW1lLCBidXQgb25seSB0aGlzIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50byBgY29tcGxldGVCbG9j
a0J1ZmZlcmAuCiAgICAgLy8gQmVsb3cgd2UgY3JlYXRlIHNhbXBsZSBidWZmZXJzIGZvciBlYWNo
IGZyYW1lLCBlYWNoIHdpdGggdGhlIGJsb2NrJ3MgdGltZWNvZGUgYW5kIGBudW1fZnJhbWVzYCB2
YWx1ZS4KICAgICAvLyBTaG91bGRuJ3Qgd2UgY3JlYXRlIGp1c3Qgb25lIHNhbXBsZSBidWZmZXIg
b25jZSBhbGwgdGhlIGJsb2NrJ3MgZnJhbWVzIGhhdmUgYmVlbiByZWFkIGludG8gYGN1cnJlbnRC
bG9ja0J1ZmZlcmA/CiAKQEAgLTEyMzEsOSArMTMwOSw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUm
IHByCiAgICAgICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICog
cHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUgLyBrX3VzX2luX3NlY29uZHM7CiAKICAgICBDTVNh
bXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBmcmFt
ZVNpemUgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fY3VycmVudEJsb2NrQnVm
ZmVyLmdldCgpKTsKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nID0geyBQQUw6OkNNVGlt
ZU1ha2UoZHVyYXRpb24sIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlKSwgcHJlc2VudGF0aW9u
VGltZSwgcHJlc2VudGF0aW9uVGltZSB9OwotICAgIGVyciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJD
cmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQo
KSwgdGhpcy0+Zm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxlQ291bnQsIDEsICZ0aW1p
bmcsIDEsICZmcmFtZVNpemUsICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGVyciA9IFBBTDo6Q01T
YW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxv
Y2tCdWZmZXIuZ2V0KCksIHRoaXMtPmZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBsZUNv
dW50LCAxLCAmdGltaW5nLCAxLCAmKm1fY29tcGxldGVQYWNrZXRTaXplLCAmcmF3U2FtcGxlQnVm
ZmVyKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwog
ICAgICAgICByZXR1cm47CkBAIC0xMjYzLDU2ICsxMzQwLDI3IEBAIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRp
bWUmIHByCiAjZW5kaWYgLy8gRU5BQkxFKFZQOSkKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXQoKQordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQogeworICAgIG1OdW1GcmFtZXNJ
bkNvbXBsZXRlQmxvY2sgPSAwOwogICAgIG1fcGFja2V0RGVzY3JpcHRpb25zLmNsZWFyKCk7Ci0g
ICAgbV9wYWNrZXRzRGF0YS5jbGVhcigpOwotICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQg
PSBzdGQ6Om51bGxvcHQ7Ci0gICAgVHJhY2tEYXRhOjpyZXNldCgpOworICAgIG1fY3VycmVudFBh
Y2tldEJ5dGVPZmZzZXQgPSAwOworICAgIFRyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKTsKIH0K
IAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpj
b25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYgcmVhZGVyLCBjb25zdCBGcmFtZU1ldGFkYXRh
JiBtZXRhZGF0YSwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nLCBjb25zdCBDTVRpbWUmIHByZXNl
bnRhdGlvblRpbWUsIGludCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NFUlQoc2FtcGxlQ291bnQp
OwotCi0gICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICBt
X2J5dGVPZmZzZXQgPSBtZXRhZGF0YS5wb3NpdGlvbjsKLSAgICAgICAgbV9zYW1wbGVQcmVzZW50
YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKLSAgICB9Ci0KLSAgICBpZiAobV9jdXJyZW50
UGFja2V0U2l6ZSAmJiAqbV9jdXJyZW50UGFja2V0U2l6ZSAhPSBtZXRhZGF0YS5zaXplKSB7Ci0g
ICAgICAgIC8vIFRoZSBwYWNrZXQncyBtZXRhZGF0YSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50
bHkgcGVuZGluZyBwYXJ0aWFsIHBhY2tldDsgcmVzdGFydC4KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEX1dJVEhfTUVTU0FHRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHdl
Ym0gaW4gbm9uc2Vuc2ljYWwgc3RhdGUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0g
MDsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0K
LSAgICBpZiAoIW1fY3VycmVudFBhY2tldFNpemUpCi0gICAgICAgIG1fY3VycmVudFBhY2tldFNp
emUgPSBtZXRhZGF0YS5zaXplOwotCi0gICAgLy8gRW5zdXJlIHdlIGhhdmUgcm9vbSB0byBzdG9y
ZSB0aGUgZnVsbCBwZW5kaW5nIGZyYW1lLgotICAgIGlmIChtX3BhY2tldHNEYXRhLnNpemUoKSA8
IG1fcGFja2V0c0J5dGVzUmVhZCArIG1ldGFkYXRhLnNpemUpCi0gICAgICAgIG1fcGFja2V0c0Rh
dGEuZ3JvdyhtX3BhY2tldHNCeXRlc1JlYWQgKyBtZXRhZGF0YS5zaXplKTsKLQotICAgIGlmICgh
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCkKLSAgICAgICAgbV9jdXJyZW50UGFja2V0Qnl0ZU9m
ZnNldCA9IG1fcGFja2V0c0J5dGVzUmVhZDsKLQotICAgIHdoaWxlICgqYnl0ZXNSZW1haW5pbmcp
IHsKLSAgICAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwotICAgICAgICBhdXRvIHN0YXR1cyA9IHJl
YWRlci5SZWFkKCpieXRlc1JlbWFpbmluZywgbV9wYWNrZXRzRGF0YS5kYXRhKCkgKyBtX3BhY2tl
dHNCeXRlc1JlYWQgKyBtX3BhcnRpYWxCeXRlc1JlYWQsICZieXRlc1JlYWQpOwotICAgICAgICAq
Ynl0ZXNSZW1haW5pbmcgLT0gYnl0ZXNSZWFkOwotICAgICAgICBtX3BhcnRpYWxCeXRlc1JlYWQg
Kz0gYnl0ZXNSZWFkOwotCi0gICAgICAgIGlmICghc3RhdHVzLmNvbXBsZXRlZF9vaygpKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9CisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJh
bWVEYXRhKHJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1
cy5jb21wbGV0ZWRfb2soKSkKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKIAotICAgIEFTU0VSVCht
X3BhcnRpYWxCeXRlc1JlYWQgPD0gKm1fY3VycmVudFBhY2tldFNpemUpOwotICAgIGlmIChtX3Bh
cnRpYWxCeXRlc1JlYWQgPCAqbV9jdXJyZW50UGFja2V0U2l6ZSkKLSAgICAgICAgcmV0dXJuIHdl
Ym06OlN0YXR1cyh3ZWJtOjpTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgIC8vIEF0dGVtcHRzIHRv
IG1pbmltaXNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRpb25zIGR1ZSB0byByZXBldGl0
dmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSBjYWxscyBpbiByZWFkRnJhbWVE
YXRhLgorICAgIG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2srKzsKKyAgICBpZiAobU51bUZyYW1l
c0luQ29tcGxldGVCbG9jayA+IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5KQorICAgICAgICBtTWF4
QmxvY2tCdWZmZXJDYXBhY2l0eSA9IG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2s7CiAKLSAgICBt
X3BhY2tldHNCeXRlc1JlYWQgKz0gbV9wYXJ0aWFsQnl0ZXNSZWFkOwotICAgIG1fcGFydGlhbEJ5
dGVzUmVhZCA9IDA7CisgICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKIAogICAg
IGlmICghZm9ybWF0RGVzY3JpcHRpb24oKSkgewogICAgICAgICBpZiAoIXRyYWNrKCkuY29kZWNf
cHJpdmF0ZS5pc19wcmVzZW50KCkpIHsKQEAgLTEzMjUsOCArMTM3MywxOSBAQCB3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURh
dGEod2VibTo6UmVhZAogICAgICAgICBpZiAoY29kZWMoKSA9PSBDb2RlY1R5cGU6OlZvcmJpcykK
ICAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlVm9yYmlzQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbihwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CisgICAgICAgICAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihtX2N1
cnJlbnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgICAgICAg
ICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHVuYWJs
ZSB0byBjcmVhdGUgY29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdWludDhfdCogYmxvY2tCdWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1
dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoY29udGlndW91c0J1ZmZl
ci5nZXQoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsK
KyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJy
b3IiLCBlcnIpOworICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVt
YWluaW5nKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIE9wdXNDb29raWVDb250ZW50cyBj
b29raWVDb250ZW50czsKLSAgICAgICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJp
dmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksIG1fcGFja2V0c0J5dGVzUmVhZCwg
bV9wYWNrZXRzRGF0YS5kYXRhKCksIGNvb2tpZUNvbnRlbnRzKSkgeworICAgICAgICAgICAgaWYg
KCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRh
dGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRl
bnRzKSkgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkZh
aWxlZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVy
biBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KQEAgLTEzNTUs
MTAgKzE0MTQsMjEgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICB9IGVsc2UgaWYgKGNv
ZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CiAgICAgICAgIC8vIE9wdXMgdGVjaG5pY2FsbHkg
YWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1wYWNrZXQgdmFsdWVzIHRv
IGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8vIENvcmVBdWRpbyBkb2Vz
bid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFuZ2Ugb24gYSBwZXItcGFj
a2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVuCi0gICAgICAgIC8vIHRoYXQga2luZCBv
ZiB2YXJpYWJsaWxpdHkgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIC8vIHRoYXQga2luZCBvZiB2
YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNv
b2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9IHRyYWNrKCkuY29kZWNf
cHJpdmF0ZS52YWx1ZSgpOwotICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZh
dGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCBtX3BhY2tldHNCeXRlc1JlYWQsIG1f
cGFja2V0c0RhdGEuZGF0YSgpLCBjb29raWVDb250ZW50cykKKyAgICAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIobV9jdXJyZW50UGFja2V0
Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKKyAgICAgICAgaWYgKCFjb250aWd1
b3VzQnVmZmVyKSB7CisgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJB
dWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YTogdW5hYmxlIHRvIGNyZWF0ZSBjb250aWd1
b3VzIGRhdGEgYmxvY2siKTsKKyAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKKyAgICAgICAgfQorICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRhdGEg
PSBudWxscHRyOworICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQ
b2ludGVyKGNvbnRpZ3VvdXNCdWZmZXIuZ2V0KCksIDAsIG51bGxwdHIsIG51bGxwdHIsIChjaGFy
KiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBm
YWlsZWQgd2l0aCBlcnJvciIsIGVycik7CisgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2
YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxl
dGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQogICAgICAgICAg
ICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0
CiAgICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVE
dXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1
cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwpAQCAt
MTM2NiwxNCArMTQzNiwxNSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oKm1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQpLCAwLCBzdGF0aWNfY2FzdDxVSW50MzI+
KCptX2N1cnJlbnRQYWNrZXRTaXplKSB9KTsKLSAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0
ID0gc3RkOjpudWxsb3B0OwotICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxvcHQ7
CisgICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY29t
cGxldGVQYWNrZXRTaXplKSB9KTsKKyAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ICs9ICpt
X2NvbXBsZXRlUGFja2V0U2l6ZTsKKyAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gc2FtcGxlRHVyYXRpb24gPSBQQUw6OkNNVGltZUdldFNlY29uZHMo
UEFMOjpDTVRpbWVTdWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRhdGlv
blRpbWUpKSArIFBBTDo6Q01UaW1lR2V0U2Vjb25kcyhtX3BhY2tldER1cmF0aW9uKSAqIHNhbXBs
ZUNvdW50OwotCi0gICAgaWYgKHNhbXBsZUR1cmF0aW9uID49IG1fbWluaW11bVNhbXBsZUR1cmF0
aW9uKQorICAgIGlmIChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1TYW1wbGVEdXJhdGlvbikg
ewogICAgICAgICBjcmVhdGVTYW1wbGVCdWZmZXIobWV0YWRhdGEucG9zaXRpb24pOworICAgICAg
ICByZXNldCgpOworICAgIH0KIAogICAgIEFTU0VSVCghKmJ5dGVzUmVtYWluaW5nKTsKICAgICBy
ZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06OlN0YXR1czo6a09rQ29tcGxldGVkKTsKQEAgLTEzODEs
MzkgKzE0NTIsMTcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKIAogdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCiB7Ci0gICAgaWYgKG1fcGFja2V0
RGVzY3JpcHRpb25zLmlzRW1wdHkoKSB8fCAhbV9wYWNrZXRzQnl0ZXNSZWFkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fcGFja2V0c0RhdGEuaXNFbXB0eSgpKTsKLQotICAgIENN
QmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyID0gUEFM
OjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG51bGxwdHIsIG1fcGFja2V0c0J5dGVzUmVhZCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0
ciwgMCwgbV9wYWNrZXRzQnl0ZXNSZWFkLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0Zs
YWcsICZibG9ja0J1ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBQQVJTRVJfTE9HX0VS
Uk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxl
ZCB3aXRoICVkIiwgZXJyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGJ1ZmZl
ciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOwotCi0gICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVy
UmVwbGFjZURhdGFCeXRlcyhtX3BhY2tldHNEYXRhLmRhdGEoKSwgYnVmZmVyLmdldCgpLCAwLCBt
X3BhY2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdp
dGggJWQiLCBlcnIpOworICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVC
dWZmZXIgPSBudWxscHRyOwotICAgIGVyciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0
ZVJlYWR5V2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIu
Z2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25zLnNp
emUoKSwgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5kYXRh
KCksICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2FtcGxl
QnVmZmVyQ3JlYXRlUmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fY29tcGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQo
KSwgbV9wYWNrZXREZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUs
IG1fcGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYg
KGVycikgewogICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUF1ZGlvU2Ft
cGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVy
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9w
dENGKHJhd1NhbXBsZUJ1ZmZlcik7CiAKLSAgICBtX3BhY2tldHNEYXRhLnJlbW92ZSgwLCBtX3Bh
Y2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0KQotICAg
ICAgICAqbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCAtPSBtX3BhY2tldHNCeXRlc1JlYWQ7Ci0g
ICAgbV9wYWNrZXRzQnl0ZXNSZWFkID0gMDsKLSAgICBtX3BhY2tldERlc2NyaXB0aW9ucy5jbGVh
cigpOwotCiAgICAgYXV0byB0cmFja0lEID0gdHJhY2soKS50cmFja191aWQudmFsdWUoKTsKICAg
ICBwYXJzZXIoKS5wcm92aWRlTWVkaWFEYXRhKFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJhY2tJ
RCwgbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0KTsKIH0KQEAgLTE0MjEsOCArMTQ3MCwxMSBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZm
ZXIoc3RkOjpvcHRpb25hbDxzaQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBl
bmRpbmdBdWRpb0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrcykg
ewotICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlRyYWNrRGF0YTo6VHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBkb3duY2FzdDxBdWRpb1Ry
YWNrRGF0YT4odHJhY2suZ2V0KCkpLmNyZWF0ZVNhbXBsZUJ1ZmZlcigpOworICAgICAgICBpZiAo
dHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6
VHlwZTo6QXVkaW8pIHsKKyAgICAgICAgICAgIEF1ZGlvVHJhY2tEYXRhJiBhdWRpb1RyYWNrID0g
ZG93bmNhc3Q8QXVkaW9UcmFja0RhdGE+KHRyYWNrLmdldCgpKTsKKyAgICAgICAgICAgIGF1ZGlv
VHJhY2suY3JlYXRlU2FtcGxlQnVmZmVyKCk7CisgICAgICAgICAgICBhdWRpb1RyYWNrLnJlc2V0
Q29tcGxldGVkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaAppbmRleCA5NTI5NzZiMjcyZjcxMTg1YmI3ODdmNWFhMzQyM2M0Zjg3ZDZjNGE2Li42
OGExMjAwMGUyNGU2OThkZjBhYzk0OTA1YTcxNzZlMGNiMTBmMWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlQVZGT2Jq
QzsKIGNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFy
c2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgY2xhc3Mg
U2VnbWVudFJlYWRlcjsKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2YWls
YWJsZSgpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwpAQCAtMTU1LDMwICsxNTUsNDIg
QEAgcHVibGljOgogICAgICAgICB2b2lkIHNldEZvcm1hdERlc2NyaXB0aW9uKFJldGFpblB0cjxD
TUZvcm1hdERlc2NyaXB0aW9uUmVmPiYmIGRlc2NyaXB0aW9uKSB7IG1fZm9ybWF0RGVzY3JpcHRp
b24gPSBXVEZNb3ZlKGRlc2NyaXB0aW9uKTsgfQogCiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk0mIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyOyB9Ci0gICAgICAgIAorCiAg
ICAgICAgIHZpcnR1YWwgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVy
JiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwg
aW50KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprSW52YWxpZEVsZW1lbnRJ
ZCk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXRDb21wbGV0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2Nv
bXBsZXRlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZvaWQgcmVz
ZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgcmVzZXRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIG1fY29t
cGxldGVQYWNrZXRTaXplID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbV9wYXJ0aWFsQnl0
ZXNSZWFkID0gMDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsK
ICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbV9jdXJyZW50UGFja2V0U2l6ZTsKLSAgICAgICAgLy8gU2l6ZSBvZiB0aGUgY3VycmVudGx5
IHBhcnNlZCBwYWNrZXQsIHBvc3NpYmx5IGluY29tcGxldGUuCi0gICAgICAgIHNpemVfdCBtX3Bh
cnRpYWxCeXRlc1JlYWQgeyAwIH07CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVm
PiBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICAgICAgd2VibTo6U3RhdHVzIHJlYWRGcmFtZURhdGEod2VibTo6UmVh
ZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmlu
Zyk7CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2NvbXBsZXRlQmxvY2tC
dWZmZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2NvbXBsZXRlUGFja2V0U2l6
ZTsKKyAgICAgICAgLy8gSW5pdGlhbCBhbGxvY2F0aW9uIHNpemUgb2YgZW1wdHkgQ01CbG9ja0J1
ZmZlci4KKyAgICAgICAgc2l6ZV90IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5IHsgMCB9OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQ29kZWNUeXBlIG1fY29kZWM7CiAgICAgICAgIHdlYm06OlRy
YWNrRW50cnkgbV90cmFjazsKICAgICAgICAgVHlwZSBtX3RyYWNrVHlwZTsKICAgICAgICAgUmV0
YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZm9ybWF0RGVzY3JpcHRpb247CisgICAg
ICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICAg
ICAgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSYgbV9wYXJzZXI7CisgICAgICAgIC8vIFNpemUg
b2YgdGhlIGN1cnJlbnRseSBpbmNvbXBsZXRlIHBhcnNlZCBwYWNrZXQuCisgICAgICAgIHNpemVf
dCBtX3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CiAgICAgfTsKIAogICAgIGNsYXNzIFZpZGVvVHJh
Y2tEYXRhIDogcHVibGljIFRyYWNrRGF0YSB7CkBAIC0xOTMsOSArMjA1LDYgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShWUDkpCi0gICAgICAgIHZvaWQgcmVz
ZXQoKSBmaW5hbDsKLSNlbmRpZgogICAgICAgICB3ZWJtOjpTdGF0dXMgY29uc3VtZUZyYW1lRGF0
YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgdWludDY0X3QqLCBj
b25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwogCiAgICAgcHJpdmF0ZToKQEAgLTIwNCw3ICsyMTMs
NiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVlA5KQogICAgICAgICB2cDlfcGFyc2VyOjpWcDlI
ZWFkZXJQYXJzZXIgbV9oZWFkZXJQYXJzZXI7Ci0gICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVm
ZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICNlbmRpZgogICAgIH07CiAKQEAgLTIyMiw3
ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB3ZWJtOjpTdGF0dXMgY29u
c3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwg
dWludDY0X3QqLCBjb25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwotICAgICAgICB2b2lkIHJlc2V0
KCkgZmluYWw7CisgICAgICAgIHZvaWQgcmVzZXRDb21wbGV0ZWQoKSBmaW5hbDsKICAgICAgICAg
dm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhdGVzdEJ5dGVS
YW5nZU9mZnNldCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjMwLDE1ICsy
MzgsMTEgQEAgcHVibGljOgogCiAgICAgICAgIENNVGltZSBtX3NhbXBsZVByZXNlbnRhdGlvblRp
bWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tldER1cmF0aW9uOwotICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gbV9wYWNrZXRzRGF0YTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY3Vy
cmVudFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIC8vIFNpemUgb2YgdGhlIGNvbXBsZXRlIHBh
Y2tldHMgcGFyc2VkIHNvIGZhci4KLSAgICAgICAgc2l6ZV90IG1fcGFja2V0c0J5dGVzUmVhZCB7
IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fYnl0ZU9mZnNldCB7IDAgfTsKKyAgICAgICAgc2l6ZV90
IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgeyAwIH07CiAgICAgICAgIHVpbnQ4X3QgbV9mcmFt
ZXNQZXJQYWNrZXQgeyAwIH07CiAgICAgICAgIFNlY29uZHMgbV9mcmFtZUR1cmF0aW9uIHsgMF9z
IH07CiAgICAgICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX3BhY2tl
dERlc2NyaXB0aW9uczsKLQorICAgICAgICBzaXplX3QgbU51bUZyYW1lc0luQ29tcGxldGVCbG9j
ayB7IDAgfTsKICAgICAgICAgLy8gRklYTUU6IDAuNSAtIDEuMCBzZWNvbmRzIGlzIGEgYmV0dGVy
IGR1cmF0aW9uIHBlciBzYW1wbGUgYnVmZmVyLCBidXQgdXNlIDIgc2Vjb25kcyBzbyBhdCBsZWFz
dCB0aGUgZmlyc3QKICAgICAgICAgLy8gc2FtcGxlIGJ1ZmZlciB3aWxsIHBsYXkgdW50aWwgd2Ug
Zml4IE1lZGlhU2FtcGxlQ3Vyc29yOjpjcmVhdGVTYW1wbGVCdWZmZXIgdG8gZGVhbCB3aXRoIGBl
bmRDdXJzb3JgLgogICAgICAgICBmbG9hdCBtX21pbmltdW1TYW1wbGVEdXJhdGlvbiB7IDIgfTsK
QEAgLTI4MSw3ICsyODUsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpOb25lIH07CiAKLSAgICBVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPiBtX3JlYWRl
cjsKKyAgICBVbmlxdWVSZWY8U2VnbWVudFJlYWRlcj4gbV9yZWFkZXI7CiAKICAgICBWZWN0b3I8
VW5pcXVlUmVmPFRyYWNrRGF0YT4+IG1fdHJhY2tzOwogICAgIHVzaW5nIEJsb2NrVmFyaWFudCA9
IFZhcmlhbnQ8d2VibTo6QmxvY2ssIHdlYm06OlNpbXBsZUJsb2NrPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHku
Y3BwCmluZGV4IGQ4ZGNiMTEwMTNjZTc2N2U4NDNmOTk3NjBkNzQ5OWI5YmU2YzBjNzMuLmQwMDZh
Y2VhMDhhZjdiMTgxNjgwNjQzODEyNWVlOWUxODk2NGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNw
cApAQCAtMTkyLDkgKzE5MiwxMyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3Vy
Y2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQogICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdl
ZChmbGFnKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgYnVm
ZmVySGFuZGxlKQogewotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKGRhdGEudmVj
dG9yKCkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoYnVmZmVy
SGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
aWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc291cmNlQnVmZmVy
UHJpdmF0ZS0+YXBwZW5kKHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZlckhh
bmRsZS5kYXRhU2l6ZSkpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphYm9y
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGM5MTI5MDE1OGQ4M2VjOTYwMjVlYzk1OTMzZjJhMzFi
NzVlNWVhM2YuLjc3ZDgyN2FiMzAzMmExNjRiM2Y0YTc2ZTAxODE4NmZmN2I5MTQzMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U291cmNlQnVmZmVyUHJpdmF0ZS5oPgpAQCAtODcsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRUeXBlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBzZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUpOwotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogICAgIHZvaWQg
cmVzZXRQYXJzZXJTdGF0ZSgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZlZmU4ZjU1ZjlkODg1OWMx
YjUwOWY2N2I1MjNmN2M3ODUwOGQ3OWIuLjhmNjIwYmEyZTk2ZmZmNjMyZWYzZDAzMmE1YjBjNDc4
NDk4ZmUyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDcg
KzI5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJveHkgTm90UmVmQ291bnRl
ZCB7CiAgICAgU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIENhblN3aXRjaFRvVHlwZShXZWJD
b3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSkgLT4gKGJvb2wgY2FuU3dpdGNoKSBTeW5jaHJv
bm91cwogICAgIFNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZSBhcHBlbmRN
b2RlKQotICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBBcHBlbmQoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFib3J0KCkKICAgICBSZXNl
dFBhcnNlclN0YXRlKCkKICAgICBSZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCA2YmFjYTM0ZGM3MGQ0M2M5Zjk0YmUzY2Qz
MTZlZGJkZDFlM2U1OTNmLi43NTZiMjQwYjZmYTdiYjViZThlY2JmZTcwZjk1OWM5ODczMTY3OGUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCw2ICs0OCwx
OSBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAorUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRh
dGFTaXplKSBjb25zdAoreworICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgW2RhdGFTaXplXSAoKSAtPiBzaXplX3QgeworICAgICAgICAgICAgcmV0
dXJuIGRhdGFTaXplOworICAgICAgICB9CisgICAgfSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiB2b2lkIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjp0YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVt
b3J5TGVkZ2VyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5k
ZXggNTZhMWY1Njk5NzcwNWRhMDBhOWRjNDYxOWZlMTIzMTRhZGRmZDJmNi4uZTM3MWJjZDczMDJj
Zjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUg
c3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFn
ZVNpemUoKTsKIAorICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QpIGNvbnN0OworCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKICAgICBXVEY6
Ok1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KFByb3RlY3Rpb24pIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZmNiMDEyMjIzNDNlNzU4ZGU2NjQ2NjgzNTJi
ZDEyODRhN2ZmZTQzNC4uNDU4ZTNiYTRiMDhjODA4NzExZTVmMmVhZjA2NTFlN2ZkZGM0ZmQ1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCwxMiArNzgsMTkgQEAgU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQogICAg
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVu
ZChJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSkpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXIpOworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihkYXRh
KTsKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgc2hhcmVkRGF0YS0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisK
KyAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1l
ZGlhLXJlbGF0ZWQgbWVtb3J5LgorICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVt
b3J5TGVkZ2VyOjpNZWRpYSk7CisKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVuZChTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2hhcmVkRGF0YS0+c2l6ZSgp
IH0pLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5k
ZXggMThiOTkwNmNkY2M2MzRjN2I4MDE0NTEzN2IzZTBiOWM0OTU4Njg4My4uMzYwMTc1YmZiZTlk
MWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBh
cHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5h
bDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRG
cm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="462130"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438673</attachid>
            <date>2021-09-20 07:05:37 -0700</date>
            <delta_ts>2021-09-20 22:35:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230329-20210921000536.patch</filename>
            <type>text/plain</type>
            <size>69522</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzNTRjZTU2ZTg3Mjc5
OWU1NGQ4NDA1Y2FmZjA1NmFjYmFlYTI5My4uYzEzNjYyNTAzMzdhZGZkZGFkZWQ3NjcwZjg2ZWNk
NTEwMTNkNDdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIxLTA5LTIwICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9y
eSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8g
dGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAg
ICBVc2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgVmVjdG9yIHRvIHBhc3MgZGF0YSB0byB0aGUg
U291cmNlQnVmZmVyJ3MgcmVsYXRlZAorICAgICAgICBjbGFzc2VzIChTb3VyY2VCdWZmZXIsIFNv
dXJjZUJ1ZmZlclByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclBhcnNlcikuCisgICAgICAgIE1vZGlm
eSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIHRvIG5ldmVyIHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRp
b24gYW5kIGNvcHkKKyAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgY29udGVudC4gSW5zdGVh
ZCwgd2UgdXNlIENNQmxvY2tCdWZmZXIgb2JqZWN0cyB0aGF0IHJldGFpbiB0aGUKKyAgICAgICAg
YmFja2luZyBTaGFyZWRCdWZmZXIgYW5kIHVzZSBvZmZzZXRzIGluc2lkZSB0aGlzIFNoYXJlZEJ1
ZmZlciB0byByZWZlcmVuY2UgdGhlIGRhdGEuCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMgcmVxdWlyZXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBhcyBhIE5TRGF0YSBjYW4gd3JhcCBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gY2hhbmdlIGZyb20gYW4gb2JzZXJ2YWJsZSBzdGFu
ZHBvaW50IG90aGVyIHRoYW4gdGhlIEdQVSBtZW1vcnkgdXNhZ2UKKyAgICAgICAgYmVpbmcgZHJh
c3RpY2FsbHkgcmVkdWNlZCAoZnJvbSA3MDBNQiB3aGVuIHdhdGNoaW5nIGEgNEsvNjBmcHMgWW91
VHViZSB2aWRlbyB0byBqdXN0IG92ZXIgMjAwTUIKKyAgICAgICAgb24gYW4gaU1hYyBQcm8gKHdo
aWNoIG9ubHkgaGFzIHNvZnR3YXJlIFZQOSBkZWNvZGluZykuCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIGFyZSBmdWxseSBleGVyY2lzaW5nIHRoaXMgbmV3IGNvZGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6IFNpbXBsaWZ5IGxvZ2ljIGFyb3VuZCBt
X3BlbmRpbmdBcHBlbmREYXRhIG1lbWJlci4KKyAgICAgICAgT25seSBvbmUgYXBwZW5kQnVmZmVy
IG9wZXJhdGlvbiBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZSBvdGhlcndpc2UgYXBw
ZW5kQnVmZmVyCisgICAgICAgIHdpbGwgdGhyb3c7IGFzIHN1Y2gsIHRoZXJlJ3Mgbm8gbmVlZCB0
byBhcHBlbmQgdGhlIGRhdGEgdG8gYSB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OmFib3J0SWZVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
YXBwZW5kQnVmZmVyVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oOiBBZGQgbmV3IERhdGFTZWdtZW50IHR5cGUgdGhhdCB0YWtlcyBhIFByb3ZpZGVyIGlu
IGNvbnN0cnVjdG9yLgorICAgICAgICBBIFByb3ZpZGVyIHByb3ZpZGVzIHR3byBGdW5jdGlvbiBt
ZW1iZXJzIGRhdGEgYW5kIHNpemUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwOiBUaGUgQXVkaW9GaWxlUmVhZGVyQ29jb2EgcmVxdWlyZWQK
KyAgICAgICAgdGhlIENNQmxvY2tCdWZmZXIgY29udGFpbmluZyB0aGUgY29tcHJlc3NlZCBjb250
ZW50IHRvIGJlIGNvbnRpZ3VvdXMuIFRoaXMgaXMgbm8KKyAgICAgICAgbG9uZ2VyIGd1YXJhbnRl
ZWQgc28gZW5zdXJlIHRoYXQgdGhlIENNQmxvY2tCdWZmZXIgaXMgY29udGlndW91cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6Y29udGlndW91c0NvbXBsZXRl
QmxvY2tCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6VHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpj
cmVhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6QXVkaW9UcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tE
YXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVz
ZXQpOgorCiAyMDIxLTA5LTA3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVjb2Rpbmcgd2VibSBmaWxlIHdpdGggbW9yZSB0aGFuIDIgY2hhbm5lbHMgd2ls
bCBmYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzQyZThkZjYzMmE0OGMzZDk1ZTIxY2Q4ODcw
OGIyZTRhOGI0ODE3Li5lNjU4M2RlOTkxNTk4MWY3YTg0MjI2YzljNzg3OTMxYjI2ZmE2Nzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOS0yMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgZm9y
IHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRvIHRoZSBH
UFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOiBBZGQgcmVx
dWlyZWQgQ29yZU1lZGlhIG1ldGhvZHMuCisKIDIwMjEtMDktMDcgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWNvZGluZyB3ZWJtIGZpbGUgd2l0aCBtb3Jl
IHRoYW4gMiBjaGFubmVscyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjFiOWRlYjZiNWE1YWQxZjky
MzJlZTUwYTUzZDc3NDA3MWY1NTQ3Yi4uYjVjN2ZjZjEwY2FkZGMxOWE5MjEzNWYyMzI1YTUxMDM3
NzVmYTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wOS0yMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgZm9y
IHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRvIHRoZSBH
UFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAgICAgVXNl
IFNoYXJlZE1lbW9yeSB0byBwYXNzIFNvdXJjZUJ1ZmZlciBjb250ZW50IHRvIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5IGluIEdQVSBwcm9jZXNzLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgd3Jh
cHBpbmcgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6YXBwZW5kKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorCiAy
MDIxLTA5LTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRlYWNoIGBXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcGAgdG8gc25hcHNob3Qgdmlk
ZW8gZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcAppbmRleCBmNDU4NGZmMzUyODI1NmNlOTA3MDU4NDZjODBkYTVlZGUw
NjQ2ODNjLi5iYWVlOWExMWI1MDFhNDE1YzRjZjliZDZmMzU3OTM1ZDY0MzIyMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlh
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgpAQCAtMzk0LDcg
KzM5NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphYm9ydElmVXBkYXRpbmcoKQogCiAgICAgLy8g
NC4xLiBBYm9ydCB0aGUgYnVmZmVyIGFwcGVuZCBhbGdvcml0aG0gaWYgaXQgaXMgcnVubmluZy4K
ICAgICBtX2FwcGVuZEJ1ZmZlclRpbWVyLnN0b3AoKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRh
LmNsZWFyKCk7CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IG51bGxwdHI7CiAgICAgbV9wcml2
YXRlLT5hYm9ydCgpOwogCiAgICAgLy8gNC4yLiBTZXQgdGhlIHVwZGF0aW5nIGF0dHJpYnV0ZSB0
byBmYWxzZS4KQEAgLTQ5NCw3ICs0OTUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZm
ZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsCiAKICAg
ICAvLyBOT1RFOiBSZXR1cm4gdG8gMy4yIGFwcGVuZEJ1ZmZlcigpCiAgICAgLy8gMy4gQWRkIGRh
dGEgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyLgotICAgIG1fcGVuZGluZ0FwcGVuZERh
dGEuYXBwZW5kKGRhdGEsIHNpemUpOworICAgIEFTU0VSVCghbV9wZW5kaW5nQXBwZW5kRGF0YSk7
CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNp
emUpOwogCiAgICAgLy8gNC4gU2V0IHRoZSB1cGRhdGluZyBhdHRyaWJ1dGUgdG8gdHJ1ZS4KICAg
ICBtX3VwZGF0aW5nID0gdHJ1ZTsKQEAgLTUyNCwxOCArNTI2LDE0IEBAIHZvaWQgU291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAgICAvLyBodHRwczovL2R2Y3MudzMub3Jn
L2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRt
bCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9vcAogICAgIC8vIFdoZW4gdGhlIHNlZ21l
bnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9rZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgogCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9w
ZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6IElmIHRoZSBpbnB1dCBidWZm
ZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3JlIGRhdGEgc3RlcCBiZWxvdy4K
LSAgICBpZiAoIW1fcGVuZGluZ0FwcGVuZERhdGEuc2l6ZSgpKSB7CisgICAgaWYgKCFhcHBlbmRE
YXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0
ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIC8vIE1hbnVhbGx5IGNsZWFyIG91dCB0aGUgbV9wZW5kaW5n
QXBwZW5kRGF0YSBWZWN0b3IsIGluIGNhc2UgdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uCi0g
ICAgLy8gcmVqZWN0cyBhcHBlbmRpbmcgdGhlIGJ1ZmZlciBmb3Igd2hhdGV2ZXIgcmVhc29uLgot
ICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGd1YXJhbnRlZSB0aGUgbW92
ZSBmcm9tIHRoaXMgVmVjdG9yLCBhbmQgd2Ugc2hvdWxkCi0gICAgLy8gYXNzZXJ0IGhlcmUgdG8g
Y29uZmlybSB0aGF0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODAwMy4KLSAgICBtX3ByaXZhdGUtPmFwcGVuZChXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERh
dGEpKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmNsZWFyKCk7CisgICAgbV9wcml2YXRlLT5h
cHBlbmQoYXBwZW5kRGF0YS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQgcmVzdWx0
KQpAQCAtMTIxMSw3ICsxMjA5LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQ
cml2YXRlUmVwb3J0RXh0cmFNZW1vcnlDb3N0KHVpbnQ2NF90IGV4dHJhTWVtb3J5CiAKIHZvaWQg
U291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCh1aW50NjRfdCBleHRyYU1l
bW9yeSkKIHsKLSAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QgPSBtX3BlbmRpbmdBcHBlbmRE
YXRhLmNhcGFjaXR5KCkgKyBleHRyYU1lbW9yeTsKKyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNv
c3QgPSBleHRyYU1lbW9yeTsKKyAgICBpZiAobV9wZW5kaW5nQXBwZW5kRGF0YSkKKyAgICAgICAg
ZXh0cmFNZW1vcnlDb3N0ICs9IG1fcGVuZGluZ0FwcGVuZERhdGEtPnNpemUoKTsKKwogICAgIGlm
IChleHRyYU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaAppbmRleCA4ODhkMmQ2ZTk4ZGFiZjk3ZGFiZTFjOTFmMjQ4YjEwODVkNjkyYjYx
Li5hNzIzM2QyMWUwODFhYTRhOGQ4NDI1NGIyOTNhNzMyZjY4NDEzZThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMSw3
ICsyMjEsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1
ZVJvb3RQcm92aWRlcjsKIAotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX3BlbmRpbmdBcHBl
bmREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAg
ICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlz
dD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHAKaW5kZXggYTE5MTc4MTQ3M2RjYWM3NmM1YjA0MTU1NjkxODQxNDcwZDNh
MjI0My4uZjIzZDY2MzIyMGRjNzQyOThiOWI5ZGQ5MDFkMGNjNjVmYWE1NWM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKQEAgLTExMyw2
ICsxMTMsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0XwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwgQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgc3RydWN0dXJlQWxsb2NhdG9yLCBDTUJsb2NrQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgQ0ZB
bGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21CbG9j
a1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJs
b2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgc291cmNlQnVmZmVyLCBibG9ja0Fs
bG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZmxh
Z3MsIGJsb2NrQnVmZmVyT3V0KSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQXBwZW5kQnVm
ZmVyUmVmZXJlbmNlLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyLCBDTUJs
b2NrQnVmZmVyUmVmIHRhcmdldEJCdWYsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MpLCAodGhlQnVmZmVyLCB0YXJnZXRCQnVm
LCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZsYWdzKSwgUEFMX0VYUE9SVCkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlRW1wdHksIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxs
b2NhdG9yLCB1aW50MzJfdCBzdWJCbG9ja0NhcGFjaXR5LCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxh
Z3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRv
ciwgc3ViQmxvY2tDYXBhY2l0eSwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSwgUEFMX0VYUE9SVCkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlh
LCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlLCBGb3VyQ2hhckNvZGUsIChDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1lZGlhVHlwZSwgQ01NZWRpYVR5cGUsIChDTUZvcm1hdERlc2NyaXB0aW9u
UmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCBkNGZmMDQ2OGMzMThjMmYzNDVkYTk4NDU5
ZmU3MTQ5YjM3NWI0M2RlLi41ZmRmZjg0NzliNTMxNWNkYWFiMTBjNzY5YjVmZTllNjQ0YzI1MzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBA
IC0xNzUsNiArMTc1LDEwIEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQsCiAKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29u
dGlndW91cywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxvY2F0b3IsIENN
QmxvY2tCdWZmZXJSZWYgc291cmNlQnVmZmVyLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRv
ciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJj
ZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJG
bGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJl
QWxsb2NhdG9yLCBzb3VyY2VCdWZmZXIsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1NvdXJj
ZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQogI2Rl
ZmluZSBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29udGlndW91cyBzb2Z0TGlua19Db3JlTWVkaWFfQ01C
bG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQXBwZW5kQnVmZmVyUmVmZXJlbmNlLCBPU1N0
YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyLCBDTUJsb2NrQnVmZmVyUmVmIHRhcmdl
dEJCdWYsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVm
ZmVyRmxhZ3MgZmxhZ3MpLCAodGhlQnVmZmVyLCB0YXJnZXRCQnVmLCBvZmZzZXRUb0RhdGEsIGRh
dGFMZW5ndGgsIGZsYWdzKSkKKyNkZWZpbmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVy
ZW5jZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5j
ZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tC
dWZmZXJDcmVhdGVFbXB0eSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxv
Y2F0b3IsIHVpbnQzMl90IHN1YkJsb2NrQ2FwYWNpdHksIENNQmxvY2tCdWZmZXJGbGFncyBmbGFn
cywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9y
LCBzdWJCbG9ja0NhcGFjaXR5LCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQorI2RlZmluZSBDTUJs
b2NrQnVmZmVyQ3JlYXRlRW1wdHkgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDcmVh
dGVFbXB0eQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
Rm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUsIEZvdXJDaGFyQ29kZSwgKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01Gb3JtYXREZXNjcmlwdGlv
bkdldE1lZGlhU3ViVHlwZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dE1lZGlhU3ViVHlwZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUsIENNTWVkaWFUeXBlLCAoQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKaW5kZXggMDU0Y2U1YTQyOTI0YzRkOWYwYzY5ZjJkYTg2ZDkwNzc5YTkx
MDgxNS4uMmY4NTUyNjc2ODc1NmI2YjMwMWNhMGYwMDhkMTQyZWFhMTllZDAwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01Miw2ICs1MiwxMiBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVE
YXRhKQogICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKX0pOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKKyAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkp
Cit7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShwcm92aWRlcikpfSk7Cit9CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwpAQCAtMjM2LDYg
KzI0MiwxMSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAog
ICAgIHJldHVybiBjbG9uZTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKIHZvaWQg
U2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMg
PSBtX3NlZ21lbnRzOwpAQCAtMjY3LDEwICsyNzgsMzQgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OnN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdAogewotICAgIEFTU0VSVChsZW5ndGggPD0gc2l6ZSgpKTsKKyAgICByZXR1cm4gY29weVRv
KGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAor
eworICAgIEFTU0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBhdXRvIGRlc3Rp
bmF0aW9uUHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc3RpbmF0aW9uKTsKLSAgICBhdXRv
IHJlbWFpbmluZyA9IHN0ZDo6bWluKGxlbmd0aCwgc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHNl
Z21lbnQgOiBtX3NlZ21lbnRzKSB7CisgICAgYXV0byByZW1haW5pbmcgPSBzdGQ6Om1pbihsZW5n
dGgsIHNpemUoKSAtIG9mZnNldCk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgc2l6ZV90IGN1
cnJlbnRPZmZzZXQgPSAwOworICAgIGZvciAoOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkg
eworICAgICAgICBhdXRvJiBzZWdtZW50ID0gbV9zZWdtZW50c1tpXTsKKyAgICAgICAgaWYgKG9m
ZnNldCA8IGN1cnJlbnRPZmZzZXQgKyBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSkgeworICAgICAg
ICAgICAgc2l6ZV90IHBvc2l0aW9uSW5TZWdtZW50ID0gb2Zmc2V0IC0gY3VycmVudE9mZnNldDsK
KyAgICAgICAgICAgIHNpemVfdCBhbW91bnRUb0NvcHlUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFp
bmluZywgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbkluU2VnbWVudCk7CisgICAg
ICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpICsg
cG9zaXRpb25JblNlZ21lbnQsIGFtb3VudFRvQ29weVRoaXNUaW1lKTsKKyAgICAgICAgICAgIHJl
bWFpbmluZyAtPSBhbW91bnRUb0NvcHlUaGlzVGltZTsKKyAgICAgICAgICAgIGlmICghcmVtYWlu
aW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uUHRy
ICs9IGFtb3VudFRvQ29weVRoaXNUaW1lOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY3VycmVudE9mZnNldCArPSBzZWdtZW50LnNlZ21lbnQtPnNpemUoKTsKKyAgICB9
CisKKyAgICBmb3IgKGkgKz0gMTsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHNbaV07CiAgICAgICAgIHNpemVfdCBhbW91bnRU
b0NvcHlUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFpbmluZywgc2VnbWVudC5zZWdtZW50LT5zaXpl
KCkpOwogICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21lbnQuc2VnbWVudC0+ZGF0
YSgpLCBhbW91bnRUb0NvcHlUaGlzVGltZSk7CiAgICAgICAgIHJlbWFpbmluZyAtPSBhbW91bnRU
b0NvcHlUaGlzVGltZTsKQEAgLTMxMiw3ICszNDcsOCBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICNpZiBVU0UoR1NUUkVBTUVSKQogICAg
ICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVy
biBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRh
dGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4g
cHJvdmlkZXIuZGF0YSgpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzk1LDcgKzQzMSw4IEBAIHNpemVfdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICNpZiBVU0UoR1NUUkVBTUVSKQogICAg
ICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVy
biBkYXRhLT5zaXplKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLnNp
emUoKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBw
cm92aWRlci5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IDIzNjlhYWQ4YjM1NjM5ZTJlYTVhOWFkMTgyNjg1NTM3OTVlNmI3NzAuLmI4ZmQ2MTEy
NWY0YmE0NzdiYTIxMzcxMzkyMTJhYjY3ZjZmZGE3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTIzLDYgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKICAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgdm9pZCBjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCiAgICAgLy8g
RGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNl
IGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgpAQCAtMTQ4
LDYgKzE1MCwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAorICAgICAgICBz
dHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxjb25zdCB1aW50OF90
KigpPiBkYXRhOworICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAg
ICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlk
ZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KHByb3ZpZGVyKSkpOyB9CisKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTE3MSw2ICsxODAsOCBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKICAgICAg
ICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQpAQCAtMTgyLDEwICsxOTMs
MTMgQEAgcHVibGljOgogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgICAgICAgICBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEsCisgICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwogICAg
ICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIH07CiAKKyAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKwogICAgIHZv
aWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKQEAgLTIxNiw2ICsyMzAsNyBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwogI2lmIFVTRShDRikKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
Y3BwCmluZGV4IDFiMGQ0OGUzOWE4YzdiN2JjYTJlOWRiMzQyNmE5MTQ4YTA2OGFlOGUuLjIwNzc2
YzlhM2RmMmE1ZTUyOTYwYmI0ODY2MDUwOWJlZTI4NTk0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2Nv
YS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCIKICNpbmNsdWRlIDxBdWRp
b1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KQEAgLTEyOSw2ICsxMzAsNyBAQCBjbGFzcyBBdWRp
b0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1
YmxpYzoKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQogICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYK
QEAgLTE4MCw2ICsxODIsNyBAQCBib29sIEF1ZGlvRmlsZVJlYWRlcjo6aXNNYXliZVdlYk0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CisgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6ZSk7CiAgICAgYXV0
byBwYXJzZXIgPSBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2VyV2ViTSgpKTsKICAgICBi
b29sIGVycm9yID0gZmFsc2U7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYXVkaW9UcmFj
a0lkOwpAQCAtMjEyLDEyICsyMTUsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRl
cldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgdHJhY2stPnNldERpc2NhcmRQYWRkaW5nKGRpc2NhcmRQ
YWRkaW5nKTsKICAgICB9KTsKLSAgICBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQgc2VnbWVu
dCh7IGRhdGEsIGRhdGFTaXplIH0pOworICAgIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudCBz
ZWdtZW50KG1ha2VSZWYoYnVmZmVyLmdldCgpKSk7CiAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdU
Rk1vdmUoc2VnbWVudCkpOwogICAgIGlmICghdHJhY2spCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHBhcnNlci0+Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKCk7Ci0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRh
IHsgdHJhY2sucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShkdXJhdGlvbiksIFdURk1vdmUoc2Ft
cGxlcykgfSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+
KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgV1RGTW92ZShidWZmZXIpLCB0cmFjay5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKGR1cmF0aW9uKSwgV1RGTW92ZShzYW1wbGVzKSB9KTsKIH0KIAog
c3RydWN0IFBhc3N0aHJvdWdoVXNlckRhdGEgewpAQCAtMzQ3LDE2ICszNTAsMjEgQEAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEoQXVkaW9CdWZm
ZXJMaXN0JiBidWZmZXJMaXMKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fd2VibURhdGEt
Pm1fc2FtcGxlcy5zaXplKCk7IGkrKykgewogICAgICAgICBhdXRvJiBzYW1wbGUgPSBtX3dlYm1E
YXRhLT5tX3NhbXBsZXNbaV07CiAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZl
ciA9IHNhbXBsZS0+c2FtcGxlQnVmZmVyKCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gUEFMOjpD
TVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsKLSAgICAgICAgQVNTRVJU
KFBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGJ1ZmZlciwgMCwgMCkpOwotICAg
ICAgICBpZiAoIVBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGJ1ZmZlciwgMCwg
MCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAiVW5hYmxlIHRv
IHJlYWQgc2FtcGxlIGNvbnRlbnQgKG5vdCBjb250aWd1b3VzKSIpOwotICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgYXV0byByYXdCdWZmZXIgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0
RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIpOworICAgICAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZl
clJlZj4gYnVmZmVyID0gcmF3QnVmZmVyOworICAgICAgICAvLyBNYWtlIHN1cmUgYmxvY2sgYnVm
ZmVyIGlzIGNvbnRpZ3VvdXMuCisgICAgICAgIGlmICghUEFMOjpDTUJsb2NrQnVmZmVySXNSYW5n
ZUNvbnRpZ3VvdXMocmF3QnVmZmVyLCAwLCAwKSkgeworICAgICAgICAgICAgQ01CbG9ja0J1ZmZl
clJlZiBjb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChQQUw6OkNN
QmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51bGxwdHIsIHJhd0J1ZmZlciwgbnVsbHB0ciwg
bnVsbHB0ciwgMCwgMCwgMCwgJmNvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVyTm9F
cnIpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgImZhaWxl
ZCB0byBjcmVhdGUgY29udGlndW91cyBibG9jayBidWZmZXIiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmZmVyID0gYWRvcHRDRihj
b250aWd1b3VzQnVmZmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBzcmNTaXplID0g
UEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChidWZmZXIpOworICAgICAgICBzaXplX3Qg
c3JjU2l6ZSA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoYnVmZmVyLmdldCgpKTsK
ICAgICAgICAgY2hhciogc3JjRGF0YSA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChQQUw6OkNNQmxv
Y2tCdWZmZXJHZXREYXRhUG9pbnRlcihidWZmZXIsIDAsIG51bGxwdHIsIG51bGxwdHIsICZzcmNE
YXRhKSAhPSBub0VycikgeworICAgICAgICBpZiAoUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBv
aW50ZXIoYnVmZmVyLmdldCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAmc3JjRGF0YSkgIT0gbm9F
cnIpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAiVW5hYmxlIHRv
IHJldHJpZXZlIGRhdGEiKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggMjI2NjViYmU2NjA5N2I1Yjg5ZDA0MDJlYTI0OTRlOTVmZWEwZjc0
Ny4uMzRhZjJhYWNhNjg3OTJiZWU2MDE0MGQyMjc4YzBkNDQ0MzYwNDYwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlNhbXBsZU1hcC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQu
aCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CkBAIC0xMzE1LDYgKzEzMTYsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpk
aWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1
cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKK3ZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKQoreworICAgIFdURkNy
YXNoKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVk
YjUxYWQ1NjAzNDYxNzQ1NjRlMjExMWNlZDI4MTI1ZmFjMTAyYWIuLjI5ODkyYmE5ZDYzODYwY2Ew
Njk4ZDdkMDVmNDMxZjFlNTE5NmI2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1l
UmFuZ2VzOwogCiBlbnVtIGNsYXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsK
QEAgLTY2LDcgKzY3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNv
dXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpID0g
MDsKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGRp
cmVjdGx5IGFuZCBiZSBvdmVycmlkZGVuIGluc3RlYWQuCisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2aXJ0
dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQppbmRleCBhZjJhMmU2YzA0YWY1M2I2MmEzNWJiMDc5MWI2Y2M1ODkwMDllMWE1Li5lYzRlMzQx
MmVkNTU2N2FjNzUzMTk1MTdmMjk3ZDAwYTYzYTU2Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTQwLDYgKzQwLDcg
QEAKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVyUHJp
dmF0ZS5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJh
Y2suaD4KQEAgLTIxMSw4ICsyMTIsOCBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKLSAgICBhdXRvIHNo
YXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnRha2VWZWN0b3IoKSk7Ci0g
ICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gbnNEYXRh
ID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdh
c1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBb
bV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFt
RGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA5
MmQ5YzhkZDUyZjdjNTIwMmQxNmU3ZjhhZmE3MDdlZDJiNjU3ZTdlLi40MTM2MWFjNjE5NDk2ODg4
MDM4ZWVkNmM4MTNhNjQ4M2Y5MDlkYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2Ft
cGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAg
ICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBh
cnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCmluZGV4IGZmYTJmYmEwZGYwNmU4ZWRkNjRhYmNjYmQ0ZjdhYWU1MzAwOTdmNTIu
LjlhODQ2OTYxNTg4OTgyZDlhN2E4ZDFkZDU3ZDMwYTc0ZGVhNzE1YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC01
NzIsOSArNTcyLDkgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsRGF0YVBhcnNlclF1
ZXVlKCkKICAgICByZXR1cm4gZ2xvYmFsUXVldWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQordm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRh
dGEuc2l6ZSgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9
ICIsIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9yZSk7
CiAgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
CmluZGV4IDE2YmNiZTBjNTc3ZmM0MjBkYmE0NzcwZTEzNjU1M2Q5NzAzNThlMzMuLjMzYmUzNTJh
NTQzNDQ2ZjIxZTIzYWE1NjI3MGRjZWFlMTY4NjE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNs
dWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmgiCiAjaW5jbHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNvZnRMaW5rLmg+CkBA
IC03Nyw4ICs3OCw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9T
YW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
OjpTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIHNlZ21lbnQpCi0gICAgOiBtX3NlZ21lbnQoV1RG
TW92ZShzZWdtZW50KSkKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikp
CiB7CiB9CiAKQEAgLTk4LDkgKzk5LDkgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1U
UGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0s
CiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCisgICAg
ICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiB2ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+
c2l6ZSgpOwogICAgICAgICB9CiAgICAgKTsKIH0KQEAgLTExOSwxNSArMTIwLDE1IEBAIHNpemVf
dCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXpl
X3Qgc2l6ZVRvUmVhZCwgdWluCiAgICAgICAgICAgICByZXR1cm4gc2l6ZVJlYWQ7CiAgICAgICAg
IH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQor
ICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewot
ICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCB2ZWN0b3IuZGF0YSgpICsgcG9zaXRpb24s
IHNpemVUb1JlYWQpOworICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVzdGluYXRpb24sIHBv
c2l0aW9uLCBzaXplVG9SZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXplVG9SZWFkOwogICAg
ICAgICB9CiAgICAgKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6
U2VnbWVudDo6dGFrZVZlY3RvcigpCitSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJz
ZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpAQCAtMTM1
LDEyICsxMzYsMjggQEAgVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6dGFrZVZlY3RvcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2
ZWN0b3Ioc2l6ZSgpKTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZCgwLCB2ZWN0b3Iu
c2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmVjdG9yOworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7Cisg
ICAgICAgIH0sCisjZW5kaWYKKyAgICAgICAgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgIH0KKyAgICApOworfQorCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAorI2lmIEhBVkUo
TVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQ
bHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAg
IFtdKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UodmVjdG9yLCB7IH0pOworICAgICAgICAgICAg
cmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlci5oCmluZGV4IDRlZTg2YjJjZmE2MGVlYTZkZjZkMjk3NzUyNTcwNWUyNjNlNWE1OWMuLjZl
YzQzOGZlOTFkNThiYjhkOGFkZDFhZDIwM2Y1NjExZjk5MGU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29u
dGVudFR5cGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjYsOSArNjcsMTEg
QEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNl
Z21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAg
ICAgU2VnbWVudChWZWN0b3I8dWludDhfdD4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAg
ICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlVmVjdG9yKCk7CisgICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBp
ZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90
IHNpemUoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IHJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXpl
X3QsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKSBjb25zdDsKQEAgLTc4LDcgKzgxLDcgQEAgcHVibGlj
OgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5Q
dHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+CisgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVu
dDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGVlZDZl
MjAyODk4Yzc0ODBjMGU0OWNkNTRjZDMzOTFhYmJhNTQ3MTEuLjY3ZDY0N2QyNDgyOTEyZGY4M2Mx
YjRmM2RhMDIzMGNiNTRmZGIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CkBAIC0yNzMsNyArMjczLDcgQEAgc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkK
IAogdXNpbmcgbmFtZXNwYWNlIHdlYm07CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OlN0cmVhbWluZ1ZlY3RvclJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgeworY2xh
c3MgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U2VnbWVudFJlYWRlciBmaW5hbCA6IHB1YmxpYyB3
ZWJtOjpSZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZvaWQgYXBwZW5kU2VnbWVudChTZWdtZW50JiYgc2VnbWVudCkKQEAgLTM1NCw2ICszNTQsODAg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOwog
ICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIEZyZWVCbG9jayh2b2lkKiByZWZjb24sIHZvaWQqLCBz
aXplX3QpCisgICAgeworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBidWZmZXItPmRlcmVm
KCk7CisgICAgfQorCisgICAgU3RhdHVzIFJlYWRJbnRvKHN0ZDo6c2l6ZV90IG51bVRvUmVhZCwg
Q01CbG9ja0J1ZmZlclJlZiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90KiBudW1BY3R1YWxseVJlYWQp
CisgICAgeworICAgICAgICBBU1NFUlQob3V0cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5UmVhZCk7
CisgICAgICAgIGlmICghbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgICAgICpudW1BY3R1YWxseVJlYWQg
PSAwOworICAgICAgICBpZiAoIW91dHB1dEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICB3aGlsZSAobnVtVG9SZWFk
ICYmIG1fY3VycmVudFNlZ21lbnQgIT0gbV9kYXRhLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRv
JiBjdXJyZW50U2VnbWVudCA9ICptX2N1cnJlbnRTZWdtZW50OworCisgICAgICAgICAgICBpZiAo
bV9wb3NpdGlvbldpdGhpblNlZ21lbnQgPj0gY3VycmVudFNlZ21lbnQuc2l6ZSgpKSB7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNo
YXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAg
ICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAg
ICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25P
ZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICAgICAgICAgIGlmICghc2hhcmVk
QnVmZmVyKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY291bGQgcG90ZW50aWFsbHkgYWxsb2Nh
dGUgbW9yZSBtZW1vcnkgdGhhbiBuZWVkZWQgaWYgdGhlIHJlYWQgaXMgcGFydGlhbC4KKyAgICAg
ICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlC
bG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudW1Ub1JlYWQsIGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bVRvUmVhZCwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1v
cnlOb3dGbGFnLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0g
a0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJsb2Nr
QnVmZmVyRGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNlZ21lbnRTaXpl
QXRQb3NpdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVy
R2V0RGF0YVBvaW50ZXIocmF3QmxvY2tCdWZmZXIsIDAsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24s
IG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAgaWYg
KGVyciAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAgICAgICAgICAgbGFzdFJl
YWQgPSBjdXJyZW50U2VnbWVudC5yZWFkKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBudW1Ub1Jl
YWQsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQg
PSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVk
QnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVy
IGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKKyAgICAgICAgICAgICAgICAvLyBB
IFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1
Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgor
ICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxv
Y2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3Vz
IG9uZT8KKyAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+
YmVnaW4oKS0+c2VnbWVudDsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6
bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25X
aXRoaW5TZWdtZW50KTsKKyAgICAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tT
b3VyY2UgYWxsb2NhdG9yOworICAgICAgICAgICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0gMDsK
KyAgICAgICAgICAgICAgICBhbGxvY2F0b3IuQWxsb2NhdGVCbG9jayA9IG51bGxwdHI7CisgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yLkZyZWVCbG9jayA9IEZyZWVCbG9jazsKKyAgICAgICAgICAg
ICAgICBhbGxvY2F0b3IucmVmQ29uID0gZmlyc3RTZWdtZW50LnB0cigpOworICAgICAgICAgICAg
ICAgIGZpcnN0U2VnbWVudC0+cmVmKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6
OkNNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8
dm9pZCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGZpcnN0U2VnbWVudC0+ZGF0YSgpKSksIGZpcnN0
U2VnbWVudC0+c2l6ZSgpLCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudCwgY2FuUmVhZCwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZXJyICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKyAgICAgICAgICAgICAgICBsYXN0UmVh
ZCA9IGNhblJlYWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGJsb2NrQnVmZmVy
ID0gYWRvcHRDRihyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6
Q01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZShvdXRwdXRCdWZmZXIsIHJhd0Jsb2Nr
QnVmZmVyLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJO
b0VycikKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1l
bW9yeSk7CisgICAgICAgICAgICBtX3Bvc2l0aW9uICs9IGxhc3RSZWFkOworICAgICAgICAgICAg
Km51bUFjdHVhbGx5UmVhZCArPSBsYXN0UmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRo
aW5TZWdtZW50ICs9IGxhc3RSZWFkOworICAgICAgICAgICAgbnVtVG9SZWFkIC09IGxhc3RSZWFk
OworICAgICAgICAgICAgaWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID09IGN1cnJlbnRTZWdt
ZW50LnNpemUoKSkKKyAgICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOworICAg
ICAgICB9CisgICAgICAgIGlmICghbnVtVG9SZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAgIGlmICgqbnVtQWN0dWFsbHlSZWFkKQor
ICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgICAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOworICAgIH0KKwogICAgIHVpbnQ2NF90
IFBvc2l0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiAgICAgdm9p
ZCByZXNldCgpCkBAIC01OTUsNyArNjY5LDcgQEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0+IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0K
IAogU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAg
OiBtX3JlYWRlcihXVEY6Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQor
ICAgIDogbV9yZWFkZXIoV1RGOjptYWtlVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkpCiB7CiAg
ICAgaWYgKGlzV2VibVBhcnNlckF2YWlsYWJsZSgpKQogICAgICAgICBtX3BhcnNlciA9IFdURjo6
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKQEAgLTEwOTks
NjYgKzExNzMsNDMgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFE
YXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGwKIAogI2RlZmluZSBQQVJTRVJf
TE9HX0VSUk9SX0lGX1BPU1NJQkxFKC4uLikgaWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJz
ZXIoKS5sb2dnZXJQdHIoKS0+ZXJyb3IobG9nQ2hhbm5lbCgpLCBXVEY6OkxvZ2dlcjo6TG9nU2l0
ZUlkZW50aWZpZXIobG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlm
aWVyKCkpLCBfX1ZBX0FSR1NfXykKIAotI2lmIEVOQUJMRShWUDkpCi12b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpyZXNldCgpCitSZXRhaW5QdHI8Q01CbG9ja0J1
ZmZlclJlZj4gU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3VzQ29t
cGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewot
ICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICBUcmFja0RhdGE6OnJlc2V0
KCk7CisgICAgaWYgKCFvZmZzZXQgJiYgIWxlbmd0aCAmJiBQQUw6OkNNQmxvY2tCdWZmZXJJc1Jh
bmdlQ29udGlndW91cyhtX2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIDAsIDApKQorICAgICAg
ICByZXR1cm4gbV9jb21wbGV0ZUJsb2NrQnVmZmVyOworICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3
Q29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CisgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNy
ZWF0ZUNvbnRpZ3VvdXMobnVsbHB0ciwgbV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBudWxs
cHRyLCBudWxscHRyLCBvZmZzZXQsIGxlbmd0aCwgMCwgJnJhd0NvbnRpZ3VvdXNCdWZmZXIpICE9
IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVk
aW8sICJmYWlsZWQgdG8gY3JlYXRlIGNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gYWRvcHRDRihyYXdDb250aWd1b3Vz
QnVmZmVyKTsKIH0KLSNlbmRpZgogCi13ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIs
IGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcs
IGNvbnN0IENNVGltZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQord2VibTo6
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YSh3
ZWJtOjpSZWFkZXImIHJlYWRlciwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEs
IHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykKIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgIENNQmxv
Y2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVu
dFBhY2tldFNpemUgJiYgKm1fY3VycmVudFBhY2tldFNpemUgIT0gbWV0YWRhdGEuc2l6ZSkgewot
ICAgICAgICAvLyBUaGUgcGFja2V0J3MgbWV0YWRhdGEgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVu
dGx5IHBlbmRpbmcgcGFydGlhbCBwYWNrZXQ7IHJlc3RhcnQuCi0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRF9XSVRIX01FU1NBR0UoIlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhOiB3
ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRlIik7Ci0gICAgICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9
IDA7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9j
dXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobV9jb21wbGV0ZVBhY2tl
dFNpemUgJiYgKm1fY29tcGxldGVQYWNrZXRTaXplICE9IG1ldGFkYXRhLnNpemUpIHsKKyAgICAg
ICAgLy8gVGhlIHBhY2tldCdzIG1ldGFkYXRhIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnRseSBw
ZW5kaW5nIGNvbXBsZXRlIHBhY2tldDsgcmVzdGFydC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEX1dJVEhfTUVTU0FHRSgiVHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNl
bnNpY2FsIHN0YXRlIik7CisgICAgICAgIHJlc2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFtX2N1
cnJlbnRQYWNrZXRTaXplKQotICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gbWV0YWRhdGEu
c2l6ZTsKKyAgICBpZiAoIW1fY29tcGxldGVQYWNrZXRTaXplKQorICAgICAgICBtX2NvbXBsZXRl
UGFja2V0U2l6ZSA9IG1ldGFkYXRhLnNpemU7CiAKICAgICBpZiAoIW1fY3VycmVudEJsb2NrQnVm
ZmVyKSB7Ci0gICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1l
bW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsICptX2N1cnJlbnRQYWNrZXRT
aXplLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAwLCAqbV9jdXJyZW50UGFja2V0U2l6
ZSwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAg
UEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1v
cnlCbG9jayBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CisgICAgICAgIEFTU0VSVCghbV9wYXJ0
aWFsQnl0ZXNSZWFkKTsKKyAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9
IG51bGxwdHI7CisgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlRW1w
dHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbU1heEJsb2NrQnVmZmVyQ2FwYWNpdHksIDAsICZyYXdC
bG9ja0J1ZmZlcik7CisgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VyciB8fCAh
cmF3QmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNQmxvY2tCdWZmZXJDcmVhdGVFbXB0eSBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAg
ICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAg
IH0KLQogICAgICAgICBtX2N1cnJlbnRCbG9ja0J1ZmZlciA9IGFkb3B0Q0YocmF3QmxvY2tCdWZm
ZXIpOwotICAgICAgICBtX3BhcnRpYWxCeXRlc1JlYWQgPSAwOwotCi0gICAgICAgIGVyciA9IFBB
TDo6Q01CbG9ja0J1ZmZlckFzc3VyZUJsb2NrTWVtb3J5KG1fY3VycmVudEJsb2NrQnVmZmVyLmdl
dCgpKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9J
Rl9QT1NTSUJMRSgiQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlv
bnMgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwotICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJl
YWRlciwgYnl0ZXNSZW1haW5pbmcpOwotICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCptX2N1
cnJlbnRQYWNrZXRTaXplIDwgbV9wYXJ0aWFsQnl0ZXNSZWFkICsgKmJ5dGVzUmVtYWluaW5nKSB7
Ci0gICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkludmFsaWQgZnJhbWUgc2l6
ZSBhbGxvY2F0ZWQsIGlnbm9yaW5nIHRoZSBlbnRpcmUgZnJhbWUiKTsKLSAgICAgICAgbV9wYXJ0
aWFsQnl0ZXNSZWFkICs9ICpieXRlc1JlbWFpbmluZzsKLSAgICAgICAgcmV0dXJuIFNraXAoJnJl
YWRlciwgYnl0ZXNSZW1haW5pbmcpOwotICAgIH0KICAgICB3aGlsZSAoKmJ5dGVzUmVtYWluaW5n
KSB7Ci0gICAgICAgIHNpemVfdCBzZWdtZW50U2l6ZUF0UG9zaXRpb24gPSAwOwotICAgICAgICB1
aW50OF90KiBibG9ja0J1ZmZlckRhdGEgPSBudWxscHRyOwotICAgICAgICBhdXRvIGVyciA9IFBB
TDo6Q01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyKG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgp
LCBtX3BhcnRpYWxCeXRlc1JlYWQsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChj
aGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAg
IFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRl
ciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7Ci0gICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVh
ZGVyLCBieXRlc1JlbWFpbmluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCpieXRlc1JlbWFp
bmluZyA8IHNlZ21lbnRTaXplQXRQb3NpdGlvbikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQW4gZXJyb3Igb2NjdXJyZWQsIGRlc3RpbmF0aW9uIGJ1ZmZlciB0
b28gc21hbGwgdG8gY29udGFpbiBvdXIgZnJhbWUiKTsKLSAgICAgICAgICAgIHJldHVybiBTa2lw
KCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKLSAgICAgICAgfQogICAgICAgICB1aW50NjRfdCBi
eXRlc1JlYWQ7Ci0gICAgICAgIGF1dG8gc3RhdHVzID0gcmVhZGVyLlJlYWQoKmJ5dGVzUmVtYWlu
aW5nLCAodWludDhfdCopYmxvY2tCdWZmZXJEYXRhLCAmYnl0ZXNSZWFkKTsKKyAgICAgICAgYXV0
byBzdGF0dXMgPSBzdGF0aWNfY2FzdDxTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTZWdtZW50UmVh
ZGVyJj4ocmVhZGVyKS5SZWFkSW50bygqYnl0ZXNSZW1haW5pbmcsIG1fY3VycmVudEJsb2NrQnVm
ZmVyLmdldCgpLCAmYnl0ZXNSZWFkKTsKICAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IGJ5dGVz
UmVhZDsKICAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKIApAQCAtMTE2
NiwxMiArMTIxNywzMyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Vmlk
ZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAgICAgcmV0
dXJuIHN0YXR1czsKICAgICB9CiAKLSAgICBBU1NFUlQobV9wYXJ0aWFsQnl0ZXNSZWFkIDw9ICpt
X2N1cnJlbnRQYWNrZXRTaXplKTsKLSAgICBpZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY3Vy
cmVudFBhY2tldFNpemUpCisgICAgQVNTRVJUKG1fcGFydGlhbEJ5dGVzUmVhZCA8PSAqbV9jb21w
bGV0ZVBhY2tldFNpemUpOworICAgIGlmIChtX3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jb21wbGV0
ZVBhY2tldFNpemUpCiAgICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjpr
T2tQYXJ0aWFsKTsKIAotICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRpb25UaW1lLCBz
YW1wbGVDb3VudCwgbWV0YWRhdGEpOworICAgIGlmICghbV9jb21wbGV0ZUJsb2NrQnVmZmVyKQor
ICAgICAgICBtX2NvbXBsZXRlQmxvY2tCdWZmZXIgPSBXVEZNb3ZlKG1fY3VycmVudEJsb2NrQnVm
ZmVyKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJB
cHBlbmRCdWZmZXJSZWZlcmVuY2UobV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJl
bnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwgMCwgMCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAg
ICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJBcHBlbmRC
dWZmZXJSZWZlcmVuY2UgdG8gY29tcGxldGUgYmxvY2sgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIp
OworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwor
ICAgICAgICB9CisgICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9
CisgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0gMDsKKworICAgIHJldHVybiB3ZWJtOjpTdGF0dXMo
d2VibTo6U3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQogCit3ZWJtOjpTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVh
ZGVyJiByZWFkZXIsIGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0
ZXNSZW1haW5pbmcsIGNvbnN0IENNVGltZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNv
dW50KQoreworI2lmIEVOQUJMRShWUDkpCisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRh
KHJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1cy5jb21w
bGV0ZWRfb2soKSkKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKworICAgIGNyZWF0ZVNhbXBsZUJ1
ZmZlcihwcmVzZW50YXRpb25UaW1lLCBzYW1wbGVDb3VudCwgbWV0YWRhdGEpOwogICAgIHJlc2V0
KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CkBAIC0xMTg2LDggKzEyNTgs
MTQgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRl
U2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIKIHsKICNpZiBFTkFCTEUoVlA5KQogICAgIHVp
bnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51bGxwdHI7Ci0gICAgc2l6ZV90IHNlZ21lbnRTaXpl
QXRQb3NpdGlvbiA9IDA7Ci0gICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRh
UG9pbnRlcihtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwgJnNlZ21lbnRTaXplQXRQb3Np
dGlvbiwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsKKyAgICBjb25zdGV4cHIg
c2l6ZV90IG1heEhlYWRlclNpemUgPSAzMjsgLy8gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgVlA5
IHVuY29tcHJlc3NlZCBoZWFkZXIgaXMgMTQ0IGJpdHMgYW5kIDExIGJ5dGVzIGZvciBWUDguIFJv
dW5kIGhpZ2guCisgICAgc2l6ZV90IHNlZ21lbnRIZWFkZXJMZW5ndGggPSBzdGQ6Om1pbihtYXhI
ZWFkZXJTaXplLCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IGNvbnRpZ3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyKDAsIHNlZ21lbnRIZWFkZXJMZW5n
dGgpOworICAgIGlmICghY29udGlndW91c0J1ZmZlcikgeworICAgICAgICBQQVJTRVJfTE9HX0VS
Uk9SX0lGX1BPU1NJQkxFKCJWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyIGZhaWxl
ZCB0byBjcmVhdGUgY29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihjb250
aWd1b3VzQnVmZmVyLmdldCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1
ZmZlckRhdGEpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9Q
T1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwg
ZXJyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5Niw3ICsxMjc0LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0
IENNVGltZSYgcHIKICAgICBib29sIGlzS2V5ID0gZmFsc2U7CiAgICAgUmV0YWluUHRyPENNRm9y
bWF0RGVzY3JpcHRpb25SZWY+IGZvcm1hdERlc2NyaXB0aW9uOwogICAgIGlmIChjb2RlYygpID09
IENvZGVjVHlwZTo6VlA5KSB7Ci0gICAgICAgIGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNv
bXByZXNzZWRIZWFkZXIoYmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQor
ICAgICAgICBpZiAoIW1faGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2Nr
QnVmZmVyRGF0YSwgc2VnbWVudEhlYWRlckxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKG1faGVhZGVyUGFyc2VyLmtleSgpKSB7CkBAIC0xMjA5LDcgKzEyODcsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1w
bGVCdWZmZXIoY29uc3QgQ01UaW1lJiBwcgogICAgICAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRp
b24oV1RGTW92ZShmb3JtYXREZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChjb2RlYygpID09IENvZGVjVHlwZTo6VlA4KSB7Ci0gICAgICAgIGF1dG8gaGVhZGVyID0gcGFy
c2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbik7
CisgICAgICAgIGF1dG8gaGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRh
dGEsIHNlZ21lbnRIZWFkZXJMZW5ndGgpOwogICAgICAgICBpZiAoaGVhZGVyICYmIGhlYWRlci0+
a2V5ZnJhbWUpIHsKICAgICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKICAgICAgICAgICAgIGF1dG8g
Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIo
KmhlYWRlciwgdHJhY2soKS52aWRlby52YWx1ZSgpLmNvbG91cik7CkBAIC0xMjIyLDcgKzEzMDAs
NyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVT
YW1wbGVCdWZmZXIoY29uc3QgQ01UaW1lJiBwcgogICAgIH0KIAogICAgIGF1dG8gdHJhY2sgPSB0
aGlzLT50cmFjaygpOwotICAgIC8vIEZJWE1FOiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0
aGFuIG9uZSBmcmFtZSwgYnV0IG9ubHkgdGhpcyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGN1
cnJlbnRCbG9ja0J1ZmZlcmAuCisgICAgLy8gRklYTUU6IEEgYmxvY2sgbWlnaHQgY29udGFpbiBt
b3JlIHRoYW4gb25lIGZyYW1lLCBidXQgb25seSB0aGlzIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50
byBgY29tcGxldGVCbG9ja0J1ZmZlcmAuCiAgICAgLy8gQmVsb3cgd2UgY3JlYXRlIHNhbXBsZSBi
dWZmZXJzIGZvciBlYWNoIGZyYW1lLCBlYWNoIHdpdGggdGhlIGJsb2NrJ3MgdGltZWNvZGUgYW5k
IGBudW1fZnJhbWVzYCB2YWx1ZS4KICAgICAvLyBTaG91bGRuJ3Qgd2UgY3JlYXRlIGp1c3Qgb25l
IHNhbXBsZSBidWZmZXIgb25jZSBhbGwgdGhlIGJsb2NrJ3MgZnJhbWVzIGhhdmUgYmVlbiByZWFk
IGludG8gYGN1cnJlbnRCbG9ja0J1ZmZlcmA/CiAKQEAgLTEyMzEsOSArMTMwOSw4IEBAIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZl
cihjb25zdCBDTVRpbWUmIHByCiAgICAgICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJh
dGlvbi52YWx1ZSgpICogcHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUgLyBrX3VzX2luX3NlY29u
ZHM7CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwot
ICAgIHNpemVfdCBmcmFtZVNpemUgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1f
Y3VycmVudEJsb2NrQnVmZmVyLmdldCgpKTsKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5n
ID0geyBQQUw6OkNNVGltZU1ha2UoZHVyYXRpb24sIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxl
KSwgcHJlc2VudGF0aW9uVGltZSwgcHJlc2VudGF0aW9uVGltZSB9OwotICAgIGVyciA9IFBBTDo6
Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRC
bG9ja0J1ZmZlci5nZXQoKSwgdGhpcy0+Zm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxl
Q291bnQsIDEsICZ0aW1pbmcsIDEsICZmcmFtZVNpemUsICZyYXdTYW1wbGVCdWZmZXIpOworICAg
IGVyciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBtX2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIHRoaXMtPmZvcm1hdERlc2NyaXB0aW9uKCku
Z2V0KCksIHNhbXBsZUNvdW50LCAxLCAmdGltaW5nLCAxLCAmKm1fY29tcGxldGVQYWNrZXRTaXpl
LCAmcmF3U2FtcGxlQnVmZmVyKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0df
RVJST1JfSUZfUE9TU0lCTEUoIkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkgZmFpbGVkIHdpdGgg
ZXJyb3IiLCBlcnIpOwogICAgICAgICByZXR1cm47CkBAIC0xMjYzLDU2ICsxMzQwLDI3IEBAIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1
ZmZlcihjb25zdCBDTVRpbWUmIHByCiAjZW5kaWYgLy8gRU5BQkxFKFZQOSkKIH0KIAotdm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXQoKQordm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQogewor
ICAgIG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2sgPSAwOwogICAgIG1fcGFja2V0RGVzY3JpcHRp
b25zLmNsZWFyKCk7Ci0gICAgbV9wYWNrZXRzRGF0YS5jbGVhcigpOwotICAgIG1fY3VycmVudFBh
Y2tldEJ5dGVPZmZzZXQgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgVHJhY2tEYXRhOjpyZXNldCgpOwor
ICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgPSAwOworICAgIFRyYWNrRGF0YTo6cmVzZXRD
b21wbGV0ZWQoKTsKIH0KIAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1
ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYgcmVhZGVyLCBjb25z
dCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nLCBjb25z
dCBDTVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGludCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NF
UlQoc2FtcGxlQ291bnQpOwotCi0gICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHko
KSkgewotICAgICAgICBtX2J5dGVPZmZzZXQgPSBtZXRhZGF0YS5wb3NpdGlvbjsKLSAgICAgICAg
bV9zYW1wbGVQcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKLSAgICB9Ci0KLSAg
ICBpZiAobV9jdXJyZW50UGFja2V0U2l6ZSAmJiAqbV9jdXJyZW50UGFja2V0U2l6ZSAhPSBtZXRh
ZGF0YS5zaXplKSB7Ci0gICAgICAgIC8vIFRoZSBwYWNrZXQncyBtZXRhZGF0YSBkb2Vzbid0IG1h
dGNoIHRoZSBjdXJyZW50bHkgcGVuZGluZyBwYXJ0aWFsIHBhY2tldDsgcmVzdGFydC4KLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1
bWVGcmFtZURhdGE6IHdlYm0gaW4gbm9uc2Vuc2ljYWwgc3RhdGUiKTsKLSAgICAgICAgbV9wYXJ0
aWFsQnl0ZXNSZWFkID0gMDsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVs
bG9wdDsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY3VycmVudFBhY2tldFNpemUpCi0gICAgICAgIG1f
Y3VycmVudFBhY2tldFNpemUgPSBtZXRhZGF0YS5zaXplOwotCi0gICAgLy8gRW5zdXJlIHdlIGhh
dmUgcm9vbSB0byBzdG9yZSB0aGUgZnVsbCBwZW5kaW5nIGZyYW1lLgotICAgIGlmIChtX3BhY2tl
dHNEYXRhLnNpemUoKSA8IG1fcGFja2V0c0J5dGVzUmVhZCArIG1ldGFkYXRhLnNpemUpCi0gICAg
ICAgIG1fcGFja2V0c0RhdGEuZ3JvdyhtX3BhY2tldHNCeXRlc1JlYWQgKyBtZXRhZGF0YS5zaXpl
KTsKLQotICAgIGlmICghbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCkKLSAgICAgICAgbV9jdXJy
ZW50UGFja2V0Qnl0ZU9mZnNldCA9IG1fcGFja2V0c0J5dGVzUmVhZDsKLQotICAgIHdoaWxlICgq
Ynl0ZXNSZW1haW5pbmcpIHsKLSAgICAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwotICAgICAgICBh
dXRvIHN0YXR1cyA9IHJlYWRlci5SZWFkKCpieXRlc1JlbWFpbmluZywgbV9wYWNrZXRzRGF0YS5k
YXRhKCkgKyBtX3BhY2tldHNCeXRlc1JlYWQgKyBtX3BhcnRpYWxCeXRlc1JlYWQsICZieXRlc1Jl
YWQpOwotICAgICAgICAqYnl0ZXNSZW1haW5pbmcgLT0gYnl0ZXNSZWFkOwotICAgICAgICBtX3Bh
cnRpYWxCeXRlc1JlYWQgKz0gYnl0ZXNSZWFkOwotCi0gICAgICAgIGlmICghc3RhdHVzLmNvbXBs
ZXRlZF9vaygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9CisgICAgYXV0byBz
dGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsK
KyAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRfb2soKSkKKyAgICAgICAgcmV0dXJuIHN0YXR1czsK
IAotICAgIEFTU0VSVChtX3BhcnRpYWxCeXRlc1JlYWQgPD0gKm1fY3VycmVudFBhY2tldFNpemUp
OwotICAgIGlmIChtX3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jdXJyZW50UGFja2V0U2l6ZSkKLSAg
ICAgICAgcmV0dXJuIHdlYm06OlN0YXR1cyh3ZWJtOjpTdGF0dXM6OmtPa1BhcnRpYWwpOworICAg
IC8vIEF0dGVtcHRzIHRvIG1pbmltaXNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRpb25z
IGR1ZSB0byByZXBldGl0dmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSBjYWxs
cyBpbiByZWFkRnJhbWVEYXRhLgorICAgIG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2srKzsKKyAg
ICBpZiAobU51bUZyYW1lc0luQ29tcGxldGVCbG9jayA+IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5
KQorICAgICAgICBtTWF4QmxvY2tCdWZmZXJDYXBhY2l0eSA9IG1OdW1GcmFtZXNJbkNvbXBsZXRl
QmxvY2s7CiAKLSAgICBtX3BhY2tldHNCeXRlc1JlYWQgKz0gbV9wYXJ0aWFsQnl0ZXNSZWFkOwot
ICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7CisgICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25z
LmlzRW1wdHkoKSkKKyAgICAgICAgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0
aW9uVGltZTsKIAogICAgIGlmICghZm9ybWF0RGVzY3JpcHRpb24oKSkgewogICAgICAgICBpZiAo
IXRyYWNrKCkuY29kZWNfcHJpdmF0ZS5pc19wcmVzZW50KCkpIHsKQEAgLTEzMjUsOCArMTM3Mywx
OSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6
OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICBpZiAoY29kZWMoKSA9PSBDb2Rl
Y1R5cGU6OlZvcmJpcykKICAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlVm9y
YmlzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRh
LmRhdGEoKSk7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7
CisgICAgICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVC
bG9ja0J1ZmZlcihtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNp
emUpOworICAgICAgICAgICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICAg
ICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVG
cmFtZURhdGE6IHVuYWJsZSB0byBjcmVhdGUgY29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdWludDhfdCogYmxvY2tCdWZmZXJEYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIo
Y29udGlndW91c0J1ZmZlci5nZXQoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgKGNoYXIqKikmYmxv
Y2tCdWZmZXJEYXRhKTsKKyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICBQ
QVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIg
ZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZy
ZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIE9wdXND
b29raWVDb250ZW50cyBjb29raWVDb250ZW50czsKLSAgICAgICAgICAgIGlmICghcGFyc2VPcHVz
UHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksIG1fcGFj
a2V0c0J5dGVzUmVhZCwgbV9wYWNrZXRzRGF0YS5kYXRhKCksIGNvb2tpZUNvbnRlbnRzKSkgewor
ICAgICAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCks
IHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRh
dGEsIGNvb2tpZUNvbnRlbnRzKSkgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1Jf
SUZfUE9TU0lCTEUoIkZhaWxlZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAg
ICAgIH0KQEAgLTEzNTUsMTAgKzE0MTQsMjEgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAg
ICB9IGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CiAgICAgICAgIC8vIE9w
dXMgdGVjaG5pY2FsbHkgYWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1w
YWNrZXQgdmFsdWVzIHRvIGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8v
IENvcmVBdWRpbyBkb2Vzbid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFu
Z2Ugb24gYSBwZXItcGFja2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVuCi0gICAgICAg
IC8vIHRoYXQga2luZCBvZiB2YXJpYWJsaWxpdHkgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIC8v
IHRoYXQga2luZCBvZiB2YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KICAgICAgICAgT3B1c0Nv
b2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9
IHRyYWNrKCkuY29kZWNfcHJpdmF0ZS52YWx1ZSgpOwotICAgICAgICBpZiAoIXBhcnNlT3B1c1By
aXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCBtX3BhY2tl
dHNCeXRlc1JlYWQsIG1fcGFja2V0c0RhdGEuZGF0YSgpLCBjb29raWVDb250ZW50cykKKyAgICAg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIo
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKKyAgICAg
ICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKCJBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YTogdW5hYmxlIHRv
IGNyZWF0ZSBjb250aWd1b3VzIGRhdGEgYmxvY2siKTsKKyAgICAgICAgICAgIHJldHVybiBTa2lw
KCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgfQorICAgICAgICB1aW50OF90KiBi
bG9ja0J1ZmZlckRhdGEgPSBudWxscHRyOworICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9j
a0J1ZmZlckdldERhdGFQb2ludGVyKGNvbnRpZ3VvdXNCdWZmZXIuZ2V0KCksIDAsIG51bGxwdHIs
IG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgIGlmIChlcnIpIHsK
KyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJH
ZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CisgICAgICAgICAgICByZXR1
cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRh
dGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRl
bnRzKQogICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1f
ZnJhbWVzUGVyUGFja2V0CiAgICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0
aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9J
Rl9QT1NTSUJMRSgiT3B1cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNr
OyBlcnJvciIpOwpAQCAtMTM2NiwxNCArMTQzNiwxNSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVh
ZAogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oKm1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQpLCAwLCBzdGF0
aWNfY2FzdDxVSW50MzI+KCptX2N1cnJlbnRQYWNrZXRTaXplKSB9KTsKLSAgICBtX2N1cnJlbnRQ
YWNrZXRCeXRlT2Zmc2V0ID0gc3RkOjpudWxsb3B0OwotICAgIG1fY3VycmVudFBhY2tldFNpemUg
PSBzdGQ6Om51bGxvcHQ7CisgICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4obV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCksIDAsIHN0YXRpY19jYXN0
PFVJbnQzMj4oKm1fY29tcGxldGVQYWNrZXRTaXplKSB9KTsKKyAgICBtX2N1cnJlbnRQYWNrZXRC
eXRlT2Zmc2V0ICs9ICptX2NvbXBsZXRlUGFja2V0U2l6ZTsKKyAgICBtX2NvbXBsZXRlUGFja2V0
U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc2FtcGxlRHVyYXRpb24gPSBQQUw6OkNN
VGltZUdldFNlY29uZHMoUEFMOjpDTVRpbWVTdWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3Nh
bXBsZVByZXNlbnRhdGlvblRpbWUpKSArIFBBTDo6Q01UaW1lR2V0U2Vjb25kcyhtX3BhY2tldER1
cmF0aW9uKSAqIHNhbXBsZUNvdW50OwotCi0gICAgaWYgKHNhbXBsZUR1cmF0aW9uID49IG1fbWlu
aW11bVNhbXBsZUR1cmF0aW9uKQorICAgIGlmIChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1T
YW1wbGVEdXJhdGlvbikgewogICAgICAgICBjcmVhdGVTYW1wbGVCdWZmZXIobWV0YWRhdGEucG9z
aXRpb24pOworICAgICAgICByZXNldCgpOworICAgIH0KIAogICAgIEFTU0VSVCghKmJ5dGVzUmVt
YWluaW5nKTsKICAgICByZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06OlN0YXR1czo6a09rQ29tcGxl
dGVkKTsKQEAgLTEzODEsMzkgKzE0NTIsMTcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKIAog
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxl
QnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCiB7Ci0g
ICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSB8fCAhbV9wYWNrZXRzQnl0ZXNS
ZWFkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fcGFja2V0c0RhdGEuaXNFbXB0
eSgpKTsKLQotICAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAg
IGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIG1fcGFja2V0c0J5dGVzUmVhZCwga0NGQWxsb2NhdG9y
RGVmYXVsdCwgbnVsbHB0ciwgMCwgbV9wYWNrZXRzQnl0ZXNSZWFkLCBrQ01CbG9ja0J1ZmZlckFz
c3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAg
ICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1l
bW9yeUJsb2NrIGZhaWxlZCB3aXRoICVkIiwgZXJyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOwotCi0gICAgZXJyID0gUEFM
OjpDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyhtX3BhY2tldHNEYXRhLmRhdGEoKSwgYnVm
ZmVyLmdldCgpLCAwLCBtX3BhY2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChlcnIpIHsKLSAgICAg
ICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRh
Qnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnIpOworICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9u
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZl
clJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIGVyciA9IFBBTDo6Q01BdWRpb1Nh
bXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBidWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0
RGVzY3JpcHRpb25zLnNpemUoKSwgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERl
c2NyaXB0aW9ucy5kYXRhKCksICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGF1dG8gZXJyID0gUEFM
OjpDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG1fY29tcGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVz
Y3JpcHRpb24oKS5nZXQoKSwgbV9wYWNrZXREZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVBy
ZXNlbnRhdGlvblRpbWUsIG1fcGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1
ZmZlcik7CiAgICAgaWYgKGVycikgewogICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJ
QkxFKCJDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWls
ZWQgd2l0aCAlZCIsIGVycik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBzYW1w
bGVCdWZmZXIgPSBhZG9wdENGKHJhd1NhbXBsZUJ1ZmZlcik7CiAKLSAgICBtX3BhY2tldHNEYXRh
LnJlbW92ZSgwLCBtX3BhY2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChtX2N1cnJlbnRQYWNrZXRC
eXRlT2Zmc2V0KQotICAgICAgICAqbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCAtPSBtX3BhY2tl
dHNCeXRlc1JlYWQ7Ci0gICAgbV9wYWNrZXRzQnl0ZXNSZWFkID0gMDsKLSAgICBtX3BhY2tldERl
c2NyaXB0aW9ucy5jbGVhcigpOwotCiAgICAgYXV0byB0cmFja0lEID0gdHJhY2soKS50cmFja191
aWQudmFsdWUoKTsKICAgICBwYXJzZXIoKS5wcm92aWRlTWVkaWFEYXRhKFdURk1vdmUoc2FtcGxl
QnVmZmVyKSwgdHJhY2tJRCwgbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0KTsKIH0KQEAgLTE0MjEsOCAr
MTQ3MCwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpj
cmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaQogdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpmbHVzaFBlbmRpbmdBdWRpb0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBtX3RyYWNrcykgewotICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6VHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBk
b3duY2FzdDxBdWRpb1RyYWNrRGF0YT4odHJhY2suZ2V0KCkpLmNyZWF0ZVNhbXBsZUJ1ZmZlcigp
OworICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlRyYWNrRGF0YTo6VHlwZTo6QXVkaW8pIHsKKyAgICAgICAgICAgIEF1ZGlvVHJhY2tEYXRh
JiBhdWRpb1RyYWNrID0gZG93bmNhc3Q8QXVkaW9UcmFja0RhdGE+KHRyYWNrLmdldCgpKTsKKyAg
ICAgICAgICAgIGF1ZGlvVHJhY2suY3JlYXRlU2FtcGxlQnVmZmVyKCk7CisgICAgICAgICAgICBh
dWRpb1RyYWNrLnJlc2V0Q29tcGxldGVkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCA5NTI5NzZiMjcyZjcxMTg1YmI3ODdmNWFhMzQy
M2M0Zjg3ZDZjNGE2Li42OGExMjAwMGUyNGU2OThkZjBhYzk0OTA1YTcxNzZlMGNiMTBmMWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1l
ZGlhU2FtcGxlQVZGT2JqQzsKIGNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMg
U291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFk
ZXI7CisgICAgY2xhc3MgU2VnbWVudFJlYWRlcjsKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZv
cm1hdFJlYWRlckF2YWlsYWJsZSgpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBw
b3J0c1R5cGUgaXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwpAQCAt
MTU1LDMwICsxNTUsNDIgQEAgcHVibGljOgogICAgICAgICB2b2lkIHNldEZvcm1hdERlc2NyaXB0
aW9uKFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiYmIGRlc2NyaXB0aW9uKSB7IG1f
Zm9ybWF0RGVzY3JpcHRpb24gPSBXVEZNb3ZlKGRlc2NyaXB0aW9uKTsgfQogCiAgICAgICAgIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0mIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyOyB9
Ci0gICAgICAgIAorCiAgICAgICAgIHZpcnR1YWwgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURh
dGEod2VibTo6UmVhZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90Kiwg
Y29uc3QgQ01UaW1lJiwgaW50KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjpr
SW52YWxpZEVsZW1lbnRJZCk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXQoKQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRDb21wbGV0ZWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2NvbXBsZXRlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICB9Cisg
ICAgICAgIHZvaWQgcmVzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWNr
ZXRTaXplID0gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgcmVzZXRDb21wbGV0ZWQoKTsKKyAg
ICAgICAgICAgIG1fY29tcGxldGVQYWNrZXRTaXplID0gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0gMDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrQnVm
ZmVyID0gbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gbV9jdXJyZW50UGFja2V0U2l6ZTsKLSAgICAgICAgLy8gU2l6ZSBv
ZiB0aGUgY3VycmVudGx5IHBhcnNlZCBwYWNrZXQsIHBvc3NpYmx5IGluY29tcGxldGUuCi0gICAg
ICAgIHNpemVfdCBtX3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CisgICAgICAgIFJldGFpblB0cjxD
TUJsb2NrQnVmZmVyUmVmPiBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICAgICAgd2VibTo6U3RhdHVzIHJlYWRGcmFt
ZURhdGEod2VibTo6UmVhZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90
KiBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBt
X2NvbXBsZXRlQmxvY2tCdWZmZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2Nv
bXBsZXRlUGFja2V0U2l6ZTsKKyAgICAgICAgLy8gSW5pdGlhbCBhbGxvY2F0aW9uIHNpemUgb2Yg
ZW1wdHkgQ01CbG9ja0J1ZmZlci4KKyAgICAgICAgc2l6ZV90IG1NYXhCbG9ja0J1ZmZlckNhcGFj
aXR5IHsgMCB9OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ29kZWNUeXBlIG1fY29kZWM7CiAg
ICAgICAgIHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKICAgICAgICAgVHlwZSBtX3RyYWNrVHlw
ZTsKICAgICAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZm9ybWF0RGVz
Y3JpcHRpb247CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1cnJlbnRC
bG9ja0J1ZmZlcjsKICAgICAgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSYgbV9wYXJzZXI7Cisg
ICAgICAgIC8vIFNpemUgb2YgdGhlIGN1cnJlbnRseSBpbmNvbXBsZXRlIHBhcnNlZCBwYWNrZXQu
CisgICAgICAgIHNpemVfdCBtX3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CiAgICAgfTsKIAogICAg
IGNsYXNzIFZpZGVvVHJhY2tEYXRhIDogcHVibGljIFRyYWNrRGF0YSB7CkBAIC0xOTMsOSArMjA1
LDYgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShWUDkpCi0g
ICAgICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKLSNlbmRpZgogICAgICAgICB3ZWJtOjpTdGF0dXMg
Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRh
JiwgdWludDY0X3QqLCBjb25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwogCiAgICAgcHJpdmF0ZToK
QEAgLTIwNCw3ICsyMTMsNiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVlA5KQogICAgICAgICB2
cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXJzZXIgbV9oZWFkZXJQYXJzZXI7Ci0gICAgICAgIFJldGFp
blB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICNlbmRpZgogICAg
IH07CiAKQEAgLTIyMiw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB3
ZWJtOjpTdGF0dXMgY29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpG
cmFtZU1ldGFkYXRhJiwgdWludDY0X3QqLCBjb25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwotICAg
ICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CisgICAgICAgIHZvaWQgcmVzZXRDb21wbGV0ZWQoKSBm
aW5hbDsKICAgICAgICAgdm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGxhdGVzdEJ5dGVSYW5nZU9mZnNldCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwcml2YXRl
OgpAQCAtMjMwLDE1ICsyMzgsMTEgQEAgcHVibGljOgogCiAgICAgICAgIENNVGltZSBtX3NhbXBs
ZVByZXNlbnRhdGlvblRpbWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tldER1cmF0aW9uOwotICAg
ICAgICBWZWN0b3I8dWludDhfdD4gbV9wYWNrZXRzRGF0YTsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIC8vIFNpemUgb2Yg
dGhlIGNvbXBsZXRlIHBhY2tldHMgcGFyc2VkIHNvIGZhci4KLSAgICAgICAgc2l6ZV90IG1fcGFj
a2V0c0J5dGVzUmVhZCB7IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fYnl0ZU9mZnNldCB7IDAgfTsK
KyAgICAgICAgc2l6ZV90IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgeyAwIH07CiAgICAgICAg
IHVpbnQ4X3QgbV9mcmFtZXNQZXJQYWNrZXQgeyAwIH07CiAgICAgICAgIFNlY29uZHMgbV9mcmFt
ZUR1cmF0aW9uIHsgMF9zIH07CiAgICAgICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2Ny
aXB0aW9uPiBtX3BhY2tldERlc2NyaXB0aW9uczsKLQorICAgICAgICBzaXplX3QgbU51bUZyYW1l
c0luQ29tcGxldGVCbG9jayB7IDAgfTsKICAgICAgICAgLy8gRklYTUU6IDAuNSAtIDEuMCBzZWNv
bmRzIGlzIGEgYmV0dGVyIGR1cmF0aW9uIHBlciBzYW1wbGUgYnVmZmVyLCBidXQgdXNlIDIgc2Vj
b25kcyBzbyBhdCBsZWFzdCB0aGUgZmlyc3QKICAgICAgICAgLy8gc2FtcGxlIGJ1ZmZlciB3aWxs
IHBsYXkgdW50aWwgd2UgZml4IE1lZGlhU2FtcGxlQ3Vyc29yOjpjcmVhdGVTYW1wbGVCdWZmZXIg
dG8gZGVhbCB3aXRoIGBlbmRDdXJzb3JgLgogICAgICAgICBmbG9hdCBtX21pbmltdW1TYW1wbGVE
dXJhdGlvbiB7IDIgfTsKQEAgLTI4MSw3ICsyODUsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUg
bV9zdGF0ZSB7IFN0YXRlOjpOb25lIH07CiAKLSAgICBVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9y
UmVhZGVyPiBtX3JlYWRlcjsKKyAgICBVbmlxdWVSZWY8U2VnbWVudFJlYWRlcj4gbV9yZWFkZXI7
CiAKICAgICBWZWN0b3I8VW5pcXVlUmVmPFRyYWNrRGF0YT4+IG1fdHJhY2tzOwogICAgIHVzaW5n
IEJsb2NrVmFyaWFudCA9IFZhcmlhbnQ8d2VibTo6QmxvY2ssIHdlYm06OlNpbXBsZUJsb2NrPjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IGQ4ZGNiMTEwMTNjZTc2N2U4NDNmOTk3NjBkNzQ5OWI5
YmU2YzBjNzMuLmQwMDZhY2VhMDhhZjdiMTgxNjgwNjQzODEyNWVlOWUxODk2NGI2NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmNwcApAQCAtMTkyLDkgKzE5MiwxMyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBm
bGFnKQogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZERpcnR5Q2hhbmdlZChmbGFnKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkK
K3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYgYnVmZmVySGFuZGxlKQogewotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+
YXBwZW5kKGRhdGEudmVjdG9yKCkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVt
b3J5OjptYXAoYnVmZmVySGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVk
QnVmZmVyKGJ1ZmZlckhhbmRsZS5kYXRhU2l6ZSkpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5OjphYm9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGM5MTI5MDE1OGQ4M2VjOTYw
MjVlYzk1OTMzZjJhMzFiNzVlNWVhM2YuLjc3ZDgyN2FiMzAzMmExNjRiM2Y0YTc2ZTAxODE4NmZm
N2I5MTQzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgi
CisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgpAQCAtODcsNyArODgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgY2FuU3dpdGNoVG9U
eXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBzZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1v
ZGUpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAgICAgdm9pZCBhYm9y
dCgpOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21N
ZWRpYVNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZl
ZmU4ZjU1ZjlkODg1OWMxYjUwOWY2N2I1MjNmN2M3ODUwOGQ3OWIuLjhmNjIwYmEyZTk2ZmZmNjMy
ZWYzZDAzMmE1YjBjNDc4NDk4ZmUyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTI5LDcgKzI5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIENhblN3
aXRjaFRvVHlwZShXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSkgLT4gKGJvb2wgY2Fu
U3dpdGNoKSBTeW5jaHJvbm91cwogICAgIFNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBw
ZW5kTW9kZSBhcHBlbmRNb2RlKQotICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkK
KyAgICBBcHBlbmQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFi
b3J0KCkKICAgICBSZXNldFBhcnNlclN0YXRlKCkKICAgICBSZW1vdmVkRnJvbU1lZGlhU291cmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCA2YmFjYTM0ZGM3
MGQ0M2M5Zjk0YmUzY2QzMTZlZGJkZDFlM2U1OTNmLi43NTZiMjQwYjZmYTdiYjViZThlY2JmZTcw
Zjk1OWM5ODczMTY3OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
CkBAIC00OCw2ICs0OCwxOSBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1l
bW9yeTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRC
dWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAoreworICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBz
aXplKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgICAgIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+
ZGF0YSgpKTsKKyAgICAgICAgfSwKKyAgICAgICAgW2RhdGFTaXplXSAoKSAtPiBzaXplX3Qgewor
ICAgICAgICAgICAgcmV0dXJuIGRhdGFTaXplOworICAgICAgICB9CisgICAgfSk7Cit9CisKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjp0YWtlT3duZXJz
aGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmgKaW5kZXggNTZhMWY1Njk5NzcwNWRhMDBhOWRjNDYxOWZlMTIzMTRhZGRmZDJm
Ni4uZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5z
aWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAorICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworCiBwcml2YXRlOgogI2lmIE9TKERB
UldJTikKICAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KFByb3RlY3Rpb24p
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9T
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZmNiMDEyMjIzNDNl
NzU4ZGU2NjQ2NjgzNTJiZDEyODRhN2ZmZTQzNC4uNDU4ZTNiYTRiMDhjODA4NzExZTVmMmVhZjA2
NTFlN2ZkZGM0ZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCwx
MiArNzgsMTkgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1h
cCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBw
ZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OkFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSkpLCBtX3JlbW90ZVNvdXJj
ZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZE1lbW9yeTo6
Y29weUJ1ZmZlcihkYXRhKTsKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAg
c2hhcmVkRGF0YS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisKKyAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFu
ZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgorICAgIGhhbmRsZS50YWtlT3duZXJz
aGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7CisKKyAgICBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OkFwcGVuZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2hh
cmVkRGF0YS0+c2l6ZSgpIH0pLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQog
CiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmgKaW5kZXggMThiOTkwNmNkY2M2MzRjN2I4MDE0NTEzN2IzZTBiOWM0OTU4Njg4
My4uMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNv
dXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmlu
YWw7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAg
IHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438776</attachid>
            <date>2021-09-20 22:35:12 -0700</date>
            <delta_ts>2021-09-21 21:01:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230329-20210921153510.patch</filename>
            <type>text/plain</type>
            <size>69916</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzNTRjZTU2ZTg3Mjc5
OWU1NGQ4NDA1Y2FmZjA1NmFjYmFlYTI5My4uMzU5YTBhMWY2NTU3OTM1MzU3NTk5ZTczNGQzN2Vh
MTM3NGY3NWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA5LTIwICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9y
eSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8g
dGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAg
ICBVc2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgVmVjdG9yIHRvIHBhc3MgZGF0YSB0byB0aGUg
U291cmNlQnVmZmVyJ3MgcmVsYXRlZAorICAgICAgICBjbGFzc2VzIChTb3VyY2VCdWZmZXIsIFNv
dXJjZUJ1ZmZlclByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclBhcnNlcikuCisgICAgICAgIE1vZGlm
eSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIHRvIG5ldmVyIHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRp
b24gYW5kIGNvcHkKKyAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgY29udGVudC4gSW5zdGVh
ZCwgd2UgdXNlIENNQmxvY2tCdWZmZXIgb2JqZWN0cyB0aGF0IHJldGFpbiB0aGUKKyAgICAgICAg
YmFja2luZyBTaGFyZWRCdWZmZXIgYW5kIHVzZSBvZmZzZXRzIGluc2lkZSB0aGlzIFNoYXJlZEJ1
ZmZlciB0byByZWZlcmVuY2UgdGhlIGRhdGEuCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMgcmVxdWlyZXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBhcyBhIE5TRGF0YSBjYW4gd3JhcCBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gY2hhbmdlIGZyb20gYW4gb2JzZXJ2YWJsZSBzdGFu
ZHBvaW50IG90aGVyIHRoYW4gdGhlIEdQVSBtZW1vcnkgdXNhZ2UKKyAgICAgICAgYmVpbmcgZHJh
c3RpY2FsbHkgcmVkdWNlZCAoZnJvbSA3MDBNQiB3aGVuIHdhdGNoaW5nIGEgNEsvNjBmcHMgWW91
VHViZSB2aWRlbyB0byBqdXN0IG92ZXIgMjAwTUIKKyAgICAgICAgb24gYW4gaU1hYyBQcm8gKHdo
aWNoIG9ubHkgaGFzIHNvZnR3YXJlIFZQOSBkZWNvZGluZykuCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIGFyZSBmdWxseSBleGVyY2lzaW5nIHRoaXMgbmV3IGNvZGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6IFNpbXBsaWZ5IGxvZ2ljIGFyb3VuZCBt
X3BlbmRpbmdBcHBlbmREYXRhIG1lbWJlci4KKyAgICAgICAgT25seSBvbmUgYXBwZW5kQnVmZmVy
IG9wZXJhdGlvbiBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZSBvdGhlcndpc2UgYXBw
ZW5kQnVmZmVyCisgICAgICAgIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uOyBhcyBzdWNoLCB0aGVy
ZSdzIG5vIG5lZWQgdG8gYXBwZW5kIHRoZSBkYXRhIHRvIGEgdmVjdG9yOiAidGhlcmUgY2FuCisg
ICAgICAgIGJlIG9ubHkgb25lIi4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YWJv
cnRJZlVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVm
ZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZm
ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6cmVwb3J0RXh0
cmFNZW1vcnlBbGxvY2F0ZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y29weVRvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6IEFk
ZCBuZXcgRGF0YVNlZ21lbnQgdHlwZSB0aGF0IHRha2VzIGEgUHJvdmlkZXIgaW4gY29uc3RydWN0
b3IuCisgICAgICAgIEEgUHJvdmlkZXIgcHJvdmlkZXMgdHdvIEZ1bmN0aW9uIG1lbWJlcnMgZGF0
YSBhbmQgc2l6ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFk
ZXJDb2NvYS5jcHA6IFRoZSBBdWRpb0ZpbGVSZWFkZXJDb2NvYSByZXF1aXJlZAorICAgICAgICB0
aGUgQ01CbG9ja0J1ZmZlciBjb250YWluaW5nIHRoZSBjb21wcmVzc2VkIGNvbnRlbnQgdG8gYmUg
Y29udGlndW91cy4gVGhpcyBpcyBubworICAgICAgICBsb25nZXIgZ3VhcmFudGVlZCBzbyBlbnN1
cmUgdGhhdCB0aGUgQ01CbG9ja0J1ZmZlciBpcyBjb250aWd1b3VzLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFj
a0RhdGE6OnJlYWRGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBs
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRp
b1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNyZWF0
ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpmbHVzaFBlbmRpbmdBdWRpb0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpyZXNldCk6CisKIDIw
MjEtMDktMDcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBE
ZWNvZGluZyB3ZWJtIGZpbGUgd2l0aCBtb3JlIHRoYW4gMiBjaGFubmVscyB3aWxsIGZhaWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCmluZGV4IGIzNDJlOGRmNjMyYTQ4YzNkOTVlMjFjZDg4NzA4YjJlNGE4YjQ4
MTcuLmU2NTgzZGU5OTE1OTgxZjdhODQyMjZjOWM3ODc5MzFiMjZmYTY3OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA5LTIwICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9yeSBmb3IgdHJhbnNmZXJy
aW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8gdGhlIEdQVSBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAzMjkK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6
CisgICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6IEFkZCByZXF1aXJlZCBDb3Jl
TWVkaWEgbWV0aG9kcy4KKwogMjAyMS0wOS0wNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIERlY29kaW5nIHdlYm0gZmlsZSB3aXRoIG1vcmUgdGhhbiAyIGNo
YW5uZWxzIHdpbGwgZmFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMWI5ZGViNmI1YTVhZDFmOTIzMmVlNTBhNTNk
Nzc0MDcxZjU1NDdiLi5iNWM3ZmNmMTBjYWRkYzE5YTkyMTM1ZjIzMjVhNTEwMzc3NWZhNzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA5LTIwICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9yeSBmb3IgdHJhbnNmZXJy
aW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8gdGhlIEdQVSBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAzMjkK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAgICBVc2UgU2hhcmVkTWVt
b3J5IHRvIHBhc3MgU291cmNlQnVmZmVyIGNvbnRlbnQgdG8gUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkgaW4gR1BVIHByb2Nlc3MuCisgICAgICAgIFRoaXMgaXMgZG9uZSBieSB3cmFwcGluZyBhIFNo
YXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
OjphcHBlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisKIDIwMjEtMDktMTkg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2gg
YFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwYCB0byBzbmFwc2hvdCB2aWRlbyBlbGVtZW50
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuY3BwCmluZGV4IGY0NTg0ZmYzNTI4MjU2Y2U5MDcwNTg0NmM4MGRhNWVkZTA2NDY4M2MuLmJh
ZWU5YTExYjUwMWE0MTVjNGNmOWJkNmYzNTc5MzVkNjQzMjIxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlv
bi5oIgogI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiU291cmNlQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBy
aXZhdGUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCkBAIC0zOTQsNyArMzk1LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OmFib3J0SWZVcGRhdGluZygpCiAKICAgICAvLyA0LjEuIEFib3J0
IHRoZSBidWZmZXIgYXBwZW5kIGFsZ29yaXRobSBpZiBpdCBpcyBydW5uaW5nLgogICAgIG1fYXBw
ZW5kQnVmZmVyVGltZXIuc3RvcCgpOwotICAgIG1fcGVuZGluZ0FwcGVuZERhdGEuY2xlYXIoKTsK
KyAgICBtX3BlbmRpbmdBcHBlbmREYXRhID0gbnVsbHB0cjsKICAgICBtX3ByaXZhdGUtPmFib3J0
KCk7CiAKICAgICAvLyA0LjIuIFNldCB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIHRvIGZhbHNlLgpA
QCAtNDk0LDcgKzQ5NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5k
QnVmZmVySW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwKIAogICAgIC8vIE5PVEU6
IFJldHVybiB0byAzLjIgYXBwZW5kQnVmZmVyKCkKICAgICAvLyAzLiBBZGQgZGF0YSB0byB0aGUg
ZW5kIG9mIHRoZSBpbnB1dCBidWZmZXIuCi0gICAgbV9wZW5kaW5nQXBwZW5kRGF0YS5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdBcHBlbmREYXRhKTsKKyAgICBtX3Bl
bmRpbmdBcHBlbmREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CiAKICAg
ICAvLyA0LiBTZXQgdGhlIHVwZGF0aW5nIGF0dHJpYnV0ZSB0byB0cnVlLgogICAgIG1fdXBkYXRp
bmcgPSB0cnVlOwpAQCAtNTI0LDE4ICs1MjYsMTQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVu
ZEJ1ZmZlclRpbWVyRmlyZWQoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1t
ZWRpYS9yYXctZmlsZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1
ZmZlci1zZWdtZW50LXBhcnNlci1sb29wCiAgICAgLy8gV2hlbiB0aGUgc2VnbWVudCBwYXJzZXIg
bG9vcCBhbGdvcml0aG0gaXMgaW52b2tlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBl
bmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhlIGlucHV0IGJ1ZmZlciBpcyBlbXB0
eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBzdGVwIGJlbG93LgotICAgIGlmICgh
bV9wZW5kaW5nQXBwZW5kRGF0YS5zaXplKCkpIHsKKyAgICBpZiAoIWFwcGVuZERhdGEgfHwgIWFw
cGVuZERhdGEtPnNpemUoKSkgewogICAgICAgICBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29t
cGxldGUoQXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgLy8gTWFudWFsbHkgY2xlYXIgb3V0IHRoZSBtX3BlbmRpbmdBcHBlbmREYXRh
IFZlY3RvciwgaW4gY2FzZSB0aGUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24KLSAgICAvLyByZWpl
Y3RzIGFwcGVuZGluZyB0aGUgYnVmZmVyIGZvciB3aGF0ZXZlciByZWFzb24uCi0gICAgLy8gRklY
TUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgZ3VhcmFudGVlIHRoZSBtb3ZlIGZyb20gdGhp
cyBWZWN0b3IsIGFuZCB3ZSBzaG91bGQKLSAgICAvLyBhc3NlcnQgaGVyZSB0byBjb25maXJtIHRo
YXQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MDAzLgot
ICAgIG1fcHJpdmF0ZS0+YXBwZW5kKFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSkpOwotICAg
IG1fcGVuZGluZ0FwcGVuZERhdGEuY2xlYXIoKTsKKyAgICBtX3ByaXZhdGUtPmFwcGVuZChhcHBl
bmREYXRhLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdCByZXN1bHQpCkBAIC0xMjEx
LDcgKzEyMDksMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVSZXBv
cnRFeHRyYU1lbW9yeUNvc3QodWludDY0X3QgZXh0cmFNZW1vcnkKIAogdm9pZCBTb3VyY2VCdWZm
ZXI6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHVpbnQ2NF90IGV4dHJhTWVtb3J5KQogewot
ICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdCA9IG1fcGVuZGluZ0FwcGVuZERhdGEuY2FwYWNp
dHkoKSArIGV4dHJhTWVtb3J5OworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdCA9IGV4dHJh
TWVtb3J5OworICAgIGlmIChtX3BlbmRpbmdBcHBlbmREYXRhKQorICAgICAgICBleHRyYU1lbW9y
eUNvc3QgKz0gbV9wZW5kaW5nQXBwZW5kRGF0YS0+c2l6ZSgpOworCiAgICAgaWYgKGV4dHJhTWVt
b3J5Q29zdCA8PSBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0KQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CmluZGV4IDg4OGQyZDZlOThkYWJmOTdkYWJlMWM5MWYyNDhiMTA4NWQ2OTJiNjEuLmE3MjMzZDIx
ZTA4MWFhNGE4ZDg0MjU0YjI5M2E3MzJmNjg0MTNlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIxLDcgKzIyMSw3IEBA
IHByaXZhdGU6CiAKICAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFByb3Zp
ZGVyOwogCi0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBUaW1lciBt
X2FwcGVuZEJ1ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVv
VHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
LmNwcAppbmRleCBhMTkxNzgxNDczZGNhYzc2YzViMDQxNTU2OTE4NDE0NzBkM2EyMjQzLi5mMjNk
NjYzMjIwZGM3NDI5OGI5YjlkZDkwMWQwY2M2NWZhYTU1YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcApAQCAtMTEzLDYgKzExMyw4IEBA
IFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlh
LCBrQ01UZXh0VmVydGljYWxMYXlvdXRfCiAKICNpZiBQTEFURk9STShDT0NPQSkKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlQ29udGlndW91cywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1
cmVBbGxvY2F0b3IsIENNQmxvY2tCdWZmZXJSZWYgc291cmNlQnVmZmVyLCBDRkFsbG9jYXRvclJl
ZiBibG9ja0FsbG9jYXRvciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBj
dXN0b21CbG9ja1NvdXJjZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgs
IENNQmxvY2tCdWZmZXJGbGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJP
dXQpLCAoc3RydWN0dXJlQWxsb2NhdG9yLCBzb3VyY2VCdWZmZXIsIGJsb2NrQWxsb2NhdG9yLCBj
dXN0b21CbG9ja1NvdXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tC
dWZmZXJPdXQpLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVu
Y2UsIE9TU3RhdHVzLCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVCdWZmZXIsIENNQmxvY2tCdWZmZXJS
ZWYgdGFyZ2V0QkJ1Ziwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENN
QmxvY2tCdWZmZXJGbGFncyBmbGFncyksICh0aGVCdWZmZXIsIHRhcmdldEJCdWYsIG9mZnNldFRv
RGF0YSwgZGF0YUxlbmd0aCwgZmxhZ3MpLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVh
dGVFbXB0eSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxvY2F0b3IsIHVp
bnQzMl90IHN1YkJsb2NrQ2FwYWNpdHksIENNQmxvY2tCdWZmZXJGbGFncyBmbGFncywgQ01CbG9j
a0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9yLCBzdWJCbG9j
a0NhcGFjaXR5LCBmbGFncywgYmxvY2tCdWZmZXJPdXQpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0
RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUsIEZvdXJDaGFyQ29kZSwgKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZGVzYyksIChkZXNjKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9u
R2V0TWVkaWFUeXBlLCBDTU1lZGlhVHlwZSwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyks
IChkZXNjKSwgUEFMX0VYUE9SVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3Jl
TWVkaWFTb2Z0TGluay5oCmluZGV4IGQ0ZmYwNDY4YzMxOGMyZjM0NWRhOTg0NTlmZTcxNDliMzc1
YjQzZGUuLjVmZGZmODQ3OWI1MzE1Y2RhYWIxMGM3NjliNWZlOWU2NDRjMjUzNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAgLTE3NSw2ICsx
NzUsMTAgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtD
TVRleHRWZXJ0aWNhbExheW91dF9SaWdodFRvTGVmdCwKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzLCBP
U1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgQ01CbG9ja0J1ZmZl
clJlZiBzb3VyY2VCdWZmZXIsIENGQWxsb2NhdG9yUmVmIGJsb2NrQWxsb2NhdG9yLCBjb25zdCBD
TUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UqIGN1c3RvbUJsb2NrU291cmNlLCBzaXplX3Qg
b2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdz
LCBDTUJsb2NrQnVmZmVyUmVmKiBibG9ja0J1ZmZlck91dCksIChzdHJ1Y3R1cmVBbGxvY2F0b3Is
IHNvdXJjZUJ1ZmZlciwgYmxvY2tBbGxvY2F0b3IsIGN1c3RvbUJsb2NrU291cmNlLCBvZmZzZXRU
b0RhdGEsIGRhdGFMZW5ndGgsIGZsYWdzLCBibG9ja0J1ZmZlck91dCkpCiAjZGVmaW5lIENNQmxv
Y2tCdWZmZXJDcmVhdGVDb250aWd1b3VzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVy
Q3JlYXRlQ29udGlndW91cworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIENNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2UsIE9TU3RhdHVzLCAoQ01C
bG9ja0J1ZmZlclJlZiB0aGVCdWZmZXIsIENNQmxvY2tCdWZmZXJSZWYgdGFyZ2V0QkJ1Ziwgc2l6
ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJGbGFncyBm
bGFncyksICh0aGVCdWZmZXIsIHRhcmdldEJCdWYsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwg
ZmxhZ3MpKQorI2RlZmluZSBDTUJsb2NrQnVmZmVyQXBwZW5kQnVmZmVyUmVmZXJlbmNlIHNvZnRM
aW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyQXBwZW5kQnVmZmVyUmVmZXJlbmNlCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNyZWF0
ZUVtcHR5LCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgdWlu
dDMyX3Qgc3ViQmxvY2tDYXBhY2l0eSwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzLCBDTUJsb2Nr
QnVmZmVyUmVmKiBibG9ja0J1ZmZlck91dCksIChzdHJ1Y3R1cmVBbGxvY2F0b3IsIHN1YkJsb2Nr
Q2FwYWNpdHksIGZsYWdzLCBibG9ja0J1ZmZlck91dCkpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJD
cmVhdGVFbXB0eSBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckNyZWF0ZUVtcHR5CiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXREZXNj
cmlwdGlvbkdldE1lZGlhU3ViVHlwZSwgRm91ckNoYXJDb2RlLCAoQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFT
dWJUeXBlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJU
eXBlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZSwgQ01NZWRpYVR5cGUsIChDTUZvcm1hdERlc2NyaXB0
aW9uUmVmIGRlc2MpLCAoZGVzYykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCAwNTRjZTVhNDI5MjRjNGQ5ZjBjNjlmMmRhODZkOTA3NzlhOTEwODE1Li5hYjI5
NWQ1MWQ0ZTU4MTA4ODUxMGE0ZDM4NDNlODc4Y2ZjNWMxMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUyLDYgKzUyLDEyIEBAIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAg
bV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0
YSkpfSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92
aWRlciYmIHByb3ZpZGVyKQorICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKK3sKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVy
KSl9KTsKK30KKwogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKIHsKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CkBAIC0yMzYsNiArMjQyLDExIEBA
IFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJu
IGNsb25lOwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKwogdm9pZCBTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVu
dHM7CkBAIC0yNjcsMTIgKzI3OCwzMyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGxlbmd0aCA8PSBzaXplKCkpOworICAgIHJldHVybiBjb3B5VG8oZGVzdGluYXRp
b24sIDAsIGxlbmd0aCk7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGF1dG8gZGVzdGluYXRpb25QdHIg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb24pOwotICAgIGF1dG8gcmVtYWluaW5n
ID0gc3RkOjptaW4obGVuZ3RoLCBzaXplKCkpOwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1f
c2VnbWVudHMpIHsKLSAgICAgICAgc2l6ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjpt
aW4ocmVtYWluaW5nLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1lbWNweShk
ZXN0aW5hdGlvblB0ciwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIGFtb3VudFRvQ29weVRoaXNU
aW1lKTsKKyAgICBhdXRvIHJlbWFpbmluZyA9IHN0ZDo6bWluKGxlbmd0aCwgc2l6ZSgpIC0gb2Zm
c2V0KTsKKworICAgIGF1dG8gc2VnbWVudCA9IGJlZ2luKCk7CisgICAgZm9yICg7OyArK3NlZ21l
bnQpIHsKKyAgICAgICAgaWYgKHNlZ21lbnQgPT0gZW5kKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGlmIChvZmZzZXQgPj0gc2VnbWVudC0+YmVnaW5Qb3NpdGlvbiArIHNlZ21lbnQt
PnNlZ21lbnQtPnNpemUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzaXplX3Qg
cG9zaXRpb25JblNlZ21lbnQgPSBvZmZzZXQgLSBzZWdtZW50LT5iZWdpblBvc2l0aW9uOworICAg
ICAgICBzaXplX3QgYW1vdW50VG9Db3B5VGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNl
Z21lbnQtPnNlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uSW5TZWdtZW50KTsKKyAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uUHRyLCBzZWdtZW50LT5zZWdtZW50LT5kYXRhKCkgKyBwb3NpdGlvbklu
U2VnbWVudCwgYW1vdW50VG9Db3B5VGhpc1RpbWUpOworICAgICAgICByZW1haW5pbmcgLT0gYW1v
dW50VG9Db3B5VGhpc1RpbWU7CisgICAgICAgIGlmICghcmVtYWluaW5nKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBkZXN0aW5hdGlvblB0ciArPSBhbW91bnRUb0NvcHlUaGlzVGltZTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGZvciAoKytzZWdtZW50OyBzZWdtZW50ICE9IGVu
ZCgpOyArK3NlZ21lbnQpIHsKKyAgICAgICAgc2l6ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0g
c3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LT5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBt
ZW1jcHkoZGVzdGluYXRpb25QdHIsIHNlZ21lbnQtPnNlZ21lbnQtPmRhdGEoKSwgYW1vdW50VG9D
b3B5VGhpc1RpbWUpOwogICAgICAgICByZW1haW5pbmcgLT0gYW1vdW50VG9Db3B5VGhpc1RpbWU7
CiAgICAgICAgIGlmICghcmVtYWluaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzEyLDcg
KzM0NCw4IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEo
KSBjb25zdAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKICNlbmRp
ZgotICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfQorICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKKyAgICAgICAgW10oY29u
c3QgUHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KICAgICAp
OwogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CkBA
IC0zOTUsNyArNDI4LDggQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUo
KSBjb25zdAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPnNpemUoKTsgfSwKICNlbmRp
ZgotICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyBy
ZXR1cm4gZGF0YS5zaXplKCk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LAorICAgICAgICBbXShjb25z
dCBQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJuIHByb3ZpZGVyLnNpemUoKTsgfQogICAgICk7
CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMjM2OWFhZDhiMzU2MzllMmVh
NWE5YWQxODI2ODU1Mzc5NWU2Yjc3MC4uYjhmZDYxMTI1ZjRiYTQ3N2JhMjEzNzEzOTIxMmFiNjdm
NmZkYTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0x
MjMsNiArMTI0LDcgQEAgcHVibGljOgogCiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNv
bnN0OwogICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKKyAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKICAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2Vn
bWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkg
b3RoZXIgb2JqZWN0cy4KICAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxs
b2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCkBAIC0xNDgsNiArMTUwLDEzIEBAIHB1YmxpYzoKICNl
bmRpZgogICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQogCisgICAgICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAg
ICAgICBXVEY6OkZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgICAgICBX
VEY6OkZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgICAgICB9OworCisgICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KKwogI2lmIFVT
RShGT1VOREFUSU9OKQogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKICNlbmRpZgpAQCAtMTcxLDYgKzE4MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAg
ICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCiAgICAgICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgRGF0YVNl
Z21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAogICAgICAgICBWYXJpYW50PFZlY3Rvcjx1aW50OF90
PiwKICNpZiBVU0UoQ0YpCkBAIC0xODIsMTAgKzE5MywxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKEdT
VFJFQU1FUikKICAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5k
aWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPiBtX2ltbXV0YWJsZURh
dGE7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgICAg
IFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAgICAgfTsKIAorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworCiAgICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKICAgICBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsK
IApAQCAtMjE2LDYgKzIzMCw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggMWIwZDQ4ZTM5YThjN2I3
YmNhMmU5ZGIzNDI2YTkxNDhhMDY4YWU4ZS4uMjA3NzZjOWEzZGYyYTVlNTI5NjBiYjQ4NjYwNTA5
YmVlMjg1OTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtNDAsNiArNDAsNyBAQAog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oIgogI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvbnZlcnRlci5o
PgpAQCAtMTI5LDYgKzEzMCw3IEBAIGNsYXNzIEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgorICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgUmVmPEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpAQCAtMTgwLDYgKzE4Miw3IEBAIGJvb2wg
QXVkaW9GaWxlUmVhZGVyOjppc01heWJlV2ViTShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
ZGF0YVNpemUpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0
YT4gQXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIGRhdGFTaXplKTsKICAgICBhdXRvIHBhcnNlciA9IGFkb3B0UmVmKG5ldyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkpOwogICAgIGJvb2wgZXJyb3IgPSBmYWxzZTsKICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBhdWRpb1RyYWNrSWQ7CkBAIC0yMTIsMTIgKzIxNSwxMiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRl
cjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0
cmFjay0+c2V0RGlzY2FyZFBhZGRpbmcoZGlzY2FyZFBhZGRpbmcpOwogICAgIH0pOwotICAgIFNv
dXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudCBzZWdtZW50KHsgZGF0YSwgZGF0YVNpemUgfSk7Cisg
ICAgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50IHNlZ21lbnQobWFrZVJlZihidWZmZXIuZ2V0
KCkpKTsKICAgICBwYXJzZXItPmFwcGVuZERhdGEoV1RGTW92ZShzZWdtZW50KSk7CiAgICAgaWYg
KCF0cmFjaykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcGFyc2VyLT5mbHVzaFBlbmRp
bmdBdWRpb0J1ZmZlcnMoKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0ZpbGVSZWFkZXJX
ZWJNRGF0YT4oQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgeyB0cmFjay5yZWxlYXNlTm9uTnVsbCgp
LCBXVEZNb3ZlKGR1cmF0aW9uKSwgV1RGTW92ZShzYW1wbGVzKSB9KTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4oQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEg
eyBXVEZNb3ZlKGJ1ZmZlciksIHRyYWNrLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoZHVyYXRp
b24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOwogfQogCiBzdHJ1Y3QgUGFzc3Rocm91Z2hVc2VyRGF0
YSB7CkBAIC0zNDcsMTYgKzM1MCwyMSBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQXVkaW9GaWxl
UmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV93ZWJtRGF0YS0+bV9zYW1wbGVzLnNpemUoKTsgaSsrKSB7
CiAgICAgICAgIGF1dG8mIHNhbXBsZSA9IG1fd2VibURhdGEtPm1fc2FtcGxlc1tpXTsKICAgICAg
ICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gc2FtcGxlLT5zYW1wbGVCdWZmZXIo
KTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZl
cihzYW1wbGVCdWZmZXIpOwotICAgICAgICBBU1NFUlQoUEFMOjpDTUJsb2NrQnVmZmVySXNSYW5n
ZUNvbnRpZ3VvdXMoYnVmZmVyLCAwLCAwKSk7Ci0gICAgICAgIGlmICghUEFMOjpDTUJsb2NrQnVm
ZmVySXNSYW5nZUNvbnRpZ3VvdXMoYnVmZmVyLCAwLCAwKSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRkFVTFQoV2ViQXVkaW8sICJVbmFibGUgdG8gcmVhZCBzYW1wbGUgY29udGVudCAobm90
IGNvbnRpZ3VvdXMpIik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBhdXRvIHJh
d0J1ZmZlciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlcik7
CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBidWZmZXIgPSByYXdCdWZmZXI7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSBibG9jayBidWZmZXIgaXMgY29udGlndW91cy4KKyAgICAg
ICAgaWYgKCFQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhyYXdCdWZmZXIsIDAs
IDApKSB7CisgICAgICAgICAgICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNCdWZmZXIgPSBu
dWxscHRyOworICAgICAgICAgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3Vv
dXMobnVsbHB0ciwgcmF3QnVmZmVyLCBudWxscHRyLCBudWxscHRyLCAwLCAwLCAwLCAmY29udGln
dW91c0J1ZmZlcikgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikgeworICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAiZmFpbGVkIHRvIGNyZWF0ZSBjb250aWd1b3VzIGJs
b2NrIGJ1ZmZlciIpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBidWZmZXIgPSBhZG9wdENGKGNvbnRpZ3VvdXNCdWZmZXIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgc2l6ZV90IHNyY1NpemUgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRh
TGVuZ3RoKGJ1ZmZlcik7CisgICAgICAgIHNpemVfdCBzcmNTaXplID0gUEFMOjpDTUJsb2NrQnVm
ZmVyR2V0RGF0YUxlbmd0aChidWZmZXIuZ2V0KCkpOwogICAgICAgICBjaGFyKiBzcmNEYXRhID0g
bnVsbHB0cjsKLSAgICAgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyKGJ1
ZmZlciwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJnNyY0RhdGEpICE9IG5vRXJyKSB7CisgICAgICAg
IGlmIChQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihidWZmZXIuZ2V0KCksIDAsIG51
bGxwdHIsIG51bGxwdHIsICZzcmNEYXRhKSAhPSBub0VycikgewogICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRkFVTFQoV2ViQXVkaW8sICJVbmFibGUgdG8gcmV0cmlldmUgZGF0YSIpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAyMjY2NWJi
ZTY2MDk3YjViODlkMDQwMmVhMjQ5NGU5NWZlYTBmNzQ3Li5hNDgyYzE1NDllOTRjNWE0MGNiYWIx
ZGNjYjJlZjY2YWQ3MGFiZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgi
CiAjaW5jbHVkZSAiU2FtcGxlTWFwLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMu
aCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KQEAgLTEzMTUsNiArMTMxNiwx
NiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgIHVwZGF0ZUhpZ2hlc3RQcmVzZW50YXRpb25U
aW1lc3RhbXAoKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5kKGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggZWRiNTFhZDU2
MDM0NjE3NDU2NGUyMTExY2VkMjgxMjVmYWMxMDJhYi4uZjU5NzRkZmY3MTQyMmIyMzQzMWE0ZmIz
ZWE2Yzk3NWJlNDU4NzNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDgsNiArNDgsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVSYW5nZXM7
CiAKIGVudW0gY2xhc3MgU291cmNlQnVmZmVyQXBwZW5kTW9kZSA6IHVpbnQ4X3QgewpAQCAtNjYs
NyArNjcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVm
ZmVyUHJpdmF0ZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgPSAwOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFBh
cnNlclN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNl
KCkgPSAwOwpAQCAtMTQ3LDYgKzE0OCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6
CisgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2Qgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBkaXJl
Y3RseSBhbmQgYmUgb3ZlcnJpZGRlbiBpbnN0ZWFkLgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwogICAgIHZpcnR1YWwgTWVk
aWFUaW1lIHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIHsyMDAyLCAyNDAwMH07IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1NlZWtpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5k
ZXggYWYyYTJlNmMwNGFmNTNiNjJhMzViYjA3OTFiNmNjNTg5MDA5ZTFhNS4uZWM0ZTM0MTJlZDU1
NjdhYzc1MzE5NTE3ZjI5N2QwMGE2M2E1NmNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC00MCw2ICs0MCw3IEBACiAj
aW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGUu
aCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3NldFRyYWNrLmg+
CkBAIC0yMTEsOCArMjEyLDggQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMoKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFw
cGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgYXV0byBzaGFyZWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VnbWVudC50YWtlVmVjdG9yKCkpOwotICAgIGF1
dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNo
YXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNl
dCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFy
c2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQ
YXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggOTJkOWM4
ZGQ1MmY3YzUyMDJkMTZlN2Y4YWZhNzA3ZWQyYjY1N2U3ZS4uNDEzNjFhYzYxOTQ5Njg4ODAzOGVl
ZDZjODEzYTY0ODNmOTA5ZGFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4m
JiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAgLy8g
U291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dW5z
aWduZWQgY2hhcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJT
dGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbQppbmRleCBmZmEyZmJhMGRmMDZlOGVkZDY0YWJjY2JkNGY3YWFlNTMwMDk3ZjUyLi45YTg0
Njk2MTU4ODk4MmQ5YTdhOGQxZGQ1N2QzMGE3NGRlYTcxNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTcyLDkg
KzU3Miw5IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgp
CiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNp
emUoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBk
YXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUKCFtX2hhc1Nlc3Npb25TZW1hcGhvcmUpOwogICAg
IEFTU0VSVCghbV9hYm9ydFNlbWFwaG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAppbmRl
eCAxNmJjYmUwYzU3N2ZjNDIwZGJhNDc3MGUxMzY1NTNkOTcwMzU4ZTMzLi4zM2JlMzUyYTU0MzQ0
NmYyMWUyM2FhNTYyNzBkY2VhZTE2ODYxNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW5jbHVkZSAi
Q29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5oIgogI2luY2x1ZGUgPHBhbC9jb2NvYS9NZWRpYVRvb2xib3hTb2Z0TGluay5oPgpAQCAtNzcs
OCArNzgsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxl
RHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2Vn
bWVudChWZWN0b3I8dWludDhfdD4mJiBzZWdtZW50KQotICAgIDogbV9zZWdtZW50KFdURk1vdmUo
c2VnbWVudCkpCitTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNlZ21lbnQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQogewog
fQogCkBAIC05OCw5ICs5OSw5IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnNpemUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBsdWdp
bkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9LAogI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgICAgICBb
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gdmVjdG9yLnNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXItPnNpemUo
KTsKICAgICAgICAgfQogICAgICk7CiB9CkBAIC0xMTksMTUgKzEyMCwxNSBAQCBzaXplX3QgU291
cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNp
emVUb1JlYWQsIHVpbgogICAgICAgICAgICAgcmV0dXJuIHNpemVSZWFkOwogICAgICAgICB9LAog
I2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBWZWN0b3I8dWludDhfdD4mIHZlY3RvcikKKyAgICAg
ICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgdmVjdG9yLmRhdGEoKSArIHBvc2l0aW9uLCBzaXpl
VG9SZWFkKTsKKyAgICAgICAgICAgIGJ1ZmZlci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlv
biwgc2l6ZVRvUmVhZCk7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVhZDsKICAgICAgICAg
fQogICAgICk7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21l
bnQ6OnRha2VWZWN0b3IoKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpT
ZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTEzNSwxMiAr
MTM2LDI4IEBAIFZlY3Rvcjx1aW50OF90PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRh
a2VWZWN0b3IoKQogICAgICAgICB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9y
KHNpemUoKSk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWQoMCwgdmVjdG9yLnNpemUo
KSwgdmVjdG9yLmRhdGEoKSkpOwotICAgICAgICAgICAgcmV0dXJuIHZlY3RvcjsKKyAgICAgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAgICAg
ICB9LAorI2VuZGlmCisgICAgICAgIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICB9CisgICAgKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25z
dAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKKyNpZiBIQVZFKE1UX1BM
VUdJTl9GT1JNQVRfUkVBREVSKQorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2lu
Qnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbXShW
ZWN0b3I8dWludDhfdD4mIHZlY3RvcikKKyAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKHZlY3RvciwgeyB9KTsKKyAgICAgICAgICAgIHJldHVy
biBidWZmZXIucHRyKCk7CiAgICAgICAgIH0KICAgICApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aAppbmRleCA0ZWU4NmIyY2ZhNjBlZWE2ZGY2ZDI5Nzc1MjU3MDVlMjYzZTVhNTljLi42ZWM0Mzhm
ZTkxZDU4YmI4ZDhhZGQxYWQyMDNmNTYxMWY5OTBlNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRU
eXBlOwogY2xhc3MgTWVkaWFTYW1wbGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+IHsKIHB1YmxpYzoKQEAgLTY2LDkgKzY3LDExIEBAIHB1
YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50
KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNl
Z21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgICAgICBTZWdtZW50KFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdGFrZVZlY3RvcigpOworICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0
YWtlU2hhcmVkQnVmZmVyKCk7CisgICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2Vn
bWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXpl
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCByZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90LCB1
aW50OF90KiBkZXN0aW5hdGlvbikgY29uc3Q7CkBAIC03OCw3ICs4MSw3IEBAIHB1YmxpYzoKICNp
ZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICAgICAgUmV0YWluUHRyPE1U
UGx1Z2luQnl0ZVNvdXJjZVJlZj4sCiAjZW5kaWYKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90
PgorICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgPiBtX3NlZ21lbnQ7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCBlZWQ2ZTIwMjg5
OGM3NDgwYzBlNDljZDU0Y2QzMzkxYWJiYTU0NzExLi42N2Q2NDdkMjQ4MjkxMmRmODNjMWI0ZjNk
YTAyMzBjYjU0ZmRiMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAt
MjczLDcgKzI3Myw3IEBAIHN0YXRpYyBib29sIGlzV2VibVBhcnNlckF2YWlsYWJsZSgpCiAKIHVz
aW5nIG5hbWVzcGFjZSB3ZWJtOwogCi1jbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTdHJl
YW1pbmdWZWN0b3JSZWFkZXIgZmluYWwgOiBwdWJsaWMgd2VibTo6UmVhZGVyIHsKK2NsYXNzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OlNlZ21lbnRSZWFkZXIgZmluYWwgOiBwdWJsaWMgd2VibTo6
UmVhZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lk
IGFwcGVuZFNlZ21lbnQoU2VnbWVudCYmIHNlZ21lbnQpCkBAIC0zNTQsNiArMzU0LDgwIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtXb3VsZEJsb2NrKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgdm9pZCBGcmVlQmxvY2sodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90
KQorICAgIHsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYnVmZmVyLT5kZXJlZigpOwor
ICAgIH0KKworICAgIFN0YXR1cyBSZWFkSW50byhzdGQ6OnNpemVfdCBudW1Ub1JlYWQsIENNQmxv
Y2tCdWZmZXJSZWYgb3V0cHV0QnVmZmVyLCB1aW50NjRfdCogbnVtQWN0dWFsbHlSZWFkKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG91dHB1dEJ1ZmZlciAmJiBudW1BY3R1YWxseVJlYWQpOworICAg
ICAgICBpZiAoIW51bUFjdHVhbGx5UmVhZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gMDsK
KyAgICAgICAgaWYgKCFvdXRwdXRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAgICAgd2hpbGUgKG51bVRvUmVhZCAmJiBt
X2N1cnJlbnRTZWdtZW50ICE9IG1fZGF0YS5lbmQoKSkgeworICAgICAgICAgICAgYXV0byYgY3Vy
cmVudFNlZ21lbnQgPSAqbV9jdXJyZW50U2VnbWVudDsKKworICAgICAgICAgICAgaWYgKG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50ID49IGN1cnJlbnRTZWdtZW50LnNpemUoKSkgeworICAgICAgICAg
ICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIENN
QmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgdWlu
dDY0X3QgbGFzdFJlYWQgPSAwOworICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0aW9uT2Zmc2V0
ID0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CisgICAgICAgICAgICBpZiAoIXNoYXJlZEJ1ZmZl
cikgeworICAgICAgICAgICAgICAgIC8vIFdlIGNvdWxkIHBvdGVudGlhbGx5IGFsbG9jYXRlIG1v
cmUgbWVtb3J5IHRoYW4gbmVlZGVkIGlmIHRoZSByZWFkIGlzIHBhcnRpYWwuCisgICAgICAgICAg
ICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2so
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbnVtVG9SZWFkLCBrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBudWxscHRyLCAwLCBudW1Ub1JlYWQsIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93
RmxhZywgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJs
b2NrQnVmZmVyTm9FcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjprTm90RW5vdWdoTWVtb3J5KTsKKyAgICAgICAgICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZl
ckRhdGEgPSBudWxscHRyOworICAgICAgICAgICAgICAgIHNpemVfdCBzZWdtZW50U2l6ZUF0UG9z
aXRpb24gPSAwOworICAgICAgICAgICAgICAgIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERh
dGFQb2ludGVyKHJhd0Jsb2NrQnVmZmVyLCAwLCAmc2VnbWVudFNpemVBdFBvc2l0aW9uLCBudWxs
cHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpOworICAgICAgICAgICAgICAgIGlmIChlcnIg
IT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICAgICAgICAgIGxhc3RSZWFkID0g
Y3VycmVudFNlZ21lbnQucmVhZChtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgbnVtVG9SZWFkLCBi
bG9ja0J1ZmZlckRhdGEpOworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZl
ci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250
YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50Iik7CisgICAgICAgICAgICAgICAgLy8gQSBTaGFy
ZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdl
IG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAg
ICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVm
ZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/
CisgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2lu
KCktPnNlZ21lbnQ7CisgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxz
aXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudCk7CisgICAgICAgICAgICAgICAgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNl
IGFsbG9jYXRvcjsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3IudmVyc2lvbiA9IDA7CisgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yLkFsbG9jYXRlQmxvY2sgPSBudWxscHRyOworICAgICAgICAg
ICAgICAgIGFsbG9jYXRvci5GcmVlQmxvY2sgPSBGcmVlQmxvY2s7CisgICAgICAgICAgICAgICAg
YWxsb2NhdG9yLnJlZkNvbiA9IGZpcnN0U2VnbWVudC5wdHIoKTsKKyAgICAgICAgICAgICAgICBm
aXJzdFNlZ21lbnQtPnJlZigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJs
b2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZvaWQq
Pihjb25zdF9jYXN0PHVpbnQ4X3QqPihmaXJzdFNlZ21lbnQtPmRhdGEoKSkpLCBmaXJzdFNlZ21l
bnQtPnNpemUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQs
IGNhblJlYWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICAgICAgaWYgKGVyciAh
PSBrQ01CbG9ja0J1ZmZlck5vRXJyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSBj
YW5SZWFkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBibG9ja0J1ZmZlciA9IGFk
b3B0Q0YocmF3QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxv
Y2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2Uob3V0cHV0QnVmZmVyLCByYXdCbG9ja0J1ZmZl
ciwgMCwgMCwgMCk7CisgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkp
OworICAgICAgICAgICAgbV9wb3NpdGlvbiArPSBsYXN0UmVhZDsKKyAgICAgICAgICAgICpudW1B
Y3R1YWxseVJlYWQgKz0gbGFzdFJlYWQ7CisgICAgICAgICAgICBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudCArPSBsYXN0UmVhZDsKKyAgICAgICAgICAgIG51bVRvUmVhZCAtPSBsYXN0UmVhZDsKKyAg
ICAgICAgICAgIGlmIChtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCA9PSBjdXJyZW50U2VnbWVudC5z
aXplKCkpCisgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoIW51bVRvUmVhZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprT2tDb21wbGV0ZWQpOworICAgICAgICBpZiAoKm51bUFjdHVhbGx5UmVhZCkKKyAgICAg
ICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICAgICAgcmV0dXJu
IFN0YXR1cyhTdGF0dXM6OmtXb3VsZEJsb2NrKTsKKyAgICB9CisKICAgICB1aW50NjRfdCBQb3Np
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcG9zaXRpb247IH0KIAogICAgIHZvaWQgcmVz
ZXQoKQpAQCAtNTk1LDcgKzY2OSw3IEBAIFJlZlB0cjxTb3VyY2VCdWZmZXJQYXJzZXJXZWJNPiBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpjcmVhdGUoY29uc3QgQ29udGVudFR5cGUmCiB9CiAKIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQotICAgIDogbV9y
ZWFkZXIoV1RGOjptYWtlVW5pcXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJlYWRlcj4oKSkKKyAgICA6
IG1fcmVhZGVyKFdURjo6bWFrZVVuaXF1ZVJlZjxTZWdtZW50UmVhZGVyPigpKQogewogICAgIGlm
IChpc1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKICAgICAgICAgbV9wYXJzZXIgPSBXVEY6Om1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdlYm1QYXJzZXI+KCk7CkBAIC0xMDk5LDY2ICsx
MTczLDQzIEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cHJvdmlkZU1lZGlhRGF0YShS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsCiAKICNkZWZpbmUgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSguLi4pIGlmIChwYXJzZXIoKS5sb2dnZXJQdHIoKSkgcGFyc2VyKCku
bG9nZ2VyUHRyKCktPmVycm9yKGxvZ0NoYW5uZWwoKSwgV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVu
dGlmaWVyKGxvZ0NsYXNzTmFtZSgpLCBfX2Z1bmNfXywgcGFyc2VyKCkubG9nSWRlbnRpZmllcigp
KSwgX19WQV9BUkdTX18pCiAKLSNpZiBFTkFCTEUoVlA5KQotdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6cmVzZXQoKQorUmV0YWluUHRyPENNQmxvY2tCdWZmZXJS
ZWY+IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6Y29udGlndW91c0NvbXBsZXRl
QmxvY2tCdWZmZXIoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKLSAgICBt
X2N1cnJlbnRCbG9ja0J1ZmZlciA9IG51bGxwdHI7Ci0gICAgVHJhY2tEYXRhOjpyZXNldCgpOwor
ICAgIGlmICghb2Zmc2V0ICYmICFsZW5ndGggJiYgUEFMOjpDTUJsb2NrQnVmZmVySXNSYW5nZUNv
bnRpZ3VvdXMobV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCAwLCAwKSkKKyAgICAgICAgcmV0
dXJuIG1fY29tcGxldGVCbG9ja0J1ZmZlcjsKKyAgICBDTUJsb2NrQnVmZmVyUmVmIHJhd0NvbnRp
Z3VvdXNCdWZmZXIgPSBudWxscHRyOworICAgIGlmIChQQUw6OkNNQmxvY2tCdWZmZXJDcmVhdGVD
b250aWd1b3VzKG51bGxwdHIsIG1fY29tcGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0ciwgb2Zmc2V0LCBsZW5ndGgsIDAsICZyYXdDb250aWd1b3VzQnVmZmVyKSAhPSBrQ01C
bG9ja0J1ZmZlck5vRXJyKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAi
ZmFpbGVkIHRvIGNyZWF0ZSBjb250aWd1b3VzIGJsb2NrIGJ1ZmZlciIpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0Q0YocmF3Q29udGlndW91c0J1ZmZl
cik7CiB9Ci0jZW5kaWYKIAotd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZp
ZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYgcmVhZGVyLCBjb25z
dCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nLCBjb25z
dCBDTVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGludCBzYW1wbGVDb3VudCkKK3dlYm06OlN0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OnJlYWRGcmFtZURhdGEod2VibTo6
UmVhZGVyJiByZWFkZXIsIGNvbnN0IHdlYm06OkZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50
NjRfdCogYnl0ZXNSZW1haW5pbmcpCiB7Ci0jaWYgRU5BQkxFKFZQOSkKLSAgICBDTUJsb2NrQnVm
ZmVyUmVmIHJhd0Jsb2NrQnVmZmVyID0gbnVsbHB0cjsKLQotICAgIGlmIChtX2N1cnJlbnRQYWNr
ZXRTaXplICYmICptX2N1cnJlbnRQYWNrZXRTaXplICE9IG1ldGFkYXRhLnNpemUpIHsKLSAgICAg
ICAgLy8gVGhlIHBhY2tldCdzIG1ldGFkYXRhIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnRseSBw
ZW5kaW5nIHBhcnRpYWwgcGFja2V0OyByZXN0YXJ0LgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RURfV0lUSF9NRVNTQUdFKCJWaWRlb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YTogd2VibSBp
biBub25zZW5zaWNhbCBzdGF0ZSIpOwotICAgICAgICBtX3BhcnRpYWxCeXRlc1JlYWQgPSAwOwot
ICAgICAgICBtX2N1cnJlbnRCbG9ja0J1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIG1fY3VycmVu
dFBhY2tldFNpemUgPSBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKG1fY29tcGxldGVQYWNrZXRTaXpl
ICYmICptX2NvbXBsZXRlUGFja2V0U2l6ZSAhPSBtZXRhZGF0YS5zaXplKSB7CisgICAgICAgIC8v
IFRoZSBwYWNrZXQncyBtZXRhZGF0YSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50bHkgcGVuZGlu
ZyBjb21wbGV0ZSBwYWNrZXQ7IHJlc3RhcnQuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9X
SVRIX01FU1NBR0UoIlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YTogd2VibSBpbiBub25zZW5zaWNh
bCBzdGF0ZSIpOworICAgICAgICByZXNldCgpOwogICAgIH0KIAotICAgIGlmICghbV9jdXJyZW50
UGFja2V0U2l6ZSkKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IG1ldGFkYXRhLnNpemU7
CisgICAgaWYgKCFtX2NvbXBsZXRlUGFja2V0U2l6ZSkKKyAgICAgICAgbV9jb21wbGV0ZVBhY2tl
dFNpemUgPSBtZXRhZGF0YS5zaXplOwogCiAgICAgaWYgKCFtX2N1cnJlbnRCbG9ja0J1ZmZlcikg
ewotICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlC
bG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAqbV9jdXJyZW50UGFja2V0U2l6ZSwg
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgKm1fY3VycmVudFBhY2tldFNpemUsIDAs
ICZyYXdCbG9ja0J1ZmZlcik7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFBBUlNF
Ul9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5Qmxv
Y2sgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICBBU1NFUlQoIW1fcGFydGlhbEJ5
dGVzUmVhZCk7CisgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxs
cHRyOworICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUVtcHR5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5LCAwLCAmcmF3QmxvY2tC
dWZmZXIpOworICAgICAgICBpZiAoZXJyICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIgfHwgIXJhd0Js
b2NrQnVmZmVyKSB7CisgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJD
TUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwogICAgICAg
ICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICB9Ci0K
ICAgICAgICAgbV9jdXJyZW50QmxvY2tCdWZmZXIgPSBhZG9wdENGKHJhd0Jsb2NrQnVmZmVyKTsK
LSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0gMDsKLQotICAgICAgICBlcnIgPSBQQUw6OkNN
QmxvY2tCdWZmZXJBc3N1cmVCbG9ja01lbW9yeShtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSk7
Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9T
U0lCTEUoIkNNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZh
aWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKLSAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIs
IGJ5dGVzUmVtYWluaW5nKTsKLSAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgqbV9jdXJyZW50
UGFja2V0U2l6ZSA8IG1fcGFydGlhbEJ5dGVzUmVhZCArICpieXRlc1JlbWFpbmluZykgewotICAg
ICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJJbnZhbGlkIGZyYW1lIHNpemUgYWxs
b2NhdGVkLCBpZ25vcmluZyB0aGUgZW50aXJlIGZyYW1lIik7Ci0gICAgICAgIG1fcGFydGlhbEJ5
dGVzUmVhZCArPSAqYnl0ZXNSZW1haW5pbmc7Ci0gICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIs
IGJ5dGVzUmVtYWluaW5nKTsKLSAgICB9CiAgICAgd2hpbGUgKCpieXRlc1JlbWFpbmluZykgewot
ICAgICAgICBzaXplX3Qgc2VnbWVudFNpemVBdFBvc2l0aW9uID0gMDsKLSAgICAgICAgdWludDhf
dCogYmxvY2tCdWZmZXJEYXRhID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNN
QmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgbV9w
YXJ0aWFsQnl0ZXNSZWFkLCAmc2VnbWVudFNpemVBdFBvc2l0aW9uLCBudWxscHRyLCAoY2hhcioq
KSZibG9ja0J1ZmZlckRhdGEpOwotICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBQQVJT
RVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFp
bGVkIHdpdGggZXJyb3IiLCBlcnIpOwotICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwg
Ynl0ZXNSZW1haW5pbmcpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqYnl0ZXNSZW1haW5pbmcg
PCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pIHsKLSAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1Jf
SUZfUE9TU0lCTEUoIkFuIGVycm9yIG9jY3VycmVkLCBkZXN0aW5hdGlvbiBidWZmZXIgdG9vIHNt
YWxsIHRvIGNvbnRhaW4gb3VyIGZyYW1lIik7Ci0gICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVh
ZGVyLCBieXRlc1JlbWFpbmluZyk7Ci0gICAgICAgIH0KICAgICAgICAgdWludDY0X3QgYnl0ZXNS
ZWFkOwotICAgICAgICBhdXRvIHN0YXR1cyA9IHJlYWRlci5SZWFkKCpieXRlc1JlbWFpbmluZywg
KHVpbnQ4X3QqKWJsb2NrQnVmZmVyRGF0YSwgJmJ5dGVzUmVhZCk7CisgICAgICAgIGF1dG8gc3Rh
dHVzID0gc3RhdGljX2Nhc3Q8U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U2VnbWVudFJlYWRlciY+
KHJlYWRlcikuUmVhZEludG8oKmJ5dGVzUmVtYWluaW5nLCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5n
ZXQoKSwgJmJ5dGVzUmVhZCk7CiAgICAgICAgICpieXRlc1JlbWFpbmluZyAtPSBieXRlc1JlYWQ7
CiAgICAgICAgIG1fcGFydGlhbEJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7CiAKQEAgLTExNjYsMTIg
KzEyMTcsMzMgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJh
Y2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgICAgIHJldHVybiBz
dGF0dXM7CiAgICAgfQogCi0gICAgQVNTRVJUKG1fcGFydGlhbEJ5dGVzUmVhZCA8PSAqbV9jdXJy
ZW50UGFja2V0U2l6ZSk7Ci0gICAgaWYgKG1fcGFydGlhbEJ5dGVzUmVhZCA8ICptX2N1cnJlbnRQ
YWNrZXRTaXplKQorICAgIEFTU0VSVChtX3BhcnRpYWxCeXRlc1JlYWQgPD0gKm1fY29tcGxldGVQ
YWNrZXRTaXplKTsKKyAgICBpZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY29tcGxldGVQYWNr
ZXRTaXplKQogICAgICAgICByZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06OlN0YXR1czo6a09rUGFy
dGlhbCk7CiAKLSAgICBjcmVhdGVTYW1wbGVCdWZmZXIocHJlc2VudGF0aW9uVGltZSwgc2FtcGxl
Q291bnQsIG1ldGFkYXRhKTsKKyAgICBpZiAoIW1fY29tcGxldGVCbG9ja0J1ZmZlcikKKyAgICAg
ICAgbV9jb21wbGV0ZUJsb2NrQnVmZmVyID0gV1RGTW92ZShtX2N1cnJlbnRCbG9ja0J1ZmZlcik7
CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQXBwZW5k
QnVmZmVyUmVmZXJlbmNlKG1fY29tcGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50Qmxv
Y2tCdWZmZXIuZ2V0KCksIDAsIDAsIDApOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAg
ICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyQXBwZW5kQnVmZmVy
UmVmZXJlbmNlIHRvIGNvbXBsZXRlIGJsb2NrIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKKyAg
ICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKyAgICAg
ICAgfQorICAgICAgICBtX2N1cnJlbnRCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgfQorICAg
IG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7CisKKyAgICByZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06
OlN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KIAord2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYg
cmVhZGVyLCBjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgdWludDY0X3QqIGJ5dGVzUmVt
YWluaW5nLCBjb25zdCBDTVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGludCBzYW1wbGVDb3VudCkK
K3sKKyNpZiBFTkFCTEUoVlA5KQorICAgIGF1dG8gc3RhdHVzID0gcmVhZEZyYW1lRGF0YShyZWFk
ZXIsIG1ldGFkYXRhLCBieXRlc1JlbWFpbmluZyk7CisgICAgaWYgKCFzdGF0dXMuY29tcGxldGVk
X29rKCkpCisgICAgICAgIHJldHVybiBzdGF0dXM7CisKKyAgICBjcmVhdGVTYW1wbGVCdWZmZXIo
cHJlc2VudGF0aW9uVGltZSwgc2FtcGxlQ291bnQsIG1ldGFkYXRhKTsKICAgICByZXNldCgpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwpAQCAtMTE4Niw4ICsxMjU4LDE0IEBA
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBs
ZUJ1ZmZlcihjb25zdCBDTVRpbWUmIHByCiB7CiAjaWYgRU5BQkxFKFZQOSkKICAgICB1aW50OF90
KiBibG9ja0J1ZmZlckRhdGEgPSBudWxscHRyOwotICAgIHNpemVfdCBzZWdtZW50U2l6ZUF0UG9z
aXRpb24gPSAwOwotICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50
ZXIobV9jdXJyZW50QmxvY2tCdWZmZXIuZ2V0KCksIDAsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24s
IG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgY29uc3RleHByIHNpemVf
dCBtYXhIZWFkZXJTaXplID0gMzI7IC8vIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIFZQOSB1bmNv
bXByZXNzZWQgaGVhZGVyIGlzIDE0NCBiaXRzIGFuZCAxMSBieXRlcyBmb3IgVlA4LiBSb3VuZCBo
aWdoLgorICAgIHNpemVfdCBzZWdtZW50SGVhZGVyTGVuZ3RoID0gc3RkOjptaW4obWF4SGVhZGVy
U2l6ZSwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcigwLCBzZWdtZW50SGVhZGVyTGVuZ3RoKTsK
KyAgICBpZiAoIWNvbnRpZ3VvdXNCdWZmZXIpIHsKKyAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9J
Rl9QT1NTSUJMRSgiVmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlciBmYWlsZWQgdG8g
Y3JlYXRlIGNvbnRpZ3VvdXMgZGF0YSBibG9jayIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoY29udGlndW91
c0J1ZmZlci5nZXQoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJE
YXRhKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7
CiAgICAgICAgIHJldHVybjsKQEAgLTExOTYsNyArMTI3NCw3IEBAIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRp
bWUmIHByCiAgICAgYm9vbCBpc0tleSA9IGZhbHNlOwogICAgIFJldGFpblB0cjxDTUZvcm1hdERl
c2NyaXB0aW9uUmVmPiBmb3JtYXREZXNjcmlwdGlvbjsKICAgICBpZiAoY29kZWMoKSA9PSBDb2Rl
Y1R5cGU6OlZQOSkgewotICAgICAgICBpZiAoIW1faGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVz
c2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2VnbWVudFNpemVBdFBvc2l0aW9uKSkKKyAgICAg
ICAgaWYgKCFtX2hlYWRlclBhcnNlci5QYXJzZVVuY29tcHJlc3NlZEhlYWRlcihibG9ja0J1ZmZl
ckRhdGEsIHNlZ21lbnRIZWFkZXJMZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGlmIChtX2hlYWRlclBhcnNlci5rZXkoKSkgewpAQCAtMTIwOSw3ICsxMjg3LDcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVm
ZmVyKGNvbnN0IENNVGltZSYgcHIKICAgICAgICAgICAgIHNldEZvcm1hdERlc2NyaXB0aW9uKFdU
Rk1vdmUoZm9ybWF0RGVzY3JpcHRpb24pKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoY29k
ZWMoKSA9PSBDb2RlY1R5cGU6OlZQOCkgewotICAgICAgICBhdXRvIGhlYWRlciA9IHBhcnNlVlA4
RnJhbWVIZWFkZXIoYmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pOworICAg
ICAgICBhdXRvIGhlYWRlciA9IHBhcnNlVlA4RnJhbWVIZWFkZXIoYmxvY2tCdWZmZXJEYXRhLCBz
ZWdtZW50SGVhZGVyTGVuZ3RoKTsKICAgICAgICAgaWYgKGhlYWRlciAmJiBoZWFkZXItPmtleWZy
YW1lKSB7CiAgICAgICAgICAgICBpc0tleSA9IHRydWU7CiAgICAgICAgICAgICBhdXRvIGZvcm1h
dERlc2NyaXB0aW9uID0gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA4SGVhZGVyKCpoZWFk
ZXIsIHRyYWNrKCkudmlkZW8udmFsdWUoKS5jb2xvdXIpOwpAQCAtMTIyMiw3ICsxMzAwLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxl
QnVmZmVyKGNvbnN0IENNVGltZSYgcHIKICAgICB9CiAKICAgICBhdXRvIHRyYWNrID0gdGhpcy0+
dHJhY2soKTsKLSAgICAvLyBGSVhNRTogQSBibG9jayBtaWdodCBjb250YWluIG1vcmUgdGhhbiBv
bmUgZnJhbWUsIGJ1dCBvbmx5IHRoaXMgZnJhbWUgaGFzIGJlZW4gcmVhZCBpbnRvIGBjdXJyZW50
QmxvY2tCdWZmZXJgLgorICAgIC8vIEZJWE1FOiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0
aGFuIG9uZSBmcmFtZSwgYnV0IG9ubHkgdGhpcyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGNv
bXBsZXRlQmxvY2tCdWZmZXJgLgogICAgIC8vIEJlbG93IHdlIGNyZWF0ZSBzYW1wbGUgYnVmZmVy
cyBmb3IgZWFjaCBmcmFtZSwgZWFjaCB3aXRoIHRoZSBibG9jaydzIHRpbWVjb2RlIGFuZCBgbnVt
X2ZyYW1lc2AgdmFsdWUuCiAgICAgLy8gU2hvdWxkbid0IHdlIGNyZWF0ZSBqdXN0IG9uZSBzYW1w
bGUgYnVmZmVyIG9uY2UgYWxsIHRoZSBibG9jaydzIGZyYW1lcyBoYXZlIGJlZW4gcmVhZCBpbnRv
IGBjdXJyZW50QmxvY2tCdWZmZXJgPwogCkBAIC0xMjMxLDkgKzEzMDksOCBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29u
c3QgQ01UaW1lJiBwcgogICAgICAgICBkdXJhdGlvbiA9IHRyYWNrLmRlZmF1bHRfZHVyYXRpb24u
dmFsdWUoKSAqIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlIC8ga191c19pbl9zZWNvbmRzOwog
CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgcmF3U2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKLSAgICBz
aXplX3QgZnJhbWVTaXplID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX2N1cnJl
bnRCbG9ja0J1ZmZlci5nZXQoKSk7CiAgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZyA9IHsg
UEFMOjpDTVRpbWVNYWtlKGR1cmF0aW9uLCBwcmVzZW50YXRpb25UaW1lLnRpbWVzY2FsZSksIHBy
ZXNlbnRhdGlvblRpbWUsIHByZXNlbnRhdGlvblRpbWUgfTsKLSAgICBlcnIgPSBQQUw6OkNNU2Ft
cGxlQnVmZmVyQ3JlYXRlUmVhZHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9jdXJyZW50QmxvY2tC
dWZmZXIuZ2V0KCksIHRoaXMtPmZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBsZUNvdW50
LCAxLCAmdGltaW5nLCAxLCAmZnJhbWVTaXplLCAmcmF3U2FtcGxlQnVmZmVyKTsKKyAgICBlcnIg
PSBQQUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9j
b21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCB0aGlzLT5mb3JtYXREZXNjcmlwdGlvbigpLmdldCgp
LCBzYW1wbGVDb3VudCwgMSwgJnRpbWluZywgMSwgJiptX2NvbXBsZXRlUGFja2V0U2l6ZSwgJnJh
d1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYgKGVycikgewogICAgICAgICBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKCJDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5IGZhaWxlZCB3aXRoIGVycm9y
IiwgZXJyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI2Myw1NiArMTM0MCwyNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIo
Y29uc3QgQ01UaW1lJiBwcgogI2VuZGlmIC8vIEVOQUJMRShWUDkpCiB9CiAKLXZvaWQgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OnJlc2V0KCkKK3ZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKCkKIHsKKyAgICBt
TnVtRnJhbWVzSW5Db21wbGV0ZUJsb2NrID0gMDsKICAgICBtX3BhY2tldERlc2NyaXB0aW9ucy5j
bGVhcigpOwotICAgIG1fcGFja2V0c0RhdGEuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRQYWNrZXRC
eXRlT2Zmc2V0ID0gc3RkOjpudWxsb3B0OwotICAgIFRyYWNrRGF0YTo6cmVzZXQoKTsKKyAgICBt
X2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ID0gMDsKKyAgICBUcmFja0RhdGE6OnJlc2V0Q29tcGxl
dGVkKCk7CiB9CiAKIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1Ry
YWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImIHJlYWRlciwgY29uc3QgRnJh
bWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZywgY29uc3QgQ01U
aW1lJiBwcmVzZW50YXRpb25UaW1lLCBpbnQgc2FtcGxlQ291bnQpCiB7Ci0gICAgQVNTRVJUKHNh
bXBsZUNvdW50KTsKLQotICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgbV9ieXRlT2Zmc2V0ID0gbWV0YWRhdGEucG9zaXRpb247Ci0gICAgICAgIG1fc2Ft
cGxlUHJlc2VudGF0aW9uVGltZSA9IHByZXNlbnRhdGlvblRpbWU7Ci0gICAgfQotCi0gICAgaWYg
KG1fY3VycmVudFBhY2tldFNpemUgJiYgKm1fY3VycmVudFBhY2tldFNpemUgIT0gbWV0YWRhdGEu
c2l6ZSkgewotICAgICAgICAvLyBUaGUgcGFja2V0J3MgbWV0YWRhdGEgZG9lc24ndCBtYXRjaCB0
aGUgY3VycmVudGx5IHBlbmRpbmcgcGFydGlhbCBwYWNrZXQ7IHJlc3RhcnQuCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJh
bWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRlIik7Ci0gICAgICAgIG1fcGFydGlhbEJ5
dGVzUmVhZCA9IDA7Ci0gICAgICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotCi0gICAgaWYgKCFtX2N1cnJlbnRQYWNrZXRTaXplKQotICAgICAgICBtX2N1cnJl
bnRQYWNrZXRTaXplID0gbWV0YWRhdGEuc2l6ZTsKLQotICAgIC8vIEVuc3VyZSB3ZSBoYXZlIHJv
b20gdG8gc3RvcmUgdGhlIGZ1bGwgcGVuZGluZyBmcmFtZS4KLSAgICBpZiAobV9wYWNrZXRzRGF0
YS5zaXplKCkgPCBtX3BhY2tldHNCeXRlc1JlYWQgKyBtZXRhZGF0YS5zaXplKQotICAgICAgICBt
X3BhY2tldHNEYXRhLmdyb3cobV9wYWNrZXRzQnl0ZXNSZWFkICsgbWV0YWRhdGEuc2l6ZSk7Ci0K
LSAgICBpZiAoIW1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQpCi0gICAgICAgIG1fY3VycmVudFBh
Y2tldEJ5dGVPZmZzZXQgPSBtX3BhY2tldHNCeXRlc1JlYWQ7Ci0KLSAgICB3aGlsZSAoKmJ5dGVz
UmVtYWluaW5nKSB7Ci0gICAgICAgIHVpbnQ2NF90IGJ5dGVzUmVhZDsKLSAgICAgICAgYXV0byBz
dGF0dXMgPSByZWFkZXIuUmVhZCgqYnl0ZXNSZW1haW5pbmcsIG1fcGFja2V0c0RhdGEuZGF0YSgp
ICsgbV9wYWNrZXRzQnl0ZXNSZWFkICsgbV9wYXJ0aWFsQnl0ZXNSZWFkLCAmYnl0ZXNSZWFkKTsK
LSAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IGJ5dGVzUmVhZDsKLSAgICAgICAgbV9wYXJ0aWFs
Qnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKLQotICAgICAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRf
b2soKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQorICAgIGF1dG8gc3RhdHVz
ID0gcmVhZEZyYW1lRGF0YShyZWFkZXIsIG1ldGFkYXRhLCBieXRlc1JlbWFpbmluZyk7CisgICAg
aWYgKCFzdGF0dXMuY29tcGxldGVkX29rKCkpCisgICAgICAgIHJldHVybiBzdGF0dXM7CiAKLSAg
ICBBU1NFUlQobV9wYXJ0aWFsQnl0ZXNSZWFkIDw9ICptX2N1cnJlbnRQYWNrZXRTaXplKTsKLSAg
ICBpZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY3VycmVudFBhY2tldFNpemUpCi0gICAgICAg
IHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICAvLyBB
dHRlbXB0cyB0byBtaW5pbWlzZSB0aGUgYW1vdW50IG9mIG1lbW9yeSBhbGxvY2F0aW9ucyBkdWUg
dG8gcmVwZXRpdHZlIENNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2UgY2FsbHMgaW4g
cmVhZEZyYW1lRGF0YS4KKyAgICBtTnVtRnJhbWVzSW5Db21wbGV0ZUJsb2NrKys7CisgICAgaWYg
KG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2sgPiBtTWF4QmxvY2tCdWZmZXJDYXBhY2l0eSkKKyAg
ICAgICAgbU1heEJsb2NrQnVmZmVyQ2FwYWNpdHkgPSBtTnVtRnJhbWVzSW5Db21wbGV0ZUJsb2Nr
OwogCi0gICAgbV9wYWNrZXRzQnl0ZXNSZWFkICs9IG1fcGFydGlhbEJ5dGVzUmVhZDsKLSAgICBt
X3BhcnRpYWxCeXRlc1JlYWQgPSAwOworICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0Vt
cHR5KCkpCisgICAgICAgIG1fc2FtcGxlUHJlc2VudGF0aW9uVGltZSA9IHByZXNlbnRhdGlvblRp
bWU7CiAKICAgICBpZiAoIWZvcm1hdERlc2NyaXB0aW9uKCkpIHsKICAgICAgICAgaWYgKCF0cmFj
aygpLmNvZGVjX3ByaXZhdGUuaXNfcHJlc2VudCgpKSB7CkBAIC0xMzI1LDggKzEzNzMsMTkgQEAg
d2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25z
dW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgaWYgKGNvZGVjKCkgPT0gQ29kZWNUeXBl
OjpWb3JiaXMpCiAgICAgICAgICAgICBmb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZVZvcmJpc0F1
ZGlvRm9ybWF0RGVzY3JpcHRpb24ocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRh
KCkpOwogICAgICAgICBlbHNlIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6T3B1cykgeworICAg
ICAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tC
dWZmZXIobV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsK
KyAgICAgICAgICAgIGlmICghY29udGlndW91c0J1ZmZlcikgeworICAgICAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVE
YXRhOiB1bmFibGUgdG8gY3JlYXRlIGNvbnRpZ3VvdXMgZGF0YSBibG9jayIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHVpbnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51bGxwdHI7CisgICAg
ICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyKGNvbnRp
Z3VvdXNCdWZmZXIuZ2V0KCksIDAsIG51bGxwdHIsIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVm
ZmVyRGF0YSk7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgUEFSU0VS
X0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxl
ZCB3aXRoIGVycm9yIiwgZXJyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBPcHVzQ29va2ll
Q29udGVudHMgY29va2llQ29udGVudHM7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZh
dGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCBtX3BhY2tldHNC
eXRlc1JlYWQsIG1fcGFja2V0c0RhdGEuZGF0YSgpLCBjb29raWVDb250ZW50cykpIHsKKyAgICAg
ICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2
YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhLCBj
b29raWVDb250ZW50cykpIHsKICAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BP
U1NJQkxFKCJGYWlsZWQgdG8gcGFyc2UgT3B1cyBwcml2YXRlIGRhdGEiKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9
CkBAIC0xMzU1LDEwICsxNDE0LDIxIEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgfSBl
bHNlIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6T3B1cykgewogICAgICAgICAvLyBPcHVzIHRl
Y2huaWNhbGx5IGFsbG93cyB0aGUgZnJhbWUgZHVyYXRpb24gYW5kIGZyYW1lcy1wZXItcGFja2V0
IHZhbHVlcyB0byBjaGFuZ2UgZnJvbSBwYWNrZXQgdG8gcGFja2V0LgogICAgICAgICAvLyBDb3Jl
QXVkaW8gZG9lc24ndCBzdXBwb3J0IEFTQkQgdmFsdWVzIGxpa2UgdGhlc2UgdG8gY2hhbmdlIG9u
IGEgcGVyLXBhY2tldCBiYXNpcywgc28gdGhyb3cgYW4gZXJyb3Igd2hlbgotICAgICAgICAvLyB0
aGF0IGtpbmQgb2YgdmFyaWFibGlsaXR5IGlzIGVuY291bnRlcmVkLgorICAgICAgICAvLyB0aGF0
IGtpbmQgb2YgdmFyaWFiaWxpdHkgaXMgZW5jb3VudGVyZWQuCiAgICAgICAgIE9wdXNDb29raWVD
b250ZW50cyBjb29raWVDb250ZW50czsKICAgICAgICAgYXV0byYgcHJpdmF0ZURhdGEgPSB0cmFj
aygpLmNvZGVjX3ByaXZhdGUudmFsdWUoKTsKLSAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRl
RGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgbV9wYWNrZXRzQnl0
ZXNSZWFkLCBtX3BhY2tldHNEYXRhLmRhdGEoKSwgY29va2llQ29udGVudHMpCisgICAgICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyKG1fY3Vy
cmVudFBhY2tldEJ5dGVPZmZzZXQsICptX2NvbXBsZXRlUGFja2V0U2l6ZSk7CisgICAgICAgIGlm
ICghY29udGlndW91c0J1ZmZlcikgeworICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9Q
T1NTSUJMRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHVuYWJsZSB0byBjcmVh
dGUgY29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVh
ZGVyLCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIH0KKyAgICAgICAgdWludDhfdCogYmxvY2tC
dWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZm
ZXJHZXREYXRhUG9pbnRlcihjb250aWd1b3VzQnVmZmVyLmdldCgpLCAwLCBudWxscHRyLCBudWxs
cHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpOworICAgICAgICBpZiAoZXJyKSB7CisgICAg
ICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0
YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICAgICAgcmV0dXJuIFNr
aXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICB9CisgICAgICAgIGlmICghcGFy
c2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCks
ICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhLCBjb29raWVDb250ZW50cykK
ICAgICAgICAgICAgIHx8IGNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldCAhPSBtX2ZyYW1l
c1BlclBhY2tldAogICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVEdXJhdGlvbiAh
PSBtX2ZyYW1lRHVyYXRpb24pIHsKICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9T
U0lCTEUoIk9wdXMgZnJhbWVzLXBlci1wYWNrZXQgY2hhbmdlZCB3aXRoaW4gYSB0cmFjazsgZXJy
b3IiKTsKQEAgLTEzNjYsMTQgKzE0MzYsMTUgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAg
ICAgICAgfQogICAgIH0KIAotICAgIG1fcGFja2V0RGVzY3JpcHRpb25zLmFwcGVuZCh7IHN0YXRp
Y19jYXN0PGludDY0X3Q+KCptX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0KSwgMCwgc3RhdGljX2Nh
c3Q8VUludDMyPigqbV9jdXJyZW50UGFja2V0U2l6ZSkgfSk7Ci0gICAgbV9jdXJyZW50UGFja2V0
Qnl0ZU9mZnNldCA9IHN0ZDo6bnVsbG9wdDsKLSAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gc3Rk
OjpudWxsb3B0OworICAgIG1fcGFja2V0RGVzY3JpcHRpb25zLmFwcGVuZCh7IHN0YXRpY19jYXN0
PGludDY0X3Q+KG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQpLCAwLCBzdGF0aWNfY2FzdDxVSW50
MzI+KCptX2NvbXBsZXRlUGFja2V0U2l6ZSkgfSk7CisgICAgbV9jdXJyZW50UGFja2V0Qnl0ZU9m
ZnNldCArPSAqbV9jb21wbGV0ZVBhY2tldFNpemU7CisgICAgbV9jb21wbGV0ZVBhY2tldFNpemUg
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHNhbXBsZUR1cmF0aW9uID0gUEFMOjpDTVRpbWVH
ZXRTZWNvbmRzKFBBTDo6Q01UaW1lU3VidHJhY3QocHJlc2VudGF0aW9uVGltZSwgbV9zYW1wbGVQ
cmVzZW50YXRpb25UaW1lKSkgKyBQQUw6OkNNVGltZUdldFNlY29uZHMobV9wYWNrZXREdXJhdGlv
bikgKiBzYW1wbGVDb3VudDsKLQotICAgIGlmIChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1T
YW1wbGVEdXJhdGlvbikKKyAgICBpZiAoc2FtcGxlRHVyYXRpb24gPj0gbV9taW5pbXVtU2FtcGxl
RHVyYXRpb24pIHsKICAgICAgICAgY3JlYXRlU2FtcGxlQnVmZmVyKG1ldGFkYXRhLnBvc2l0aW9u
KTsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CiAKICAgICBBU1NFUlQoISpieXRlc1JlbWFpbmlu
Zyk7CiAgICAgcmV0dXJuIHdlYm06OlN0YXR1cyh3ZWJtOjpTdGF0dXM6OmtPa0NvbXBsZXRlZCk7
CkBAIC0xMzgxLDM5ICsxNDUyLDE3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAKIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZl
cihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0KQogewotICAgIGlm
IChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0VtcHR5KCkgfHwgIW1fcGFja2V0c0J5dGVzUmVhZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKCFtX3BhY2tldHNEYXRhLmlzRW1wdHkoKSk7
Ci0KLSAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICBhdXRv
IGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCBtX3BhY2tldHNCeXRlc1JlYWQsIGtDRkFsbG9jYXRvckRlZmF1
bHQsIG51bGxwdHIsIDAsIG1fcGFja2V0c0J5dGVzUmVhZCwga0NNQmxvY2tCdWZmZXJBc3N1cmVN
ZW1vcnlOb3dGbGFnLCAmYmxvY2tCdWZmZXIpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUEFS
U0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlC
bG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
YXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2NrQnVmZmVyKTsKLQotICAgIGVyciA9IFBBTDo6Q01C
bG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMobV9wYWNrZXRzRGF0YS5kYXRhKCksIGJ1ZmZlci5n
ZXQoKSwgMCwgbV9wYWNrZXRzQnl0ZXNSZWFkKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVz
IGZhaWxlZCB3aXRoICVkIiwgZXJyKTsKKyAgICBpZiAobV9wYWNrZXREZXNjcmlwdGlvbnMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYg
cmF3U2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKLSAgICBlcnIgPSBQQUw6OkNNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVSZWFkeVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgYnVmZmVyLmdldCgpLCBmb3JtYXREZXNjcmlwdGlvbigpLmdldCgpLCBtX3BhY2tldERlc2Ny
aXB0aW9ucy5zaXplKCksIG1fc2FtcGxlUHJlc2VudGF0aW9uVGltZSwgbV9wYWNrZXREZXNjcmlw
dGlvbnMuZGF0YSgpLCAmcmF3U2FtcGxlQnVmZmVyKTsKKyAgICBhdXRvIGVyciA9IFBBTDo6Q01B
dWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0
aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25zLnNpemUoKSwgbV9zYW1wbGVQcmVzZW50
YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5kYXRhKCksICZyYXdTYW1wbGVCdWZmZXIp
OwogICAgIGlmIChlcnIpIHsKICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgi
Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdp
dGggJWQiLCBlcnIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gc2FtcGxlQnVm
ZmVyID0gYWRvcHRDRihyYXdTYW1wbGVCdWZmZXIpOwogCi0gICAgbV9wYWNrZXRzRGF0YS5yZW1v
dmUoMCwgbV9wYWNrZXRzQnl0ZXNSZWFkKTsKLSAgICBpZiAobV9jdXJyZW50UGFja2V0Qnl0ZU9m
ZnNldCkKLSAgICAgICAgKm1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgLT0gbV9wYWNrZXRzQnl0
ZXNSZWFkOwotICAgIG1fcGFja2V0c0J5dGVzUmVhZCA9IDA7Ci0gICAgbV9wYWNrZXREZXNjcmlw
dGlvbnMuY2xlYXIoKTsKLQogICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrKCkudHJhY2tfdWlkLnZh
bHVlKCk7CiAgICAgcGFyc2VyKCkucHJvdmlkZU1lZGlhRGF0YShXVEZNb3ZlKHNhbXBsZUJ1ZmZl
ciksIHRyYWNrSUQsIGxhdGVzdEJ5dGVSYW5nZU9mZnNldCk7CiB9CkBAIC0xNDIxLDggKzE0NzAs
MTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRl
U2FtcGxlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2kKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKCkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDog
bV90cmFja3MpIHsKLSAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OlR5cGU6OkF1ZGlvKQotICAgICAgICAgICAgZG93bmNh
c3Q8QXVkaW9UcmFja0RhdGE+KHRyYWNrLmdldCgpKS5jcmVhdGVTYW1wbGVCdWZmZXIoKTsKKyAg
ICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpU
cmFja0RhdGE6OlR5cGU6OkF1ZGlvKSB7CisgICAgICAgICAgICBBdWRpb1RyYWNrRGF0YSYgYXVk
aW9UcmFjayA9IGRvd25jYXN0PEF1ZGlvVHJhY2tEYXRhPih0cmFjay5nZXQoKSk7CisgICAgICAg
ICAgICBhdWRpb1RyYWNrLmNyZWF0ZVNhbXBsZUJ1ZmZlcigpOworICAgICAgICAgICAgYXVkaW9U
cmFjay5yZXNldENvbXBsZXRlZCgpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggOTUyOTc2YjI3MmY3MTE4NWJiNzg3ZjVhYTM0MjNjNGY4
N2Q2YzRhNi4uNjhhMTIwMDBlMjRlNjk4ZGYwYWM5NDkwNWE3MTc2ZTBjYjEwZjFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBNZWRpYVNh
bXBsZUFWRk9iakM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIDogcHVibGljIFNvdXJj
ZUJ1ZmZlclBhcnNlciwgcHJpdmF0ZSB3ZWJtOjpDYWxsYmFjayB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgY2xhc3MgU3RyZWFtaW5nVmVjdG9yUmVhZGVyOwor
ICAgIGNsYXNzIFNlZ21lbnRSZWFkZXI7CiAKICAgICBzdGF0aWMgYm9vbCBpc1dlYk1Gb3JtYXRS
ZWFkZXJBdmFpbGFibGUoKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKQEAgLTE1NSwz
MCArMTU1LDQyIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZXRGb3JtYXREZXNjcmlwdGlvbihS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4mJiBkZXNjcmlwdGlvbikgeyBtX2Zvcm1h
dERlc2NyaXB0aW9uID0gV1RGTW92ZShkZXNjcmlwdGlvbik7IH0KIAogICAgICAgICBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNJiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlcjsgfQotICAg
ICAgICAKKwogICAgICAgICB2aXJ0dWFsIHdlYm06OlN0YXR1cyBjb25zdW1lRnJhbWVEYXRhKHdl
Ym06OlJlYWRlciYsIGNvbnN0IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB1aW50NjRfdCosIGNvbnN0
IENNVGltZSYsIGludCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06OlN0YXR1czo6a0ludmFs
aWRFbGVtZW50SWQpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkK
KyAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0Q29tcGxldGVkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9jb21wbGV0ZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAg
ICB2b2lkIHJlc2V0KCkKICAgICAgICAgewotICAgICAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6
ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJlc2V0Q29tcGxldGVkKCk7CisgICAgICAg
ICAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIG1f
cGFydGlhbEJ5dGVzUmVhZCA9IDA7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9ja0J1ZmZlciA9
IG51bGxwdHI7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IG1fY3VycmVudFBhY2tldFNpemU7Ci0gICAgICAgIC8vIFNpemUgb2YgdGhl
IGN1cnJlbnRseSBwYXJzZWQgcGFja2V0LCBwb3NzaWJseSBpbmNvbXBsZXRlLgotICAgICAgICBz
aXplX3QgbV9wYXJ0aWFsQnl0ZXNSZWFkIHsgMCB9OworICAgICAgICBSZXRhaW5QdHI8Q01CbG9j
a0J1ZmZlclJlZj4gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgICAgIHdlYm06OlN0YXR1cyByZWFkRnJhbWVEYXRh
KHdlYm06OlJlYWRlciYsIGNvbnN0IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB1aW50NjRfdCogYnl0
ZXNSZW1haW5pbmcpOworICAgICAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9jb21w
bGV0ZUJsb2NrQnVmZmVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV9jb21wbGV0
ZVBhY2tldFNpemU7CisgICAgICAgIC8vIEluaXRpYWwgYWxsb2NhdGlvbiBzaXplIG9mIGVtcHR5
IENNQmxvY2tCdWZmZXIuCisgICAgICAgIHNpemVfdCBtTWF4QmxvY2tCdWZmZXJDYXBhY2l0eSB7
IDAgfTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIENvZGVjVHlwZSBtX2NvZGVjOwogICAgICAg
ICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CiAgICAgICAgIFR5cGUgbV90cmFja1R5cGU7CiAg
ICAgICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2Zvcm1hdERlc2NyaXB0
aW9uOworICAgICAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9jdXJyZW50QmxvY2tC
dWZmZXI7CiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0mIG1fcGFyc2VyOworICAgICAg
ICAvLyBTaXplIG9mIHRoZSBjdXJyZW50bHkgaW5jb21wbGV0ZSBwYXJzZWQgcGFja2V0LgorICAg
ICAgICBzaXplX3QgbV9wYXJ0aWFsQnl0ZXNSZWFkIHsgMCB9OwogICAgIH07CiAKICAgICBjbGFz
cyBWaWRlb1RyYWNrRGF0YSA6IHB1YmxpYyBUcmFja0RhdGEgewpAQCAtMTkzLDkgKzIwNSw2IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSNpZiBFTkFCTEUoVlA5KQotICAgICAg
ICB2b2lkIHJlc2V0KCkgZmluYWw7Ci0jZW5kaWYKICAgICAgICAgd2VibTo6U3RhdHVzIGNvbnN1
bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVp
bnQ2NF90KiwgY29uc3QgQ01UaW1lJiwgaW50KSBmaW5hbDsKIAogICAgIHByaXZhdGU6CkBAIC0y
MDQsNyArMjEzLDYgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZQOSkKICAgICAgICAgdnA5X3Bh
cnNlcjo6VnA5SGVhZGVyUGFyc2VyIG1faGVhZGVyUGFyc2VyOwotICAgICAgICBSZXRhaW5QdHI8
Q01CbG9ja0J1ZmZlclJlZj4gbV9jdXJyZW50QmxvY2tCdWZmZXI7CiAjZW5kaWYKICAgICB9Owog
CkBAIC0yMjIsNyArMjMwLDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgd2VibTo6
U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVN
ZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwgaW50KSBmaW5hbDsKLSAgICAgICAg
dm9pZCByZXNldCgpIGZpbmFsOworICAgICAgICB2b2lkIHJlc2V0Q29tcGxldGVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgY3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBs
YXRlc3RCeXRlUmFuZ2VPZmZzZXQgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgcHJpdmF0ZToKQEAg
LTIzMCwxNSArMjM4LDExIEBAIHB1YmxpYzoKIAogICAgICAgICBDTVRpbWUgbV9zYW1wbGVQcmVz
ZW50YXRpb25UaW1lOwogICAgICAgICBDTVRpbWUgbV9wYWNrZXREdXJhdGlvbjsKLSAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fcGFja2V0c0RhdGE7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0OwotICAgICAgICAvLyBTaXplIG9mIHRoZSBj
b21wbGV0ZSBwYWNrZXRzIHBhcnNlZCBzbyBmYXIuCi0gICAgICAgIHNpemVfdCBtX3BhY2tldHNC
eXRlc1JlYWQgeyAwIH07Ci0gICAgICAgIHNpemVfdCBtX2J5dGVPZmZzZXQgeyAwIH07CisgICAg
ICAgIHNpemVfdCBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0IHsgMCB9OwogICAgICAgICB1aW50
OF90IG1fZnJhbWVzUGVyUGFja2V0IHsgMCB9OwogICAgICAgICBTZWNvbmRzIG1fZnJhbWVEdXJh
dGlvbiB7IDBfcyB9OwogICAgICAgICBWZWN0b3I8QXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlv
bj4gbV9wYWNrZXREZXNjcmlwdGlvbnM7Ci0KKyAgICAgICAgc2l6ZV90IG1OdW1GcmFtZXNJbkNv
bXBsZXRlQmxvY2sgeyAwIH07CiAgICAgICAgIC8vIEZJWE1FOiAwLjUgLSAxLjAgc2Vjb25kcyBp
cyBhIGJldHRlciBkdXJhdGlvbiBwZXIgc2FtcGxlIGJ1ZmZlciwgYnV0IHVzZSAyIHNlY29uZHMg
c28gYXQgbGVhc3QgdGhlIGZpcnN0CiAgICAgICAgIC8vIHNhbXBsZSBidWZmZXIgd2lsbCBwbGF5
IHVudGlsIHdlIGZpeCBNZWRpYVNhbXBsZUN1cnNvcjo6Y3JlYXRlU2FtcGxlQnVmZmVyIHRvIGRl
YWwgd2l0aCBgZW5kQ3Vyc29yYC4KICAgICAgICAgZmxvYXQgbV9taW5pbXVtU2FtcGxlRHVyYXRp
b24geyAyIH07CkBAIC0yODEsNyArMjg1LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0YXRlIG1fc3Rh
dGUgeyBTdGF0ZTo6Tm9uZSB9OwogCi0gICAgVW5pcXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJlYWRl
cj4gbV9yZWFkZXI7CisgICAgVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+IG1fcmVhZGVyOwogCiAg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxUcmFja0RhdGE+PiBtX3RyYWNrczsKICAgICB1c2luZyBCbG9j
a1ZhcmlhbnQgPSBWYXJpYW50PHdlYm06OkJsb2NrLCB3ZWJtOjpTaW1wbGVCbG9jaz47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5LmNwcAppbmRleCBkOGRjYjExMDEzY2U3NjdlODQzZjk5NzYwZDc0OTliOWJlNmMw
YzczLi5kMDA2YWNlYTA4YWY3YjE4MTY4MDY0MzgxMjVlZTllMTg5NjRiNjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5jcHAKQEAgLTE5Miw5ICsxOTIsMTMgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZmxhZykK
ICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRE
aXJ0eUNoYW5nZWQoZmxhZyksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lk
IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphcHBlbmQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmIGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmFwcGVu
ZChkYXRhLnZlY3RvcigpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
bWFwKGJ1ZmZlckhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgIGlmICghc2hhcmVkTWVtb3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUtPmFwcGVuZChzaGFyZWRNZW1vcnktPmNyZWF0ZVNoYXJlZEJ1ZmZl
cihidWZmZXJIYW5kbGUuZGF0YVNpemUpKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6YWJvcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaAppbmRleCBjOTEyOTAxNThkODNlYzk2MDI1ZWM5
NTkzM2YyYTMxYjc1ZTVlYTNmLi43N2Q4MjdhYjMwMzJhMTY0YjNmNGE3NmUwMTgxODZmZjdiOTE0
MzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgorI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhRGVzY3JpcHRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KQEAgLTg3LDcgKzg4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKICAgICB2b2lkIGNhblN3aXRjaFRvVHlwZShj
b25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogICAgIHZvaWQgc2V0TW9kZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlKTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGFw
cGVuZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwogICAgIHZvaWQgYWJvcnQoKTsK
ICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFT
b3VyY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBmZWZlOGY1
NWY5ZDg4NTljMWI1MDlmNjdiNTIzZjdjNzg1MDhkNzliLi44ZjYyMGJhMmU5NmZmZjYzMmVmM2Qw
MzJhNWIwYzQ3ODQ5OGZlMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yOSw3ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IE5v
dFJlZkNvdW50ZWQgewogICAgIFNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICBDYW5Td2l0Y2hU
b1R5cGUoV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUpIC0+IChib29sIGNhblN3aXRj
aCkgU3luY2hyb25vdXMKICAgICBTZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1v
ZGUgYXBwZW5kTW9kZSkKLSAgICBBcHBlbmQoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCisgICAg
QXBwZW5kKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgZGF0YSkKICAgICBBYm9ydCgp
CiAgICAgUmVzZXRQYXJzZXJTdGF0ZSgpCiAgICAgUmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggNmJhY2EzNGRjNzBkNDNj
OWY5NGJlM2NkMzE2ZWRiZGQxZTNlNTkzZi4uNzU2YjI0MGI2ZmE3YmI1YmU4ZWNiZmU3MGY5NTlj
OTg3MzE2NzhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAt
NDgsNiArNDgsMTkgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7
CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgICAgICBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSAtPiBjb25zdCB1aW50OF90KiB7CisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEo
KSk7CisgICAgICAgIH0sCisgICAgICAgIFtkYXRhU2l6ZV0gKCkgLT4gc2l6ZV90IHsKKyAgICAg
ICAgICAgIHJldHVybiBkYXRhU2l6ZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogdm9pZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6dGFrZU93bmVyc2hpcE9m
TWVtb3J5KE1lbW9yeUxlZGdlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oCmluZGV4IDU2YTFmNTY5OTc3MDVkYTAwYTlkYzQ2MTlmZTEyMzE0YWRkZmQyZjYuLmUz
NzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtMTUzLDYgKzE1Myw4IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVk
IHN5c3RlbVBhZ2VTaXplKCk7CiAKKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKwogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4p
CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodChQcm90ZWN0aW9uKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGZjYjAxMjIyMzQzZTc1OGRl
NjY0NjY4MzUyYmQxMjg0YTdmZmU0MzQuLjQ1OGUzYmE0YjA4YzgwODcxMWU1ZjJlYWYwNjUxZTdm
ZGRjNGZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNzgsMTIgKzc4
LDE5IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlKCkKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLnRv
VUludDY0KCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChW
ZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmICghbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5OjpBcHBlbmQoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpKSwgbV9yZW1vdGVTb3VyY2VCdWZm
ZXJJZGVudGlmaWVyKTsKKyAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoZGF0YSk7CisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIHNoYXJl
ZERhdGEtPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOworCisgICAgLy8gVGFrZSBvd25lcnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFy
ayBpdCBhcyBtZWRpYS1yZWxhdGVkIG1lbW9yeS4KKyAgICBoYW5kbGUudGFrZU93bmVyc2hpcE9m
TWVtb3J5KE1lbW9yeUxlZGdlcjo6TWVkaWEpOworCisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpB
cHBlbmQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIHNoYXJlZERh
dGEtPnNpemUoKSB9KSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphYm9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZS5oCmluZGV4IDE4Yjk5MDZjZGNjNjM0YzdiODAxNDUxMzdiM2UwYjljNDk1ODY4ODMuLjM2
MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3VyY2VC
dWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFsOwot
ICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGFwcGVuZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFi
b3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9p
ZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438913</attachid>
            <date>2021-09-21 21:01:17 -0700</date>
            <delta_ts>2021-09-21 21:04:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230329-20210922140116.patch</filename>
            <type>text/plain</type>
            <size>70764</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzNTRjZTU2ZTg3Mjc5
OWU1NGQ4NDA1Y2FmZjA1NmFjYmFlYTI5My4uZjM5ODllM2YwN2Q3MzdjYzQxMTc1NjJjMzA3MzQ3
NWRiN2FjZTE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA5LTIwICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9y
eSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8g
dGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAg
ICBVc2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgVmVjdG9yIHRvIHBhc3MgZGF0YSB0byB0aGUg
U291cmNlQnVmZmVyJ3MgcmVsYXRlZAorICAgICAgICBjbGFzc2VzIChTb3VyY2VCdWZmZXIsIFNv
dXJjZUJ1ZmZlclByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclBhcnNlcikuCisgICAgICAgIE1vZGlm
eSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIHRvIG5ldmVyIHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRp
b24gYW5kIGNvcHkKKyAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgY29udGVudC4gSW5zdGVh
ZCwgd2UgdXNlIENNQmxvY2tCdWZmZXIgb2JqZWN0cyB0aGF0IHJldGFpbiB0aGUKKyAgICAgICAg
YmFja2luZyBTaGFyZWRCdWZmZXIgYW5kIHVzZSBvZmZzZXRzIGluc2lkZSB0aGlzIFNoYXJlZEJ1
ZmZlciB0byByZWZlcmVuY2UgdGhlIGRhdGEuCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMgcmVxdWlyZXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBhcyBhIE5TRGF0YSBjYW4gd3JhcCBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gY2hhbmdlIGZyb20gYW4gb2JzZXJ2YWJsZSBzdGFu
ZHBvaW50IG90aGVyIHRoYW4gdGhlIEdQVSBtZW1vcnkgdXNhZ2UKKyAgICAgICAgYmVpbmcgZHJh
c3RpY2FsbHkgcmVkdWNlZCAoZnJvbSA3MDBNQiB3aGVuIHdhdGNoaW5nIGEgNEsvNjBmcHMgWW91
VHViZSB2aWRlbyB0byBqdXN0IG92ZXIgMjAwTUIKKyAgICAgICAgb24gYW4gaU1hYyBQcm8gKHdo
aWNoIG9ubHkgaGFzIHNvZnR3YXJlIFZQOSBkZWNvZGluZyksIDI1TUIgdnMgMzYwTUIgb24gYW4g
aVBhZCkKKyAgICAgICAgRXhpc3RpbmcgdGVzdHMgYXJlIGZ1bGx5IGV4ZXJjaXNpbmcgdGhpcyBu
ZXcgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cDogU2ltcGxpZnkgbG9naWMgYXJvdW5kIG1fcGVuZGluZ0FwcGVuZERhdGEgbWVtYmVyLgorICAg
ICAgICBPbmx5IG9uZSBhcHBlbmRCdWZmZXIgb3BlcmF0aW9uIGNhbiBiZSBwZW5kaW5nIGF0IGFu
eSBnaXZlbiB0aW1lIG90aGVyd2lzZSBhcHBlbmRCdWZmZXIKKyAgICAgICAgd2lsbCB0aHJvdyBh
biBleGNlcHRpb247IGFzIHN1Y2gsIHRoZXJlJ3Mgbm8gbmVlZCB0byBhcHBlbmQgdGhlIGRhdGEg
dG8gYSB2ZWN0b3I6ICJ0aGVyZSBjYW4KKyAgICAgICAgYmUgb25seSBvbmUiLgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjphYm9ydElmVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5VG8gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDogQWRkIG5ldyBEYXRhU2VnbWVudCB0eXBlIHRoYXQgdGFr
ZXMgYSBQcm92aWRlciBpbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgQSBQcm92aWRlciBwcm92aWRl
cyB0d28gRnVuY3Rpb24gbWVtYmVycyBkYXRhIGFuZCBzaXplLgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDogVGhlIEF1ZGlvRmlsZVJlYWRl
ckNvY29hIHJlcXVpcmVkCisgICAgICAgIHRoZSBDTUJsb2NrQnVmZmVyIGNvbnRhaW5pbmcgdGhl
IGNvbXByZXNzZWQgY29udGVudCB0byBiZSBjb250aWd1b3VzLiBUaGlzIGlzIG5vCisgICAgICAg
IGxvbmdlciBndWFyYW50ZWVkIHNvIGVuc3VyZSB0aGF0IHRoZSBDTUJsb2NrQnVmZmVyIGlzIGNv
bnRpZ3VvdXMuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJN
RGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBl
bmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNl
Z21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6cmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OnRha2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OmNv
bnRpZ3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y29uc3Vt
ZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpW
aWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpyZXNldENvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6
Y29uc3VtZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmZsdXNoUGVuZGluZ0F1ZGlvQnVmZmVycyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5o
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpy
ZXNldENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpUcmFja0RhdGE6OnJlc2V0KToKKwogMjAyMS0wOS0wNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgogCiAgICAgICAgIERlY29kaW5nIHdlYm0gZmlsZSB3aXRoIG1vcmUgdGhh
biAyIGNoYW5uZWxzIHdpbGwgZmFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggYjM0MmU4ZGY2MzJh
NDhjM2Q5NWUyMWNkODg3MDhiMmU0YThiNDgxNy4uZTY1ODNkZTk5MTU5ODFmN2E4NDIyNmM5Yzc4
NzkzMWIyNmZhNjc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDktMjAgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
U2hhcmVkTWVtb3J5IGZvciB0cmFuc2ZlcnJpbmcgYXBwZW5kZWQgYnVmZmVycyBmcm9tIFNvdXJj
ZUJ1ZmZlciB0byB0aGUgR1BVIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMDMyOQorICAgICAgICByZGFyOi8vcHJvYmxlbS84MzI5MTQ5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcDoKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaDogQWRkIHJlcXVpcmVkIENvcmVNZWRpYSBtZXRob2RzLgorCiAyMDIxLTA5LTA3ICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVjb2Rpbmcgd2Vi
bSBmaWxlIHdpdGggbW9yZSB0aGFuIDIgY2hhbm5lbHMgd2lsbCBmYWlsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIx
YjlkZWI2YjVhNWFkMWY5MjMyZWU1MGE1M2Q3NzQwNzFmNTU0N2IuLmI1YzdmY2YxMGNhZGRjMTlh
OTIxMzVmMjMyNWE1MTAzNzc1ZmE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEt
MDktMjAgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
U2hhcmVkTWVtb3J5IGZvciB0cmFuc2ZlcnJpbmcgYXBwZW5kZWQgYnVmZmVycyBmcm9tIFNvdXJj
ZUJ1ZmZlciB0byB0aGUgR1BVIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMDMyOQorICAgICAgICByZGFyOi8vcHJvYmxlbS84MzI5MTQ5
NQorCisgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgdG8gcGFzcyBTb3VyY2VCdWZmZXIgY29udGVu
dCB0byBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBpbiBHUFUgcHJvY2Vzcy4KKyAgICAgICAgVGhp
cyBpcyBkb25lIGJ5IHdyYXBwaW5nIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFwcGVuZCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpj
cmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjph
cHBlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuaDoKKwogMjAyMS0wOS0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBUZWFjaCBgV2ViS2l0OjpjcmVhdGVTaGFyZWFibGVCaXRtYXBg
IHRvIHNuYXBzaG90IHZpZGVvIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZjQ1ODRmZjM1MjgyNTZjZTkw
NzA1ODQ2YzgwZGE1ZWRlMDY0NjgzYy4uYmFlZTlhMTFiNTAxYTQxNWM0Y2Y5YmQ2ZjM1NzkzNWQ2
NDMyMjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJMaXN0Lmgi
CiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xp
c3QuaCIKQEAgLTM5NCw3ICszOTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YWJvcnRJZlVwZGF0
aW5nKCkKIAogICAgIC8vIDQuMS4gQWJvcnQgdGhlIGJ1ZmZlciBhcHBlbmQgYWxnb3JpdGhtIGlm
IGl0IGlzIHJ1bm5pbmcuCiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7Ci0gICAgbV9w
ZW5kaW5nQXBwZW5kRGF0YS5jbGVhcigpOworICAgIG1fcGVuZGluZ0FwcGVuZERhdGEgPSBudWxs
cHRyOwogICAgIG1fcHJpdmF0ZS0+YWJvcnQoKTsKIAogICAgIC8vIDQuMi4gU2V0IHRoZSB1cGRh
dGluZyBhdHRyaWJ1dGUgdG8gZmFsc2UuCkBAIC00OTQsNyArNDk1LDggQEAgRXhjZXB0aW9uT3I8
dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLAogCiAgICAgLy8gTk9URTogUmV0dXJuIHRvIDMuMiBhcHBlbmRCdWZmZXIoKQog
ICAgIC8vIDMuIEFkZCBkYXRhIHRvIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlci4KLSAgICBt
X3BlbmRpbmdBcHBlbmREYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBBU1NFUlQoIW1fcGVu
ZGluZ0FwcGVuZERhdGEpOworICAgIG1fcGVuZGluZ0FwcGVuZERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBzaXplKTsKIAogICAgIC8vIDQuIFNldCB0aGUgdXBkYXRpbmcgYXR0cmli
dXRlIHRvIHRydWUuCiAgICAgbV91cGRhdGluZyA9IHRydWU7CkBAIC01MjQsMTggKzUyNiwxNCBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAv
LyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKIAorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERh
dGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJ
ZiB0aGUgaW5wdXQgYnVmZmVyIGlzIGVtcHR5LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBk
YXRhIHN0ZXAgYmVsb3cuCi0gICAgaWYgKCFtX3BlbmRpbmdBcHBlbmREYXRhLnNpemUoKSkgewor
ICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNv
dXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2Nl
ZWRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBNYW51YWxseSBjbGVhciBv
dXQgdGhlIG1fcGVuZGluZ0FwcGVuZERhdGEgVmVjdG9yLCBpbiBjYXNlIHRoZSBwbGF0Zm9ybSBp
bXBsZW1lbnRhdGlvbgotICAgIC8vIHJlamVjdHMgYXBwZW5kaW5nIHRoZSBidWZmZXIgZm9yIHdo
YXRldmVyIHJlYXNvbi4KLSAgICAvLyBGSVhNRTogVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBn
dWFyYW50ZWUgdGhlIG1vdmUgZnJvbSB0aGlzIFZlY3RvciwgYW5kIHdlIHNob3VsZAotICAgIC8v
IGFzc2VydCBoZXJlIHRvIGNvbmZpcm0gdGhhdC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzgwMDMuCi0gICAgbV9wcml2YXRlLT5hcHBlbmQoV1RGTW92ZSht
X3BlbmRpbmdBcHBlbmREYXRhKSk7Ci0gICAgbV9wZW5kaW5nQXBwZW5kRGF0YS5jbGVhcigpOwor
ICAgIG1fcHJpdmF0ZS0+YXBwZW5kKGFwcGVuZERhdGEucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBw
ZW5kUmVzdWx0IHJlc3VsdCkKQEAgLTEyMTEsNyArMTIwOSwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZVJlcG9ydEV4dHJhTWVtb3J5Q29zdCh1aW50NjRfdCBleHRy
YU1lbW9yeQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQo
dWludDY0X3QgZXh0cmFNZW1vcnkpCiB7Ci0gICAgdWludDY0X3QgZXh0cmFNZW1vcnlDb3N0ID0g
bV9wZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpICsgZXh0cmFNZW1vcnk7CisgICAgdWludDY0
X3QgZXh0cmFNZW1vcnlDb3N0ID0gZXh0cmFNZW1vcnk7CisgICAgaWYgKG1fcGVuZGluZ0FwcGVu
ZERhdGEpCisgICAgICAgIGV4dHJhTWVtb3J5Q29zdCArPSBtX3BlbmRpbmdBcHBlbmREYXRhLT5z
aXplKCk7CisKICAgICBpZiAoZXh0cmFNZW1vcnlDb3N0IDw9IG1fcmVwb3J0ZWRFeHRyYU1lbW9y
eUNvc3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggODg4ZDJkNmU5OGRhYmY5N2RhYmUxYzkx
ZjI0OGIxMDg1ZDY5MmI2MS4uYTcyMzNkMjFlMDgxYWE0YThkODQyNTRiMjkzYTczMmY2ODQxM2U4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oCkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8
dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7CiAKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hh
cj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BlbmRp
bmdBcHBlbmREYXRhOwogICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAKICAgICBSZWZQ
dHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCmluZGV4IGExOTE3ODE0NzNkY2FjNzZjNWIw
NDE1NTY5MTg0MTQ3MGQzYTIyNDMuLmYyM2Q2NjMyMjBkYzc0Mjk4YjliOWRkOTAxZDBjYzY1ZmFh
NTVjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExp
bmsuY3BwCkBAIC0xMTMsNiArMTEzLDggQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRWZXJ0aWNhbExheW91dF8KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzLCBPU1N0YXR1
cywgKENGQWxsb2NhdG9yUmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgQ01CbG9ja0J1ZmZlclJlZiBz
b3VyY2VCdWZmZXIsIENGQWxsb2NhdG9yUmVmIGJsb2NrQWxsb2NhdG9yLCBjb25zdCBDTUJsb2Nr
QnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UqIGN1c3RvbUJsb2NrU291cmNlLCBzaXplX3Qgb2Zmc2V0
VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzLCBDTUJs
b2NrQnVmZmVyUmVmKiBibG9ja0J1ZmZlck91dCksIChzdHJ1Y3R1cmVBbGxvY2F0b3IsIHNvdXJj
ZUJ1ZmZlciwgYmxvY2tBbGxvY2F0b3IsIGN1c3RvbUJsb2NrU291cmNlLCBvZmZzZXRUb0RhdGEs
IGRhdGFMZW5ndGgsIGZsYWdzLCBibG9ja0J1ZmZlck91dCksIFBBTF9FWFBPUlQpCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CbG9j
a0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSwgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVm
IHRoZUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiB0YXJnZXRCQnVmLCBzaXplX3Qgb2Zmc2V0VG9E
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzKSwgKHRoZUJ1
ZmZlciwgdGFyZ2V0QkJ1Ziwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncyksIFBBTF9F
WFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENv
cmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNyZWF0ZUVtcHR5LCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgdWludDMyX3Qgc3ViQmxvY2tDYXBhY2l0eSwgQ01CbG9j
a0J1ZmZlckZsYWdzIGZsYWdzLCBDTUJsb2NrQnVmZmVyUmVmKiBibG9ja0J1ZmZlck91dCksIChz
dHJ1Y3R1cmVBbGxvY2F0b3IsIHN1YkJsb2NrQ2FwYWNpdHksIGZsYWdzLCBibG9ja0J1ZmZlck91
dCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZSwgRm91
ckNoYXJDb2RlLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQ
T1JUKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3Jl
TWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUsIENNTWVkaWFUeXBlLCAoQ01G
b3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQT1JUKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKaW5kZXggZDRmZjA0Njhj
MzE4YzJmMzQ1ZGE5ODQ1OWZlNzE0OWIzNzViNDNkZS4uNWZkZmY4NDc5YjUzMTVjZGFhYjEwYzc2
OWI1ZmU5ZTY0NGMyNTM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaApAQCAtMTc1LDYgKzE3NSwxMCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X1JpZ2h0VG9MZWZ0
LAogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9j
a0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0
dXJlQWxsb2NhdG9yLCBDTUJsb2NrQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgQ0ZBbGxvY2F0b3JS
ZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSog
Y3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVy
T3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgc291cmNlQnVmZmVyLCBibG9ja0FsbG9jYXRvciwg
Y3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2Nr
QnVmZmVyT3V0KSkKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMgc29mdExp
bmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZl
clJlZmVyZW5jZSwgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciwgQ01CbG9j
a0J1ZmZlclJlZiB0YXJnZXRCQnVmLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzKSwgKHRoZUJ1ZmZlciwgdGFyZ2V0QkJ1Ziwg
b2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncykpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJB
cHBlbmRCdWZmZXJSZWZlcmVuY2Ugc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJBcHBl
bmRCdWZmZXJSZWZlcmVuY2UKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHksIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgc3RydWN0dXJlQWxsb2NhdG9yLCB1aW50MzJfdCBzdWJCbG9ja0NhcGFjaXR5LCBDTUJsb2Nr
QnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0
cnVjdHVyZUFsbG9jYXRvciwgc3ViQmxvY2tDYXBhY2l0eSwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0
KSkKKyNkZWZpbmUgQ01CbG9ja0J1ZmZlckNyZWF0ZUVtcHR5IHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlLCBGb3VyQ2hh
ckNvZGUsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENN
Rm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUgc29mdExpbmtfQ29yZU1lZGlhX0NNRm9y
bWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFUeXBlLCBDTU1l
ZGlhVHlwZSwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDA1NGNlNWE0MjkyNGM0ZDlmMGM2
OWYyZGE4NmQ5MDc3OWE5MTA4MTUuLmZkOWVjNzU5NzM3ZDRjOTc1OTgzMWU3NzI0MzU5YmUyZTg2
NjI0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTIs
NiArNTIsMTIgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgOiBtX3NpemUo
cHJvdmlkZXIuc2l6ZSgpKQoreworICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworfQorCiBTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRh
dGEpKTsKQEAgLTIzNiw2ICsyNDIsMTEgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVy
KSkpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAg
ICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTI2NywxMiArMjc4LDQwIEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZp
eCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKLSAgICBBU1NFUlQobGVuZ3RoIDw9IHNpemUoKSk7Cisg
ICAgcmV0dXJuIGNvcHlUbyhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKK30KKwordm9pZCBTaGFy
ZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3QKK3sKKyAgICBBU1NFUlQobGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7
CisgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJl
bWFpbmluZyA9IHN0ZDo6bWluKGxlbmd0aCwgc2l6ZSgpIC0gb2Zmc2V0KTsKKyAgICBpZiAoIXJl
bWFpbmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZWdtZW50ID0gYmVnaW4oKTsK
KyAgICBpZiAob2Zmc2V0ID49IHNlZ21lbnQtPnNlZ21lbnQtPnNpemUoKSkgeworICAgICAgICBh
dXRvIGNvbXBhcmF0b3IgPSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2Vn
bWVudFZlY3RvckVudHJ5JiBlbnRyeSkgeworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uIDwg
ZW50cnkuYmVnaW5Qb3NpdGlvbjsKKyAgICAgICAgfTsKKyAgICAgICAgc2VnbWVudCA9IHN0ZDo6
dXBwZXJfYm91bmQoc2VnbWVudCwgZW5kKCksIG9mZnNldCwgY29tcGFyYXRvcik7CisgICAgICAg
IHNlZ21lbnQtLTsgLy8gc3RkOjp1cHBlcl9ib3VuZCBnaXZlcyBhIHBvaW50ZXIgdG8gdGhlIHNl
Z21lbnQgdGhhdCBpcyBncmVhdGVyIHRoYW4gb2Zmc2V0LiBXZSB3YW50IHRoZSBzZWdtZW50IGp1
c3QgYmVmb3JlIHRoYXQuCisgICAgfQogICAgIGF1dG8gZGVzdGluYXRpb25QdHIgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb24pOwotICAgIGF1dG8gcmVtYWluaW5nID0gc3RkOjpt
aW4obGVuZ3RoLCBzaXplKCkpOwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMp
IHsKLSAgICAgICAgc2l6ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjptaW4ocmVtYWlu
aW5nLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlv
blB0ciwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIGFtb3VudFRvQ29weVRoaXNUaW1lKTsKKwor
ICAgIHNpemVfdCBwb3NpdGlvbkluU2VnbWVudCA9IG9mZnNldCAtIHNlZ21lbnQtPmJlZ2luUG9z
aXRpb247CisgICAgc2l6ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjptaW4ocmVtYWlu
aW5nLCBzZWdtZW50LT5zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbkluU2VnbWVudCk7CisgICAg
bWVtY3B5KGRlc3RpbmF0aW9uUHRyLCBzZWdtZW50LT5zZWdtZW50LT5kYXRhKCkgKyBwb3NpdGlv
bkluU2VnbWVudCwgYW1vdW50VG9Db3B5VGhpc1RpbWUpOworICAgIHJlbWFpbmluZyAtPSBhbW91
bnRUb0NvcHlUaGlzVGltZTsKKyAgICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgcmV0dXJuOwor
ICAgIGRlc3RpbmF0aW9uUHRyICs9IGFtb3VudFRvQ29weVRoaXNUaW1lOworCisgICAgLy8gSWYg
d2UgcmVhY2ggaGVyZSwgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBhbm90aGVyIHNlZ21lbnQgYXZh
aWxhYmxlIGFzIHdlIGhhdmUgY29udGVudCBsZWZ0IHRvIGJlIGZldGNoZWQuCisgICAgZm9yICgr
K3NlZ21lbnQ7IHNlZ21lbnQgIT0gZW5kKCk7ICsrc2VnbWVudCkgeworICAgICAgICBzaXplX3Qg
YW1vdW50VG9Db3B5VGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNlZ21lbnQtPnNlZ21l
bnQtPnNpemUoKSk7CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC0+c2Vn
bWVudC0+ZGF0YSgpLCBhbW91bnRUb0NvcHlUaGlzVGltZSk7CiAgICAgICAgIHJlbWFpbmluZyAt
PSBhbW91bnRUb0NvcHlUaGlzVGltZTsKICAgICAgICAgaWYgKCFyZW1haW5pbmcpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zMTIsNyArMzUxLDggQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICAg
ICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4g
ZGF0YS0+ZGF0YSgpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5kYXRhKCkpOyB9CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRh
KCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJuIHBy
b3ZpZGVyLmRhdGEoKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwg
bV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM5NSw3ICs0MzUsOCBAQCBzaXplX3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICAg
ICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4g
ZGF0YS0+c2l6ZSgpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfQorICAgICAgICBbXShj
b25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXpl
KCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4gcHJv
dmlkZXIuc2l6ZSgpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBt
X2ltbXV0YWJsZURhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApp
bmRleCAyMzY5YWFkOGIzNTYzOWUyZWE1YTlhZDE4MjY4NTUzNzk1ZTZiNzcwLi5iOGZkNjExMjVm
NGJhNDc3YmEyMTM3MTM5MjEyYWI2N2Y2ZmRhN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KQEAgLTEyMyw2ICsxMjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWY8
U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAgIC8vIERh
dGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBp
dCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgogICAgIC8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KQEAgLTE0OCw2
ICsxNTAsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKKyAgICAgICAgc3Ry
dWN0IFByb3ZpZGVyIHsKKyAgICAgICAgICAgIFdURjo6RnVuY3Rpb248Y29uc3QgdWludDhfdCoo
KT4gZGF0YTsKKyAgICAgICAgICAgIFdURjo6RnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAg
ICAgIH07CisKKyAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVy
JiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShw
cm92aWRlcikpKTsgfQorCiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC0xNzEsNiArMTgwLDggQEAg
cHVibGljOgogI2VuZGlmCiAgICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZGF0YSkKICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQorICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCiAgICAgICAg
IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKQEAgLTE4MiwxMCArMTkzLDEz
IEBAIHB1YmxpYzoKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgICAgICAgICAgUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhLAorICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCisgICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisKICAgICB2b2lk
IGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYpPiYpIGNvbnN0OwogICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCkBAIC0yMTYsNiArMjMwLDcgQEAgcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKICNpZiBVU0UoQ0YpCiAgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNw
cAppbmRleCAxYjBkNDhlMzlhOGM3YjdiY2EyZTlkYjM0MjZhOTE0OGEwNjhhZThlLi4yMDc3NmM5
YTNkZjJhNWU1Mjk2MGJiNDg2NjA1MDliZWUyODU5NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgiCiAjaW5jbHVkZSA8QXVkaW9U
b29sYm94L0F1ZGlvQ29udmVydGVyLmg+CkBAIC0xMjksNiArMTMwLDcgQEAgY2xhc3MgQXVkaW9G
aWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJs
aWM6CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKICAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBtX3RyYWNrOwogI2VuZGlmCkBA
IC0xODAsNiArMTgyLDcgQEAgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6OmlzTWF5YmVXZWJNKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKSBjb25zdAogeworICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YVNpemUpOwogICAgIGF1dG8g
cGFyc2VyID0gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSk7CiAgICAgYm9v
bCBlcnJvciA9IGZhbHNlOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF1ZGlvVHJhY2tJ
ZDsKQEAgLTIxMiwxMiArMjE1LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJX
ZWJNRGF0YT4gQXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIHRyYWNrLT5zZXREaXNjYXJkUGFkZGluZyhkaXNjYXJkUGFk
ZGluZyk7CiAgICAgfSk7Ci0gICAgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50IHNlZ21lbnQo
eyBkYXRhLCBkYXRhU2l6ZSB9KTsKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQgc2Vn
bWVudChtYWtlUmVmKGJ1ZmZlci5nZXQoKSkpOwogICAgIHBhcnNlci0+YXBwZW5kRGF0YShXVEZN
b3ZlKHNlZ21lbnQpKTsKICAgICBpZiAoIXRyYWNrKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBwYXJzZXItPmZsdXNoUGVuZGluZ0F1ZGlvQnVmZmVycygpOwotICAgIHJldHVybiBtYWtl
VW5pcXVlPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7
IHRyYWNrLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNhbXBs
ZXMpIH0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPihB
dWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7IFdURk1vdmUoYnVmZmVyKSwgdHJhY2sucmVsZWFzZU5v
bk51bGwoKSwgV1RGTW92ZShkdXJhdGlvbiksIFdURk1vdmUoc2FtcGxlcykgfSk7CiB9CiAKIHN0
cnVjdCBQYXNzdGhyb3VnaFVzZXJEYXRhIHsKQEAgLTM0NywxNiArMzUwLDIxIEBAIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVy
TGlzdCYgYnVmZmVyTGlzCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3dlYm1EYXRhLT5t
X3NhbXBsZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgYXV0byYgc2FtcGxlID0gbV93ZWJtRGF0
YS0+bV9zYW1wbGVzW2ldOwogICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIg
PSBzYW1wbGUtPnNhbXBsZUJ1ZmZlcigpOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IFBBTDo6Q01T
YW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlcik7Ci0gICAgICAgIEFTU0VSVChQ
QUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhidWZmZXIsIDAsIDApKTsKLSAgICAg
ICAgaWYgKCFQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhidWZmZXIsIDAsIDAp
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0byBy
ZWFkIHNhbXBsZSBjb250ZW50IChub3QgY29udGlndW91cykiKTsKLSAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIGF1dG8gcmF3QnVmZmVyID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldERh
dGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsKKyAgICAgICAgUmV0YWluUHRyPENNQmxvY2tCdWZmZXJS
ZWY+IGJ1ZmZlciA9IHJhd0J1ZmZlcjsKKyAgICAgICAgLy8gTWFrZSBzdXJlIGJsb2NrIGJ1ZmZl
ciBpcyBjb250aWd1b3VzLgorICAgICAgICBpZiAoIVBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VD
b250aWd1b3VzKHJhd0J1ZmZlciwgMCwgMCkpIHsKKyAgICAgICAgICAgIENNQmxvY2tCdWZmZXJS
ZWYgY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoUEFMOjpDTUJs
b2NrQnVmZmVyQ3JlYXRlQ29udGlndW91cyhudWxscHRyLCByYXdCdWZmZXIsIG51bGxwdHIsIG51
bGxwdHIsIDAsIDAsIDAsICZjb250aWd1b3VzQnVmZmVyKSAhPSBrQ01CbG9ja0J1ZmZlck5vRXJy
KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQg
dG8gY3JlYXRlIGNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlciA9IGFkb3B0Q0YoY29u
dGlndW91c0J1ZmZlcik7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgc3JjU2l6ZSA9IFBB
TDo6Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoYnVmZmVyKTsKKyAgICAgICAgc2l6ZV90IHNy
Y1NpemUgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgIGNoYXIqIHNyY0RhdGEgPSBudWxscHRyOwotICAgICAgICBpZiAoUEFMOjpDTUJsb2Nr
QnVmZmVyR2V0RGF0YVBvaW50ZXIoYnVmZmVyLCAwLCBudWxscHRyLCBudWxscHRyLCAmc3JjRGF0
YSkgIT0gbm9FcnIpIHsKKyAgICAgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQb2lu
dGVyKGJ1ZmZlci5nZXQoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJnNyY0RhdGEpICE9IG5vRXJy
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0byBy
ZXRyaWV2ZSBkYXRhIik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwCmluZGV4IDIyNjY1YmJlNjYwOTdiNWI4OWQwNDAyZWEyNDk0ZTk1ZmVhMGY3NDcu
LmE0ODJjMTU0OWU5NGM1YTQwY2JhYjFkY2NiMmVmNjZhZDcwYWJkMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJTYW1wbGVNYXAuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgpAQCAtMTMxNSw2ICsxMzE2LDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlk
UmVjZWl2ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBk
YXRlSGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBl
bmQoYnVmZmVyLT5leHRyYWN0RGF0YSgpKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
OjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaAppbmRleCBlZGI1MWFkNTYwMzQ2MTc0NTY0ZTIxMTFjZWQyODEyNWZhYzEwMmFiLi5m
NTk3NGRmZjcxNDIyYjIzNDMxYTRmYjNlYTZjOTc1YmU0NTg3M2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBA
IC00OCw2ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgVGltZVJhbmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRN
b2RlIDogdWludDhfdCB7CkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmKSA9IDA7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CkBAIC0xNDcsNiArMTQ4LDggQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByb3RlY3RlZDoKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZCBzaG91
bGQgbmV2ZXIgYmUgY2FsbGVkIGRpcmVjdGx5IGFuZCBiZSBvdmVycmlkZGVuIGluc3RlYWQuCisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hh
cj4mJik7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gezIwMDIsIDI0MDAwfTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2Vla2luZygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBhZjJhMmU2YzA0YWY1M2I2MmEzNWJiMDc5MWI2Y2M1
ODkwMDllMWE1Li5lYzRlMzQxMmVkNTU2N2FjNzUzMTk1MTdmMjk3ZDAwYTYzYTU2Y2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0KQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2lt
cG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9y
dCAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9y
dCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KQEAgLTIxMSw4ICsyMTIsOCBAQCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiAKIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFn
cykKIHsKLSAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50
LnRha2VWZWN0b3IoKSk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigp
OworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBp
ZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250
aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkg
d2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaAppbmRleCA5MmQ5YzhkZDUyZjdjNTIwMmQxNmU3ZjhhZmE3MDdlZDJiNjU3ZTdl
Li40MTM2MWFjNjE5NDk2ODg4MDM4ZWVkNmM4MTNhNjQ4M2Y5MDlkYWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTE0
OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRy
YWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAg
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFw
cGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7
CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJv
bU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGZmYTJmYmEwZGYwNmU4ZWRkNjRhYmNj
YmQ0ZjdhYWU1MzAwOTdmNTIuLjlhODQ2OTYxNTg4OTgyZDlhN2E4ZDFkZDU3ZDMwYTc0ZGVhNzE1
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCkBAIC01NzIsOSArNTcyLDkgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3Qg
Z2xvYmFsRGF0YVBhcnNlclF1ZXVlKCkKICAgICByZXR1cm4gZ2xvYmFsUXVldWU7CiB9CiAKLXZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hh
cj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJk
YXRhIGxlbmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlQoIW1faGFz
U2Vzc2lvblNlbWFwaG9yZSk7CiAgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IDE2YmNiZTBjNTc3ZmM0MjBkYmE0NzcwZTEzNjU1M2Q5
NzAzNThlMzMuLjMzYmUzNTJhNTQzNDQ2ZjIxZTIzYWE1NjI3MGRjZWFlMTY4NjE1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCiAKICNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCiAjaW5jbHVkZSA8cGFsL2NvY29hL01lZGlhVG9v
bGJveFNvZnRMaW5rLmg+CkBAIC03Nyw4ICs3OCw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
OjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNlQnVm
ZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIHNlZ21lbnQpCi0g
ICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICA6IG1fc2VnbWVu
dChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CiAKQEAgLTk4LDkgKzk5LDkgQEAgc2l6ZV90IFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4g
Y2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdl
dCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB2ZWN0b3IpCisgICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2ZWN0b3Iuc2l6ZSgpOworICAgICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgKTsKIH0KQEAgLTExOSwx
NSArMTIwLDE1IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6
ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWluCiAgICAgICAgICAgICByZXR1cm4g
c2l6ZVJlYWQ7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKICAgICAgICAgewotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCB2ZWN0b3Iu
ZGF0YSgpICsgcG9zaXRpb24sIHNpemVUb1JlYWQpOworICAgICAgICAgICAgYnVmZmVyLT5jb3B5
VG8oZGVzdGluYXRpb24sIHBvc2l0aW9uLCBzaXplVG9SZWFkKTsKICAgICAgICAgICAgIHJldHVy
biBzaXplVG9SZWFkOwogICAgICAgICB9CiAgICAgKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVZlY3RvcigpCitSZWY8U2hhcmVkQnVmZmVy
PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogewogICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JN
QVRfUkVBREVSKQpAQCAtMTM1LDEyICsxMzYsMjggQEAgVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1
ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVZlY3RvcigpCiAgICAgICAgIHsKICAgICAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSgpKTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJp
bmsocmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdmVjdG9yOworICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUodmVjdG9yKSk7CisgICAgICAgIH0sCisjZW5kaWYKKyAgICAgICAgWyZdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4
Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgIH0KKyAgICAp
OworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9z
ZWdtZW50LAorI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCisgICAgICAgIFsmXShj
b25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRC
dWZmZXI+CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
LAogI2VuZGlmCi0gICAgICAgIFtdKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgICAgICBb
Jl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4KICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UodmVjdG9yLCB7
IH0pOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQogICAgICk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDRlZTg2YjJjZmE2MGVlYTZkZjZkMjk3NzUy
NTcwNWUyNjNlNWE1OWMuLjZlYzQzOGZlOTFkNThiYjhkOGFkZDFhZDIwM2Y1NjExZjk5MGU0YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGlj
OgpAQCAtNjYsOSArNjcsMTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9S
RUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4m
Jik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChWZWN0b3I8dWludDhfdD4mJik7CisgICAgICAg
IFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYm
KSA9IGRlZmF1bHQ7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlVmVjdG9yKCk7CisgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgLy8gV2ls
bCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZl
ci4KKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7
CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IHJlYWQoc2l6
ZV90IHBvc2l0aW9uLCBzaXplX3QsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKSBjb25zdDsKQEAgLTc4
LDcgKzgxLDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAg
ICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+CisgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgog
ICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCmluZGV4IGVlZDZlMjAyODk4Yzc0ODBjMGU0OWNkNTRjZDMzOTFhYmJhNTQ3MTEuLmMw
NjM3YTNkOGVlN2RlZGJmNzZkYjc1Y2M1OGYwNjZkMDEzZmM4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgc3RhdGljIGJvb2wgaXNXZWJt
UGFyc2VyQXZhaWxhYmxlKCkKIAogdXNpbmcgbmFtZXNwYWNlIHdlYm07CiAKLWNsYXNzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlN0cmVhbWluZ1ZlY3RvclJlYWRlciBmaW5hbCA6IHB1YmxpYyB3
ZWJtOjpSZWFkZXIgeworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U2VnbWVudFJlYWRl
ciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU2VnbWVudChTZWdtZW50JiYgc2VnbWVudCkK
QEAgLTM1NCw2ICszNTQsODQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a1dvdWxkQmxvY2spOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIEZyZWVCbG9jayh2b2lk
KiByZWZjb24sIHZvaWQqLCBzaXplX3QpCisgICAgeworICAgICAgICBhdXRvKiBidWZmZXIgPSBy
ZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAg
ICAgICBidWZmZXItPmRlcmVmKCk7CisgICAgfQorCisgICAgU3RhdHVzIFJlYWRJbnRvKHN0ZDo6
c2l6ZV90IG51bVRvUmVhZCwgQ01CbG9ja0J1ZmZlclJlZiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90
KiBudW1BY3R1YWxseVJlYWQpCisgICAgeworICAgICAgICBBU1NFUlQob3V0cHV0QnVmZmVyICYm
IG51bUFjdHVhbGx5UmVhZCk7CisgICAgICAgIGlmICghbnVtQWN0dWFsbHlSZWFkKQorICAgICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgICAg
ICpudW1BY3R1YWxseVJlYWQgPSAwOworICAgICAgICBpZiAoIW91dHB1dEJ1ZmZlcikKKyAgICAg
ICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAg
ICB3aGlsZSAobnVtVG9SZWFkICYmIG1fY3VycmVudFNlZ21lbnQgIT0gbV9kYXRhLmVuZCgpKSB7
CisgICAgICAgICAgICBhdXRvJiBjdXJyZW50U2VnbWVudCA9ICptX2N1cnJlbnRTZWdtZW50Owor
CisgICAgICAgICAgICBpZiAobV9wb3NpdGlvbldpdGhpblNlZ21lbnQgPj0gY3VycmVudFNlZ21l
bnQuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1
ZmZlcigpOworICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51
bGxwdHI7CisgICAgICAgICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CisgICAgICAgICAgICBz
aXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICAg
ICAgICAgIGlmICghc2hhcmVkQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY291bGQg
cG90ZW50aWFsbHkgYWxsb2NhdGUgbW9yZSBtZW1vcnkgdGhhbiBuZWVkZWQgaWYgdGhlIHJlYWQg
aXMgcGFydGlhbC4KKyAgICAgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudW1U
b1JlYWQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bVRvUmVhZCwga0NNQmxv
Y2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAgICAg
ICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICAgICAg
ICAgIHVpbnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAg
c2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgZXJyID0g
UEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIocmF3QmxvY2tCdWZmZXIsIDAsICZzZWdt
ZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGVyciAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAg
ICAgICAgICAgICAgbGFzdFJlYWQgPSBjdXJyZW50U2VnbWVudC5yZWFkKG1fcG9zaXRpb25XaXRo
aW5TZWdtZW50LCBudW1Ub1JlYWQsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAg
ZGVzdGluYXRpb25PZmZzZXQgPSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFs
IHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKKyAg
ICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUg
cmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRh
U2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkg
Y3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQg
c2luY2UgdGhlIHByZXZpb3VzIG9uZT8KKyAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVu
dCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVudDsKKyAgICAgICAgICAgICAgICBzaXpl
X3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNp
emUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsKKyAgICAgICAgICAgICAgICAvLyBGcm9t
IENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSBkb2N1bWVudGF0aW9uOgorICAgICAgICAg
ICAgICAgIC8vIE5vdGUgdGhhdCBmb3IgNjQtYml0IGFyY2hpdGVjdHVyZXMsIHRoaXMgc3RydWN0
IGNvbnRhaW5zIG1pc2FsaWduZWQgZnVuY3Rpb24gcG9pbnRlcnMuCisgICAgICAgICAgICAgICAg
Ly8gVG8gYXZvaWQgbGluay10aW1lIGlzc3VlcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBjbGll
bnRzIGZpbGwgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlJ3MgZnVuY3Rpb24gcG9pbnRl
ciBmaWVsZHMKKyAgICAgICAgICAgICAgICAvLyBieSB1c2luZyBhc3NpZ25tZW50IHN0YXRlbWVu
dHMsIHJhdGhlciB0aGFuIGRlY2xhcmluZyB0aGVtIGFzIGdsb2JhbCBvciBzdGF0aWMgc3RydWN0
cy4KKyAgICAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgYWxsb2Nh
dG9yOworICAgICAgICAgICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0gMDsKKyAgICAgICAgICAg
ICAgICBhbGxvY2F0b3IuQWxsb2NhdGVCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAg
YWxsb2NhdG9yLkZyZWVCbG9jayA9IEZyZWVCbG9jazsKKyAgICAgICAgICAgICAgICBhbGxvY2F0
b3IucmVmQ29uID0gZmlyc3RTZWdtZW50LnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0U2Vn
bWVudC0+cmVmKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0
X2Nhc3Q8dWludDhfdCo+KGZpcnN0U2VnbWVudC0+ZGF0YSgpKSksIGZpcnN0U2VnbWVudC0+c2l6
ZSgpLCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgY2FuUmVh
ZCwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJs
b2NrQnVmZmVyTm9FcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjprTm90RW5vdWdoTWVtb3J5KTsKKyAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IGNhblJlYWQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGJsb2NrQnVmZmVyID0gYWRvcHRDRihy
YXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckFwcGVuZEJ1ZmZlclJlZmVyZW5jZShvdXRwdXRCdWZmZXIsIHJhd0Jsb2NrQnVmZmVyLCAwLCAw
LCAwKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAg
ICAgICAgICBtX3Bvc2l0aW9uICs9IGxhc3RSZWFkOworICAgICAgICAgICAgKm51bUFjdHVhbGx5
UmVhZCArPSBsYXN0UmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9
IGxhc3RSZWFkOworICAgICAgICAgICAgbnVtVG9SZWFkIC09IGxhc3RSZWFkOworICAgICAgICAg
ICAgaWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID09IGN1cnJlbnRTZWdtZW50LnNpemUoKSkK
KyAgICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOworICAgICAgICB9CisgICAg
ICAgIGlmICghbnVtVG9SZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtP
a0NvbXBsZXRlZCk7CisgICAgICAgIGlmICgqbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a1dvdWxkQmxvY2spOworICAgIH0KKwogICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiAgICAgdm9pZCByZXNldCgpCkBA
IC01OTUsNyArNjczLDcgQEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihX
VEY6Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQorICAgIDogbV9yZWFk
ZXIoV1RGOjptYWtlVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkpCiB7CiAgICAgaWYgKGlzV2Vi
bVBhcnNlckF2YWlsYWJsZSgpKQogICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKQEAgLTEwOTksNjYgKzExNzcsNDMg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGwKIAogI2RlZmluZSBQQVJTRVJfTE9HX0VSUk9SX0lG
X1BPU1NJQkxFKC4uLikgaWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJzZXIoKS5sb2dnZXJQ
dHIoKS0+ZXJyb3IobG9nQ2hhbm5lbCgpLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIo
bG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlmaWVyKCkpLCBfX1ZB
X0FSR1NfXykKIAotI2lmIEVOQUJMRShWUDkpCi12b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OlZpZGVvVHJhY2tEYXRhOjpyZXNldCgpCitSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1
ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewotICAgIG1fY3VycmVu
dEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICBUcmFja0RhdGE6OnJlc2V0KCk7CisgICAgaWYg
KCFvZmZzZXQgJiYgIWxlbmd0aCAmJiBQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91
cyhtX2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIDAsIDApKQorICAgICAgICByZXR1cm4gbV9j
b21wbGV0ZUJsb2NrQnVmZmVyOworICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Q29udGlndW91c0J1
ZmZlciA9IG51bGxwdHI7CisgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3Vv
dXMobnVsbHB0ciwgbV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCBvZmZzZXQsIGxlbmd0aCwgMCwgJnJhd0NvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVm
ZmVyTm9FcnIpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQg
dG8gY3JlYXRlIGNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICByZXR1cm4gYWRvcHRDRihyYXdDb250aWd1b3VzQnVmZmVyKTsKIH0K
LSNlbmRpZgogCi13ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFj
a0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNvbnN0IEZyYW1l
TWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNvbnN0IENNVGlt
ZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQord2VibTo6U3RhdHVzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YSh3ZWJtOjpSZWFkZXIm
IHJlYWRlciwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2NF90KiBi
eXRlc1JlbWFpbmluZykKIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgIENNQmxvY2tCdWZmZXJSZWYg
cmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVudFBhY2tldFNpemUg
JiYgKm1fY3VycmVudFBhY2tldFNpemUgIT0gbWV0YWRhdGEuc2l6ZSkgewotICAgICAgICAvLyBU
aGUgcGFja2V0J3MgbWV0YWRhdGEgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudGx5IHBlbmRpbmcg
cGFydGlhbCBwYWNrZXQ7IHJlc3RhcnQuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRI
X01FU1NBR0UoIlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNl
bnNpY2FsIHN0YXRlIik7Ci0gICAgICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7Ci0gICAgICAg
IG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0
U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobV9jb21wbGV0ZVBhY2tldFNpemUgJiYgKm1f
Y29tcGxldGVQYWNrZXRTaXplICE9IG1ldGFkYXRhLnNpemUpIHsKKyAgICAgICAgLy8gVGhlIHBh
Y2tldCdzIG1ldGFkYXRhIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnRseSBwZW5kaW5nIGNvbXBs
ZXRlIHBhY2tldDsgcmVzdGFydC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVT
U0FHRSgiVHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRl
Iik7CisgICAgICAgIHJlc2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRQYWNrZXRT
aXplKQotICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gbWV0YWRhdGEuc2l6ZTsKKyAgICBp
ZiAoIW1fY29tcGxldGVQYWNrZXRTaXplKQorICAgICAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9
IG1ldGFkYXRhLnNpemU7CiAKICAgICBpZiAoIW1fY3VycmVudEJsb2NrQnVmZmVyKSB7Ci0gICAg
ICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsICptX2N1cnJlbnRQYWNrZXRTaXplLCBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBudWxscHRyLCAwLCAqbV9jdXJyZW50UGFja2V0U2l6ZSwgMCwgJnJhd0Js
b2NrQnVmZmVyKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWls
ZWQgd2l0aCBlcnJvciIsIGVycik7CisgICAgICAgIEFTU0VSVCghbV9wYXJ0aWFsQnl0ZXNSZWFk
KTsKKyAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbU1heEJsb2NrQnVmZmVyQ2FwYWNpdHksIDAsICZyYXdCbG9ja0J1ZmZlcik7
CisgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VyciB8fCAhcmF3QmxvY2tCdWZm
ZXIpIHsKKyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tC
dWZmZXJDcmVhdGVFbXB0eSBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICBy
ZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLQogICAgICAg
ICBtX2N1cnJlbnRCbG9ja0J1ZmZlciA9IGFkb3B0Q0YocmF3QmxvY2tCdWZmZXIpOwotICAgICAg
ICBtX3BhcnRpYWxCeXRlc1JlYWQgPSAwOwotCi0gICAgICAgIGVyciA9IFBBTDo6Q01CbG9ja0J1
ZmZlckFzc3VyZUJsb2NrTWVtb3J5KG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpKTsKLSAgICAg
ICAgaWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgi
Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdp
dGggZXJyb3IiLCBlcnIpOwotICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNS
ZW1haW5pbmcpOwotICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCptX2N1cnJlbnRQYWNrZXRT
aXplIDwgbV9wYXJ0aWFsQnl0ZXNSZWFkICsgKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkludmFsaWQgZnJhbWUgc2l6ZSBhbGxvY2F0ZWQs
IGlnbm9yaW5nIHRoZSBlbnRpcmUgZnJhbWUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFk
ICs9ICpieXRlc1JlbWFpbmluZzsKLSAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNS
ZW1haW5pbmcpOwotICAgIH0KICAgICB3aGlsZSAoKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAg
IHNpemVfdCBzZWdtZW50U2l6ZUF0UG9zaXRpb24gPSAwOwotICAgICAgICB1aW50OF90KiBibG9j
a0J1ZmZlckRhdGEgPSBudWxscHRyOwotICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1
ZmZlckdldERhdGFQb2ludGVyKG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCBtX3BhcnRpYWxC
eXRlc1JlYWQsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2Nr
QnVmZmVyRGF0YSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFBBUlNFUl9MT0df
RVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0
aCBlcnJvciIsIGVycik7Ci0gICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1Jl
bWFpbmluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCpieXRlc1JlbWFpbmluZyA8IHNlZ21l
bnRTaXplQXRQb3NpdGlvbikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NT
SUJMRSgiQW4gZXJyb3Igb2NjdXJyZWQsIGRlc3RpbmF0aW9uIGJ1ZmZlciB0b28gc21hbGwgdG8g
Y29udGFpbiBvdXIgZnJhbWUiKTsKLSAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5
dGVzUmVtYWluaW5nKTsKLSAgICAgICAgfQogICAgICAgICB1aW50NjRfdCBieXRlc1JlYWQ7Ci0g
ICAgICAgIGF1dG8gc3RhdHVzID0gcmVhZGVyLlJlYWQoKmJ5dGVzUmVtYWluaW5nLCAodWludDhf
dCopYmxvY2tCdWZmZXJEYXRhLCAmYnl0ZXNSZWFkKTsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBz
dGF0aWNfY2FzdDxTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTZWdtZW50UmVhZGVyJj4ocmVhZGVy
KS5SZWFkSW50bygqYnl0ZXNSZW1haW5pbmcsIG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCAm
Ynl0ZXNSZWFkKTsKICAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IGJ5dGVzUmVhZDsKICAgICAg
ICAgbV9wYXJ0aWFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKIApAQCAtMTE2NiwxMiArMTIyMSwz
MyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6
OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsK
ICAgICB9CiAKLSAgICBBU1NFUlQobV9wYXJ0aWFsQnl0ZXNSZWFkIDw9ICptX2N1cnJlbnRQYWNr
ZXRTaXplKTsKLSAgICBpZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY3VycmVudFBhY2tldFNp
emUpCisgICAgQVNTRVJUKG1fcGFydGlhbEJ5dGVzUmVhZCA8PSAqbV9jb21wbGV0ZVBhY2tldFNp
emUpOworICAgIGlmIChtX3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jb21wbGV0ZVBhY2tldFNpemUp
CiAgICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprT2tQYXJ0aWFsKTsK
IAotICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRpb25UaW1lLCBzYW1wbGVDb3VudCwg
bWV0YWRhdGEpOworICAgIGlmICghbV9jb21wbGV0ZUJsb2NrQnVmZmVyKQorICAgICAgICBtX2Nv
bXBsZXRlQmxvY2tCdWZmZXIgPSBXVEZNb3ZlKG1fY3VycmVudEJsb2NrQnVmZmVyKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJS
ZWZlcmVuY2UobV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRCbG9ja0J1ZmZl
ci5nZXQoKSwgMCwgMCwgMCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBBUlNF
Ul9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVu
Y2UgdG8gY29tcGxldGUgYmxvY2sgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICB9Cisg
ICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgbV9wYXJ0
aWFsQnl0ZXNSZWFkID0gMDsKKworICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVz
OjprT2tDb21wbGV0ZWQpOworfQogCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIs
IGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcs
IGNvbnN0IENNVGltZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQoreworI2lm
IEVOQUJMRShWUDkpCisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0
YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRfb2soKSkK
KyAgICAgICAgcmV0dXJuIHN0YXR1czsKKworICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50
YXRpb25UaW1lLCBzYW1wbGVDb3VudCwgbWV0YWRhdGEpOwogICAgIHJlc2V0KCk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CkBAIC0xMTg2LDggKzEyNjIsMTQgQEAgdm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVy
KGNvbnN0IENNVGltZSYgcHIKIHsKICNpZiBFTkFCTEUoVlA5KQogICAgIHVpbnQ4X3QqIGJsb2Nr
QnVmZmVyRGF0YSA9IG51bGxwdHI7Ci0gICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9
IDA7Ci0gICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihtX2N1
cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwgJnNlZ21lbnRTaXplQXRQb3NpdGlvbiwgbnVsbHB0
ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG1heEhl
YWRlclNpemUgPSAzMjsgLy8gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgVlA5IHVuY29tcHJlc3Nl
ZCBoZWFkZXIgaXMgMTQ0IGJpdHMgYW5kIDExIGJ5dGVzIGZvciBWUDguIFJvdW5kIGhpZ2guCisg
ICAgc2l6ZV90IHNlZ21lbnRIZWFkZXJMZW5ndGggPSBzdGQ6Om1pbihtYXhIZWFkZXJTaXplLCAq
bV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRp
Z3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyKDAsIHNlZ21lbnRIZWFkZXJMZW5ndGgpOworICAgIGlm
ICghY29udGlndW91c0J1ZmZlcikgeworICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJ
QkxFKCJWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyIGZhaWxlZCB0byBjcmVhdGUg
Y29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0
byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihjb250aWd1b3VzQnVmZmVy
LmdldCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpOwog
ICAgIGlmIChlcnIpIHsKICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01C
bG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE5Niw3ICsxMjc4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIK
ICAgICBib29sIGlzS2V5ID0gZmFsc2U7CiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRp
b25SZWY+IGZvcm1hdERlc2NyaXB0aW9uOwogICAgIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6
VlA5KSB7Ci0gICAgICAgIGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFk
ZXIoYmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICBpZiAo
IW1faGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwg
c2VnbWVudEhlYWRlckxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYg
KG1faGVhZGVyUGFyc2VyLmtleSgpKSB7CkBAIC0xMjA5LDcgKzEyOTEsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29u
c3QgQ01UaW1lJiBwcgogICAgICAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShm
b3JtYXREZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjb2RlYygpID09
IENvZGVjVHlwZTo6VlA4KSB7Ci0gICAgICAgIGF1dG8gaGVhZGVyID0gcGFyc2VWUDhGcmFtZUhl
YWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbik7CisgICAgICAgIGF1
dG8gaGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRI
ZWFkZXJMZW5ndGgpOwogICAgICAgICBpZiAoaGVhZGVyICYmIGhlYWRlci0+a2V5ZnJhbWUpIHsK
ICAgICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKICAgICAgICAgICAgIGF1dG8gZm9ybWF0RGVzY3Jp
cHRpb24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoKmhlYWRlciwgdHJh
Y2soKS52aWRlby52YWx1ZSgpLmNvbG91cik7CkBAIC0xMjIyLDcgKzEzMDQsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIo
Y29uc3QgQ01UaW1lJiBwcgogICAgIH0KIAogICAgIGF1dG8gdHJhY2sgPSB0aGlzLT50cmFjaygp
OwotICAgIC8vIEZJWE1FOiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBmcmFt
ZSwgYnV0IG9ubHkgdGhpcyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1
ZmZlcmAuCisgICAgLy8gRklYTUU6IEEgYmxvY2sgbWlnaHQgY29udGFpbiBtb3JlIHRoYW4gb25l
IGZyYW1lLCBidXQgb25seSB0aGlzIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50byBgY29tcGxldGVC
bG9ja0J1ZmZlcmAuCiAgICAgLy8gQmVsb3cgd2UgY3JlYXRlIHNhbXBsZSBidWZmZXJzIGZvciBl
YWNoIGZyYW1lLCBlYWNoIHdpdGggdGhlIGJsb2NrJ3MgdGltZWNvZGUgYW5kIGBudW1fZnJhbWVz
YCB2YWx1ZS4KICAgICAvLyBTaG91bGRuJ3Qgd2UgY3JlYXRlIGp1c3Qgb25lIHNhbXBsZSBidWZm
ZXIgb25jZSBhbGwgdGhlIGJsb2NrJ3MgZnJhbWVzIGhhdmUgYmVlbiByZWFkIGludG8gYGN1cnJl
bnRCbG9ja0J1ZmZlcmA/CiAKQEAgLTEyMzEsOSArMTMxMyw4IEBAIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRp
bWUmIHByCiAgICAgICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgp
ICogcHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUgLyBrX3VzX2luX3NlY29uZHM7CiAKICAgICBD
TVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBm
cmFtZVNpemUgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fY3VycmVudEJsb2Nr
QnVmZmVyLmdldCgpKTsKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nID0geyBQQUw6OkNN
VGltZU1ha2UoZHVyYXRpb24sIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlKSwgcHJlc2VudGF0
aW9uVGltZSwgcHJlc2VudGF0aW9uVGltZSB9OwotICAgIGVyciA9IFBBTDo6Q01TYW1wbGVCdWZm
ZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5n
ZXQoKSwgdGhpcy0+Zm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxlQ291bnQsIDEsICZ0
aW1pbmcsIDEsICZmcmFtZVNpemUsICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGVyciA9IFBBTDo6
Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRl
QmxvY2tCdWZmZXIuZ2V0KCksIHRoaXMtPmZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBs
ZUNvdW50LCAxLCAmdGltaW5nLCAxLCAmKm1fY29tcGxldGVQYWNrZXRTaXplLCAmcmF3U2FtcGxl
QnVmZmVyKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9T
U0lCTEUoIkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIp
OwogICAgICAgICByZXR1cm47CkBAIC0xMjYzLDU2ICsxMzQ0LDI3IEBAIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBD
TVRpbWUmIHByCiAjZW5kaWYgLy8gRU5BQkxFKFZQOSkKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXQoKQordm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQogeworICAgIG1OdW1GcmFt
ZXNJbkNvbXBsZXRlQmxvY2sgPSAwOwogICAgIG1fcGFja2V0RGVzY3JpcHRpb25zLmNsZWFyKCk7
Ci0gICAgbV9wYWNrZXRzRGF0YS5jbGVhcigpOwotICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZz
ZXQgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgVHJhY2tEYXRhOjpyZXNldCgpOworICAgIG1fY3VycmVu
dFBhY2tldEJ5dGVPZmZzZXQgPSAwOworICAgIFRyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKTsK
IH0KIAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRh
Ojpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYgcmVhZGVyLCBjb25zdCBGcmFtZU1ldGFk
YXRhJiBtZXRhZGF0YSwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nLCBjb25zdCBDTVRpbWUmIHBy
ZXNlbnRhdGlvblRpbWUsIGludCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NFUlQoc2FtcGxlQ291
bnQpOwotCi0gICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkgewotICAgICAg
ICBtX2J5dGVPZmZzZXQgPSBtZXRhZGF0YS5wb3NpdGlvbjsKLSAgICAgICAgbV9zYW1wbGVQcmVz
ZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKLSAgICB9Ci0KLSAgICBpZiAobV9jdXJy
ZW50UGFja2V0U2l6ZSAmJiAqbV9jdXJyZW50UGFja2V0U2l6ZSAhPSBtZXRhZGF0YS5zaXplKSB7
Ci0gICAgICAgIC8vIFRoZSBwYWNrZXQncyBtZXRhZGF0YSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJy
ZW50bHkgcGVuZGluZyBwYXJ0aWFsIHBhY2tldDsgcmVzdGFydC4KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6
IHdlYm0gaW4gbm9uc2Vuc2ljYWwgc3RhdGUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFk
ID0gMDsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9
Ci0KLSAgICBpZiAoIW1fY3VycmVudFBhY2tldFNpemUpCi0gICAgICAgIG1fY3VycmVudFBhY2tl
dFNpemUgPSBtZXRhZGF0YS5zaXplOwotCi0gICAgLy8gRW5zdXJlIHdlIGhhdmUgcm9vbSB0byBz
dG9yZSB0aGUgZnVsbCBwZW5kaW5nIGZyYW1lLgotICAgIGlmIChtX3BhY2tldHNEYXRhLnNpemUo
KSA8IG1fcGFja2V0c0J5dGVzUmVhZCArIG1ldGFkYXRhLnNpemUpCi0gICAgICAgIG1fcGFja2V0
c0RhdGEuZ3JvdyhtX3BhY2tldHNCeXRlc1JlYWQgKyBtZXRhZGF0YS5zaXplKTsKLQotICAgIGlm
ICghbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCkKLSAgICAgICAgbV9jdXJyZW50UGFja2V0Qnl0
ZU9mZnNldCA9IG1fcGFja2V0c0J5dGVzUmVhZDsKLQotICAgIHdoaWxlICgqYnl0ZXNSZW1haW5p
bmcpIHsKLSAgICAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwotICAgICAgICBhdXRvIHN0YXR1cyA9
IHJlYWRlci5SZWFkKCpieXRlc1JlbWFpbmluZywgbV9wYWNrZXRzRGF0YS5kYXRhKCkgKyBtX3Bh
Y2tldHNCeXRlc1JlYWQgKyBtX3BhcnRpYWxCeXRlc1JlYWQsICZieXRlc1JlYWQpOwotICAgICAg
ICAqYnl0ZXNSZW1haW5pbmcgLT0gYnl0ZXNSZWFkOwotICAgICAgICBtX3BhcnRpYWxCeXRlc1Jl
YWQgKz0gYnl0ZXNSZWFkOwotCi0gICAgICAgIGlmICghc3RhdHVzLmNvbXBsZXRlZF9vaygpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9CisgICAgYXV0byBzdGF0dXMgPSByZWFk
RnJhbWVEYXRhKHJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0
YXR1cy5jb21wbGV0ZWRfb2soKSkKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKIAotICAgIEFTU0VS
VChtX3BhcnRpYWxCeXRlc1JlYWQgPD0gKm1fY3VycmVudFBhY2tldFNpemUpOwotICAgIGlmICht
X3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jdXJyZW50UGFja2V0U2l6ZSkKLSAgICAgICAgcmV0dXJu
IHdlYm06OlN0YXR1cyh3ZWJtOjpTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgIC8vIEF0dGVtcHRz
IHRvIG1pbmltaXNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRpb25zIGR1ZSB0byByZXBl
dGl0dmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSBjYWxscyBpbiByZWFkRnJh
bWVEYXRhLgorICAgIG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2srKzsKKyAgICBpZiAobU51bUZy
YW1lc0luQ29tcGxldGVCbG9jayA+IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5KQorICAgICAgICBt
TWF4QmxvY2tCdWZmZXJDYXBhY2l0eSA9IG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2s7CiAKLSAg
ICBtX3BhY2tldHNCeXRlc1JlYWQgKz0gbV9wYXJ0aWFsQnl0ZXNSZWFkOwotICAgIG1fcGFydGlh
bEJ5dGVzUmVhZCA9IDA7CisgICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKIAog
ICAgIGlmICghZm9ybWF0RGVzY3JpcHRpb24oKSkgewogICAgICAgICBpZiAoIXRyYWNrKCkuY29k
ZWNfcHJpdmF0ZS5pc19wcmVzZW50KCkpIHsKQEAgLTEzMjUsOCArMTM3NywxOSBAQCB3ZWJtOjpT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFt
ZURhdGEod2VibTo6UmVhZAogICAgICAgICBpZiAoY29kZWMoKSA9PSBDb2RlY1R5cGU6OlZvcmJp
cykKICAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlVm9yYmlzQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbihwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CisgICAgICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlciht
X2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgICAg
ICAgICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUEFSU0VSX0xP
R19FUlJPUl9JRl9QT1NTSUJMRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHVu
YWJsZSB0byBjcmVhdGUgY29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdWludDhfdCogYmxvY2tCdWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoY29udGlndW91c0J1
ZmZlci5nZXQoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRh
KTsKKyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VS
Uk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGgg
ZXJyb3IiLCBlcnIpOworICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIE9wdXNDb29raWVDb250ZW50
cyBjb29raWVDb250ZW50czsKLSAgICAgICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEo
cHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksIG1fcGFja2V0c0J5dGVzUmVh
ZCwgbV9wYWNrZXRzRGF0YS5kYXRhKCksIGNvb2tpZUNvbnRlbnRzKSkgeworICAgICAgICAgICAg
aWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRh
LmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNv
bnRlbnRzKSkgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUo
IkZhaWxlZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KQEAgLTEz
NTUsMTAgKzE0MTgsMjEgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1
ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICB9IGVsc2UgaWYg
KGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CiAgICAgICAgIC8vIE9wdXMgdGVjaG5pY2Fs
bHkgYWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1wYWNrZXQgdmFsdWVz
IHRvIGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8vIENvcmVBdWRpbyBk
b2Vzbid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFuZ2Ugb24gYSBwZXIt
cGFja2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVuCi0gICAgICAgIC8vIHRoYXQga2lu
ZCBvZiB2YXJpYWJsaWxpdHkgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIC8vIHRoYXQga2luZCBv
ZiB2YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRz
IGNvb2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9IHRyYWNrKCkuY29k
ZWNfcHJpdmF0ZS52YWx1ZSgpOwotICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHBy
aXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCBtX3BhY2tldHNCeXRlc1JlYWQs
IG1fcGFja2V0c0RhdGEuZGF0YSgpLCBjb29raWVDb250ZW50cykKKyAgICAgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIobV9jdXJyZW50UGFj
a2V0Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKKyAgICAgICAgaWYgKCFjb250
aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxF
KCJBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YTogdW5hYmxlIHRvIGNyZWF0ZSBjb250
aWd1b3VzIGRhdGEgYmxvY2siKTsKKyAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5
dGVzUmVtYWluaW5nKTsKKyAgICAgICAgfQorICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRh
dGEgPSBudWxscHRyOworICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERh
dGFQb2ludGVyKGNvbnRpZ3VvdXNCdWZmZXIuZ2V0KCksIDAsIG51bGxwdHIsIG51bGxwdHIsIChj
aGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAg
IFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRl
ciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CisgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVh
ZGVyLCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXJzZU9wdXNQ
cml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29t
cGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQogICAgICAg
ICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFj
a2V0CiAgICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJh
bWVEdXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgi
T3B1cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwpA
QCAtMTM2NiwxNCArMTQ0MCwxNSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICB9
CiAgICAgfQogCi0gICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8
aW50NjRfdD4oKm1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQpLCAwLCBzdGF0aWNfY2FzdDxVSW50
MzI+KCptX2N1cnJlbnRQYWNrZXRTaXplKSB9KTsKLSAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zm
c2V0ID0gc3RkOjpudWxsb3B0OwotICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxv
cHQ7CisgICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50NjRf
dD4obV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1f
Y29tcGxldGVQYWNrZXRTaXplKSB9KTsKKyAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ICs9
ICptX2NvbXBsZXRlUGFja2V0U2l6ZTsKKyAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IHN0ZDo6
bnVsbG9wdDsKIAogICAgIGF1dG8gc2FtcGxlRHVyYXRpb24gPSBQQUw6OkNNVGltZUdldFNlY29u
ZHMoUEFMOjpDTVRpbWVTdWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRh
dGlvblRpbWUpKSArIFBBTDo6Q01UaW1lR2V0U2Vjb25kcyhtX3BhY2tldER1cmF0aW9uKSAqIHNh
bXBsZUNvdW50OwotCi0gICAgaWYgKHNhbXBsZUR1cmF0aW9uID49IG1fbWluaW11bVNhbXBsZUR1
cmF0aW9uKQorICAgIGlmIChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1TYW1wbGVEdXJhdGlv
bikgewogICAgICAgICBjcmVhdGVTYW1wbGVCdWZmZXIobWV0YWRhdGEucG9zaXRpb24pOworICAg
ICAgICByZXNldCgpOworICAgIH0KIAogICAgIEFTU0VSVCghKmJ5dGVzUmVtYWluaW5nKTsKICAg
ICByZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06OlN0YXR1czo6a09rQ29tcGxldGVkKTsKQEAgLTEz
ODEsMzkgKzE0NTYsMTcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1
ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKIAogdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCiB7Ci0gICAgaWYgKG1fcGFj
a2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSB8fCAhbV9wYWNrZXRzQnl0ZXNSZWFkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fcGFja2V0c0RhdGEuaXNFbXB0eSgpKTsKLQotICAg
IENNQmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyID0g
UEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG51bGxwdHIsIG1fcGFja2V0c0J5dGVzUmVhZCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVs
bHB0ciwgMCwgbV9wYWNrZXRzQnl0ZXNSZWFkLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5v
d0ZsYWcsICZibG9ja0J1ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBQQVJTRVJfTE9H
X0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZh
aWxlZCB3aXRoICVkIiwgZXJyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGJ1
ZmZlciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOwotCi0gICAgZXJyID0gUEFMOjpDTUJsb2NrQnVm
ZmVyUmVwbGFjZURhdGFCeXRlcyhtX3BhY2tldHNEYXRhLmRhdGEoKSwgYnVmZmVyLmdldCgpLCAw
LCBtX3BhY2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUEFSU0VSX0xP
R19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVk
IHdpdGggJWQiLCBlcnIpOworICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1w
bGVCdWZmZXIgPSBudWxscHRyOwotICAgIGVyciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNy
ZWF0ZVJlYWR5V2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZm
ZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25z
LnNpemUoKSwgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5k
YXRhKCksICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2Ft
cGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fY29tcGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5n
ZXQoKSwgbV9wYWNrZXREZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVByZXNlbnRhdGlvblRp
bWUsIG1fcGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAg
aWYgKGVycikgewogICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUF1ZGlv
U2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIs
IGVycik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBh
ZG9wdENGKHJhd1NhbXBsZUJ1ZmZlcik7CiAKLSAgICBtX3BhY2tldHNEYXRhLnJlbW92ZSgwLCBt
X3BhY2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0KQot
ICAgICAgICAqbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCAtPSBtX3BhY2tldHNCeXRlc1JlYWQ7
Ci0gICAgbV9wYWNrZXRzQnl0ZXNSZWFkID0gMDsKLSAgICBtX3BhY2tldERlc2NyaXB0aW9ucy5j
bGVhcigpOwotCiAgICAgYXV0byB0cmFja0lEID0gdHJhY2soKS50cmFja191aWQudmFsdWUoKTsK
ICAgICBwYXJzZXIoKS5wcm92aWRlTWVkaWFEYXRhKFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJh
Y2tJRCwgbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0KTsKIH0KQEAgLTE0MjEsOCArMTQ3NCwxMSBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVC
dWZmZXIoc3RkOjpvcHRpb25hbDxzaQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVz
aFBlbmRpbmdBdWRpb0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNr
cykgewotICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OlRyYWNrRGF0YTo6VHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBkb3duY2FzdDxBdWRp
b1RyYWNrRGF0YT4odHJhY2suZ2V0KCkpLmNyZWF0ZVNhbXBsZUJ1ZmZlcigpOworICAgICAgICBp
ZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0
YTo6VHlwZTo6QXVkaW8pIHsKKyAgICAgICAgICAgIEF1ZGlvVHJhY2tEYXRhJiBhdWRpb1RyYWNr
ID0gZG93bmNhc3Q8QXVkaW9UcmFja0RhdGE+KHRyYWNrLmdldCgpKTsKKyAgICAgICAgICAgIGF1
ZGlvVHJhY2suY3JlYXRlU2FtcGxlQnVmZmVyKCk7CisgICAgICAgICAgICBhdWRpb1RyYWNrLnJl
c2V0Q29tcGxldGVkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaAppbmRleCA5NTI5NzZiMjcyZjcxMTg1YmI3ODdmNWFhMzQyM2M0Zjg3ZDZjNGE2
Li42OGExMjAwMGUyNGU2OThkZjBhYzk0OTA1YTcxNzZlMGNiMTBmMWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlQVZG
T2JqQzsKIGNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVy
UGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgY2xh
c3MgU2VnbWVudFJlYWRlcjsKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2
YWlsYWJsZSgpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXND
b250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwpAQCAtMTU1LDMwICsxNTUs
NDIgQEAgcHVibGljOgogICAgICAgICB2b2lkIHNldEZvcm1hdERlc2NyaXB0aW9uKFJldGFpblB0
cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiYmIGRlc2NyaXB0aW9uKSB7IG1fZm9ybWF0RGVzY3Jp
cHRpb24gPSBXVEZNb3ZlKGRlc2NyaXB0aW9uKTsgfQogCiAgICAgICAgIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0mIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyOyB9Ci0gICAgICAgIAor
CiAgICAgICAgIHZpcnR1YWwgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVh
ZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1l
JiwgaW50KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprSW52YWxpZEVsZW1l
bnRJZCk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRDb21wbGV0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2NvbXBsZXRlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZvaWQg
cmVzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gc3Rk
OjpudWxsb3B0OworICAgICAgICAgICAgcmVzZXRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIG1f
Y29tcGxldGVQYWNrZXRTaXplID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbV9wYXJ0aWFs
Qnl0ZXNSZWFkID0gMDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0
cjsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gbV9jdXJyZW50UGFja2V0U2l6ZTsKLSAgICAgICAgLy8gU2l6ZSBvZiB0aGUgY3VycmVu
dGx5IHBhcnNlZCBwYWNrZXQsIHBvc3NpYmx5IGluY29tcGxldGUuCi0gICAgICAgIHNpemVfdCBt
X3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVy
UmVmPiBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKyAgICAgICAgd2VibTo6U3RhdHVzIHJlYWRGcmFtZURhdGEod2VibTo6
UmVhZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiBieXRlc1JlbWFp
bmluZyk7CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2NvbXBsZXRlQmxv
Y2tCdWZmZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2NvbXBsZXRlUGFja2V0
U2l6ZTsKKyAgICAgICAgLy8gSW5pdGlhbCBhbGxvY2F0aW9uIHNpemUgb2YgZW1wdHkgQ01CbG9j
a0J1ZmZlci4KKyAgICAgICAgc2l6ZV90IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5IHsgMCB9Owog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgQ29kZWNUeXBlIG1fY29kZWM7CiAgICAgICAgIHdlYm06
OlRyYWNrRW50cnkgbV90cmFjazsKICAgICAgICAgVHlwZSBtX3RyYWNrVHlwZTsKICAgICAgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZm9ybWF0RGVzY3JpcHRpb247Cisg
ICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsK
ICAgICAgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSYgbV9wYXJzZXI7CisgICAgICAgIC8vIFNp
emUgb2YgdGhlIGN1cnJlbnRseSBpbmNvbXBsZXRlIHBhcnNlZCBwYWNrZXQuCisgICAgICAgIHNp
emVfdCBtX3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CiAgICAgfTsKIAogICAgIGNsYXNzIFZpZGVv
VHJhY2tEYXRhIDogcHVibGljIFRyYWNrRGF0YSB7CkBAIC0xOTMsOSArMjA1LDYgQEAgcHVibGlj
OgogICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShWUDkpCi0gICAgICAgIHZvaWQg
cmVzZXQoKSBmaW5hbDsKLSNlbmRpZgogICAgICAgICB3ZWJtOjpTdGF0dXMgY29uc3VtZUZyYW1l
RGF0YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgdWludDY0X3Qq
LCBjb25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwogCiAgICAgcHJpdmF0ZToKQEAgLTIwNCw3ICsy
MTMsNiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVlA5KQogICAgICAgICB2cDlfcGFyc2VyOjpW
cDlIZWFkZXJQYXJzZXIgbV9oZWFkZXJQYXJzZXI7Ci0gICAgICAgIFJldGFpblB0cjxDTUJsb2Nr
QnVmZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICNlbmRpZgogICAgIH07CiAKQEAgLTIy
Miw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB3ZWJtOjpTdGF0dXMg
Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRh
JiwgdWludDY0X3QqLCBjb25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwotICAgICAgICB2b2lkIHJl
c2V0KCkgZmluYWw7CisgICAgICAgIHZvaWQgcmVzZXRDb21wbGV0ZWQoKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhdGVzdEJ5
dGVSYW5nZU9mZnNldCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjMwLDE1
ICsyMzgsMTEgQEAgcHVibGljOgogCiAgICAgICAgIENNVGltZSBtX3NhbXBsZVByZXNlbnRhdGlv
blRpbWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tldER1cmF0aW9uOwotICAgICAgICBWZWN0b3I8
dWludDhfdD4gbV9wYWNrZXRzRGF0YTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1f
Y3VycmVudFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIC8vIFNpemUgb2YgdGhlIGNvbXBsZXRl
IHBhY2tldHMgcGFyc2VkIHNvIGZhci4KLSAgICAgICAgc2l6ZV90IG1fcGFja2V0c0J5dGVzUmVh
ZCB7IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fYnl0ZU9mZnNldCB7IDAgfTsKKyAgICAgICAgc2l6
ZV90IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgeyAwIH07CiAgICAgICAgIHVpbnQ4X3QgbV9m
cmFtZXNQZXJQYWNrZXQgeyAwIH07CiAgICAgICAgIFNlY29uZHMgbV9mcmFtZUR1cmF0aW9uIHsg
MF9zIH07CiAgICAgICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX3Bh
Y2tldERlc2NyaXB0aW9uczsKLQorICAgICAgICBzaXplX3QgbU51bUZyYW1lc0luQ29tcGxldGVC
bG9jayB7IDAgfTsKICAgICAgICAgLy8gRklYTUU6IDAuNSAtIDEuMCBzZWNvbmRzIGlzIGEgYmV0
dGVyIGR1cmF0aW9uIHBlciBzYW1wbGUgYnVmZmVyLCBidXQgdXNlIDIgc2Vjb25kcyBzbyBhdCBs
ZWFzdCB0aGUgZmlyc3QKICAgICAgICAgLy8gc2FtcGxlIGJ1ZmZlciB3aWxsIHBsYXkgdW50aWwg
d2UgZml4IE1lZGlhU2FtcGxlQ3Vyc29yOjpjcmVhdGVTYW1wbGVCdWZmZXIgdG8gZGVhbCB3aXRo
IGBlbmRDdXJzb3JgLgogICAgICAgICBmbG9hdCBtX21pbmltdW1TYW1wbGVEdXJhdGlvbiB7IDIg
fTsKQEAgLTI4MSw3ICsyODUsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0
YXRlOjpOb25lIH07CiAKLSAgICBVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPiBtX3Jl
YWRlcjsKKyAgICBVbmlxdWVSZWY8U2VnbWVudFJlYWRlcj4gbV9yZWFkZXI7CiAKICAgICBWZWN0
b3I8VW5pcXVlUmVmPFRyYWNrRGF0YT4+IG1fdHJhY2tzOwogICAgIHVzaW5nIEJsb2NrVmFyaWFu
dCA9IFZhcmlhbnQ8d2VibTo6QmxvY2ssIHdlYm06OlNpbXBsZUJsb2NrPjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuY3BwCmluZGV4IGQ4ZGNiMTEwMTNjZTc2N2U4NDNmOTk3NjBkNzQ5OWI5YmU2YzBjNzMuLmQw
MDZhY2VhMDhhZjdiMTgxNjgwNjQzODEyNWVlOWUxODk2NGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmNwcApAQCAtMTkyLDkgKzE5MiwxMyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpz
b3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQogICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hh
bmdlZChmbGFnKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgUmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYg
YnVmZmVySGFuZGxlKQogewotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKGRhdGEu
dmVjdG9yKCkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoYnVm
ZmVySGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Cisg
ICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc291cmNlQnVm
ZmVyUHJpdmF0ZS0+YXBwZW5kKHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZl
ckhhbmRsZS5kYXRhU2l6ZSkpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojph
Ym9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGM5MTI5MDE1OGQ4M2VjOTYwMjVlYzk1OTMzZjJh
MzFiNzVlNWVhM2YuLjc3ZDgyN2FiMzAzMmExNjRiM2Y0YTc2ZTAxODE4NmZmN2I5MTQzMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgpAQCAtODcsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IFdl
YkNvcmU6OkNvbnRlbnRUeXBlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgdm9pZCBzZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUpOwotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogICAgIHZv
aWQgcmVzZXRQYXJzZXJTdGF0ZSgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZlZmU4ZjU1ZjlkODg1
OWMxYjUwOWY2N2I1MjNmN2M3ODUwOGQ3OWIuLjhmNjIwYmEyZTk2ZmZmNjMyZWYzZDAzMmE1YjBj
NDc4NDk4ZmUyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI5
LDcgKzI5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIENhblN3aXRjaFRvVHlwZShX
ZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSkgLT4gKGJvb2wgY2FuU3dpdGNoKSBTeW5j
aHJvbm91cwogICAgIFNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZSBhcHBl
bmRNb2RlKQotICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBBcHBlbmQo
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFib3J0KCkKICAgICBS
ZXNldFBhcnNlclN0YXRlKCkKICAgICBSZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCA2YmFjYTM0ZGM3MGQ0M2M5Zjk0YmUz
Y2QzMTZlZGJkZDFlM2U1OTNmLi43NTZiMjQwYjZmYTdiYjViZThlY2JmZTcwZjk1OWM5ODczMTY3
OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCw2ICs0
OCwxOSBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAor
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90
IGRhdGFTaXplKSBjb25zdAoreworICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgW2RhdGFTaXplXSAoKSAtPiBzaXplX3QgeworICAgICAgICAgICAg
cmV0dXJuIGRhdGFTaXplOworICAgICAgICB9CisgICAgfSk7Cit9CisKICNpZiAhUExBVEZPUk0o
Q09DT0EpCiB2b2lkIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjp0YWtlT3duZXJzaGlwT2ZNZW1vcnko
TWVtb3J5TGVkZ2VyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgK
aW5kZXggNTZhMWY1Njk5NzcwNWRhMDBhOWRjNDYxOWZlMTIzMTRhZGRmZDJmNi4uZTM3MWJjZDcz
MDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0
aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVt
UGFnZVNpemUoKTsKIAorICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKICAgICBX
VEY6Ok1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KFByb3RlY3Rpb24pIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZmNiMDEyMjIzNDNlNzU4ZGU2NjQ2Njgz
NTJiZDEyODRhN2ZmZTQzNC4uNDU4ZTNiYTRiMDhjODA4NzExZTVmMmVhZjA2NTFlN2ZkZGM0ZmQ1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCwxMiArNzgsMTkgQEAg
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQog
ICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQo
KSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFw
cGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3ND
b25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
LT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFw
cGVuZChJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSkpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50
aWZpZXIpOworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihk
YXRhKTsKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgc2hhcmVkRGF0YS0+
Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CisKKyAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFz
IG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgorICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnko
TWVtb3J5TGVkZ2VyOjpNZWRpYSk7CisKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVuZChT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2hhcmVkRGF0YS0+c2l6
ZSgpIH0pLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgK
aW5kZXggMThiOTkwNmNkY2M2MzRjN2I4MDE0NTEzN2IzZTBiOWM0OTU4Njg4My4uMzYwMTc1YmZi
ZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclBy
aXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9p
ZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5k
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBm
aW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92
ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438915</attachid>
            <date>2021-09-21 21:04:48 -0700</date>
            <delta_ts>2021-09-21 21:09:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230329-20210922140447.patch</filename>
            <type>text/plain</type>
            <size>70749</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzNTRjZTU2ZTg3Mjc5
OWU1NGQ4NDA1Y2FmZjA1NmFjYmFlYTI5My4uNTlkMDM1MzQxYTNlOTk4YzRhYTAyOWU2OTRjMjk5
NGU0NjlkZTA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA5LTIwICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9y
eSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8g
dGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAg
ICBVc2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgVmVjdG9yIHRvIHBhc3MgZGF0YSB0byB0aGUg
U291cmNlQnVmZmVyJ3MgcmVsYXRlZAorICAgICAgICBjbGFzc2VzIChTb3VyY2VCdWZmZXIsIFNv
dXJjZUJ1ZmZlclByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclBhcnNlcikuCisgICAgICAgIE1vZGlm
eSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIHRvIG5ldmVyIHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRp
b24gYW5kIGNvcHkKKyAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgY29udGVudC4gSW5zdGVh
ZCwgd2UgdXNlIENNQmxvY2tCdWZmZXIgb2JqZWN0cyB0aGF0IHJldGFpbiB0aGUKKyAgICAgICAg
YmFja2luZyBTaGFyZWRCdWZmZXIgYW5kIHVzZSBvZmZzZXRzIGluc2lkZSB0aGlzIFNoYXJlZEJ1
ZmZlciB0byByZWZlcmVuY2UgdGhlIGRhdGEuCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMgcmVxdWlyZXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBhcyBhIE5TRGF0YSBjYW4gd3JhcCBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAg
ICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBmcm9tIGFuIG9ic2VydmFibGUgc3RhbmRwb2lu
dCBvdGhlciB0aGFuIHRoZSBHUFUgbWVtb3J5IHVzYWdlCisgICAgICAgIGJlaW5nIGRyYXN0aWNh
bGx5IHJlZHVjZWQgKGZyb20gNzAwTUIgd2hlbiB3YXRjaGluZyBhIDRLLzYwZnBzIFlvdVR1YmUg
dmlkZW8gdG8ganVzdCBvdmVyIDIwME1CCisgICAgICAgIG9uIGFuIGlNYWMgUHJvICh3aGljaCBv
bmx5IGhhcyBzb2Z0d2FyZSBWUDkgZGVjb2RpbmcpLCAyNU1CIHZzIDM2ME1CIG9uIGFuIGlQYWQp
CisgICAgICAgIEV4aXN0aW5nIHRlc3RzIGFyZSBmdWxseSBleGVyY2lzaW5nIHRoaXMgbmV3IGNv
ZGUuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6IFNp
bXBsaWZ5IGxvZ2ljIGFyb3VuZCBtX3BlbmRpbmdBcHBlbmREYXRhIG1lbWJlci4KKyAgICAgICAg
T25seSBvbmUgYXBwZW5kQnVmZmVyIG9wZXJhdGlvbiBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2
ZW4gdGltZSBvdGhlcndpc2UgYXBwZW5kQnVmZmVyCisgICAgICAgIHdpbGwgdGhyb3cgYW4gZXhj
ZXB0aW9uOyBhcyBzdWNoLCB0aGVyZSdzIG5vIG5lZWQgdG8gYXBwZW5kIHRoZSBkYXRhIHRvIGEg
dmVjdG9yOiAidGhlcmUgY2FuCisgICAgICAgIGJlIG9ubHkgb25lIi4KKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6YWJvcnRJZlVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weVRvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6IEFkZCBuZXcgRGF0YVNlZ21lbnQgdHlwZSB0aGF0IHRha2VzIGEg
UHJvdmlkZXIgaW4gY29uc3RydWN0b3IuCisgICAgICAgIEEgUHJvdmlkZXIgcHJvdmlkZXMgdHdv
IEZ1bmN0aW9uIG1lbWJlcnMgZGF0YSBhbmQgc2l6ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6IFRoZSBBdWRpb0ZpbGVSZWFkZXJDb2Nv
YSByZXF1aXJlZAorICAgICAgICB0aGUgQ01CbG9ja0J1ZmZlciBjb250YWluaW5nIHRoZSBjb21w
cmVzc2VkIGNvbnRlbnQgdG8gYmUgY29udGlndW91cy4gVGhpcyBpcyBubworICAgICAgICBsb25n
ZXIgZ3VhcmFudGVlZCBzbyBlbnN1cmUgdGhhdCB0aGUgQ01CbG9ja0J1ZmZlciBpcyBjb250aWd1
b3VzLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJl
YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1
b3VzQ29tcGxldGVCbG9ja0J1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OnJlYWRGcmFtZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFt
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9U
cmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1
bWVGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
QXVkaW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdBdWRpb0J1ZmZlcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVzZXRD
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJh
Y2tEYXRhOjpyZXNldCk6CisKIDIwMjEtMDktMDcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KIAogICAgICAgICBEZWNvZGluZyB3ZWJtIGZpbGUgd2l0aCBtb3JlIHRoYW4gMiBj
aGFubmVscyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGIzNDJlOGRmNjMyYTQ4YzNk
OTVlMjFjZDg4NzA4YjJlNGE4YjQ4MTcuLjJlODAxMDZiYWI1Y2E5MGYzMjZhY2RlOTVjNmQyYjM3
OGJiMDI0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA5LTIw
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJl
ZE1lbW9yeSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZm
ZXIgdG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOiBB
ZGQgcmVxdWlyZWQgQ29yZU1lZGlhIG1ldGhvZHMuCisKIDIwMjEtMDktMDcgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWNvZGluZyB3ZWJtIGZpbGUgd2l0
aCBtb3JlIHRoYW4gMiBjaGFubmVscyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjFiOWRlYjZiNWE1
YWQxZjkyMzJlZTUwYTUzZDc3NDA3MWY1NTQ3Yi4uM2JhNmMzYzgwMzI3ZDlmZWY5ZjZiNTYzYzI1
MTg2NjEwYmVlMjI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wOS0yMCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1v
cnkgZm9yIHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRv
IHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAg
ICAgVXNlIFNoYXJlZE1lbW9yeSB0byBwYXNzIFNvdXJjZUJ1ZmZlciBjb250ZW50IHRvIFJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5IGluIEdQVSBwcm9jZXNzLgorICAgICAgICBUaGlzIGlzIGRvbmUg
Ynkgd3JhcHBpbmcgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKworICAgICAg
ICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OmFwcGVuZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKwog
MjAyMS0wOS0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUZWFjaCBgV2ViS2l0OjpjcmVhdGVTaGFyZWFibGVCaXRtYXBgIHRvIHNuYXBzaG90IHZp
ZGVvIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRl
MDY0NjgzYy4uYmFlZTlhMTFiNTAxYTQxNWM0Y2Y5YmQ2ZjM1NzkzNWQ2NDMyMjFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRp
YURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSAiU291
cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKQEAgLTM5NCw3
ICszOTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YWJvcnRJZlVwZGF0aW5nKCkKIAogICAgIC8v
IDQuMS4gQWJvcnQgdGhlIGJ1ZmZlciBhcHBlbmQgYWxnb3JpdGhtIGlmIGl0IGlzIHJ1bm5pbmcu
CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7Ci0gICAgbV9wZW5kaW5nQXBwZW5kRGF0
YS5jbGVhcigpOworICAgIG1fcGVuZGluZ0FwcGVuZERhdGEgPSBudWxscHRyOwogICAgIG1fcHJp
dmF0ZS0+YWJvcnQoKTsKIAogICAgIC8vIDQuMi4gU2V0IHRoZSB1cGRhdGluZyBhdHRyaWJ1dGUg
dG8gZmFsc2UuCkBAIC00OTQsNyArNDk1LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLAogCiAg
ICAgLy8gTk9URTogUmV0dXJuIHRvIDMuMiBhcHBlbmRCdWZmZXIoKQogICAgIC8vIDMuIEFkZCBk
YXRhIHRvIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlci4KLSAgICBtX3BlbmRpbmdBcHBlbmRE
YXRhLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0FwcGVuZERhdGEp
OworICAgIG1fcGVuZGluZ0FwcGVuZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBz
aXplKTsKIAogICAgIC8vIDQuIFNldCB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIHRvIHRydWUuCiAg
ICAgbV91cGRhdGluZyA9IHRydWU7CkBAIC01MjQsMTggKzUyNiwxNCBAQCB2b2lkIFNvdXJjZUJ1
ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9y
Zy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0
bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdt
ZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKIAorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1f
cGVuZGluZ0FwcGVuZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVm
ZmVyIGlzIGVtcHR5LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cu
Ci0gICAgaWYgKCFtX3BlbmRpbmdBcHBlbmREYXRhLnNpemUoKSkgeworICAgIGlmICghYXBwZW5k
RGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZh
dGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICAvLyBNYW51YWxseSBjbGVhciBvdXQgdGhlIG1fcGVuZGlu
Z0FwcGVuZERhdGEgVmVjdG9yLCBpbiBjYXNlIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbgot
ICAgIC8vIHJlamVjdHMgYXBwZW5kaW5nIHRoZSBidWZmZXIgZm9yIHdoYXRldmVyIHJlYXNvbi4K
LSAgICAvLyBGSVhNRTogVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBndWFyYW50ZWUgdGhlIG1v
dmUgZnJvbSB0aGlzIFZlY3RvciwgYW5kIHdlIHNob3VsZAotICAgIC8vIGFzc2VydCBoZXJlIHRv
IGNvbmZpcm0gdGhhdC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzgwMDMuCi0gICAgbV9wcml2YXRlLT5hcHBlbmQoV1RGTW92ZShtX3BlbmRpbmdBcHBlbmRE
YXRhKSk7Ci0gICAgbV9wZW5kaW5nQXBwZW5kRGF0YS5jbGVhcigpOworICAgIG1fcHJpdmF0ZS0+
YXBwZW5kKGFwcGVuZERhdGEucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVm
ZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0IHJlc3Vs
dCkKQEAgLTEyMTEsNyArMTIwOSwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZVJlcG9ydEV4dHJhTWVtb3J5Q29zdCh1aW50NjRfdCBleHRyYU1lbW9yeQogCiB2b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQodWludDY0X3QgZXh0cmFN
ZW1vcnkpCiB7Ci0gICAgdWludDY0X3QgZXh0cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5k
RGF0YS5jYXBhY2l0eSgpICsgZXh0cmFNZW1vcnk7CisgICAgdWludDY0X3QgZXh0cmFNZW1vcnlD
b3N0ID0gZXh0cmFNZW1vcnk7CisgICAgaWYgKG1fcGVuZGluZ0FwcGVuZERhdGEpCisgICAgICAg
IGV4dHJhTWVtb3J5Q29zdCArPSBtX3BlbmRpbmdBcHBlbmREYXRhLT5zaXplKCk7CisKICAgICBp
ZiAoZXh0cmFNZW1vcnlDb3N0IDw9IG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmgKaW5kZXggODg4ZDJkNmU5OGRhYmY5N2RhYmUxYzkxZjI0OGIxMDg1ZDY5MmI2
MS4uYTcyMzNkMjFlMDgxYWE0YThkODQyNTRiMjkzYTczMmY2ODQxM2U4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0yMjEs
NyArMjIxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFx
dWVSb290UHJvdmlkZXI7CiAKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBw
ZW5kRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmREYXRhOwog
ICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAKICAgICBSZWZQdHI8VmlkZW9UcmFja0xp
c3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuY3BwCmluZGV4IGExOTE3ODE0NzNkY2FjNzZjNWIwNDE1NTY5MTg0MTQ3MGQz
YTIyNDMuLmYyM2Q2NjMyMjBkYzc0Mjk4YjliOWRkOTAxZDBjYzY1ZmFhNTVjNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBAIC0xMTMs
NiArMTEzLDggQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBDb3JlTWVkaWEsIGtDTVRleHRWZXJ0aWNhbExheW91dF8KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVk
aWEsIENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgQ01CbG9ja0J1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIENG
QWxsb2NhdG9yUmVmIGJsb2NrQWxsb2NhdG9yLCBjb25zdCBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxv
Y2tTb3VyY2UqIGN1c3RvbUJsb2NrU291cmNlLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzLCBDTUJsb2NrQnVmZmVyUmVmKiBi
bG9ja0J1ZmZlck91dCksIChzdHJ1Y3R1cmVBbGxvY2F0b3IsIHNvdXJjZUJ1ZmZlciwgYmxvY2tB
bGxvY2F0b3IsIGN1c3RvbUJsb2NrU291cmNlLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZs
YWdzLCBibG9ja0J1ZmZlck91dCksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1
ZmZlclJlZmVyZW5jZSwgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciwgQ01C
bG9ja0J1ZmZlclJlZiB0YXJnZXRCQnVmLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzKSwgKHRoZUJ1ZmZlciwgdGFyZ2V0QkJ1
Ziwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncyksIFBBTF9FWFBPUlQpCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CbG9j
a0J1ZmZlckNyZWF0ZUVtcHR5LCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIHN0cnVjdHVyZUFs
bG9jYXRvciwgdWludDMyX3Qgc3ViQmxvY2tDYXBhY2l0eSwgQ01CbG9ja0J1ZmZlckZsYWdzIGZs
YWdzLCBDTUJsb2NrQnVmZmVyUmVmKiBibG9ja0J1ZmZlck91dCksIChzdHJ1Y3R1cmVBbGxvY2F0
b3IsIHN1YkJsb2NrQ2FwYWNpdHksIGZsYWdzLCBibG9ja0J1ZmZlck91dCksIFBBTF9FWFBPUlQp
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwgQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZSwgRm91ckNoYXJDb2RlLCAoQ01G
b3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0
RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUsIENNTWVkaWFUeXBlLCAoQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQT1JUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKaW5kZXggZDRmZjA0NjhjMzE4YzJmMzQ1ZGE5ODQ1
OWZlNzE0OWIzNzViNDNkZS4uNWZkZmY4NDc5YjUzMTVjZGFhYjEwYzc2OWI1ZmU5ZTY0NGMyNTM1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaApA
QCAtMTc1LDYgKzE3NSwxMCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X1JpZ2h0VG9MZWZ0LAogCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNyZWF0ZUNv
bnRpZ3VvdXMsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCBD
TUJsb2NrQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0
b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3Vy
Y2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVy
RmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVy
ZUFsbG9jYXRvciwgc291cmNlQnVmZmVyLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3Vy
Y2UsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKICNk
ZWZpbmUgQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMgc29mdExpbmtfQ29yZU1lZGlhX0NN
QmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSwgT1NT
dGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiB0YXJn
ZXRCQnVmLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgQ01CbG9ja0J1
ZmZlckZsYWdzIGZsYWdzKSwgKHRoZUJ1ZmZlciwgdGFyZ2V0QkJ1Ziwgb2Zmc2V0VG9EYXRhLCBk
YXRhTGVuZ3RoLCBmbGFncykpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZl
cmVuY2Ugc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVu
Y2UKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlRW1wdHksIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxs
b2NhdG9yLCB1aW50MzJfdCBzdWJCbG9ja0NhcGFjaXR5LCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxh
Z3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRv
ciwgc3ViQmxvY2tDYXBhY2l0eSwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKKyNkZWZpbmUgQ01C
bG9ja0J1ZmZlckNyZWF0ZUVtcHR5IHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyQ3Jl
YXRlRW1wdHkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlLCBGb3VyQ2hhckNvZGUsIChDTUZvcm1h
dERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRp
b25HZXRNZWRpYVN1YlR5cGUgc29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRpb25H
ZXRNZWRpYVN1YlR5cGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFUeXBlLCBDTU1lZGlhVHlwZSwgKENNRm9y
bWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IDA1NGNlNWE0MjkyNGM0ZDlmMGM2OWYyZGE4NmQ5MDc3OWE5
MTA4MTUuLmZkOWVjNzU5NzM3ZDRjOTc1OTgzMWU3NzI0MzU5YmUyZTg2NjI0MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTIsNiArNTIsMTIgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxl
RGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgp
KQoreworICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUocHJvdmlkZXIpKX0pOworfQorCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKQEAgLTIzNiw2
ICsyNDIsMTEgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRz
ID0gbV9zZWdtZW50czsKQEAgLTI2NywxMiArMjc4LDQwIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIAogdm9p
ZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQobGVuZ3RoIDw9IHNpemUoKSk7CisgICAgcmV0dXJuIGNvcHlU
byhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7CisgICAgaWYgKG9mZnNl
dCA+PSBzaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlbWFpbmluZyA9IHN0ZDo6
bWluKGxlbmd0aCwgc2l6ZSgpIC0gb2Zmc2V0KTsKKyAgICBpZiAoIXJlbWFpbmluZykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBzZWdtZW50ID0gYmVnaW4oKTsKKyAgICBpZiAob2Zmc2V0
ID49IHNlZ21lbnQtPnNlZ21lbnQtPnNpemUoKSkgeworICAgICAgICBhdXRvIGNvbXBhcmF0b3Ig
PSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5
JiBlbnRyeSkgeworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uIDwgZW50cnkuYmVnaW5Qb3Np
dGlvbjsKKyAgICAgICAgfTsKKyAgICAgICAgc2VnbWVudCA9IHN0ZDo6dXBwZXJfYm91bmQoc2Vn
bWVudCwgZW5kKCksIG9mZnNldCwgY29tcGFyYXRvcik7CisgICAgICAgIHNlZ21lbnQtLTsgLy8g
c3RkOjp1cHBlcl9ib3VuZCBnaXZlcyBhIHBvaW50ZXIgdG8gdGhlIHNlZ21lbnQgdGhhdCBpcyBn
cmVhdGVyIHRoYW4gb2Zmc2V0LiBXZSB3YW50IHRoZSBzZWdtZW50IGp1c3QgYmVmb3JlIHRoYXQu
CisgICAgfQogICAgIGF1dG8gZGVzdGluYXRpb25QdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
ZGVzdGluYXRpb24pOwotICAgIGF1dG8gcmVtYWluaW5nID0gc3RkOjptaW4obGVuZ3RoLCBzaXpl
KCkpOwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKLSAgICAgICAgc2l6
ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LnNl
Z21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC5z
ZWdtZW50LT5kYXRhKCksIGFtb3VudFRvQ29weVRoaXNUaW1lKTsKKworICAgIHNpemVfdCBwb3Np
dGlvbkluU2VnbWVudCA9IG9mZnNldCAtIHNlZ21lbnQtPmJlZ2luUG9zaXRpb247CisgICAgc2l6
ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LT5z
ZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbkluU2VnbWVudCk7CisgICAgbWVtY3B5KGRlc3RpbmF0
aW9uUHRyLCBzZWdtZW50LT5zZWdtZW50LT5kYXRhKCkgKyBwb3NpdGlvbkluU2VnbWVudCwgYW1v
dW50VG9Db3B5VGhpc1RpbWUpOworICAgIHJlbWFpbmluZyAtPSBhbW91bnRUb0NvcHlUaGlzVGlt
ZTsKKyAgICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgcmV0dXJuOworICAgIGRlc3RpbmF0aW9u
UHRyICs9IGFtb3VudFRvQ29weVRoaXNUaW1lOworCisgICAgLy8gSWYgd2UgcmVhY2ggaGVyZSwg
dGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBhbm90aGVyIHNlZ21lbnQgYXZhaWxhYmxlIGFzIHdlIGhh
dmUgY29udGVudCBsZWZ0IHRvIGJlIGZldGNoZWQuCisgICAgZm9yICgrK3NlZ21lbnQ7IHNlZ21l
bnQgIT0gZW5kKCk7ICsrc2VnbWVudCkgeworICAgICAgICBzaXplX3QgYW1vdW50VG9Db3B5VGhp
c1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNlZ21lbnQtPnNlZ21lbnQtPnNpemUoKSk7Cisg
ICAgICAgIG1lbWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC0+c2VnbWVudC0+ZGF0YSgpLCBh
bW91bnRUb0NvcHlUaGlzVGltZSk7CiAgICAgICAgIHJlbWFpbmluZyAtPSBhbW91bnRUb0NvcHlU
aGlzVGltZTsKICAgICAgICAgaWYgKCFyZW1haW5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0zMTIsNyArMzUxLDggQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICAgICAgW10oY29uc3QgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9
LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBk
YXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9
CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAorICAgICAg
ICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsg
fQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRh
KTsKIH0KQEAgLTM5NSw3ICs0MzUsOCBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICAgICAgW10oY29uc3QgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gZGF0YS0+c2l6ZSgpOyB9
LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBk
YXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAg
IFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4gcHJvdmlkZXIuc2l6ZSgpOyB9
CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAyMzY5YWFkOGIz
NTYzOWUyZWE1YTlhZDE4MjY4NTUzNzk1ZTZiNzcwLi5iOGZkNjExMjVmNGJhNDc3YmEyMTM3MTM5
MjEyYWI2N2Y2ZmRhN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KQEAgLTEyMyw2ICsxMjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3Q7CiAgICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAgIC8vIERhdGEgd3JhcHBlZCBieSBh
IERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJl
bmNlZCBieSBvdGhlciBvYmplY3RzLgogICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBk
YXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KQEAgLTE0OCw2ICsxNTAsMTMgQEAgcHVi
bGljOgogI2VuZGlmCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKKyAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsK
KyAgICAgICAgICAgIFdURjo6RnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAg
ICAgICAgIFdURjo6RnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgICAgIH07CisKKyAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQor
CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC0xNzEsNiArMTgwLDggQEAgcHVibGljOgogI2VuZGlm
CiAgICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkK
ICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCiAgICAgICAgIFZhcmlhbnQ8VmVjdG9y
PHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKQEAgLTE4MiwxMCArMTkzLDEzIEBAIHB1YmxpYzoKICNp
ZiBVU0UoR1NUUkVBTUVSKQogICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiwKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1t
dXRhYmxlRGF0YTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAg
ICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKICAgICAgICAgZnJpZW5kIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisKICAgICB2b2lkIGZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0
OwogICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgp
IGNvbnN0OwogCkBAIC0yMTYsNiArMjMwLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmKTsKICNpZiBVU0UoQ0YpCiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCAxYjBkNDhl
MzlhOGM3YjdiY2EyZTlkYjM0MjZhOTE0OGEwNjhhZThlLi4yMDc3NmM5YTNkZjJhNWU1Mjk2MGJi
NDg2NjA1MDliZWUyODU5NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC00MCw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
Yk1BdWRpb1V0aWxpdGllc0NvY29hLmgiCiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29u
dmVydGVyLmg+CkBAIC0xMjksNiArMTMwLDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURh
dGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6CisgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBSZWY8
QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBtX3RyYWNrOwogI2VuZGlmCkBAIC0xODAsNiArMTgyLDcg
QEAgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6OmlzTWF5YmVXZWJNKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRl
cldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFTaXplKSBjb25zdAogeworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YVNpemUpOwogICAgIGF1dG8gcGFyc2VyID0gYWRvcHRS
ZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSk7CiAgICAgYm9vbCBlcnJvciA9IGZhbHNl
OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF1ZGlvVHJhY2tJZDsKQEAgLTIxMiwxMiAr
MjE1LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVkaW9G
aWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHRyYWNrLT5zZXREaXNjYXJkUGFkZGluZyhkaXNjYXJkUGFkZGluZyk7CiAgICAgfSk7
Ci0gICAgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50IHNlZ21lbnQoeyBkYXRhLCBkYXRhU2l6
ZSB9KTsKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQgc2VnbWVudChtYWtlUmVmKGJ1
ZmZlci5nZXQoKSkpOwogICAgIHBhcnNlci0+YXBwZW5kRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsK
ICAgICBpZiAoIXRyYWNrKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBwYXJzZXItPmZs
dXNoUGVuZGluZ0F1ZGlvQnVmZmVycygpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRmls
ZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7IHRyYWNrLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJX
ZWJNRGF0YSB7IFdURk1vdmUoYnVmZmVyKSwgdHJhY2sucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92
ZShkdXJhdGlvbiksIFdURk1vdmUoc2FtcGxlcykgfSk7CiB9CiAKIHN0cnVjdCBQYXNzdGhyb3Vn
aFVzZXJEYXRhIHsKQEAgLTM0NywxNiArMzUwLDIxIEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBB
dWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlz
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3dlYm1EYXRhLT5tX3NhbXBsZXMuc2l6ZSgp
OyBpKyspIHsKICAgICAgICAgYXV0byYgc2FtcGxlID0gbV93ZWJtRGF0YS0+bV9zYW1wbGVzW2ld
OwogICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUtPnNhbXBs
ZUJ1ZmZlcigpOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRE
YXRhQnVmZmVyKHNhbXBsZUJ1ZmZlcik7Ci0gICAgICAgIEFTU0VSVChQQUw6OkNNQmxvY2tCdWZm
ZXJJc1JhbmdlQ29udGlndW91cyhidWZmZXIsIDAsIDApKTsKLSAgICAgICAgaWYgKCFQQUw6OkNN
QmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhidWZmZXIsIDAsIDApKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0byByZWFkIHNhbXBsZSBjb250
ZW50IChub3QgY29udGlndW91cykiKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IGF1dG8gcmF3QnVmZmVyID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxl
QnVmZmVyKTsKKyAgICAgICAgUmV0YWluUHRyPENNQmxvY2tCdWZmZXJSZWY+IGJ1ZmZlciA9IHJh
d0J1ZmZlcjsKKyAgICAgICAgLy8gTWFrZSBzdXJlIGJsb2NrIGJ1ZmZlciBpcyBjb250aWd1b3Vz
LgorICAgICAgICBpZiAoIVBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKHJhd0J1
ZmZlciwgMCwgMCkpIHsKKyAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgY29udGlndW91c0J1
ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRl
Q29udGlndW91cyhudWxscHRyLCByYXdCdWZmZXIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAs
ICZjb250aWd1b3VzQnVmZmVyKSAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKSB7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQgdG8gY3JlYXRlIGNvbnRp
Z3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlciA9IGFkb3B0Q0YoY29udGlndW91c0J1ZmZlcik7
CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgc3JjU2l6ZSA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckdldERhdGFMZW5ndGgoYnVmZmVyKTsKKyAgICAgICAgc2l6ZV90IHNyY1NpemUgPSBQQUw6OkNN
QmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGNoYXIqIHNy
Y0RhdGEgPSBudWxscHRyOwotICAgICAgICBpZiAoUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBv
aW50ZXIoYnVmZmVyLCAwLCBudWxscHRyLCBudWxscHRyLCAmc3JjRGF0YSkgIT0gbm9FcnIpIHsK
KyAgICAgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyKGJ1ZmZlci5nZXQo
KSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJnNyY0RhdGEpICE9IG5vRXJyKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0byByZXRyaWV2ZSBkYXRhIik7
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4
IDIyNjY1YmJlNjYwOTdiNWI4OWQwNDAyZWEyNDk0ZTk1ZmVhMGY3NDcuLmE0ODJjMTU0OWU5NGM1
YTQwY2JhYjFkY2NiMmVmNjZhZDcwYWJkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlICJTYW1wbGVNYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGlt
ZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMTMxNSw2
ICsxMzE2LDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShS
ZWY8TWVkaWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBkYXRlSGlnaGVzdFByZXNl
bnRhdGlvblRpbWVzdGFtcCgpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoYnVmZmVyLT5leHRy
YWN0RGF0YSgpKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBl
ZGI1MWFkNTYwMzQ2MTc0NTY0ZTIxMTFjZWQyODEyNWZhYzEwMmFiLi5mNTk3NGRmZjcxNDIyYjIz
NDMxYTRmYjNlYTZjOTc1YmU0NTg3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00OCw2ICs0OCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGlt
ZVJhbmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7
CkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
b3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSA9
IDA7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVm
ZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVk
aWFTb3VyY2UoKSA9IDA7CkBAIC0xNDcsNiArMTQ4LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
b3RlY3RlZDoKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZCBzaG91bGQgbmV2ZXIgYmUgY2Fs
bGVkIGRpcmVjdGx5IGFuZCBiZSBvdmVycmlkZGVuIGluc3RlYWQuCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CiAgICAgdmly
dHVhbCBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gezIwMDIsIDI0
MDAwfTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzU2Vla2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQppbmRleCBhZjJhMmU2YzA0YWY1M2I2MmEzNWJiMDc5MWI2Y2M1ODkwMDllMWE1Li5lYzRl
MzQxMmVkNTU2N2FjNzUzMTk1MTdmMjk3ZDAwYTYzYTU2Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTQwLDYgKzQw
LDcgQEAKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVy
UHJpdmF0ZS5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0
VHJhY2suaD4KQEAgLTIxMSw4ICsyMTIsOCBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKLSAgICBhdXRv
IHNoYXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnRha2VWZWN0b3IoKSk7
Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gbnNE
YXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0
ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAg
ICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3Ry
ZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRl
eCA5MmQ5YzhkZDUyZjdjNTIwMmQxNmU3ZjhhZmE3MDdlZDJiNjU3ZTdlLi40MTM2MWFjNjE5NDk2
ODg4MDM4ZWVkNmM4MTNhNjQ4M2Y5MDlkYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlh
U2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAK
ICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNl
dFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCmluZGV4IGZmYTJmYmEwZGYwNmU4ZWRkNjRhYmNjYmQ0ZjdhYWU1MzAwOTdm
NTIuLjlhODQ2OTYxNTg4OTgyZDlhN2E4ZDFkZDU3ZDMwYTc0ZGVhNzE1YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBA
IC01NzIsOSArNTcyLDkgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsRGF0YVBhcnNl
clF1ZXVlKCkKICAgICByZXR1cm4gZ2xvYmFsUXVldWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIs
IGRhdGEuc2l6ZSgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0
aCA9ICIsIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9y
ZSk7CiAgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwCmluZGV4IDE2YmNiZTBjNTc3ZmM0MjBkYmE0NzcwZTEzNjU1M2Q5NzAzNThlMzMuLjMzYmUz
NTJhNTQzNDQ2ZjIxZTIzYWE1NjI3MGRjZWFlMTY4NjE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmgiCiAjaW5jbHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNvZnRMaW5rLmg+
CkBAIC03Nyw4ICs3OCw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVk
aW9TYW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50OjpTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIHNlZ21lbnQpCi0gICAgOiBtX3NlZ21lbnQo
V1RGTW92ZShzZWdtZW50KSkKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZl
cikpCiB7CiB9CiAKQEAgLTk4LDkgKzk5LDkgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+
KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAg
IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCisg
ICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiB2ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZl
ci0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgKTsKIH0KQEAgLTExOSwxNSArMTIwLDE1IEBAIHNp
emVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBz
aXplX3Qgc2l6ZVRvUmVhZCwgdWluCiAgICAgICAgICAgICByZXR1cm4gc2l6ZVJlYWQ7CiAgICAg
ICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
KQorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAg
ewotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCB2ZWN0b3IuZGF0YSgpICsgcG9zaXRp
b24sIHNpemVUb1JlYWQpOworICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVzdGluYXRpb24s
IHBvc2l0aW9uLCBzaXplVG9SZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXplVG9SZWFkOwog
ICAgICAgICB9CiAgICAgKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6dGFrZVZlY3RvcigpCitSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpAQCAt
MTM1LDEyICsxMzYsMjggQEAgVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6dGFrZVZlY3RvcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3Ioc2l6ZSgpKTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZCgwLCB2ZWN0
b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmVjdG9yOwor
ICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7
CisgICAgICAgIH0sCisjZW5kaWYKKyAgICAgICAgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgIH0KKyAgICApOworfQorCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAorI2lmIEhB
VkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8
TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAg
ICAgIFtdKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UodmVjdG9yLCB7IH0pOworICAgICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQogICAgICk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCmluZGV4IDRlZTg2YjJjZmE2MGVlYTZkZjZkMjk3NzUyNTcwNWUyNjNlNWE1OWMu
LjZlYzQzOGZlOTFkNThiYjhkOGFkZDFhZDIwM2Y1NjExZjk5MGU0YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q29udGVudFR5cGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjYsOSArNjcs
MTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAg
IFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAg
ICAgICAgU2VnbWVudChWZWN0b3I8dWludDhfdD4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0g
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlVmVjdG9yKCk7CisgICAgICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0
ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6
ZV90IHNpemUoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IHJlYWQoc2l6ZV90IHBvc2l0aW9uLCBz
aXplX3QsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKSBjb25zdDsKQEAgLTc4LDcgKzgxLDcgQEAgcHVi
bGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRh
aW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+CisgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2Vn
bWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGVl
ZDZlMjAyODk4Yzc0ODBjMGU0OWNkNTRjZDMzOTFhYmJhNTQ3MTEuLmMwNjM3YTNkOGVlN2RlZGJm
NzZkYjc1Y2M1OGYwNjZkMDEzZmM4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0yNzMsNyArMjczLDcgQEAgc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZhaWxhYmxl
KCkKIAogdXNpbmcgbmFtZXNwYWNlIHdlYm07CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlN0cmVhbWluZ1ZlY3RvclJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgewor
Y2xhc3MgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U2VnbWVudFJlYWRlciBmaW5hbCA6IHB1Ymxp
YyB3ZWJtOjpSZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZvaWQgYXBwZW5kU2VnbWVudChTZWdtZW50JiYgc2VnbWVudCkKQEAgLTM1NCw2ICszNTQs
ODQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2sp
OwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIEZyZWVCbG9jayh2b2lkKiByZWZjb24sIHZvaWQq
LCBzaXplX3QpCisgICAgeworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBidWZmZXItPmRl
cmVmKCk7CisgICAgfQorCisgICAgU3RhdHVzIFJlYWRJbnRvKHN0ZDo6c2l6ZV90IG51bVRvUmVh
ZCwgQ01CbG9ja0J1ZmZlclJlZiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90KiBudW1BY3R1YWxseVJl
YWQpCisgICAgeworICAgICAgICBBU1NFUlQob3V0cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5UmVh
ZCk7CisgICAgICAgIGlmICghbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgICAgICpudW1BY3R1YWxseVJl
YWQgPSAwOworICAgICAgICBpZiAoIW91dHB1dEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICB3aGlsZSAobnVtVG9S
ZWFkICYmIG1fY3VycmVudFNlZ21lbnQgIT0gbV9kYXRhLmVuZCgpKSB7CisgICAgICAgICAgICBh
dXRvJiBjdXJyZW50U2VnbWVudCA9ICptX2N1cnJlbnRTZWdtZW50OworCisgICAgICAgICAgICBp
ZiAobV9wb3NpdGlvbldpdGhpblNlZ21lbnQgPj0gY3VycmVudFNlZ21lbnQuc2l6ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAg
ICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAg
ICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRp
b25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICAgICAgICAgIGlmICghc2hh
cmVkQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY291bGQgcG90ZW50aWFsbHkgYWxs
b2NhdGUgbW9yZSBtZW1vcnkgdGhhbiBuZWVkZWQgaWYgdGhlIHJlYWQgaXMgcGFydGlhbC4KKyAg
ICAgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1v
cnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudW1Ub1JlYWQsIGtDRkFsbG9j
YXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bVRvUmVhZCwga0NNQmxvY2tCdWZmZXJBc3N1cmVN
ZW1vcnlOb3dGbGFnLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGlmIChlcnIg
IT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJs
b2NrQnVmZmVyRGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNlZ21lbnRT
aXplQXRQb3NpdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgZXJyID0gUEFMOjpDTUJsb2NrQnVm
ZmVyR2V0RGF0YVBvaW50ZXIocmF3QmxvY2tCdWZmZXIsIDAsICZzZWdtZW50U2l6ZUF0UG9zaXRp
b24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAg
aWYgKGVyciAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAgICAgICAgICAgbGFz
dFJlYWQgPSBjdXJyZW50U2VnbWVudC5yZWFkKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBudW1U
b1JlYWQsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZz
ZXQgPSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2hh
cmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVm
ZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKKyAgICAgICAgICAgICAgICAv
LyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFz
IHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFk
LgorICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENN
QmxvY2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZp
b3VzIG9uZT8KKyAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZl
ci0+YmVnaW4oKS0+c2VnbWVudDsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0
ZDo6bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50KTsKKyAgICAgICAgICAgICAgICAvLyBGcm9tIENNQmxvY2tCdWZmZXJD
dXN0b21CbG9ja1NvdXJjZSBkb2N1bWVudGF0aW9uOgorICAgICAgICAgICAgICAgIC8vIE5vdGUg
dGhhdCBmb3IgNjQtYml0IGFyY2hpdGVjdHVyZXMsIHRoaXMgc3RydWN0IGNvbnRhaW5zIG1pc2Fs
aWduZWQgZnVuY3Rpb24gcG9pbnRlcnMuCisgICAgICAgICAgICAgICAgLy8gVG8gYXZvaWQgbGlu
ay10aW1lIGlzc3VlcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBjbGllbnRzIGZpbGwgQ01CbG9j
a0J1ZmZlckN1c3RvbUJsb2NrU291cmNlJ3MgZnVuY3Rpb24gcG9pbnRlciBmaWVsZHMKKyAgICAg
ICAgICAgICAgICAvLyBieSB1c2luZyBhc3NpZ25tZW50IHN0YXRlbWVudHMsIHJhdGhlciB0aGFu
IGRlY2xhcmluZyB0aGVtIGFzIGdsb2JhbCBvciBzdGF0aWMgc3RydWN0cy4KKyAgICAgICAgICAg
ICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgYWxsb2NhdG9yOworICAgICAgICAg
ICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0gMDsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iu
QWxsb2NhdGVCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLkZyZWVC
bG9jayA9IEZyZWVCbG9jazsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3IucmVmQ29uID0gZmly
c3RTZWdtZW50LnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0U2VnbWVudC0+cmVmKCk7Cisg
ICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVt
b3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+
KGZpcnN0U2VnbWVudC0+ZGF0YSgpKSksIGZpcnN0U2VnbWVudC0+c2l6ZSgpLCBudWxscHRyLCAm
YWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgY2FuUmVhZCwgMCwgJnJhd0Jsb2Nr
QnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVt
b3J5KTsKKyAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IGNhblJlYWQ7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBhdXRvIGJsb2NrQnVmZmVyID0gYWRvcHRDRihyYXdCbG9ja0J1ZmZlcik7
CisgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJl
ZmVyZW5jZShvdXRwdXRCdWZmZXIsIHJhd0Jsb2NrQnVmZmVyLCAwLCAwLCAwKTsKKyAgICAgICAg
ICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAgICAgICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAgICAgICBtX3Bvc2l0
aW9uICs9IGxhc3RSZWFkOworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVhZCArPSBsYXN0UmVh
ZDsKKyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IGxhc3RSZWFkOworICAg
ICAgICAgICAgbnVtVG9SZWFkIC09IGxhc3RSZWFkOworICAgICAgICAgICAgaWYgKG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50ID09IGN1cnJlbnRTZWdtZW50LnNpemUoKSkKKyAgICAgICAgICAgICAg
ICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOworICAgICAgICB9CisgICAgICAgIGlmICghbnVtVG9S
ZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cisg
ICAgICAgIGlmICgqbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OmtPa1BhcnRpYWwpOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxk
QmxvY2spOworICAgIH0KKwogICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wb3NpdGlvbjsgfQogCiAgICAgdm9pZCByZXNldCgpCkBAIC01OTUsNyArNjczLDcg
QEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihXVEY6Om1ha2VVbmlxdWVS
ZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQorICAgIDogbV9yZWFkZXIoV1RGOjptYWtlVW5p
cXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkpCiB7CiAgICAgaWYgKGlzV2VibVBhcnNlckF2YWlsYWJs
ZSgpKQogICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8V2VibVBhcnNlcj4oKTsKQEAgLTEwOTksNjYgKzExNzcsNDMgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZl
clJlZj4gc2FtcGwKIAogI2RlZmluZSBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKC4uLikg
aWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJzZXIoKS5sb2dnZXJQdHIoKS0+ZXJyb3IobG9n
Q2hhbm5lbCgpLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIobG9nQ2xhc3NOYW1lKCks
IF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlmaWVyKCkpLCBfX1ZBX0FSR1NfXykKIAotI2lm
IEVOQUJMRShWUDkpCi12b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRh
OjpyZXNldCgpCitSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewotICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0g
bnVsbHB0cjsKLSAgICBUcmFja0RhdGE6OnJlc2V0KCk7CisgICAgaWYgKCFvZmZzZXQgJiYgIWxl
bmd0aCAmJiBQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhtX2NvbXBsZXRlQmxv
Y2tCdWZmZXIuZ2V0KCksIDAsIDApKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0ZUJsb2NrQnVm
ZmVyOworICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Q29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7
CisgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMobnVsbHB0ciwgbV9j
b21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBvZmZzZXQsIGxlbmd0
aCwgMCwgJnJhd0NvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQgdG8gY3JlYXRlIGNvbnRp
Z3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICByZXR1cm4gYWRvcHRDRihyYXdDb250aWd1b3VzQnVmZmVyKTsKIH0KLSNlbmRpZgogCi13ZWJt
OjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVG
cmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFk
YXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNvbnN0IENNVGltZSYgcHJlc2VudGF0aW9u
VGltZSwgaW50IHNhbXBsZUNvdW50KQord2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImIHJlYWRlciwgY29uc3Qg
d2VibTo6RnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykK
IHsKLSNpZiBFTkFCTEUoVlA5KQotICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIg
PSBudWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVudFBhY2tldFNpemUgJiYgKm1fY3VycmVudFBh
Y2tldFNpemUgIT0gbWV0YWRhdGEuc2l6ZSkgewotICAgICAgICAvLyBUaGUgcGFja2V0J3MgbWV0
YWRhdGEgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudGx5IHBlbmRpbmcgcGFydGlhbCBwYWNrZXQ7
IHJlc3RhcnQuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIlZpZGVv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRlIik7
Ci0gICAgICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7Ci0gICAgICAgIG1fY3VycmVudEJsb2Nr
QnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVs
bG9wdDsKKyAgICBpZiAobV9jb21wbGV0ZVBhY2tldFNpemUgJiYgKm1fY29tcGxldGVQYWNrZXRT
aXplICE9IG1ldGFkYXRhLnNpemUpIHsKKyAgICAgICAgLy8gVGhlIHBhY2tldCdzIG1ldGFkYXRh
IGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnRseSBwZW5kaW5nIGNvbXBsZXRlIHBhY2tldDsgcmVz
dGFydC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiVHJhY2tEYXRh
OjpyZWFkRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRlIik7CisgICAgICAgIHJl
c2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRQYWNrZXRTaXplKQotICAgICAgICBt
X2N1cnJlbnRQYWNrZXRTaXplID0gbWV0YWRhdGEuc2l6ZTsKKyAgICBpZiAoIW1fY29tcGxldGVQ
YWNrZXRTaXplKQorICAgICAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IG1ldGFkYXRhLnNpemU7
CiAKICAgICBpZiAoIW1fY3VycmVudEJsb2NrQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gZXJyID0g
UEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG51bGxwdHIsICptX2N1cnJlbnRQYWNrZXRTaXplLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBu
dWxscHRyLCAwLCAqbV9jdXJyZW50UGFja2V0U2l6ZSwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsKLSAg
ICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCBlcnJvciIs
IGVycik7CisgICAgICAgIEFTU0VSVCghbV9wYXJ0aWFsQnl0ZXNSZWFkKTsKKyAgICAgICAgQ01C
bG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGF1dG8gZXJy
ID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbU1h
eEJsb2NrQnVmZmVyQ2FwYWNpdHksIDAsICZyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgIGlmIChl
cnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VyciB8fCAhcmF3QmxvY2tCdWZmZXIpIHsKKyAgICAgICAg
ICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJDcmVhdGVFbXB0
eSBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVh
ZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLQogICAgICAgICBtX2N1cnJlbnRCbG9j
a0J1ZmZlciA9IGFkb3B0Q0YocmF3QmxvY2tCdWZmZXIpOwotICAgICAgICBtX3BhcnRpYWxCeXRl
c1JlYWQgPSAwOwotCi0gICAgICAgIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckFzc3VyZUJsb2Nr
TWVtb3J5KG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpKTsKLSAgICAgICAgaWYgKGVycikgewot
ICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01BdWRpb1NhbXBsZUJ1
ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIp
OwotICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwotICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKCptX2N1cnJlbnRQYWNrZXRTaXplIDwgbV9wYXJ0aWFs
Qnl0ZXNSZWFkICsgKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIFBBUlNFUl9MT0dfRVJST1Jf
SUZfUE9TU0lCTEUoIkludmFsaWQgZnJhbWUgc2l6ZSBhbGxvY2F0ZWQsIGlnbm9yaW5nIHRoZSBl
bnRpcmUgZnJhbWUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkICs9ICpieXRlc1JlbWFp
bmluZzsKLSAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwotICAg
IH0KICAgICB3aGlsZSAoKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIHNpemVfdCBzZWdtZW50
U2l6ZUF0UG9zaXRpb24gPSAwOwotICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRhdGEgPSBu
dWxscHRyOwotICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQb2lu
dGVyKG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCBtX3BhcnRpYWxCeXRlc1JlYWQsICZzZWdt
ZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7Ci0g
ICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7
Ci0gICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKCpieXRlc1JlbWFpbmluZyA8IHNlZ21lbnRTaXplQXRQb3NpdGlv
bikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQW4gZXJyb3Ig
b2NjdXJyZWQsIGRlc3RpbmF0aW9uIGJ1ZmZlciB0b28gc21hbGwgdG8gY29udGFpbiBvdXIgZnJh
bWUiKTsKLSAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsK
LSAgICAgICAgfQogICAgICAgICB1aW50NjRfdCBieXRlc1JlYWQ7Ci0gICAgICAgIGF1dG8gc3Rh
dHVzID0gcmVhZGVyLlJlYWQoKmJ5dGVzUmVtYWluaW5nLCAodWludDhfdCopYmxvY2tCdWZmZXJE
YXRhLCAmYnl0ZXNSZWFkKTsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBzdGF0aWNfY2FzdDxTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpTZWdtZW50UmVhZGVyJj4ocmVhZGVyKS5SZWFkSW50bygqYnl0
ZXNSZW1haW5pbmcsIG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCAmYnl0ZXNSZWFkKTsKICAg
ICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IGJ5dGVzUmVhZDsKICAgICAgICAgbV9wYXJ0aWFsQnl0
ZXNSZWFkICs9IGJ5dGVzUmVhZDsKIApAQCAtMTE2NiwxMiArMTIyMSwzMyBAQCB3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURh
dGEod2VibTo6UmVhZAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICB9CiAKLSAgICBB
U1NFUlQobV9wYXJ0aWFsQnl0ZXNSZWFkIDw9ICptX2N1cnJlbnRQYWNrZXRTaXplKTsKLSAgICBp
ZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY3VycmVudFBhY2tldFNpemUpCisgICAgQVNTRVJU
KG1fcGFydGlhbEJ5dGVzUmVhZCA8PSAqbV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgIGlmICht
X3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jb21wbGV0ZVBhY2tldFNpemUpCiAgICAgICAgIHJldHVy
biB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprT2tQYXJ0aWFsKTsKIAotICAgIGNyZWF0ZVNh
bXBsZUJ1ZmZlcihwcmVzZW50YXRpb25UaW1lLCBzYW1wbGVDb3VudCwgbWV0YWRhdGEpOworICAg
IGlmICghbV9jb21wbGV0ZUJsb2NrQnVmZmVyKQorICAgICAgICBtX2NvbXBsZXRlQmxvY2tCdWZm
ZXIgPSBXVEZNb3ZlKG1fY3VycmVudEJsb2NrQnVmZmVyKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
YXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2UobV9jb21w
bGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwgMCwg
MCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZf
UE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2UgdG8gY29tcGxldGUg
YmxvY2sgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICB9CisgICAgICAgIG1fY3VycmVu
dEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0g
MDsKKworICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprT2tDb21wbGV0ZWQp
OworfQogCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0Rh
dGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNvbnN0IEZyYW1lTWV0
YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNvbnN0IENNVGltZSYg
cHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQoreworI2lmIEVOQUJMRShWUDkpCisg
ICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVt
YWluaW5nKTsKKyAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRfb2soKSkKKyAgICAgICAgcmV0dXJu
IHN0YXR1czsKKworICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRpb25UaW1lLCBzYW1w
bGVDb3VudCwgbWV0YWRhdGEpOwogICAgIHJlc2V0KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShtZXRhZGF0YSk7CkBAIC0xMTg2LDggKzEyNjIsMTQgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYg
cHIKIHsKICNpZiBFTkFCTEUoVlA5KQogICAgIHVpbnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51
bGxwdHI7Ci0gICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7Ci0gICAgYXV0byBl
cnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihtX2N1cnJlbnRCbG9ja0J1ZmZl
ci5nZXQoKSwgMCwgJnNlZ21lbnRTaXplQXRQb3NpdGlvbiwgbnVsbHB0ciwgKGNoYXIqKikmYmxv
Y2tCdWZmZXJEYXRhKTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG1heEhlYWRlclNpemUgPSAzMjsg
Ly8gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgVlA5IHVuY29tcHJlc3NlZCBoZWFkZXIgaXMgMTQ0
IGJpdHMgYW5kIDExIGJ5dGVzIGZvciBWUDguIFJvdW5kIGhpZ2guCisgICAgc2l6ZV90IHNlZ21l
bnRIZWFkZXJMZW5ndGggPSBzdGQ6Om1pbihtYXhIZWFkZXJTaXplLCAqbV9jb21wbGV0ZVBhY2tl
dFNpemUpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3VvdXNDb21wbGV0ZUJs
b2NrQnVmZmVyKDAsIHNlZ21lbnRIZWFkZXJMZW5ndGgpOworICAgIGlmICghY29udGlndW91c0J1
ZmZlcikgeworICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJWaWRlb1RyYWNr
RGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyIGZhaWxlZCB0byBjcmVhdGUgY29udGlndW91cyBkYXRh
IGJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBlcnIgPSBQQUw6OkNN
QmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihjb250aWd1b3VzQnVmZmVyLmdldCgpLCAwLCBudWxs
cHRyLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpOwogICAgIGlmIChlcnIpIHsK
ICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdldERh
dGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTE5Niw3ICsxMjc4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNr
RGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIKICAgICBib29sIGlzS2V5
ID0gZmFsc2U7CiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGZvcm1hdERl
c2NyaXB0aW9uOwogICAgIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6VlA5KSB7Ci0gICAgICAg
IGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIoYmxvY2tCdWZmZXJE
YXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICBpZiAoIW1faGVhZGVyUGFyc2Vy
LlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2VnbWVudEhlYWRlckxl
bmd0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKG1faGVhZGVyUGFyc2Vy
LmtleSgpKSB7CkBAIC0xMjA5LDcgKzEyOTEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29uc3QgQ01UaW1lJiBwcgog
ICAgICAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShmb3JtYXREZXNjcmlwdGlv
bikpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6VlA4
KSB7Ci0gICAgICAgIGF1dG8gaGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZl
ckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbik7CisgICAgICAgIGF1dG8gaGVhZGVyID0gcGFy
c2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRIZWFkZXJMZW5ndGgpOwog
ICAgICAgICBpZiAoaGVhZGVyICYmIGhlYWRlci0+a2V5ZnJhbWUpIHsKICAgICAgICAgICAgIGlz
S2V5ID0gdHJ1ZTsKICAgICAgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVG
b3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoKmhlYWRlciwgdHJhY2soKS52aWRlby52YWx1
ZSgpLmNvbG91cik7CkBAIC0xMjIyLDcgKzEzMDQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29uc3QgQ01UaW1lJiBw
cgogICAgIH0KIAogICAgIGF1dG8gdHJhY2sgPSB0aGlzLT50cmFjaygpOwotICAgIC8vIEZJWE1F
OiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBmcmFtZSwgYnV0IG9ubHkgdGhp
cyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1ZmZlcmAuCisgICAgLy8g
RklYTUU6IEEgYmxvY2sgbWlnaHQgY29udGFpbiBtb3JlIHRoYW4gb25lIGZyYW1lLCBidXQgb25s
eSB0aGlzIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50byBgY29tcGxldGVCbG9ja0J1ZmZlcmAuCiAg
ICAgLy8gQmVsb3cgd2UgY3JlYXRlIHNhbXBsZSBidWZmZXJzIGZvciBlYWNoIGZyYW1lLCBlYWNo
IHdpdGggdGhlIGJsb2NrJ3MgdGltZWNvZGUgYW5kIGBudW1fZnJhbWVzYCB2YWx1ZS4KICAgICAv
LyBTaG91bGRuJ3Qgd2UgY3JlYXRlIGp1c3Qgb25lIHNhbXBsZSBidWZmZXIgb25jZSBhbGwgdGhl
IGJsb2NrJ3MgZnJhbWVzIGhhdmUgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1ZmZlcmA/
CiAKQEAgLTEyMzEsOSArMTMxMyw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Vmlk
ZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUmIHByCiAgICAgICAg
IGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICogcHJlc2VudGF0aW9u
VGltZS50aW1lc2NhbGUgLyBrX3VzX2luX3NlY29uZHM7CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJl
ZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBmcmFtZVNpemUgPSBQQUw6
OkNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpKTsK
ICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nID0geyBQQUw6OkNNVGltZU1ha2UoZHVyYXRp
b24sIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlKSwgcHJlc2VudGF0aW9uVGltZSwgcHJlc2Vu
dGF0aW9uVGltZSB9OwotICAgIGVyciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgdGhpcy0+Zm9y
bWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxlQ291bnQsIDEsICZ0aW1pbmcsIDEsICZmcmFt
ZVNpemUsICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGVyciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJD
cmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0
KCksIHRoaXMtPmZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBsZUNvdW50LCAxLCAmdGlt
aW5nLCAxLCAmKm1fY29tcGxldGVQYWNrZXRTaXplLCAmcmF3U2FtcGxlQnVmZmVyKTsKICAgICBp
ZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNU2FtcGxl
QnVmZmVyQ3JlYXRlUmVhZHkgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwogICAgICAgICByZXR1
cm47CkBAIC0xMjYzLDU2ICsxMzQ0LDI3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUmIHByCiAjZW5k
aWYgLy8gRU5BQkxFKFZQOSkKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRp
b1RyYWNrRGF0YTo6cmVzZXQoKQordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1Ry
YWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQogeworICAgIG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxv
Y2sgPSAwOwogICAgIG1fcGFja2V0RGVzY3JpcHRpb25zLmNsZWFyKCk7Ci0gICAgbV9wYWNrZXRz
RGF0YS5jbGVhcigpOwotICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgPSBzdGQ6Om51bGxv
cHQ7Ci0gICAgVHJhY2tEYXRhOjpyZXNldCgpOworICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZz
ZXQgPSAwOworICAgIFRyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKTsKIH0KIAogd2VibTo6U3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVE
YXRhKHdlYm06OlJlYWRlciYgcmVhZGVyLCBjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwg
dWludDY0X3QqIGJ5dGVzUmVtYWluaW5nLCBjb25zdCBDTVRpbWUmIHByZXNlbnRhdGlvblRpbWUs
IGludCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NFUlQoc2FtcGxlQ291bnQpOwotCi0gICAgaWYg
KG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICBtX2J5dGVPZmZzZXQg
PSBtZXRhZGF0YS5wb3NpdGlvbjsKLSAgICAgICAgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lID0g
cHJlc2VudGF0aW9uVGltZTsKLSAgICB9Ci0KLSAgICBpZiAobV9jdXJyZW50UGFja2V0U2l6ZSAm
JiAqbV9jdXJyZW50UGFja2V0U2l6ZSAhPSBtZXRhZGF0YS5zaXplKSB7Ci0gICAgICAgIC8vIFRo
ZSBwYWNrZXQncyBtZXRhZGF0YSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50bHkgcGVuZGluZyBw
YXJ0aWFsIHBhY2tldDsgcmVzdGFydC4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhf
TUVTU0FHRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHdlYm0gaW4gbm9uc2Vu
c2ljYWwgc3RhdGUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0gMDsKLSAgICAgICAg
bV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBpZiAoIW1f
Y3VycmVudFBhY2tldFNpemUpCi0gICAgICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBtZXRhZGF0
YS5zaXplOwotCi0gICAgLy8gRW5zdXJlIHdlIGhhdmUgcm9vbSB0byBzdG9yZSB0aGUgZnVsbCBw
ZW5kaW5nIGZyYW1lLgotICAgIGlmIChtX3BhY2tldHNEYXRhLnNpemUoKSA8IG1fcGFja2V0c0J5
dGVzUmVhZCArIG1ldGFkYXRhLnNpemUpCi0gICAgICAgIG1fcGFja2V0c0RhdGEuZ3JvdyhtX3Bh
Y2tldHNCeXRlc1JlYWQgKyBtZXRhZGF0YS5zaXplKTsKLQotICAgIGlmICghbV9jdXJyZW50UGFj
a2V0Qnl0ZU9mZnNldCkKLSAgICAgICAgbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCA9IG1fcGFj
a2V0c0J5dGVzUmVhZDsKLQotICAgIHdoaWxlICgqYnl0ZXNSZW1haW5pbmcpIHsKLSAgICAgICAg
dWludDY0X3QgYnl0ZXNSZWFkOwotICAgICAgICBhdXRvIHN0YXR1cyA9IHJlYWRlci5SZWFkKCpi
eXRlc1JlbWFpbmluZywgbV9wYWNrZXRzRGF0YS5kYXRhKCkgKyBtX3BhY2tldHNCeXRlc1JlYWQg
KyBtX3BhcnRpYWxCeXRlc1JlYWQsICZieXRlc1JlYWQpOwotICAgICAgICAqYnl0ZXNSZW1haW5p
bmcgLT0gYnl0ZXNSZWFkOwotICAgICAgICBtX3BhcnRpYWxCeXRlc1JlYWQgKz0gYnl0ZXNSZWFk
OwotCi0gICAgICAgIGlmICghc3RhdHVzLmNvbXBsZXRlZF9vaygpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXR1czsKLSAgICB9CisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRl
ciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRf
b2soKSkKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKIAotICAgIEFTU0VSVChtX3BhcnRpYWxCeXRl
c1JlYWQgPD0gKm1fY3VycmVudFBhY2tldFNpemUpOwotICAgIGlmIChtX3BhcnRpYWxCeXRlc1Jl
YWQgPCAqbV9jdXJyZW50UGFja2V0U2l6ZSkKLSAgICAgICAgcmV0dXJuIHdlYm06OlN0YXR1cyh3
ZWJtOjpTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgIC8vIEF0dGVtcHRzIHRvIG1pbmltaXNlIHRo
ZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRpb25zIGR1ZSB0byByZXBldGl0dmUgQ01CbG9ja0J1
ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSBjYWxscyBpbiByZWFkRnJhbWVEYXRhLgorICAgIG1O
dW1GcmFtZXNJbkNvbXBsZXRlQmxvY2srKzsKKyAgICBpZiAobU51bUZyYW1lc0luQ29tcGxldGVC
bG9jayA+IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5KQorICAgICAgICBtTWF4QmxvY2tCdWZmZXJD
YXBhY2l0eSA9IG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2s7CiAKLSAgICBtX3BhY2tldHNCeXRl
c1JlYWQgKz0gbV9wYXJ0aWFsQnl0ZXNSZWFkOwotICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7
CisgICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zYW1w
bGVQcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKIAogICAgIGlmICghZm9ybWF0
RGVzY3JpcHRpb24oKSkgewogICAgICAgICBpZiAoIXRyYWNrKCkuY29kZWNfcHJpdmF0ZS5pc19w
cmVzZW50KCkpIHsKQEAgLTEzMjUsOCArMTM3NywxOSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVh
ZAogICAgICAgICBpZiAoY29kZWMoKSA9PSBDb2RlY1R5cGU6OlZvcmJpcykKICAgICAgICAgICAg
IGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlVm9yYmlzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihw
cml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSk7CiAgICAgICAgIGVsc2UgaWYg
KGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CisgICAgICAgICAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihtX2N1cnJlbnRQYWNrZXRC
eXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgICAgICAgICAgaWYgKCFjb250
aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NT
SUJMRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHVuYWJsZSB0byBjcmVhdGUg
Y29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJl
YWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdWludDhf
dCogYmxvY2tCdWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1dG8gZXJyID0gUEFM
OjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoY29udGlndW91c0J1ZmZlci5nZXQoKSwgMCwg
bnVsbHB0ciwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsKKyAgICAgICAgICAg
IGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxF
KCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIE9wdXNDb29raWVDb250ZW50cyBjb29raWVDb250ZW50
czsKLSAgICAgICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6
ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksIG1fcGFja2V0c0J5dGVzUmVhZCwgbV9wYWNrZXRzRGF0
YS5kYXRhKCksIGNvb2tpZUNvbnRlbnRzKSkgeworICAgICAgICAgICAgaWYgKCFwYXJzZU9wdXNQ
cml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29t
cGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKSkgewogICAg
ICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkZhaWxlZCB0byBwYXJz
ZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFk
ZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KQEAgLTEzNTUsMTAgKzE0MTgsMjEg
QEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpj
b25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICB9IGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29k
ZWNUeXBlOjpPcHVzKSB7CiAgICAgICAgIC8vIE9wdXMgdGVjaG5pY2FsbHkgYWxsb3dzIHRoZSBm
cmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1wYWNrZXQgdmFsdWVzIHRvIGNoYW5nZSBmcm9t
IHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8vIENvcmVBdWRpbyBkb2Vzbid0IHN1cHBvcnQg
QVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFuZ2Ugb24gYSBwZXItcGFja2V0IGJhc2lzLCBz
byB0aHJvdyBhbiBlcnJvciB3aGVuCi0gICAgICAgIC8vIHRoYXQga2luZCBvZiB2YXJpYWJsaWxp
dHkgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIC8vIHRoYXQga2luZCBvZiB2YXJpYWJpbGl0eSBp
cyBlbmNvdW50ZXJlZC4KICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRz
OwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9IHRyYWNrKCkuY29kZWNfcHJpdmF0ZS52YWx1
ZSgpOwotICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUo
KSwgcHJpdmF0ZURhdGEuZGF0YSgpLCBtX3BhY2tldHNCeXRlc1JlYWQsIG1fcGFja2V0c0RhdGEu
ZGF0YSgpLCBjb29raWVDb250ZW50cykKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
Y29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIobV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCwg
Km1fY29tcGxldGVQYWNrZXRTaXplKTsKKyAgICAgICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7
CisgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJBdWRpb1RyYWNrRGF0
YTo6Y29uc3VtZUZyYW1lRGF0YTogdW5hYmxlIHRvIGNyZWF0ZSBjb250aWd1b3VzIGRhdGEgYmxv
Y2siKTsKKyAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsK
KyAgICAgICAgfQorICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRhdGEgPSBudWxscHRyOwor
ICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyKGNvbnRp
Z3VvdXNCdWZmZXIuZ2V0KCksIDAsIG51bGxwdHIsIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVm
ZmVyRGF0YSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJS
T1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBl
cnJvciIsIGVycik7CisgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2
YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXpl
LCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQogICAgICAgICAgICAgfHwgY29va2ll
Q29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0CiAgICAgICAgICAg
ICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgewog
ICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBmcmFtZXMtcGVy
LXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwpAQCAtMTM2NiwxNCArMTQ0
MCwxNSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0Rh
dGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICB9CiAgICAgfQogCi0gICAg
bV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oKm1fY3Vy
cmVudFBhY2tldEJ5dGVPZmZzZXQpLCAwLCBzdGF0aWNfY2FzdDxVSW50MzI+KCptX2N1cnJlbnRQ
YWNrZXRTaXplKSB9KTsKLSAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ID0gc3RkOjpudWxs
b3B0OwotICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9wYWNr
ZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9jdXJyZW50UGFj
a2V0Qnl0ZU9mZnNldCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY29tcGxldGVQYWNrZXRT
aXplKSB9KTsKKyAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ICs9ICptX2NvbXBsZXRlUGFj
a2V0U2l6ZTsKKyAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gc2FtcGxlRHVyYXRpb24gPSBQQUw6OkNNVGltZUdldFNlY29uZHMoUEFMOjpDTVRpbWVT
dWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUpKSArIFBB
TDo6Q01UaW1lR2V0U2Vjb25kcyhtX3BhY2tldER1cmF0aW9uKSAqIHNhbXBsZUNvdW50OwotCi0g
ICAgaWYgKHNhbXBsZUR1cmF0aW9uID49IG1fbWluaW11bVNhbXBsZUR1cmF0aW9uKQorICAgIGlm
IChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1TYW1wbGVEdXJhdGlvbikgewogICAgICAgICBj
cmVhdGVTYW1wbGVCdWZmZXIobWV0YWRhdGEucG9zaXRpb24pOworICAgICAgICByZXNldCgpOwor
ICAgIH0KIAogICAgIEFTU0VSVCghKmJ5dGVzUmVtYWluaW5nKTsKICAgICByZXR1cm4gd2VibTo6
U3RhdHVzKHdlYm06OlN0YXR1czo6a09rQ29tcGxldGVkKTsKQEAgLTEzODEsMzkgKzE0NTYsMTcg
QEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpj
b25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCiB7Ci0gICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25z
LmlzRW1wdHkoKSB8fCAhbV9wYWNrZXRzQnl0ZXNSZWFkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBU1NFUlQoIW1fcGFja2V0c0RhdGEuaXNFbXB0eSgpKTsKLQotICAgIENNQmxvY2tCdWZmZXJS
ZWYgYmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVm
ZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIG1f
cGFja2V0c0J5dGVzUmVhZCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgbV9wYWNr
ZXRzQnl0ZXNSZWFkLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1
ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJ
QkxFKCJDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxlZCB3aXRoICVkIiwg
ZXJyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0Yo
YmxvY2tCdWZmZXIpOwotCi0gICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFC
eXRlcyhtX3BhY2tldHNEYXRhLmRhdGEoKSwgYnVmZmVyLmdldCgpLCAwLCBtX3BhY2tldHNCeXRl
c1JlYWQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NT
SUJMRSgiQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnIp
OworICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxs
cHRyOwotICAgIGVyciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aFBh
Y2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIGZvcm1h
dERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25zLnNpemUoKSwgbV9zYW1w
bGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5kYXRhKCksICZyYXdTYW1w
bGVCdWZmZXIpOworICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRl
UmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29tcGxl
dGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgbV9wYWNrZXRE
ZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUsIG1fcGFja2V0RGVz
Y3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYgKGVycikgewogICAg
ICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUF1ZGlvU2FtcGxlQnVmZmVyQ3Jl
YXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKHJhd1NhbXBs
ZUJ1ZmZlcik7CiAKLSAgICBtX3BhY2tldHNEYXRhLnJlbW92ZSgwLCBtX3BhY2tldHNCeXRlc1Jl
YWQpOwotICAgIGlmIChtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0KQotICAgICAgICAqbV9jdXJy
ZW50UGFja2V0Qnl0ZU9mZnNldCAtPSBtX3BhY2tldHNCeXRlc1JlYWQ7Ci0gICAgbV9wYWNrZXRz
Qnl0ZXNSZWFkID0gMDsKLSAgICBtX3BhY2tldERlc2NyaXB0aW9ucy5jbGVhcigpOwotCiAgICAg
YXV0byB0cmFja0lEID0gdHJhY2soKS50cmFja191aWQudmFsdWUoKTsKICAgICBwYXJzZXIoKS5w
cm92aWRlTWVkaWFEYXRhKFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJhY2tJRCwgbGF0ZXN0Qnl0
ZVJhbmdlT2Zmc2V0KTsKIH0KQEAgLTE0MjEsOCArMTQ3NCwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRp
b25hbDxzaQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdBdWRpb0J1
ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrcykgewotICAgICAgICBp
ZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0
YTo6VHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBkb3duY2FzdDxBdWRpb1RyYWNrRGF0YT4odHJh
Y2suZ2V0KCkpLmNyZWF0ZVNhbXBsZUJ1ZmZlcigpOworICAgICAgICBpZiAodHJhY2stPnRyYWNr
VHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6VHlwZTo6QXVkaW8p
IHsKKyAgICAgICAgICAgIEF1ZGlvVHJhY2tEYXRhJiBhdWRpb1RyYWNrID0gZG93bmNhc3Q8QXVk
aW9UcmFja0RhdGE+KHRyYWNrLmdldCgpKTsKKyAgICAgICAgICAgIGF1ZGlvVHJhY2suY3JlYXRl
U2FtcGxlQnVmZmVyKCk7CisgICAgICAgICAgICBhdWRpb1RyYWNrLnJlc2V0Q29tcGxldGVkKCk7
CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRl
eCA5NTI5NzZiMjcyZjcxMTg1YmI3ODdmNWFhMzQyM2M0Zjg3ZDZjNGE2Li42OGExMjAwMGUyNGU2
OThkZjBhYzk0OTA1YTcxNzZlMGNiMTBmMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlQVZGT2JqQzsKIGNsYXNzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRl
IHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgY2xhc3MgU2VnbWVudFJlYWRl
cjsKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2YWlsYWJsZSgpOwogICAg
IHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250ZW50VHlwZVN1cHBv
cnRlZChjb25zdCBDb250ZW50VHlwZSYpOwpAQCAtMTU1LDMwICsxNTUsNDIgQEAgcHVibGljOgog
ICAgICAgICB2b2lkIHNldEZvcm1hdERlc2NyaXB0aW9uKFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiYmIGRlc2NyaXB0aW9uKSB7IG1fZm9ybWF0RGVzY3JpcHRpb24gPSBXVEZNb3Zl
KGRlc2NyaXB0aW9uKTsgfQogCiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0mIHBhcnNl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyOyB9Ci0gICAgICAgIAorCiAgICAgICAgIHZpcnR1
YWwgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiwgY29uc3Qgd2Vi
bTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwgaW50KQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprSW52YWxpZEVsZW1lbnRJZCk7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRDb21wbGV0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2NvbXBsZXRlQmxvY2tC
dWZmZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZvaWQgcmVzZXQoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gc3RkOjpudWxsb3B0OworICAg
ICAgICAgICAgcmVzZXRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIG1fY29tcGxldGVQYWNrZXRT
aXplID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0gMDsK
KyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgfQog
CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV9jdXJyZW50
UGFja2V0U2l6ZTsKLSAgICAgICAgLy8gU2l6ZSBvZiB0aGUgY3VycmVudGx5IHBhcnNlZCBwYWNr
ZXQsIHBvc3NpYmx5IGluY29tcGxldGUuCi0gICAgICAgIHNpemVfdCBtX3BhcnRpYWxCeXRlc1Jl
YWQgeyAwIH07CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBjb250aWd1b3Vz
Q29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
KyAgICAgICAgd2VibTo6U3RhdHVzIHJlYWRGcmFtZURhdGEod2VibTo6UmVhZGVyJiwgY29uc3Qg
d2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZyk7CisgICAgICAg
IFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2NvbXBsZXRlQmxvY2tCdWZmZXI7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2NvbXBsZXRlUGFja2V0U2l6ZTsKKyAgICAgICAg
Ly8gSW5pdGlhbCBhbGxvY2F0aW9uIHNpemUgb2YgZW1wdHkgQ01CbG9ja0J1ZmZlci4KKyAgICAg
ICAgc2l6ZV90IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5IHsgMCB9OwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgQ29kZWNUeXBlIG1fY29kZWM7CiAgICAgICAgIHdlYm06OlRyYWNrRW50cnkgbV90
cmFjazsKICAgICAgICAgVHlwZSBtX3RyYWNrVHlwZTsKICAgICAgICAgUmV0YWluUHRyPENNRm9y
bWF0RGVzY3JpcHRpb25SZWY+IG1fZm9ybWF0RGVzY3JpcHRpb247CisgICAgICAgIFJldGFpblB0
cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICAgICAgICAgU291cmNl
QnVmZmVyUGFyc2VyV2ViTSYgbV9wYXJzZXI7CisgICAgICAgIC8vIFNpemUgb2YgdGhlIGN1cnJl
bnRseSBpbmNvbXBsZXRlIHBhcnNlZCBwYWNrZXQuCisgICAgICAgIHNpemVfdCBtX3BhcnRpYWxC
eXRlc1JlYWQgeyAwIH07CiAgICAgfTsKIAogICAgIGNsYXNzIFZpZGVvVHJhY2tEYXRhIDogcHVi
bGljIFRyYWNrRGF0YSB7CkBAIC0xOTMsOSArMjA1LDYgQEAgcHVibGljOgogICAgICAgICB7CiAg
ICAgICAgIH0KIAotI2lmIEVOQUJMRShWUDkpCi0gICAgICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsK
LSNlbmRpZgogICAgICAgICB3ZWJtOjpTdGF0dXMgY29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFk
ZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgdWludDY0X3QqLCBjb25zdCBDTVRpbWUm
LCBpbnQpIGZpbmFsOwogCiAgICAgcHJpdmF0ZToKQEAgLTIwNCw3ICsyMTMsNiBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoVlA5KQogICAgICAgICB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXJzZXIg
bV9oZWFkZXJQYXJzZXI7Ci0gICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1
cnJlbnRCbG9ja0J1ZmZlcjsKICNlbmRpZgogICAgIH07CiAKQEAgLTIyMiw3ICsyMzAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB3ZWJtOjpTdGF0dXMgY29uc3VtZUZyYW1lRGF0
YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgdWludDY0X3QqLCBj
b25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwotICAgICAgICB2b2lkIHJlc2V0KCkgZmluYWw7Cisg
ICAgICAgIHZvaWQgcmVzZXRDb21wbGV0ZWQoKSBmaW5hbDsKICAgICAgICAgdm9pZCBjcmVhdGVT
YW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhdGVzdEJ5dGVSYW5nZU9mZnNldCA9
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjMwLDE1ICsyMzgsMTEgQEAgcHVi
bGljOgogCiAgICAgICAgIENNVGltZSBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWU7CiAgICAgICAg
IENNVGltZSBtX3BhY2tldER1cmF0aW9uOwotICAgICAgICBWZWN0b3I8dWludDhfdD4gbV9wYWNr
ZXRzRGF0YTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY3VycmVudFBhY2tldEJ5
dGVPZmZzZXQ7Ci0gICAgICAgIC8vIFNpemUgb2YgdGhlIGNvbXBsZXRlIHBhY2tldHMgcGFyc2Vk
IHNvIGZhci4KLSAgICAgICAgc2l6ZV90IG1fcGFja2V0c0J5dGVzUmVhZCB7IDAgfTsKLSAgICAg
ICAgc2l6ZV90IG1fYnl0ZU9mZnNldCB7IDAgfTsKKyAgICAgICAgc2l6ZV90IG1fY3VycmVudFBh
Y2tldEJ5dGVPZmZzZXQgeyAwIH07CiAgICAgICAgIHVpbnQ4X3QgbV9mcmFtZXNQZXJQYWNrZXQg
eyAwIH07CiAgICAgICAgIFNlY29uZHMgbV9mcmFtZUR1cmF0aW9uIHsgMF9zIH07CiAgICAgICAg
IFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX3BhY2tldERlc2NyaXB0aW9u
czsKLQorICAgICAgICBzaXplX3QgbU51bUZyYW1lc0luQ29tcGxldGVCbG9jayB7IDAgfTsKICAg
ICAgICAgLy8gRklYTUU6IDAuNSAtIDEuMCBzZWNvbmRzIGlzIGEgYmV0dGVyIGR1cmF0aW9uIHBl
ciBzYW1wbGUgYnVmZmVyLCBidXQgdXNlIDIgc2Vjb25kcyBzbyBhdCBsZWFzdCB0aGUgZmlyc3QK
ICAgICAgICAgLy8gc2FtcGxlIGJ1ZmZlciB3aWxsIHBsYXkgdW50aWwgd2UgZml4IE1lZGlhU2Ft
cGxlQ3Vyc29yOjpjcmVhdGVTYW1wbGVCdWZmZXIgdG8gZGVhbCB3aXRoIGBlbmRDdXJzb3JgLgog
ICAgICAgICBmbG9hdCBtX21pbmltdW1TYW1wbGVEdXJhdGlvbiB7IDIgfTsKQEAgLTI4MSw3ICsy
ODUsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpOb25lIH07CiAK
LSAgICBVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPiBtX3JlYWRlcjsKKyAgICBVbmlx
dWVSZWY8U2VnbWVudFJlYWRlcj4gbV9yZWFkZXI7CiAKICAgICBWZWN0b3I8VW5pcXVlUmVmPFRy
YWNrRGF0YT4+IG1fdHJhY2tzOwogICAgIHVzaW5nIEJsb2NrVmFyaWFudCA9IFZhcmlhbnQ8d2Vi
bTo6QmxvY2ssIHdlYm06OlNpbXBsZUJsb2NrPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IGQ4
ZGNiMTEwMTNjZTc2N2U4NDNmOTk3NjBkNzQ5OWI5YmU2YzBjNzMuLmQwMDZhY2VhMDhhZjdiMTgx
NjgwNjQzODEyNWVlOWUxODk2NGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMTkyLDkg
KzE5MiwxMyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2
YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQogICAgIG1fY29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChmbGFnKSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YXBwZW5kKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OmFwcGVuZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgYnVmZmVySGFuZGxlKQog
ewotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKGRhdGEudmVjdG9yKCkpOworICAg
IGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoYnVmZmVySGFuZGxlLmhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgaWYgKCFzaGFyZWRN
ZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBw
ZW5kKHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZlckhhbmRsZS5kYXRhU2l6
ZSkpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphYm9ydCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oCmluZGV4IGM5MTI5MDE1OGQ4M2VjOTYwMjVlYzk1OTMzZjJhMzFiNzVlNWVhM2YuLjc3
ZDgyN2FiMzAzMmExNjRiM2Y0YTc2ZTAxODE4NmZmN2I5MTQzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5o
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5Lmgi
CiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVy
UHJpdmF0ZS5oPgpAQCAtODcsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QWN0aXZl
KGJvb2wpOwogICAgIHZvaWQgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRU
eXBlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRNb2Rl
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogICAgIHZvaWQgcmVzZXRQYXJzZXJT
dGF0ZSgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZlZmU4ZjU1ZjlkODg1OWMxYjUwOWY2N2I1MjNm
N2M3ODUwOGQ3OWIuLjhmNjIwYmEyZTk2ZmZmNjMyZWYzZDAzMmE1YjBjNDc4NDk4ZmUyMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDcgKzI5LDcgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0
QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIENhblN3aXRjaFRvVHlwZShXZWJDb3JlOjpDb250ZW50
VHlwZSBjb250ZW50VHlwZSkgLT4gKGJvb2wgY2FuU3dpdGNoKSBTeW5jaHJvbm91cwogICAgIFNl
dE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZSBhcHBlbmRNb2RlKQotICAgIEFw
cGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBBcHBlbmQoV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFib3J0KCkKICAgICBSZXNldFBhcnNlclN0YXRl
KCkKICAgICBSZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcAppbmRleCA2YmFjYTM0ZGM3MGQ0M2M5Zjk0YmUzY2QzMTZlZGJkZDFlM2U1
OTNmLi43NTZiMjQwYjZmYTdiYjViZThlY2JmZTcwZjk1OWM5ODczMTY3OGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCw2ICs0OCwxOSBAQCBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25z
dAoreworICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh7CisgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
ICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgW2RhdGFTaXplXSAoKSAtPiBzaXplX3QgeworICAgICAgICAgICAgcmV0dXJuIGRhdGFTaXpl
OworICAgICAgICB9CisgICAgfSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFNo
YXJlZE1lbW9yeTo6SGFuZGxlOjp0YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggNTZhMWY1Njk5
NzcwNWRhMDBhOWRjNDYxOWZlMTIzMTRhZGRmZDJmNi4uZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4
NWU3YmU0OWRjZjU2NTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBA
IC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ug
c2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAor
ICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3Qp
IGNvbnN0OworCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKICAgICBXVEY6Ok1hY2hTZW5kUmln
aHQgY3JlYXRlU2VuZFJpZ2h0KFByb3RlY3Rpb24pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5jcHAKaW5kZXggZmNiMDEyMjIzNDNlNzU4ZGU2NjQ2NjgzNTJiZDEyODRhN2ZmZTQz
NC4uNDU4ZTNiYTRiMDhjODA4NzExZTVmMmVhZjA2NTFlN2ZkZGM0ZmQ1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCwxMiArNzgsMTkgQEAgU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQogICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
IGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVuZChJUEM6OkRhdGFS
ZWZlcmVuY2UoZGF0YSkpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIGF1
dG8gc2hhcmVkRGF0YSA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihkYXRhKTsKKyAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgc2hhcmVkRGF0YS0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisKKyAgICAvLyBUYWtl
IG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQg
bWVtb3J5LgorICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpN
ZWRpYSk7CisKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVuZChTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2hhcmVkRGF0YS0+c2l6ZSgpIH0pLCBtX3JlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMThiOTkwNmNk
Y2M2MzRjN2I4MDE0NTEzN2IzZTBiOWM0OTU4Njg4My4uMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEz
NzNiNzc1ZWU3NTBhYzdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTcyLDcg
KzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVz
CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lk
IHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3Vy
Y2UoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438916</attachid>
            <date>2021-09-21 21:09:42 -0700</date>
            <delta_ts>2021-09-21 23:25:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230329-20210922140941.patch</filename>
            <type>text/plain</type>
            <size>70761</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzNTRjZTU2ZTg3Mjc5
OWU1NGQ4NDA1Y2FmZjA1NmFjYmFlYTI5My4uNTlkMDM1MzQxYTNlOTk4YzRhYTAyOWU2OTRjMjk5
NGU0NjlkZTA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA5LTIwICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJlZE1lbW9y
eSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZmZXIgdG8g
dGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKworICAgICAg
ICBVc2UgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgVmVjdG9yIHRvIHBhc3MgZGF0YSB0byB0aGUg
U291cmNlQnVmZmVyJ3MgcmVsYXRlZAorICAgICAgICBjbGFzc2VzIChTb3VyY2VCdWZmZXIsIFNv
dXJjZUJ1ZmZlclByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclBhcnNlcikuCisgICAgICAgIE1vZGlm
eSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIHRvIG5ldmVyIHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRp
b24gYW5kIGNvcHkKKyAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgY29udGVudC4gSW5zdGVh
ZCwgd2UgdXNlIENNQmxvY2tCdWZmZXIgb2JqZWN0cyB0aGF0IHJldGFpbiB0aGUKKyAgICAgICAg
YmFja2luZyBTaGFyZWRCdWZmZXIgYW5kIHVzZSBvZmZzZXRzIGluc2lkZSB0aGlzIFNoYXJlZEJ1
ZmZlciB0byByZWZlcmVuY2UgdGhlIGRhdGEuCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMgcmVxdWlyZXMgbGl0dGxlIG1vZGlmaWNhdGlvbiBhcyBhIE5TRGF0YSBjYW4gd3JhcCBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAg
ICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBmcm9tIGFuIG9ic2VydmFibGUgc3RhbmRwb2lu
dCBvdGhlciB0aGFuIHRoZSBHUFUgbWVtb3J5IHVzYWdlCisgICAgICAgIGJlaW5nIGRyYXN0aWNh
bGx5IHJlZHVjZWQgKGZyb20gNzAwTUIgd2hlbiB3YXRjaGluZyBhIDRLLzYwZnBzIFlvdVR1YmUg
dmlkZW8gdG8ganVzdCBvdmVyIDIwME1CCisgICAgICAgIG9uIGFuIGlNYWMgUHJvICh3aGljaCBv
bmx5IGhhcyBzb2Z0d2FyZSBWUDkgZGVjb2RpbmcpLCAyNU1CIHZzIDM2ME1CIG9uIGFuIGlQYWQp
CisgICAgICAgIEV4aXN0aW5nIHRlc3RzIGFyZSBmdWxseSBleGVyY2lzaW5nIHRoaXMgbmV3IGNv
ZGUuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6IFNp
bXBsaWZ5IGxvZ2ljIGFyb3VuZCBtX3BlbmRpbmdBcHBlbmREYXRhIG1lbWJlci4KKyAgICAgICAg
T25seSBvbmUgYXBwZW5kQnVmZmVyIG9wZXJhdGlvbiBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2
ZW4gdGltZSBvdGhlcndpc2UgYXBwZW5kQnVmZmVyCisgICAgICAgIHdpbGwgdGhyb3cgYW4gZXhj
ZXB0aW9uOyBhcyBzdWNoLCB0aGVyZSdzIG5vIG5lZWQgdG8gYXBwZW5kIHRoZSBkYXRhIHRvIGEg
dmVjdG9yOiAidGhlcmUgY2FuCisgICAgICAgIGJlIG9ubHkgb25lIi4KKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6YWJvcnRJZlVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weVRvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6IEFkZCBuZXcgRGF0YVNlZ21lbnQgdHlwZSB0aGF0IHRha2VzIGEg
UHJvdmlkZXIgaW4gY29uc3RydWN0b3IuCisgICAgICAgIEEgUHJvdmlkZXIgcHJvdmlkZXMgdHdv
IEZ1bmN0aW9uIG1lbWJlcnMgZGF0YSBhbmQgc2l6ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6IFRoZSBBdWRpb0ZpbGVSZWFkZXJDb2Nv
YSByZXF1aXJlZAorICAgICAgICB0aGUgQ01CbG9ja0J1ZmZlciBjb250YWluaW5nIHRoZSBjb21w
cmVzc2VkIGNvbnRlbnQgdG8gYmUgY29udGlndW91cy4gVGhpcyBpcyBubworICAgICAgICBsb25n
ZXIgZ3VhcmFudGVlZCBzbyBlbnN1cmUgdGhhdCB0aGUgQ01CbG9ja0J1ZmZlciBpcyBjb250aWd1
b3VzLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJl
YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1
b3VzQ29tcGxldGVCbG9ja0J1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OnJlYWRGcmFtZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFt
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9U
cmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1
bWVGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
QXVkaW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdBdWRpb0J1ZmZlcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVzZXRD
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJh
Y2tEYXRhOjpyZXNldCk6CisKIDIwMjEtMDktMDcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KIAogICAgICAgICBEZWNvZGluZyB3ZWJtIGZpbGUgd2l0aCBtb3JlIHRoYW4gMiBj
aGFubmVscyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGIzNDJlOGRmNjMyYTQ4YzNk
OTVlMjFjZDg4NzA4YjJlNGE4YjQ4MTcuLjJlODAxMDZiYWI1Y2E5MGYzMjZhY2RlOTVjNmQyYjM3
OGJiMDI0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA5LTIw
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNoYXJl
ZE1lbW9yeSBmb3IgdHJhbnNmZXJyaW5nIGFwcGVuZGVkIGJ1ZmZlcnMgZnJvbSBTb3VyY2VCdWZm
ZXIgdG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzAzMjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODMyOTE0OTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOiBB
ZGQgcmVxdWlyZWQgQ29yZU1lZGlhIG1ldGhvZHMuCisKIDIwMjEtMDktMDcgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWNvZGluZyB3ZWJtIGZpbGUgd2l0
aCBtb3JlIHRoYW4gMiBjaGFubmVscyB3aWxsIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjFiOWRlYjZiNWE1
YWQxZjkyMzJlZTUwYTUzZDc3NDA3MWY1NTQ3Yi4uM2JhNmMzYzgwMzI3ZDlmZWY5ZjZiNTYzYzI1
MTg2NjEwYmVlMjI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wOS0yMCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTaGFyZWRNZW1v
cnkgZm9yIHRyYW5zZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRv
IHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwMzI5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgzMjkxNDk1CisKKyAgICAg
ICAgVXNlIFNoYXJlZE1lbW9yeSB0byBwYXNzIFNvdXJjZUJ1ZmZlciBjb250ZW50IHRvIFJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5IGluIEdQVSBwcm9jZXNzLgorICAgICAgICBUaGlzIGlzIGRvbmUg
Ynkgd3JhcHBpbmcgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKworICAgICAg
ICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OmFwcGVuZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKwog
MjAyMS0wOS0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUZWFjaCBgV2ViS2l0OjpjcmVhdGVTaGFyZWFibGVCaXRtYXBgIHRvIHNuYXBzaG90IHZp
ZGVvIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRl
MDY0NjgzYy4uYmFlZTlhMTFiNTAxYTQxNWM0Y2Y5YmQ2ZjM1NzkzNWQ2NDMyMjFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRp
YURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSAiU291
cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKQEAgLTM5NCw3
ICszOTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YWJvcnRJZlVwZGF0aW5nKCkKIAogICAgIC8v
IDQuMS4gQWJvcnQgdGhlIGJ1ZmZlciBhcHBlbmQgYWxnb3JpdGhtIGlmIGl0IGlzIHJ1bm5pbmcu
CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7Ci0gICAgbV9wZW5kaW5nQXBwZW5kRGF0
YS5jbGVhcigpOworICAgIG1fcGVuZGluZ0FwcGVuZERhdGEgPSBudWxscHRyOwogICAgIG1fcHJp
dmF0ZS0+YWJvcnQoKTsKIAogICAgIC8vIDQuMi4gU2V0IHRoZSB1cGRhdGluZyBhdHRyaWJ1dGUg
dG8gZmFsc2UuCkBAIC00OTQsNyArNDk1LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLAogCiAg
ICAgLy8gTk9URTogUmV0dXJuIHRvIDMuMiBhcHBlbmRCdWZmZXIoKQogICAgIC8vIDMuIEFkZCBk
YXRhIHRvIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlci4KLSAgICBtX3BlbmRpbmdBcHBlbmRE
YXRhLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0FwcGVuZERhdGEp
OworICAgIG1fcGVuZGluZ0FwcGVuZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBz
aXplKTsKIAogICAgIC8vIDQuIFNldCB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIHRvIHRydWUuCiAg
ICAgbV91cGRhdGluZyA9IHRydWU7CkBAIC01MjQsMTggKzUyNiwxNCBAQCB2b2lkIFNvdXJjZUJ1
ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9y
Zy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0
bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdt
ZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKIAorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1f
cGVuZGluZ0FwcGVuZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVm
ZmVyIGlzIGVtcHR5LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cu
Ci0gICAgaWYgKCFtX3BlbmRpbmdBcHBlbmREYXRhLnNpemUoKSkgeworICAgIGlmICghYXBwZW5k
RGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZh
dGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICAvLyBNYW51YWxseSBjbGVhciBvdXQgdGhlIG1fcGVuZGlu
Z0FwcGVuZERhdGEgVmVjdG9yLCBpbiBjYXNlIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbgot
ICAgIC8vIHJlamVjdHMgYXBwZW5kaW5nIHRoZSBidWZmZXIgZm9yIHdoYXRldmVyIHJlYXNvbi4K
LSAgICAvLyBGSVhNRTogVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBndWFyYW50ZWUgdGhlIG1v
dmUgZnJvbSB0aGlzIFZlY3RvciwgYW5kIHdlIHNob3VsZAotICAgIC8vIGFzc2VydCBoZXJlIHRv
IGNvbmZpcm0gdGhhdC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzgwMDMuCi0gICAgbV9wcml2YXRlLT5hcHBlbmQoV1RGTW92ZShtX3BlbmRpbmdBcHBlbmRE
YXRhKSk7Ci0gICAgbV9wZW5kaW5nQXBwZW5kRGF0YS5jbGVhcigpOworICAgIG1fcHJpdmF0ZS0+
YXBwZW5kKGFwcGVuZERhdGEucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVm
ZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0IHJlc3Vs
dCkKQEAgLTEyMTEsNyArMTIwOSwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZVJlcG9ydEV4dHJhTWVtb3J5Q29zdCh1aW50NjRfdCBleHRyYU1lbW9yeQogCiB2b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQodWludDY0X3QgZXh0cmFN
ZW1vcnkpCiB7Ci0gICAgdWludDY0X3QgZXh0cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5k
RGF0YS5jYXBhY2l0eSgpICsgZXh0cmFNZW1vcnk7CisgICAgdWludDY0X3QgZXh0cmFNZW1vcnlD
b3N0ID0gZXh0cmFNZW1vcnk7CisgICAgaWYgKG1fcGVuZGluZ0FwcGVuZERhdGEpCisgICAgICAg
IGV4dHJhTWVtb3J5Q29zdCArPSBtX3BlbmRpbmdBcHBlbmREYXRhLT5zaXplKCk7CisKICAgICBp
ZiAoZXh0cmFNZW1vcnlDb3N0IDw9IG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmgKaW5kZXggODg4ZDJkNmU5OGRhYmY5N2RhYmUxYzkxZjI0OGIxMDg1ZDY5MmI2
MS4uYTcyMzNkMjFlMDgxYWE0YThkODQyNTRiMjkzYTczMmY2ODQxM2U4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0yMjEs
NyArMjIxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFx
dWVSb290UHJvdmlkZXI7CiAKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBw
ZW5kRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmREYXRhOwog
ICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAKICAgICBSZWZQdHI8VmlkZW9UcmFja0xp
c3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuY3BwCmluZGV4IGExOTE3ODE0NzNkY2FjNzZjNWIwNDE1NTY5MTg0MTQ3MGQz
YTIyNDMuLmYyM2Q2NjMyMjBkYzc0Mjk4YjliOWRkOTAxZDBjYzY1ZmFhNTVjNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBAIC0xMTMs
NiArMTEzLDggQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBDb3JlTWVkaWEsIGtDTVRleHRWZXJ0aWNhbExheW91dF8KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVk
aWEsIENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgQ01CbG9ja0J1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIENG
QWxsb2NhdG9yUmVmIGJsb2NrQWxsb2NhdG9yLCBjb25zdCBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxv
Y2tTb3VyY2UqIGN1c3RvbUJsb2NrU291cmNlLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzLCBDTUJsb2NrQnVmZmVyUmVmKiBi
bG9ja0J1ZmZlck91dCksIChzdHJ1Y3R1cmVBbGxvY2F0b3IsIHNvdXJjZUJ1ZmZlciwgYmxvY2tB
bGxvY2F0b3IsIGN1c3RvbUJsb2NrU291cmNlLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZs
YWdzLCBibG9ja0J1ZmZlck91dCksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1
ZmZlclJlZmVyZW5jZSwgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciwgQ01C
bG9ja0J1ZmZlclJlZiB0YXJnZXRCQnVmLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCwgQ01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzKSwgKHRoZUJ1ZmZlciwgdGFyZ2V0QkJ1
Ziwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncyksIFBBTF9FWFBPUlQpCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CbG9j
a0J1ZmZlckNyZWF0ZUVtcHR5LCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIHN0cnVjdHVyZUFs
bG9jYXRvciwgdWludDMyX3Qgc3ViQmxvY2tDYXBhY2l0eSwgQ01CbG9ja0J1ZmZlckZsYWdzIGZs
YWdzLCBDTUJsb2NrQnVmZmVyUmVmKiBibG9ja0J1ZmZlck91dCksIChzdHJ1Y3R1cmVBbGxvY2F0
b3IsIHN1YkJsb2NrQ2FwYWNpdHksIGZsYWdzLCBibG9ja0J1ZmZlck91dCksIFBBTF9FWFBPUlQp
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwgQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZSwgRm91ckNoYXJDb2RlLCAoQ01G
b3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0
RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUsIENNTWVkaWFUeXBlLCAoQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQT1JUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKaW5kZXggZDRmZjA0NjhjMzE4YzJmMzQ1ZGE5ODQ1
OWZlNzE0OWIzNzViNDNkZS4uNWZkZmY4NDc5YjUzMTVjZGFhYjEwYzc2OWI1ZmU5ZTY0NGMyNTM1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaApA
QCAtMTc1LDYgKzE3NSwxMCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X1JpZ2h0VG9MZWZ0LAogCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNyZWF0ZUNv
bnRpZ3VvdXMsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCBD
TUJsb2NrQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0
b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3Vy
Y2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVy
RmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVy
ZUFsbG9jYXRvciwgc291cmNlQnVmZmVyLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3Vy
Y2UsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKICNk
ZWZpbmUgQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMgc29mdExpbmtfQ29yZU1lZGlhX0NN
QmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSwgT1NT
dGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiB0YXJn
ZXRCQnVmLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgQ01CbG9ja0J1
ZmZlckZsYWdzIGZsYWdzKSwgKHRoZUJ1ZmZlciwgdGFyZ2V0QkJ1Ziwgb2Zmc2V0VG9EYXRhLCBk
YXRhTGVuZ3RoLCBmbGFncykpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZl
cmVuY2Ugc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVu
Y2UKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlRW1wdHksIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxs
b2NhdG9yLCB1aW50MzJfdCBzdWJCbG9ja0NhcGFjaXR5LCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxh
Z3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRv
ciwgc3ViQmxvY2tDYXBhY2l0eSwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKKyNkZWZpbmUgQ01C
bG9ja0J1ZmZlckNyZWF0ZUVtcHR5IHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyQ3Jl
YXRlRW1wdHkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlLCBGb3VyQ2hhckNvZGUsIChDTUZvcm1h
dERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRp
b25HZXRNZWRpYVN1YlR5cGUgc29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRpb25H
ZXRNZWRpYVN1YlR5cGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFUeXBlLCBDTU1lZGlhVHlwZSwgKENNRm9y
bWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IDA1NGNlNWE0MjkyNGM0ZDlmMGM2OWYyZGE4NmQ5MDc3OWE5
MTA4MTUuLmZkOWVjNzU5NzM3ZDRjOTc1OTgzMWU3NzI0MzU5YmUyZTg2NjI0MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTIsNiArNTIsMTIgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxl
RGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgp
KQoreworICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUocHJvdmlkZXIpKX0pOworfQorCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKQEAgLTIzNiw2
ICsyNDIsMTEgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRz
ID0gbV9zZWdtZW50czsKQEAgLTI2NywxMiArMjc4LDQwIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIAogdm9p
ZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQobGVuZ3RoIDw9IHNpemUoKSk7CisgICAgcmV0dXJuIGNvcHlU
byhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7CisgICAgaWYgKG9mZnNl
dCA+PSBzaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlbWFpbmluZyA9IHN0ZDo6
bWluKGxlbmd0aCwgc2l6ZSgpIC0gb2Zmc2V0KTsKKyAgICBpZiAoIXJlbWFpbmluZykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBzZWdtZW50ID0gYmVnaW4oKTsKKyAgICBpZiAob2Zmc2V0
ID49IHNlZ21lbnQtPnNlZ21lbnQtPnNpemUoKSkgeworICAgICAgICBhdXRvIGNvbXBhcmF0b3Ig
PSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5
JiBlbnRyeSkgeworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uIDwgZW50cnkuYmVnaW5Qb3Np
dGlvbjsKKyAgICAgICAgfTsKKyAgICAgICAgc2VnbWVudCA9IHN0ZDo6dXBwZXJfYm91bmQoc2Vn
bWVudCwgZW5kKCksIG9mZnNldCwgY29tcGFyYXRvcik7CisgICAgICAgIHNlZ21lbnQtLTsgLy8g
c3RkOjp1cHBlcl9ib3VuZCBnaXZlcyBhIHBvaW50ZXIgdG8gdGhlIHNlZ21lbnQgdGhhdCBpcyBn
cmVhdGVyIHRoYW4gb2Zmc2V0LiBXZSB3YW50IHRoZSBzZWdtZW50IGp1c3QgYmVmb3JlIHRoYXQu
CisgICAgfQogICAgIGF1dG8gZGVzdGluYXRpb25QdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
ZGVzdGluYXRpb24pOwotICAgIGF1dG8gcmVtYWluaW5nID0gc3RkOjptaW4obGVuZ3RoLCBzaXpl
KCkpOwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKLSAgICAgICAgc2l6
ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LnNl
Z21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC5z
ZWdtZW50LT5kYXRhKCksIGFtb3VudFRvQ29weVRoaXNUaW1lKTsKKworICAgIHNpemVfdCBwb3Np
dGlvbkluU2VnbWVudCA9IG9mZnNldCAtIHNlZ21lbnQtPmJlZ2luUG9zaXRpb247CisgICAgc2l6
ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LT5z
ZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbkluU2VnbWVudCk7CisgICAgbWVtY3B5KGRlc3RpbmF0
aW9uUHRyLCBzZWdtZW50LT5zZWdtZW50LT5kYXRhKCkgKyBwb3NpdGlvbkluU2VnbWVudCwgYW1v
dW50VG9Db3B5VGhpc1RpbWUpOworICAgIHJlbWFpbmluZyAtPSBhbW91bnRUb0NvcHlUaGlzVGlt
ZTsKKyAgICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgcmV0dXJuOworICAgIGRlc3RpbmF0aW9u
UHRyICs9IGFtb3VudFRvQ29weVRoaXNUaW1lOworCisgICAgLy8gSWYgd2UgcmVhY2ggaGVyZSwg
dGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBhbm90aGVyIHNlZ21lbnQgYXZhaWxhYmxlIGFzIHdlIGhh
dmUgY29udGVudCBsZWZ0IHRvIGJlIGZldGNoZWQuCisgICAgZm9yICgrK3NlZ21lbnQ7IHNlZ21l
bnQgIT0gZW5kKCk7ICsrc2VnbWVudCkgeworICAgICAgICBzaXplX3QgYW1vdW50VG9Db3B5VGhp
c1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNlZ21lbnQtPnNlZ21lbnQtPnNpemUoKSk7Cisg
ICAgICAgIG1lbWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC0+c2VnbWVudC0+ZGF0YSgpLCBh
bW91bnRUb0NvcHlUaGlzVGltZSk7CiAgICAgICAgIHJlbWFpbmluZyAtPSBhbW91bnRUb0NvcHlU
aGlzVGltZTsKICAgICAgICAgaWYgKCFyZW1haW5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0zMTIsNyArMzUxLDggQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICAgICAgW10oY29uc3QgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9
LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBk
YXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9
CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAorICAgICAg
ICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsg
fQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRh
KTsKIH0KQEAgLTM5NSw3ICs0MzUsOCBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICAgICAgW10oY29uc3QgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gZGF0YS0+c2l6ZSgpOyB9
LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBk
YXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAg
IFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4gcHJvdmlkZXIuc2l6ZSgpOyB9
CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAyMzY5YWFkOGIz
NTYzOWUyZWE1YTlhZDE4MjY4NTUzNzk1ZTZiNzcwLi5iOGZkNjExMjVmNGJhNDc3YmEyMTM3MTM5
MjEyYWI2N2Y2ZmRhN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KQEAgLTEyMyw2ICsxMjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3Q7CiAgICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAgIC8vIERhdGEgd3JhcHBlZCBieSBh
IERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJl
bmNlZCBieSBvdGhlciBvYmplY3RzLgogICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBk
YXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KQEAgLTE0OCw2ICsxNTAsMTMgQEAgcHVi
bGljOgogI2VuZGlmCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKKyAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsK
KyAgICAgICAgICAgIFdURjo6RnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAg
ICAgICAgIFdURjo6RnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgICAgIH07CisKKyAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQor
CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC0xNzEsNiArMTgwLDggQEAgcHVibGljOgogI2VuZGlm
CiAgICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkK
ICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCiAgICAgICAgIFZhcmlhbnQ8VmVjdG9y
PHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKQEAgLTE4MiwxMCArMTkzLDEzIEBAIHB1YmxpYzoKICNp
ZiBVU0UoR1NUUkVBTUVSKQogICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiwKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1t
dXRhYmxlRGF0YTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAg
ICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKICAgICAgICAgZnJpZW5kIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisKICAgICB2b2lkIGZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0
OwogICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgp
IGNvbnN0OwogCkBAIC0yMTYsNiArMjMwLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmKTsKICNpZiBVU0UoQ0YpCiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCAxYjBkNDhl
MzlhOGM3YjdiY2EyZTlkYjM0MjZhOTE0OGEwNjhhZThlLi4yMDc3NmM5YTNkZjJhNWU1Mjk2MGJi
NDg2NjA1MDliZWUyODU5NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC00MCw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
Yk1BdWRpb1V0aWxpdGllc0NvY29hLmgiCiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29u
dmVydGVyLmg+CkBAIC0xMjksNiArMTMwLDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURh
dGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6CisgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBSZWY8
QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBtX3RyYWNrOwogI2VuZGlmCkBAIC0xODAsNiArMTgyLDcg
QEAgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6OmlzTWF5YmVXZWJNKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRl
cldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFTaXplKSBjb25zdAogeworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YVNpemUpOwogICAgIGF1dG8gcGFyc2VyID0gYWRvcHRS
ZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSk7CiAgICAgYm9vbCBlcnJvciA9IGZhbHNl
OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF1ZGlvVHJhY2tJZDsKQEAgLTIxMiwxMiAr
MjE1LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVkaW9G
aWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHRyYWNrLT5zZXREaXNjYXJkUGFkZGluZyhkaXNjYXJkUGFkZGluZyk7CiAgICAgfSk7
Ci0gICAgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50IHNlZ21lbnQoeyBkYXRhLCBkYXRhU2l6
ZSB9KTsKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQgc2VnbWVudChtYWtlUmVmKGJ1
ZmZlci5nZXQoKSkpOwogICAgIHBhcnNlci0+YXBwZW5kRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsK
ICAgICBpZiAoIXRyYWNrKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBwYXJzZXItPmZs
dXNoUGVuZGluZ0F1ZGlvQnVmZmVycygpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRmls
ZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7IHRyYWNrLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJX
ZWJNRGF0YSB7IFdURk1vdmUoYnVmZmVyKSwgdHJhY2sucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92
ZShkdXJhdGlvbiksIFdURk1vdmUoc2FtcGxlcykgfSk7CiB9CiAKIHN0cnVjdCBQYXNzdGhyb3Vn
aFVzZXJEYXRhIHsKQEAgLTM0NywxNiArMzUwLDIxIEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBB
dWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlz
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3dlYm1EYXRhLT5tX3NhbXBsZXMuc2l6ZSgp
OyBpKyspIHsKICAgICAgICAgYXV0byYgc2FtcGxlID0gbV93ZWJtRGF0YS0+bV9zYW1wbGVzW2ld
OwogICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUtPnNhbXBs
ZUJ1ZmZlcigpOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRE
YXRhQnVmZmVyKHNhbXBsZUJ1ZmZlcik7Ci0gICAgICAgIEFTU0VSVChQQUw6OkNNQmxvY2tCdWZm
ZXJJc1JhbmdlQ29udGlndW91cyhidWZmZXIsIDAsIDApKTsKLSAgICAgICAgaWYgKCFQQUw6OkNN
QmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhidWZmZXIsIDAsIDApKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0byByZWFkIHNhbXBsZSBjb250
ZW50IChub3QgY29udGlndW91cykiKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IGF1dG8gcmF3QnVmZmVyID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxl
QnVmZmVyKTsKKyAgICAgICAgUmV0YWluUHRyPENNQmxvY2tCdWZmZXJSZWY+IGJ1ZmZlciA9IHJh
d0J1ZmZlcjsKKyAgICAgICAgLy8gTWFrZSBzdXJlIGJsb2NrIGJ1ZmZlciBpcyBjb250aWd1b3Vz
LgorICAgICAgICBpZiAoIVBBTDo6Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKHJhd0J1
ZmZlciwgMCwgMCkpIHsKKyAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgY29udGlndW91c0J1
ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRl
Q29udGlndW91cyhudWxscHRyLCByYXdCdWZmZXIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAs
ICZjb250aWd1b3VzQnVmZmVyKSAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKSB7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQgdG8gY3JlYXRlIGNvbnRp
Z3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlciA9IGFkb3B0Q0YoY29udGlndW91c0J1ZmZlcik7
CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgc3JjU2l6ZSA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckdldERhdGFMZW5ndGgoYnVmZmVyKTsKKyAgICAgICAgc2l6ZV90IHNyY1NpemUgPSBQQUw6OkNN
QmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGNoYXIqIHNy
Y0RhdGEgPSBudWxscHRyOwotICAgICAgICBpZiAoUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBv
aW50ZXIoYnVmZmVyLCAwLCBudWxscHRyLCBudWxscHRyLCAmc3JjRGF0YSkgIT0gbm9FcnIpIHsK
KyAgICAgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyKGJ1ZmZlci5nZXQo
KSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJnNyY0RhdGEpICE9IG5vRXJyKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0byByZXRyaWV2ZSBkYXRhIik7
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4
IDIyNjY1YmJlNjYwOTdiNWI4OWQwNDAyZWEyNDk0ZTk1ZmVhMGY3NDcuLmE0ODJjMTU0OWU5NGM1
YTQwY2JhYjFkY2NiMmVmNjZhZDcwYWJkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlICJTYW1wbGVNYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGlt
ZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMTMxNSw2
ICsxMzE2LDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShS
ZWY8TWVkaWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBkYXRlSGlnaGVzdFByZXNl
bnRhdGlvblRpbWVzdGFtcCgpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoYnVmZmVyLT5leHRy
YWN0RGF0YSgpKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBl
ZGI1MWFkNTYwMzQ2MTc0NTY0ZTIxMTFjZWQyODEyNWZhYzEwMmFiLi5mNTk3NGRmZjcxNDIyYjIz
NDMxYTRmYjNlYTZjOTc1YmU0NTg3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00OCw2ICs0OCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGlt
ZVJhbmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7
CkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
b3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSA9
IDA7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVm
ZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVk
aWFTb3VyY2UoKSA9IDA7CkBAIC0xNDcsNiArMTQ4LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
b3RlY3RlZDoKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZCBzaG91bGQgbmV2ZXIgYmUgY2Fs
bGVkIGRpcmVjdGx5IGFuZCBiZSBvdmVycmlkZGVuIGluc3RlYWQuCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CiAgICAgdmly
dHVhbCBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gezIwMDIsIDI0
MDAwfTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzU2Vla2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQppbmRleCBhZjJhMmU2YzA0YWY1M2I2MmEzNWJiMDc5MWI2Y2M1ODkwMDllMWE1Li5lYzRl
MzQxMmVkNTU2N2FjNzUzMTk1MTdmMjk3ZDAwYTYzYTU2Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTQwLDYgKzQw
LDcgQEAKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVy
UHJpdmF0ZS5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0
VHJhY2suaD4KQEAgLTIxMSw4ICsyMTIsOCBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKLSAgICBhdXRv
IHNoYXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnRha2VWZWN0b3IoKSk7
Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gbnNE
YXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0
ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAg
ICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3Ry
ZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRl
eCA5MmQ5YzhkZDUyZjdjNTIwMmQxNmU3ZjhhZmE3MDdlZDJiNjU3ZTdlLi40MTM2MWFjNjE5NDk2
ODg4MDM4ZWVkNmM4MTNhNjQ4M2Y5MDlkYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlh
U2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAK
ICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNl
dFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCmluZGV4IGZmYTJmYmEwZGYwNmU4ZWRkNjRhYmNjYmQ0ZjdhYWU1MzAwOTdm
NTIuLjlhODQ2OTYxNTg4OTgyZDlhN2E4ZDFkZDU3ZDMwYTc0ZGVhNzE1YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBA
IC01NzIsOSArNTcyLDkgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsRGF0YVBhcnNl
clF1ZXVlKCkKICAgICByZXR1cm4gZ2xvYmFsUXVldWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIs
IGRhdGEuc2l6ZSgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0
aCA9ICIsIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9y
ZSk7CiAgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwCmluZGV4IDE2YmNiZTBjNTc3ZmM0MjBkYmE0NzcwZTEzNjU1M2Q5NzAzNThlMzMuLjMzYmUz
NTJhNTQzNDQ2ZjIxZTIzYWE1NjI3MGRjZWFlMTY4NjE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmgiCiAjaW5jbHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNvZnRMaW5rLmg+
CkBAIC03Nyw4ICs3OCw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVk
aW9TYW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50OjpTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIHNlZ21lbnQpCi0gICAgOiBtX3NlZ21lbnQo
V1RGTW92ZShzZWdtZW50KSkKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZl
cikpCiB7CiB9CiAKQEAgLTk4LDkgKzk5LDkgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+
KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAg
IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCisg
ICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiB2ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZl
ci0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgKTsKIH0KQEAgLTExOSwxNSArMTIwLDE1IEBAIHNp
emVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBz
aXplX3Qgc2l6ZVRvUmVhZCwgdWluCiAgICAgICAgICAgICByZXR1cm4gc2l6ZVJlYWQ7CiAgICAg
ICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
KQorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAg
ewotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCB2ZWN0b3IuZGF0YSgpICsgcG9zaXRp
b24sIHNpemVUb1JlYWQpOworICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVzdGluYXRpb24s
IHBvc2l0aW9uLCBzaXplVG9SZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXplVG9SZWFkOwog
ICAgICAgICB9CiAgICAgKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6dGFrZVZlY3RvcigpCitSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpAQCAt
MTM1LDEyICsxMzYsMjggQEAgVmVjdG9yPHVpbnQ4X3Q+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6dGFrZVZlY3RvcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3Ioc2l6ZSgpKTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZCgwLCB2ZWN0
b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmVjdG9yOwor
ICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7
CisgICAgICAgIH0sCisjZW5kaWYKKyAgICAgICAgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgIH0KKyAgICApOworfQorCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAorI2lmIEhB
VkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8
TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAg
ICAgIFtdKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgICAgICBbJl0oY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UodmVjdG9yLCB7IH0pOworICAgICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQogICAgICk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCmluZGV4IDRlZTg2YjJjZmE2MGVlYTZkZjZkMjk3NzUyNTcwNWUyNjNlNWE1OWMu
LjZlYzQzOGZlOTFkNThiYjhkOGFkZDFhZDIwM2Y1NjExZjk5MGU0YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q29udGVudFR5cGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjYsOSArNjcs
MTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAg
IFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAg
ICAgICAgU2VnbWVudChWZWN0b3I8dWludDhfdD4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0g
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlVmVjdG9yKCk7CisgICAgICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0
ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6
ZV90IHNpemUoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IHJlYWQoc2l6ZV90IHBvc2l0aW9uLCBz
aXplX3QsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKSBjb25zdDsKQEAgLTc4LDcgKzgxLDcgQEAgcHVi
bGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRh
aW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+CisgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2Vn
bWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGVl
ZDZlMjAyODk4Yzc0ODBjMGU0OWNkNTRjZDMzOTFhYmJhNTQ3MTEuLjAwMWMyYzEzYmFjMzVhODI1
NThiYmRkZDMyNWUxNjBkZWFhZTljOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0yNzMsNyArMjczLDcgQEAgc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZhaWxhYmxl
KCkKIAogdXNpbmcgbmFtZXNwYWNlIHdlYm07CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlN0cmVhbWluZ1ZlY3RvclJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgewor
Y2xhc3MgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U2VnbWVudFJlYWRlciBmaW5hbCA6IHB1Ymxp
YyB3ZWJtOjpSZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZvaWQgYXBwZW5kU2VnbWVudChTZWdtZW50JiYgc2VnbWVudCkKQEAgLTM1NCw2ICszNTQs
ODQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2sp
OwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24s
IHZvaWQqLCBzaXplX3QpCisgICAgeworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJl
dF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBidWZm
ZXItPmRlcmVmKCk7CisgICAgfQorCisgICAgU3RhdHVzIFJlYWRJbnRvKHN0ZDo6c2l6ZV90IG51
bVRvUmVhZCwgQ01CbG9ja0J1ZmZlclJlZiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90KiBudW1BY3R1
YWxseVJlYWQpCisgICAgeworICAgICAgICBBU1NFUlQob3V0cHV0QnVmZmVyICYmIG51bUFjdHVh
bGx5UmVhZCk7CisgICAgICAgIGlmICghbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgICAgICpudW1BY3R1
YWxseVJlYWQgPSAwOworICAgICAgICBpZiAoIW91dHB1dEJ1ZmZlcikKKyAgICAgICAgICAgIHJl
dHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICB3aGlsZSAo
bnVtVG9SZWFkICYmIG1fY3VycmVudFNlZ21lbnQgIT0gbV9kYXRhLmVuZCgpKSB7CisgICAgICAg
ICAgICBhdXRvJiBjdXJyZW50U2VnbWVudCA9ICptX2N1cnJlbnRTZWdtZW50OworCisgICAgICAg
ICAgICBpZiAobV9wb3NpdGlvbldpdGhpblNlZ21lbnQgPj0gY3VycmVudFNlZ21lbnQuc2l6ZSgp
KSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOwor
ICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZGVz
dGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICAgICAgICAgIGlm
ICghc2hhcmVkQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY291bGQgcG90ZW50aWFs
bHkgYWxsb2NhdGUgbW9yZSBtZW1vcnkgdGhhbiBuZWVkZWQgaWYgdGhlIHJlYWQgaXMgcGFydGlh
bC4KKyAgICAgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdp
dGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudW1Ub1JlYWQsIGtD
RkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bVRvUmVhZCwga0NNQmxvY2tCdWZmZXJB
c3N1cmVNZW1vcnlOb3dGbGFnLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGlm
IChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICAgICAgICAgIHVpbnQ4
X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNl
Z21lbnRTaXplQXRQb3NpdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgZXJyID0gUEFMOjpDTUJs
b2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIocmF3QmxvY2tCdWZmZXIsIDAsICZzZWdtZW50U2l6ZUF0
UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAg
ICAgICAgaWYgKGVyciAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAgICAgICAg
ICAgbGFzdFJlYWQgPSBjdXJyZW50U2VnbWVudC5yZWFkKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBudW1Ub1JlYWQsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25PZmZzZXQgPSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hh
cmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKKyAgICAgICAgICAg
ICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRp
bmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBp
bnN0ZWFkLgorICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEg
bmV3IENNQmxvY2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhl
IHByZXZpb3VzIG9uZT8KKyAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJl
ZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVudDsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVh
ZCA9IHN0ZDo6bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1f
cG9zaXRpb25XaXRoaW5TZWdtZW50KTsKKyAgICAgICAgICAgICAgICAvLyBGcm9tIENNQmxvY2tC
dWZmZXJDdXN0b21CbG9ja1NvdXJjZSBkb2N1bWVudGF0aW9uOgorICAgICAgICAgICAgICAgIC8v
IE5vdGUgdGhhdCBmb3IgNjQtYml0IGFyY2hpdGVjdHVyZXMsIHRoaXMgc3RydWN0IGNvbnRhaW5z
IG1pc2FsaWduZWQgZnVuY3Rpb24gcG9pbnRlcnMuCisgICAgICAgICAgICAgICAgLy8gVG8gYXZv
aWQgbGluay10aW1lIGlzc3VlcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBjbGllbnRzIGZpbGwg
Q01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlJ3MgZnVuY3Rpb24gcG9pbnRlciBmaWVsZHMK
KyAgICAgICAgICAgICAgICAvLyBieSB1c2luZyBhc3NpZ25tZW50IHN0YXRlbWVudHMsIHJhdGhl
ciB0aGFuIGRlY2xhcmluZyB0aGVtIGFzIGdsb2JhbCBvciBzdGF0aWMgc3RydWN0cy4KKyAgICAg
ICAgICAgICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgYWxsb2NhdG9yOworICAg
ICAgICAgICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0gMDsKKyAgICAgICAgICAgICAgICBhbGxv
Y2F0b3IuQWxsb2NhdGVCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9y
LkZyZWVCbG9jayA9IEZyZWVEYXRhU2VnbWVudDsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iu
cmVmQ29uID0gZmlyc3RTZWdtZW50LnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0U2VnbWVu
dC0+cmVmKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJD
cmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nh
c3Q8dWludDhfdCo+KGZpcnN0U2VnbWVudC0+ZGF0YSgpKSksIGZpcnN0U2VnbWVudC0+c2l6ZSgp
LCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgY2FuUmVhZCwg
MCwgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJsb2Nr
QnVmZmVyTm9FcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
Tm90RW5vdWdoTWVtb3J5KTsKKyAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IGNhblJlYWQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGJsb2NrQnVmZmVyID0gYWRvcHRDRihyYXdC
bG9ja0J1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckFw
cGVuZEJ1ZmZlclJlZmVyZW5jZShvdXRwdXRCdWZmZXIsIHJhd0Jsb2NrQnVmZmVyLCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgICAg
ICAgICBtX3Bvc2l0aW9uICs9IGxhc3RSZWFkOworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVh
ZCArPSBsYXN0UmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IGxh
c3RSZWFkOworICAgICAgICAgICAgbnVtVG9SZWFkIC09IGxhc3RSZWFkOworICAgICAgICAgICAg
aWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID09IGN1cnJlbnRTZWdtZW50LnNpemUoKSkKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOworICAgICAgICB9CisgICAgICAg
IGlmICghbnVtVG9SZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CisgICAgICAgIGlmICgqbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a1dvdWxkQmxvY2spOworICAgIH0KKwogICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiAgICAgdm9pZCByZXNldCgpCkBAIC01
OTUsNyArNjczLDcgQEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihXVEY6
Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQorICAgIDogbV9yZWFkZXIo
V1RGOjptYWtlVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkpCiB7CiAgICAgaWYgKGlzV2VibVBh
cnNlckF2YWlsYWJsZSgpKQogICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKQEAgLTEwOTksNjYgKzExNzcsNDMgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGwKIAogI2RlZmluZSBQQVJTRVJfTE9HX0VSUk9SX0lGX1BP
U1NJQkxFKC4uLikgaWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJzZXIoKS5sb2dnZXJQdHIo
KS0+ZXJyb3IobG9nQ2hhbm5lbCgpLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIobG9n
Q2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlmaWVyKCkpLCBfX1ZBX0FS
R1NfXykKIAotI2lmIEVOQUJMRShWUDkpCi12b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZp
ZGVvVHJhY2tEYXRhOjpyZXNldCgpCitSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZl
cihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewotICAgIG1fY3VycmVudEJs
b2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICBUcmFja0RhdGE6OnJlc2V0KCk7CisgICAgaWYgKCFv
ZmZzZXQgJiYgIWxlbmd0aCAmJiBQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyht
X2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIDAsIDApKQorICAgICAgICByZXR1cm4gbV9jb21w
bGV0ZUJsb2NrQnVmZmVyOworICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Q29udGlndW91c0J1ZmZl
ciA9IG51bGxwdHI7CisgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMo
bnVsbHB0ciwgbV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBv
ZmZzZXQsIGxlbmd0aCwgMCwgJnJhd0NvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVy
Tm9FcnIpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQgdG8g
Y3JlYXRlIGNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICByZXR1cm4gYWRvcHRDRihyYXdDb250aWd1b3VzQnVmZmVyKTsKIH0KLSNl
bmRpZgogCi13ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0Rh
dGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNvbnN0IEZyYW1lTWV0
YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNvbnN0IENNVGltZSYg
cHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQord2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6cmVhZEZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImIHJl
YWRlciwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2NF90KiBieXRl
c1JlbWFpbmluZykKIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3
QmxvY2tCdWZmZXIgPSBudWxscHRyOwotCi0gICAgaWYgKG1fY3VycmVudFBhY2tldFNpemUgJiYg
Km1fY3VycmVudFBhY2tldFNpemUgIT0gbWV0YWRhdGEuc2l6ZSkgewotICAgICAgICAvLyBUaGUg
cGFja2V0J3MgbWV0YWRhdGEgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudGx5IHBlbmRpbmcgcGFy
dGlhbCBwYWNrZXQ7IHJlc3RhcnQuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01F
U1NBR0UoIlZpZGVvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNp
Y2FsIHN0YXRlIik7Ci0gICAgICAgIG1fcGFydGlhbEJ5dGVzUmVhZCA9IDA7Ci0gICAgICAgIG1f
Y3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6
ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobV9jb21wbGV0ZVBhY2tldFNpemUgJiYgKm1fY29t
cGxldGVQYWNrZXRTaXplICE9IG1ldGFkYXRhLnNpemUpIHsKKyAgICAgICAgLy8gVGhlIHBhY2tl
dCdzIG1ldGFkYXRhIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnRseSBwZW5kaW5nIGNvbXBsZXRl
IHBhY2tldDsgcmVzdGFydC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FH
RSgiVHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhOiB3ZWJtIGluIG5vbnNlbnNpY2FsIHN0YXRlIik7
CisgICAgICAgIHJlc2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRQYWNrZXRTaXpl
KQotICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gbWV0YWRhdGEuc2l6ZTsKKyAgICBpZiAo
IW1fY29tcGxldGVQYWNrZXRTaXplKQorICAgICAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IG1l
dGFkYXRhLnNpemU7CiAKICAgICBpZiAoIW1fY3VycmVudEJsb2NrQnVmZmVyKSB7Ci0gICAgICAg
IGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsICptX2N1cnJlbnRQYWNrZXRTaXplLCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCAwLCAqbV9jdXJyZW50UGFja2V0U2l6ZSwgMCwgJnJhd0Jsb2Nr
QnVmZmVyKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJP
Ul9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQg
d2l0aCBlcnJvciIsIGVycik7CisgICAgICAgIEFTU0VSVCghbV9wYXJ0aWFsQnl0ZXNSZWFkKTsK
KyAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlRW1wdHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbU1heEJsb2NrQnVmZmVyQ2FwYWNpdHksIDAsICZyYXdCbG9ja0J1ZmZlcik7Cisg
ICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VyciB8fCAhcmF3QmxvY2tCdWZmZXIp
IHsKKyAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZm
ZXJDcmVhdGVFbXB0eSBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1
cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLQogICAgICAgICBt
X2N1cnJlbnRCbG9ja0J1ZmZlciA9IGFkb3B0Q0YocmF3QmxvY2tCdWZmZXIpOwotICAgICAgICBt
X3BhcnRpYWxCeXRlc1JlYWQgPSAwOwotCi0gICAgICAgIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckFzc3VyZUJsb2NrTWVtb3J5KG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpKTsKLSAgICAgICAg
aWYgKGVycikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01B
dWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGgg
ZXJyb3IiLCBlcnIpOwotICAgICAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwotICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCptX2N1cnJlbnRQYWNrZXRTaXpl
IDwgbV9wYXJ0aWFsQnl0ZXNSZWFkICsgKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIFBBUlNF
Ul9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkludmFsaWQgZnJhbWUgc2l6ZSBhbGxvY2F0ZWQsIGln
bm9yaW5nIHRoZSBlbnRpcmUgZnJhbWUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkICs9
ICpieXRlc1JlbWFpbmluZzsKLSAgICAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwotICAgIH0KICAgICB3aGlsZSAoKmJ5dGVzUmVtYWluaW5nKSB7Ci0gICAgICAgIHNp
emVfdCBzZWdtZW50U2l6ZUF0UG9zaXRpb24gPSAwOwotICAgICAgICB1aW50OF90KiBibG9ja0J1
ZmZlckRhdGEgPSBudWxscHRyOwotICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckdldERhdGFQb2ludGVyKG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCBtX3BhcnRpYWxCeXRl
c1JlYWQsICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVm
ZmVyRGF0YSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJS
T1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBl
cnJvciIsIGVycik7Ci0gICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCpieXRlc1JlbWFpbmluZyA8IHNlZ21lbnRT
aXplQXRQb3NpdGlvbikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiQW4gZXJyb3Igb2NjdXJyZWQsIGRlc3RpbmF0aW9uIGJ1ZmZlciB0b28gc21hbGwgdG8gY29u
dGFpbiBvdXIgZnJhbWUiKTsKLSAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKLSAgICAgICAgfQogICAgICAgICB1aW50NjRfdCBieXRlc1JlYWQ7Ci0gICAg
ICAgIGF1dG8gc3RhdHVzID0gcmVhZGVyLlJlYWQoKmJ5dGVzUmVtYWluaW5nLCAodWludDhfdCop
YmxvY2tCdWZmZXJEYXRhLCAmYnl0ZXNSZWFkKTsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBzdGF0
aWNfY2FzdDxTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTZWdtZW50UmVhZGVyJj4ocmVhZGVyKS5S
ZWFkSW50bygqYnl0ZXNSZW1haW5pbmcsIG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCAmYnl0
ZXNSZWFkKTsKICAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IGJ5dGVzUmVhZDsKICAgICAgICAg
bV9wYXJ0aWFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKIApAQCAtMTE2NiwxMiArMTIyMSwzMyBA
QCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNv
bnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAg
ICB9CiAKLSAgICBBU1NFUlQobV9wYXJ0aWFsQnl0ZXNSZWFkIDw9ICptX2N1cnJlbnRQYWNrZXRT
aXplKTsKLSAgICBpZiAobV9wYXJ0aWFsQnl0ZXNSZWFkIDwgKm1fY3VycmVudFBhY2tldFNpemUp
CisgICAgQVNTRVJUKG1fcGFydGlhbEJ5dGVzUmVhZCA8PSAqbV9jb21wbGV0ZVBhY2tldFNpemUp
OworICAgIGlmIChtX3BhcnRpYWxCeXRlc1JlYWQgPCAqbV9jb21wbGV0ZVBhY2tldFNpemUpCiAg
ICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprT2tQYXJ0aWFsKTsKIAot
ICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRpb25UaW1lLCBzYW1wbGVDb3VudCwgbWV0
YWRhdGEpOworICAgIGlmICghbV9jb21wbGV0ZUJsb2NrQnVmZmVyKQorICAgICAgICBtX2NvbXBs
ZXRlQmxvY2tCdWZmZXIgPSBXVEZNb3ZlKG1fY3VycmVudEJsb2NrQnVmZmVyKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZl
cmVuY2UobV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5n
ZXQoKSwgMCwgMCwgMCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBBUlNFUl9M
T0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJBcHBlbmRCdWZmZXJSZWZlcmVuY2Ug
dG8gY29tcGxldGUgYmxvY2sgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOworICAgICAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICAgICB9CisgICAg
ICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgbV9wYXJ0aWFs
Qnl0ZXNSZWFkID0gMDsKKworICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjpr
T2tDb21wbGV0ZWQpOworfQogCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
VmlkZW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkZXIsIGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcsIGNv
bnN0IENNVGltZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQoreworI2lmIEVO
QUJMRShWUDkpCisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0YWRh
dGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1cy5jb21wbGV0ZWRfb2soKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXR1czsKKworICAgIGNyZWF0ZVNhbXBsZUJ1ZmZlcihwcmVzZW50YXRp
b25UaW1lLCBzYW1wbGVDb3VudCwgbWV0YWRhdGEpOwogICAgIHJlc2V0KCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CkBAIC0xMTg2LDggKzEyNjIsMTQgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNv
bnN0IENNVGltZSYgcHIKIHsKICNpZiBFTkFCTEUoVlA5KQogICAgIHVpbnQ4X3QqIGJsb2NrQnVm
ZmVyRGF0YSA9IG51bGxwdHI7Ci0gICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7
Ci0gICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihtX2N1cnJl
bnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwgJnNlZ21lbnRTaXplQXRQb3NpdGlvbiwgbnVsbHB0ciwg
KGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG1heEhlYWRl
clNpemUgPSAzMjsgLy8gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgVlA5IHVuY29tcHJlc3NlZCBo
ZWFkZXIgaXMgMTQ0IGJpdHMgYW5kIDExIGJ5dGVzIGZvciBWUDguIFJvdW5kIGhpZ2guCisgICAg
c2l6ZV90IHNlZ21lbnRIZWFkZXJMZW5ndGggPSBzdGQ6Om1pbihtYXhIZWFkZXJTaXplLCAqbV9j
b21wbGV0ZVBhY2tldFNpemUpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3Vv
dXNDb21wbGV0ZUJsb2NrQnVmZmVyKDAsIHNlZ21lbnRIZWFkZXJMZW5ndGgpOworICAgIGlmICgh
Y29udGlndW91c0J1ZmZlcikgeworICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxF
KCJWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyIGZhaWxlZCB0byBjcmVhdGUgY29u
dGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBl
cnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihjb250aWd1b3VzQnVmZmVyLmdl
dCgpLCAwLCBudWxscHRyLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpOwogICAg
IGlmIChlcnIpIHsKICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9j
a0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTE5Niw3ICsxMjc4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIKICAg
ICBib29sIGlzS2V5ID0gZmFsc2U7CiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IGZvcm1hdERlc2NyaXB0aW9uOwogICAgIGlmIChjb2RlYygpID09IENvZGVjVHlwZTo6VlA5
KSB7Ci0gICAgICAgIGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIo
YmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICBpZiAoIW1f
aGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2Vn
bWVudEhlYWRlckxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKG1f
aGVhZGVyUGFyc2VyLmtleSgpKSB7CkBAIC0xMjA5LDcgKzEyOTEsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29uc3Qg
Q01UaW1lJiBwcgogICAgICAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShmb3Jt
YXREZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjb2RlYygpID09IENv
ZGVjVHlwZTo6VlA4KSB7Ci0gICAgICAgIGF1dG8gaGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRl
cihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbik7CisgICAgICAgIGF1dG8g
aGVhZGVyID0gcGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRIZWFk
ZXJMZW5ndGgpOwogICAgICAgICBpZiAoaGVhZGVyICYmIGhlYWRlci0+a2V5ZnJhbWUpIHsKICAg
ICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKICAgICAgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRp
b24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoKmhlYWRlciwgdHJhY2so
KS52aWRlby52YWx1ZSgpLmNvbG91cik7CkBAIC0xMjIyLDcgKzEzMDQsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29u
c3QgQ01UaW1lJiBwcgogICAgIH0KIAogICAgIGF1dG8gdHJhY2sgPSB0aGlzLT50cmFjaygpOwot
ICAgIC8vIEZJWE1FOiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBmcmFtZSwg
YnV0IG9ubHkgdGhpcyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1ZmZl
cmAuCisgICAgLy8gRklYTUU6IEEgYmxvY2sgbWlnaHQgY29udGFpbiBtb3JlIHRoYW4gb25lIGZy
YW1lLCBidXQgb25seSB0aGlzIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50byBgY29tcGxldGVCbG9j
a0J1ZmZlcmAuCiAgICAgLy8gQmVsb3cgd2UgY3JlYXRlIHNhbXBsZSBidWZmZXJzIGZvciBlYWNo
IGZyYW1lLCBlYWNoIHdpdGggdGhlIGJsb2NrJ3MgdGltZWNvZGUgYW5kIGBudW1fZnJhbWVzYCB2
YWx1ZS4KICAgICAvLyBTaG91bGRuJ3Qgd2UgY3JlYXRlIGp1c3Qgb25lIHNhbXBsZSBidWZmZXIg
b25jZSBhbGwgdGhlIGJsb2NrJ3MgZnJhbWVzIGhhdmUgYmVlbiByZWFkIGludG8gYGN1cnJlbnRC
bG9ja0J1ZmZlcmA/CiAKQEAgLTEyMzEsOSArMTMxMyw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUm
IHByCiAgICAgICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICog
cHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUgLyBrX3VzX2luX3NlY29uZHM7CiAKICAgICBDTVNh
bXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIHNpemVfdCBmcmFt
ZVNpemUgPSBQQUw6OkNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fY3VycmVudEJsb2NrQnVm
ZmVyLmdldCgpKTsKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nID0geyBQQUw6OkNNVGlt
ZU1ha2UoZHVyYXRpb24sIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlKSwgcHJlc2VudGF0aW9u
VGltZSwgcHJlc2VudGF0aW9uVGltZSB9OwotICAgIGVyciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJD
cmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQo
KSwgdGhpcy0+Zm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxlQ291bnQsIDEsICZ0aW1p
bmcsIDEsICZmcmFtZVNpemUsICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGVyciA9IFBBTDo6Q01T
YW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxv
Y2tCdWZmZXIuZ2V0KCksIHRoaXMtPmZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBsZUNv
dW50LCAxLCAmdGltaW5nLCAxLCAmKm1fY29tcGxldGVQYWNrZXRTaXplLCAmcmF3U2FtcGxlQnVm
ZmVyKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwog
ICAgICAgICByZXR1cm47CkBAIC0xMjYzLDU2ICsxMzQ0LDI3IEBAIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRp
bWUmIHByCiAjZW5kaWYgLy8gRU5BQkxFKFZQOSkKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXQoKQordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQogeworICAgIG1OdW1GcmFtZXNJ
bkNvbXBsZXRlQmxvY2sgPSAwOwogICAgIG1fcGFja2V0RGVzY3JpcHRpb25zLmNsZWFyKCk7Ci0g
ICAgbV9wYWNrZXRzRGF0YS5jbGVhcigpOwotICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQg
PSBzdGQ6Om51bGxvcHQ7Ci0gICAgVHJhY2tEYXRhOjpyZXNldCgpOworICAgIG1fY3VycmVudFBh
Y2tldEJ5dGVPZmZzZXQgPSAwOworICAgIFRyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKTsKIH0K
IAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpj
b25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYgcmVhZGVyLCBjb25zdCBGcmFtZU1ldGFkYXRh
JiBtZXRhZGF0YSwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nLCBjb25zdCBDTVRpbWUmIHByZXNl
bnRhdGlvblRpbWUsIGludCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NFUlQoc2FtcGxlQ291bnQp
OwotCi0gICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICBt
X2J5dGVPZmZzZXQgPSBtZXRhZGF0YS5wb3NpdGlvbjsKLSAgICAgICAgbV9zYW1wbGVQcmVzZW50
YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKLSAgICB9Ci0KLSAgICBpZiAobV9jdXJyZW50
UGFja2V0U2l6ZSAmJiAqbV9jdXJyZW50UGFja2V0U2l6ZSAhPSBtZXRhZGF0YS5zaXplKSB7Ci0g
ICAgICAgIC8vIFRoZSBwYWNrZXQncyBtZXRhZGF0YSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50
bHkgcGVuZGluZyBwYXJ0aWFsIHBhY2tldDsgcmVzdGFydC4KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEX1dJVEhfTUVTU0FHRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHdl
Ym0gaW4gbm9uc2Vuc2ljYWwgc3RhdGUiKTsKLSAgICAgICAgbV9wYXJ0aWFsQnl0ZXNSZWFkID0g
MDsKLSAgICAgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0K
LSAgICBpZiAoIW1fY3VycmVudFBhY2tldFNpemUpCi0gICAgICAgIG1fY3VycmVudFBhY2tldFNp
emUgPSBtZXRhZGF0YS5zaXplOwotCi0gICAgLy8gRW5zdXJlIHdlIGhhdmUgcm9vbSB0byBzdG9y
ZSB0aGUgZnVsbCBwZW5kaW5nIGZyYW1lLgotICAgIGlmIChtX3BhY2tldHNEYXRhLnNpemUoKSA8
IG1fcGFja2V0c0J5dGVzUmVhZCArIG1ldGFkYXRhLnNpemUpCi0gICAgICAgIG1fcGFja2V0c0Rh
dGEuZ3JvdyhtX3BhY2tldHNCeXRlc1JlYWQgKyBtZXRhZGF0YS5zaXplKTsKLQotICAgIGlmICgh
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCkKLSAgICAgICAgbV9jdXJyZW50UGFja2V0Qnl0ZU9m
ZnNldCA9IG1fcGFja2V0c0J5dGVzUmVhZDsKLQotICAgIHdoaWxlICgqYnl0ZXNSZW1haW5pbmcp
IHsKLSAgICAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwotICAgICAgICBhdXRvIHN0YXR1cyA9IHJl
YWRlci5SZWFkKCpieXRlc1JlbWFpbmluZywgbV9wYWNrZXRzRGF0YS5kYXRhKCkgKyBtX3BhY2tl
dHNCeXRlc1JlYWQgKyBtX3BhcnRpYWxCeXRlc1JlYWQsICZieXRlc1JlYWQpOwotICAgICAgICAq
Ynl0ZXNSZW1haW5pbmcgLT0gYnl0ZXNSZWFkOwotICAgICAgICBtX3BhcnRpYWxCeXRlc1JlYWQg
Kz0gYnl0ZXNSZWFkOwotCi0gICAgICAgIGlmICghc3RhdHVzLmNvbXBsZXRlZF9vaygpKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9CisgICAgYXV0byBzdGF0dXMgPSByZWFkRnJh
bWVEYXRhKHJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICBpZiAoIXN0YXR1
cy5jb21wbGV0ZWRfb2soKSkKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKIAotICAgIEFTU0VSVCht
X3BhcnRpYWxCeXRlc1JlYWQgPD0gKm1fY3VycmVudFBhY2tldFNpemUpOwotICAgIGlmIChtX3Bh
cnRpYWxCeXRlc1JlYWQgPCAqbV9jdXJyZW50UGFja2V0U2l6ZSkKLSAgICAgICAgcmV0dXJuIHdl
Ym06OlN0YXR1cyh3ZWJtOjpTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgIC8vIEF0dGVtcHRzIHRv
IG1pbmltaXNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRpb25zIGR1ZSB0byByZXBldGl0
dmUgQ01CbG9ja0J1ZmZlckFwcGVuZEJ1ZmZlclJlZmVyZW5jZSBjYWxscyBpbiByZWFkRnJhbWVE
YXRhLgorICAgIG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2srKzsKKyAgICBpZiAobU51bUZyYW1l
c0luQ29tcGxldGVCbG9jayA+IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5KQorICAgICAgICBtTWF4
QmxvY2tCdWZmZXJDYXBhY2l0eSA9IG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2s7CiAKLSAgICBt
X3BhY2tldHNCeXRlc1JlYWQgKz0gbV9wYXJ0aWFsQnl0ZXNSZWFkOwotICAgIG1fcGFydGlhbEJ5
dGVzUmVhZCA9IDA7CisgICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZTsKIAogICAg
IGlmICghZm9ybWF0RGVzY3JpcHRpb24oKSkgewogICAgICAgICBpZiAoIXRyYWNrKCkuY29kZWNf
cHJpdmF0ZS5pc19wcmVzZW50KCkpIHsKQEAgLTEzMjUsOCArMTM3NywxOSBAQCB3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURh
dGEod2VibTo6UmVhZAogICAgICAgICBpZiAoY29kZWMoKSA9PSBDb2RlY1R5cGU6OlZvcmJpcykK
ICAgICAgICAgICAgIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlVm9yYmlzQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbihwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CisgICAgICAgICAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihtX2N1
cnJlbnRQYWNrZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOworICAgICAgICAg
ICAgaWYgKCFjb250aWd1b3VzQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGE6IHVuYWJs
ZSB0byBjcmVhdGUgY29udGlndW91cyBkYXRhIGJsb2NrIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdWludDhfdCogYmxvY2tCdWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1
dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoY29udGlndW91c0J1ZmZl
ci5nZXQoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKTsK
KyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJy
b3IiLCBlcnIpOworICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVt
YWluaW5nKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIE9wdXNDb29raWVDb250ZW50cyBj
b29raWVDb250ZW50czsKLSAgICAgICAgICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJp
dmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksIG1fcGFja2V0c0J5dGVzUmVhZCwg
bV9wYWNrZXRzRGF0YS5kYXRhKCksIGNvb2tpZUNvbnRlbnRzKSkgeworICAgICAgICAgICAgaWYg
KCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRh
dGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRl
bnRzKSkgewogICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkZh
aWxlZCB0byBwYXJzZSBPcHVzIHByaXZhdGUgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVy
biBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgICAgIH0KQEAgLTEzNTUs
MTAgKzE0MTgsMjEgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICB9IGVsc2UgaWYgKGNv
ZGVjKCkgPT0gQ29kZWNUeXBlOjpPcHVzKSB7CiAgICAgICAgIC8vIE9wdXMgdGVjaG5pY2FsbHkg
YWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBlci1wYWNrZXQgdmFsdWVzIHRv
IGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAgIC8vIENvcmVBdWRpbyBkb2Vz
bid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBjaGFuZ2Ugb24gYSBwZXItcGFj
a2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVuCi0gICAgICAgIC8vIHRoYXQga2luZCBv
ZiB2YXJpYWJsaWxpdHkgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIC8vIHRoYXQga2luZCBvZiB2
YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KICAgICAgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNv
b2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBwcml2YXRlRGF0YSA9IHRyYWNrKCkuY29kZWNf
cHJpdmF0ZS52YWx1ZSgpOwotICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZh
dGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCBtX3BhY2tldHNCeXRlc1JlYWQsIG1f
cGFja2V0c0RhdGEuZGF0YSgpLCBjb29raWVDb250ZW50cykKKyAgICAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gY29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIobV9jdXJyZW50UGFja2V0
Qnl0ZU9mZnNldCwgKm1fY29tcGxldGVQYWNrZXRTaXplKTsKKyAgICAgICAgaWYgKCFjb250aWd1
b3VzQnVmZmVyKSB7CisgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJB
dWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YTogdW5hYmxlIHRvIGNyZWF0ZSBjb250aWd1
b3VzIGRhdGEgYmxvY2siKTsKKyAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVz
UmVtYWluaW5nKTsKKyAgICAgICAgfQorICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRhdGEg
PSBudWxscHRyOworICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFQ
b2ludGVyKGNvbnRpZ3VvdXNCdWZmZXIuZ2V0KCksIDAsIG51bGxwdHIsIG51bGxwdHIsIChjaGFy
KiopJmJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBm
YWlsZWQgd2l0aCBlcnJvciIsIGVycik7CisgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2
YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKm1fY29tcGxl
dGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQogICAgICAgICAg
ICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0
CiAgICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVE
dXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1
cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwpAQCAt
MTM2NiwxNCArMTQ0MCwxNSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oKm1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQpLCAwLCBzdGF0aWNfY2FzdDxVSW50MzI+
KCptX2N1cnJlbnRQYWNrZXRTaXplKSB9KTsKLSAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0
ID0gc3RkOjpudWxsb3B0OwotICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxvcHQ7
CisgICAgbV9wYWNrZXREZXNjcmlwdGlvbnMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY29t
cGxldGVQYWNrZXRTaXplKSB9KTsKKyAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ICs9ICpt
X2NvbXBsZXRlUGFja2V0U2l6ZTsKKyAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gc2FtcGxlRHVyYXRpb24gPSBQQUw6OkNNVGltZUdldFNlY29uZHMo
UEFMOjpDTVRpbWVTdWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRhdGlv
blRpbWUpKSArIFBBTDo6Q01UaW1lR2V0U2Vjb25kcyhtX3BhY2tldER1cmF0aW9uKSAqIHNhbXBs
ZUNvdW50OwotCi0gICAgaWYgKHNhbXBsZUR1cmF0aW9uID49IG1fbWluaW11bVNhbXBsZUR1cmF0
aW9uKQorICAgIGlmIChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1TYW1wbGVEdXJhdGlvbikg
ewogICAgICAgICBjcmVhdGVTYW1wbGVCdWZmZXIobWV0YWRhdGEucG9zaXRpb24pOworICAgICAg
ICByZXNldCgpOworICAgIH0KIAogICAgIEFTU0VSVCghKmJ5dGVzUmVtYWluaW5nKTsKICAgICBy
ZXR1cm4gd2VibTo6U3RhdHVzKHdlYm06OlN0YXR1czo6a09rQ29tcGxldGVkKTsKQEAgLTEzODEs
MzkgKzE0NTYsMTcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlv
VHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKIAogdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCiB7Ci0gICAgaWYgKG1fcGFja2V0
RGVzY3JpcHRpb25zLmlzRW1wdHkoKSB8fCAhbV9wYWNrZXRzQnl0ZXNSZWFkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fcGFja2V0c0RhdGEuaXNFbXB0eSgpKTsKLQotICAgIENN
QmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyID0gUEFM
OjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG51bGxwdHIsIG1fcGFja2V0c0J5dGVzUmVhZCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0
ciwgMCwgbV9wYWNrZXRzQnl0ZXNSZWFkLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0Zs
YWcsICZibG9ja0J1ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBQQVJTRVJfTE9HX0VS
Uk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxl
ZCB3aXRoICVkIiwgZXJyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGJ1ZmZl
ciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOwotCi0gICAgZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVy
UmVwbGFjZURhdGFCeXRlcyhtX3BhY2tldHNEYXRhLmRhdGEoKSwgYnVmZmVyLmdldCgpLCAwLCBt
X3BhY2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdp
dGggJWQiLCBlcnIpOworICAgIGlmIChtX3BhY2tldERlc2NyaXB0aW9ucy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVC
dWZmZXIgPSBudWxscHRyOwotICAgIGVyciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0
ZVJlYWR5V2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIu
Z2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25zLnNp
emUoKSwgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5kYXRh
KCksICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2FtcGxl
QnVmZmVyQ3JlYXRlUmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fY29tcGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQo
KSwgbV9wYWNrZXREZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUs
IG1fcGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYg
KGVycikgewogICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUF1ZGlvU2Ft
cGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVy
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9w
dENGKHJhd1NhbXBsZUJ1ZmZlcik7CiAKLSAgICBtX3BhY2tldHNEYXRhLnJlbW92ZSgwLCBtX3Bh
Y2tldHNCeXRlc1JlYWQpOwotICAgIGlmIChtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0KQotICAg
ICAgICAqbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCAtPSBtX3BhY2tldHNCeXRlc1JlYWQ7Ci0g
ICAgbV9wYWNrZXRzQnl0ZXNSZWFkID0gMDsKLSAgICBtX3BhY2tldERlc2NyaXB0aW9ucy5jbGVh
cigpOwotCiAgICAgYXV0byB0cmFja0lEID0gdHJhY2soKS50cmFja191aWQudmFsdWUoKTsKICAg
ICBwYXJzZXIoKS5wcm92aWRlTWVkaWFEYXRhKFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJhY2tJ
RCwgbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0KTsKIH0KQEAgLTE0MjEsOCArMTQ3NCwxMSBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZm
ZXIoc3RkOjpvcHRpb25hbDxzaQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBl
bmRpbmdBdWRpb0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrcykg
ewotICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlRyYWNrRGF0YTo6VHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBkb3duY2FzdDxBdWRpb1Ry
YWNrRGF0YT4odHJhY2suZ2V0KCkpLmNyZWF0ZVNhbXBsZUJ1ZmZlcigpOworICAgICAgICBpZiAo
dHJhY2stPnRyYWNrVHlwZSgpID09IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6
VHlwZTo6QXVkaW8pIHsKKyAgICAgICAgICAgIEF1ZGlvVHJhY2tEYXRhJiBhdWRpb1RyYWNrID0g
ZG93bmNhc3Q8QXVkaW9UcmFja0RhdGE+KHRyYWNrLmdldCgpKTsKKyAgICAgICAgICAgIGF1ZGlv
VHJhY2suY3JlYXRlU2FtcGxlQnVmZmVyKCk7CisgICAgICAgICAgICBhdWRpb1RyYWNrLnJlc2V0
Q29tcGxldGVkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaAppbmRleCA5NTI5NzZiMjcyZjcxMTg1YmI3ODdmNWFhMzQyM2M0Zjg3ZDZjNGE2Li42
OGExMjAwMGUyNGU2OThkZjBhYzk0OTA1YTcxNzZlMGNiMTBmMWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlQVZGT2Jq
QzsKIGNsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFy
c2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgY2xhc3Mg
U2VnbWVudFJlYWRlcjsKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2YWls
YWJsZSgpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwpAQCAtMTU1LDMwICsxNTUsNDIg
QEAgcHVibGljOgogICAgICAgICB2b2lkIHNldEZvcm1hdERlc2NyaXB0aW9uKFJldGFpblB0cjxD
TUZvcm1hdERlc2NyaXB0aW9uUmVmPiYmIGRlc2NyaXB0aW9uKSB7IG1fZm9ybWF0RGVzY3JpcHRp
b24gPSBXVEZNb3ZlKGRlc2NyaXB0aW9uKTsgfQogCiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk0mIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyOyB9Ci0gICAgICAgIAorCiAg
ICAgICAgIHZpcnR1YWwgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVy
JiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwg
aW50KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybiB3ZWJtOjpTdGF0dXMod2VibTo6U3RhdHVzOjprSW52YWxpZEVsZW1lbnRJ
ZCk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXRDb21wbGV0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2Nv
bXBsZXRlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZvaWQgcmVz
ZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWNrZXRTaXplID0gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgcmVzZXRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIG1fY29t
cGxldGVQYWNrZXRTaXplID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbV9wYXJ0aWFsQnl0
ZXNSZWFkID0gMDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsK
ICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbV9jdXJyZW50UGFja2V0U2l6ZTsKLSAgICAgICAgLy8gU2l6ZSBvZiB0aGUgY3VycmVudGx5
IHBhcnNlZCBwYWNrZXQsIHBvc3NpYmx5IGluY29tcGxldGUuCi0gICAgICAgIHNpemVfdCBtX3Bh
cnRpYWxCeXRlc1JlYWQgeyAwIH07CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVm
PiBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICAgICAgd2VibTo6U3RhdHVzIHJlYWRGcmFtZURhdGEod2VibTo6UmVh
ZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmlu
Zyk7CisgICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2NvbXBsZXRlQmxvY2tC
dWZmZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2NvbXBsZXRlUGFja2V0U2l6
ZTsKKyAgICAgICAgLy8gSW5pdGlhbCBhbGxvY2F0aW9uIHNpemUgb2YgZW1wdHkgQ01CbG9ja0J1
ZmZlci4KKyAgICAgICAgc2l6ZV90IG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5IHsgMCB9OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQ29kZWNUeXBlIG1fY29kZWM7CiAgICAgICAgIHdlYm06OlRy
YWNrRW50cnkgbV90cmFjazsKICAgICAgICAgVHlwZSBtX3RyYWNrVHlwZTsKICAgICAgICAgUmV0
YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZm9ybWF0RGVzY3JpcHRpb247CisgICAg
ICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICAg
ICAgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSYgbV9wYXJzZXI7CisgICAgICAgIC8vIFNpemUg
b2YgdGhlIGN1cnJlbnRseSBpbmNvbXBsZXRlIHBhcnNlZCBwYWNrZXQuCisgICAgICAgIHNpemVf
dCBtX3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CiAgICAgfTsKIAogICAgIGNsYXNzIFZpZGVvVHJh
Y2tEYXRhIDogcHVibGljIFRyYWNrRGF0YSB7CkBAIC0xOTMsOSArMjA1LDYgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShWUDkpCi0gICAgICAgIHZvaWQgcmVz
ZXQoKSBmaW5hbDsKLSNlbmRpZgogICAgICAgICB3ZWJtOjpTdGF0dXMgY29uc3VtZUZyYW1lRGF0
YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgdWludDY0X3QqLCBj
b25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwogCiAgICAgcHJpdmF0ZToKQEAgLTIwNCw3ICsyMTMs
NiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVlA5KQogICAgICAgICB2cDlfcGFyc2VyOjpWcDlI
ZWFkZXJQYXJzZXIgbV9oZWFkZXJQYXJzZXI7Ci0gICAgICAgIFJldGFpblB0cjxDTUJsb2NrQnVm
ZmVyUmVmPiBtX2N1cnJlbnRCbG9ja0J1ZmZlcjsKICNlbmRpZgogICAgIH07CiAKQEAgLTIyMiw3
ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB3ZWJtOjpTdGF0dXMgY29u
c3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImLCBjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwg
dWludDY0X3QqLCBjb25zdCBDTVRpbWUmLCBpbnQpIGZpbmFsOwotICAgICAgICB2b2lkIHJlc2V0
KCkgZmluYWw7CisgICAgICAgIHZvaWQgcmVzZXRDb21wbGV0ZWQoKSBmaW5hbDsKICAgICAgICAg
dm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhdGVzdEJ5dGVS
YW5nZU9mZnNldCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjMwLDE1ICsy
MzgsMTEgQEAgcHVibGljOgogCiAgICAgICAgIENNVGltZSBtX3NhbXBsZVByZXNlbnRhdGlvblRp
bWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tldER1cmF0aW9uOwotICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gbV9wYWNrZXRzRGF0YTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY3Vy
cmVudFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIC8vIFNpemUgb2YgdGhlIGNvbXBsZXRlIHBh
Y2tldHMgcGFyc2VkIHNvIGZhci4KLSAgICAgICAgc2l6ZV90IG1fcGFja2V0c0J5dGVzUmVhZCB7
IDAgfTsKLSAgICAgICAgc2l6ZV90IG1fYnl0ZU9mZnNldCB7IDAgfTsKKyAgICAgICAgc2l6ZV90
IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgeyAwIH07CiAgICAgICAgIHVpbnQ4X3QgbV9mcmFt
ZXNQZXJQYWNrZXQgeyAwIH07CiAgICAgICAgIFNlY29uZHMgbV9mcmFtZUR1cmF0aW9uIHsgMF9z
IH07CiAgICAgICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX3BhY2tl
dERlc2NyaXB0aW9uczsKLQorICAgICAgICBzaXplX3QgbU51bUZyYW1lc0luQ29tcGxldGVCbG9j
ayB7IDAgfTsKICAgICAgICAgLy8gRklYTUU6IDAuNSAtIDEuMCBzZWNvbmRzIGlzIGEgYmV0dGVy
IGR1cmF0aW9uIHBlciBzYW1wbGUgYnVmZmVyLCBidXQgdXNlIDIgc2Vjb25kcyBzbyBhdCBsZWFz
dCB0aGUgZmlyc3QKICAgICAgICAgLy8gc2FtcGxlIGJ1ZmZlciB3aWxsIHBsYXkgdW50aWwgd2Ug
Zml4IE1lZGlhU2FtcGxlQ3Vyc29yOjpjcmVhdGVTYW1wbGVCdWZmZXIgdG8gZGVhbCB3aXRoIGBl
bmRDdXJzb3JgLgogICAgICAgICBmbG9hdCBtX21pbmltdW1TYW1wbGVEdXJhdGlvbiB7IDIgfTsK
QEAgLTI4MSw3ICsyODUsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpOb25lIH07CiAKLSAgICBVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPiBtX3JlYWRl
cjsKKyAgICBVbmlxdWVSZWY8U2VnbWVudFJlYWRlcj4gbV9yZWFkZXI7CiAKICAgICBWZWN0b3I8
VW5pcXVlUmVmPFRyYWNrRGF0YT4+IG1fdHJhY2tzOwogICAgIHVzaW5nIEJsb2NrVmFyaWFudCA9
IFZhcmlhbnQ8d2VibTo6QmxvY2ssIHdlYm06OlNpbXBsZUJsb2NrPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHku
Y3BwCmluZGV4IGQ4ZGNiMTEwMTNjZTc2N2U4NDNmOTk3NjBkNzQ5OWI5YmU2YzBjNzMuLmQwMDZh
Y2VhMDhhZjdiMTgxNjgwNjQzODEyNWVlOWUxODk2NGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNw
cApAQCAtMTkyLDkgKzE5MiwxMyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3Vy
Y2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQogICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdl
ZChmbGFnKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgYnVm
ZmVySGFuZGxlKQogewotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKGRhdGEudmVj
dG9yKCkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoYnVmZmVy
SGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
aWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc291cmNlQnVmZmVy
UHJpdmF0ZS0+YXBwZW5kKHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZlckhh
bmRsZS5kYXRhU2l6ZSkpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphYm9y
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGM5MTI5MDE1OGQ4M2VjOTYwMjVlYzk1OTMzZjJhMzFi
NzVlNWVhM2YuLjc3ZDgyN2FiMzAzMmExNjRiM2Y0YTc2ZTAxODE4NmZmN2I5MTQzMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U291cmNlQnVmZmVyUHJpdmF0ZS5oPgpAQCAtODcsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRUeXBlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBzZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUpOwotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogICAgIHZvaWQg
cmVzZXRQYXJzZXJTdGF0ZSgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZlZmU4ZjU1ZjlkODg1OWMx
YjUwOWY2N2I1MjNmN2M3ODUwOGQ3OWIuLjhmNjIwYmEyZTk2ZmZmNjMyZWYzZDAzMmE1YjBjNDc4
NDk4ZmUyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDcg
KzI5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJveHkgTm90UmVmQ291bnRl
ZCB7CiAgICAgU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIENhblN3aXRjaFRvVHlwZShXZWJD
b3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSkgLT4gKGJvb2wgY2FuU3dpdGNoKSBTeW5jaHJv
bm91cwogICAgIFNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZSBhcHBlbmRN
b2RlKQotICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBBcHBlbmQoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFib3J0KCkKICAgICBSZXNl
dFBhcnNlclN0YXRlKCkKICAgICBSZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCA2YmFjYTM0ZGM3MGQ0M2M5Zjk0YmUzY2Qz
MTZlZGJkZDFlM2U1OTNmLi43NTZiMjQwYjZmYTdiYjViZThlY2JmZTcwZjk1OWM5ODczMTY3OGUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCw2ICs0OCwx
OSBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAorUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRh
dGFTaXplKSBjb25zdAoreworICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgW2RhdGFTaXplXSAoKSAtPiBzaXplX3QgeworICAgICAgICAgICAgcmV0
dXJuIGRhdGFTaXplOworICAgICAgICB9CisgICAgfSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiB2b2lkIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjp0YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVt
b3J5TGVkZ2VyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5k
ZXggNTZhMWY1Njk5NzcwNWRhMDBhOWRjNDYxOWZlMTIzMTRhZGRmZDJmNi4uZTM3MWJjZDczMDJj
Zjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUg
c3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFn
ZVNpemUoKTsKIAorICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QpIGNvbnN0OworCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKICAgICBXVEY6
Ok1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KFByb3RlY3Rpb24pIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZmNiMDEyMjIzNDNlNzU4ZGU2NjQ2NjgzNTJi
ZDEyODRhN2ZmZTQzNC4uNDU4ZTNiYTRiMDhjODA4NzExZTVmMmVhZjA2NTFlN2ZkZGM0ZmQ1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCwxMiArNzgsMTkgQEAgU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQogICAg
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVu
ZChJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSkpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXIpOworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihkYXRh
KTsKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgc2hhcmVkRGF0YS0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisK
KyAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1l
ZGlhLXJlbGF0ZWQgbWVtb3J5LgorICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVt
b3J5TGVkZ2VyOjpNZWRpYSk7CisKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFwcGVuZChTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2hhcmVkRGF0YS0+c2l6ZSgp
IH0pLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5k
ZXggMThiOTkwNmNkY2M2MzRjN2I4MDE0NTEzN2IzZTBiOWM0OTU4Njg4My4uMzYwMTc1YmZiZTlk
MWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBh
cHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5h
bDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRG
cm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>