<?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>226556</bug_id>
          
          <creation_ts>2021-06-02 15:40:29 -0700</creation_ts>
          <short_desc>Drop the FTL(DFG) graph after lowering to B3</short_desc>
          <delta_ts>2021-06-16 14:33:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>226749</dependson>
          <blocked>227095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1766188</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-02 15:40:29 -0700</bug_when>
    <thetext>It is a fairly simple memory saving, that may well be significant since it will last through all of B3 and Air.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766192</commentid>
    <comment_count>1</comment_count>
      <attachid>430414</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-02 15:56:08 -0700</bug_when>
    <thetext>Created attachment 430414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766196</commentid>
    <comment_count>2</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-02 16:06:56 -0700</bug_when>
    <thetext>I do not have performance numbers for this yet, I am currently launching the relevant A/B tasks and will add a comment with the results here once they complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766202</commentid>
    <comment_count>3</comment_count>
      <attachid>430414</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-02 16:23:51 -0700</bug_when>
    <thetext>Comment on attachment 430414
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:10140
&gt; +                Checked&lt;int32_t&gt; offsetCount { 1 };

This appears to be unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766221</commentid>
    <comment_count>4</comment_count>
      <attachid>430414</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-02 16:50:23 -0700</bug_when>
    <thetext>Comment on attachment 430414
Patch

The Mac-wk2 bot has found a bug, I&apos;m investigating it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766244</commentid>
    <comment_count>5</comment_count>
      <attachid>430428</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-02 18:05:07 -0700</bug_when>
    <thetext>Created attachment 430428
Patch

Fixed a bug: I forgot disabling the freeing in the case where --useSamplingProfiler=1.
As it relies on PCToCodeOriginMapBuilder which contains code such as
```
DFG::Node* node = bitwise_cast&lt;DFG::Node*&gt;(originRange.origin.data());
        if (node)
            appendItem(originRange.label, node-&gt;origin.semantic);
```
, having freed all DFG::Nodes obviously lead to trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766578</commentid>
    <comment_count>6</comment_count>
      <attachid>430512</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-03 16:20:15 -0700</bug_when>
    <thetext>Created attachment 430512
Patch

fix two bugs related to the DOMJIT: I had missed the fact that it uses the DOMJITSnippets in a late-running generator (so freeing them obviously crashes), and that FTL::SnippetParams was capturing a Node* (which was easy to fix as it was only using it for its CodeOrigin).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766581</commentid>
    <comment_count>7</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-03 16:28:45 -0700</bug_when>
    <thetext>I got some RAMification results on an M1 MacBookAir for this patch. Listing all of the subtests with p&lt;0.05 changes:
- Box2D: 1.66% better (p&lt;0.02)
- ML: 0.84% better (p&lt;0.05)
- OfflineAssembler: 4.78% better (p&lt;0.02)
- coffeescript-wtb: regression of 0.71% ! (p&lt;0.05)
- crypto-aes-sp: 2.42% better (p&lt;0.02)
- crypto-md5-sp: 3.10% better (p&lt;0.02)
- crypto-sha1-sp: 0.89% better (p&lt;0.02)
- date-format-tofte-sp: regression of 0.27% ! (p&lt;0.02)
- delta-blue: 2.56% better (p&lt;0.02)
- early-boyer: 0.86% better (p&lt;0.05)
- gbemu: 1.74% better (p&lt;0.02)
- navier-stokes: 1.52% better (p&lt;0.02)
- octane-code-load: 0.39% better (p&lt;0.05)
- raytrace: 2.00% better (p&lt;0.02)
- regex-dna-sp: 0.65% better (p&lt;0.02)
- regexp: 2.85% better (p&lt;0.02)
- stanford-crypto-pbkdf2: 0.91% better (p&lt;0.02)
- stanford-crypto-sha256: 0.46% better (p&lt;0.02)

So despite some noise (as I only got 5 iterations instead of 8 as planned as the performance bots have been flaky in the past few days), it seems to be a pretty clear win.

I&apos;ll try to land it once EWS is happy with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766668</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-03 22:34:23 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 430512 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766700</commentid>
    <comment_count>9</comment_count>
      <attachid>430555</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-04 00:43:40 -0700</bug_when>
    <thetext>Created attachment 430555
Patch for landing

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766712</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-04 01:26:31 -0700</bug_when>
    <thetext>Patch 430555 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766774</commentid>
    <comment_count>11</comment_count>
      <attachid>430580</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-04 08:35:12 -0700</bug_when>
    <thetext>Created attachment 430580
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766788</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-04 09:04:41 -0700</bug_when>
    <thetext>Committed r278463 (238483@main): &lt;https://commits.webkit.org/238483@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430580.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766789</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-04 09:05:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/78871457&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767623</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-06-07 18:25:28 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 226749</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767925</commentid>
    <comment_count>15</comment_count>
      <attachid>430898</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-08 15:03:27 -0700</bug_when>
    <thetext>Created attachment 430898
Patch for re-landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768004</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-08 17:59:29 -0700</bug_when>
    <thetext>Patch 430898 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770057</commentid>
    <comment_count>17</comment_count>
      <attachid>431510</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-15 19:32:39 -0700</bug_when>
    <thetext>Created attachment 431510
Patch for re-landing

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770287</commentid>
    <comment_count>18</comment_count>
      <attachid>431510</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-16 11:10:38 -0700</bug_when>
    <thetext>Comment on attachment 431510
Patch for re-landing

Re-landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770300</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-16 11:34:32 -0700</bug_when>
    <thetext>Committed r278945 (238875@main): &lt;https://commits.webkit.org/238875@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431510.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430414</attachid>
            <date>2021-06-02 15:56:08 -0700</date>
            <delta_ts>2021-06-02 16:50:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226556</filename>
            <type>text/plain</type>
            <size>69808</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGU2OTU1ZmVhODI1OS4uZDY0OTBiZDUzMDg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAyMS0wNi0wMiAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgdGhlIEZU
TChERkcpIGdyYXBoIGFmdGVyIGxvd2VyaW5nIHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY2hhbGxlbmdlIGluIHRoaXMgcGF0Y2ggd2Fz
IGRlYWxpbmcgd2l0aCBhbGwgb2YgdGhlIFBhdGNocG9pbnRzIGNyZWF0ZWQgYnkgRlRMTG93ZXJE
RkdUb0IzOiB0aGV5IGdldCBhIGxhbWJkYSBhdCB0aGF0IHRpbWUsIHdoaWNoIHRoZXkgZXhlY3V0
ZSBhdCB0aGUgZW5kIG9mIEFpciwgYW5kIG1hbnkgb2YgdGhlc2UgbGFtYmRhcyB3ZXJlIGNhcHR1
cmluZyBhIHBvaW50ZXIgdG8gc29tZSBwYXJ0cyBvZiB0aGUgREZHIGdyYXBoIGFuZCByZWFkaW5n
IHRocm91Z2ggaXQgd2hlbiBiZWluZyBleGVjdXRlZC4KKyAgICAgICAgSW4gYWxsIGNhc2VzIGJ1
dCBvbmUgaXQgd2FzIGVhc2lseSBmaXhlZDogdGhleSB3ZXJlIG9ubHkgcmVhZGluZyBhIGZldyBi
aXRzIGZyb20gYSBnaXZlbiBub2RlLCBzbyBJIGp1c3QgcmVhZCB0aGVzZSBiaXRzIGluIEZUTExv
d2VyREZHVG9CMywgYW5kIGNhcHR1cmVkIHRoZW0gKGJ5IHZhbHVlKSBpbnN0ZWFkIG9mIHRoZSBw
b2ludGVyIHRvIHRoZSBub2RlLgorICAgICAgICBUaGUgZXhjZXB0aW9uIHdhcyBjb21waWxlQ2Fs
bE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCgpOiBpdHMgcGF0Y2hwb2ludCBnZW5lcmF0b3Igd2Fz
IHdhbGtpbmcgdGhyb3VnaCB0aGUgZ3JhcGgsIGZsYXR0ZW5pbmcgYSB0cmVlIG9mIFBoYW50b21T
cHJlYWQvUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZC9QaGFudG9tTmV3QXJyYXlCdWZmZXIvUGhh
bnRvbUNyZWF0ZVJlc3QsIGVtaXR0aW5nIHNvbWUgY29kZSBhbG9uZyB0aGUgd2F5LgorICAgICAg
ICBXZSBub3cgZG8gdGhpcyBmbGF0dGVuaW5nIG9mIHRoZSB0cmVlIGluIEZUTExvd2VyREZHVG9C
Mywgc3RvcmUganVzdCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gbGF0ZXIgZW1pdCB0aGUgcmVxdWly
ZWQgY29kZSBpbiBhIHZlY3RvciwgYW5kIGNhcHR1cmUgdGhhdCB2ZWN0b3IgaW4gdGhlIGxhbWJk
YSAodGhyb3VnaCBhIG1vdmUgY2FwdHVyZSwgd2hpY2ggaXMgYWxsb3dlZCBzaW5jZSBDKysxNCku
IFNlZSBgc3RydWN0IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdGAgZm9yIHRoZSBpbmZvcm1h
dGlvbiB0aGF0IHdlIG5lZWQgdG8gc3RvcmUgaW4gdGhhdCB2ZWN0b3IuCisKKyAgICAgICAgSSB0
ZXN0ZWQgdGhpcyBjaGFuZ2UgYnkgY29tcGxldGluZyBhIGZ1bGwgcnVuIG9mIEpldFN0cmVhbTIg
d2l0aCBBU0FOLgorCisgICAgICAgICogYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmg6CisgICAgICAg
IChKU0M6OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjpjbGVhckFsbCk6CisgICAgICAgICogZGZnL0RG
R0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZnJlZURGR0lSQWZ0ZXJMb3dl
cmluZyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZnRsL0ZUTENvbXBp
bGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlVW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGlyZWN0Q2FsbE9yQ29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRhaWxDYWxsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0
OjpWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RW
YXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNh
bGxFdmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlu
QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0
YW5jZU9mKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWRXaXRoVGhpcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlTbmlwcGV0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJpbmFyeUJpdE9w
U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRSaWdo
dFNoaWZ0U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNy
YXNoKToKKwogMjAyMS0wNi0wMiAgUGFibG8gU2FhdmVkcmEgIDxwc2FhdmVkcmFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBGaXggYnVpbGQgZXJyb3Igd2l0aCBFTkFCTEVfREZHX0pJVD1PRkYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMjVhYjljMzM5NTFmLi5mZGY4
M2ZmNzczZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xODYx
LDYgKzE4NjEsMjcgQEAgdm9pZCBHcmFwaDo6Y2xlYXJDUFNDRkdEYXRhKCkKICAgICBtX2Nwc0NG
RyA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgR3JhcGg6OmZyZWVERkdJUkFmdGVyTG93ZXJpbmcoKQor
eworICAgIG1fYmxvY2tzLmNsZWFyKCk7CisgICAgbV9yb290cy5jbGVhcigpOworICAgIG1fdmFy
QXJnQ2hpbGRyZW4uY2xlYXIoKTsKKyAgICBtX25vZGVzLmNsZWFyQWxsKCk7CisKKyAgICBtX2J5
dGVjb2RlTGl2ZW5lc3MuY2xlYXIoKTsKKyAgICBtX3NhZmVUb0xvYWQuY2xlYXIoKTsKKyAgICBt
X2RvbUpJVFNuaXBwZXRzLmNsZWFyKCk7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsK
KyAgICBtX3NzYURvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0g
bnVsbHB0cjsKKyAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FDRkcg
PSBudWxscHRyOworICAgIG1fY3BzQ0ZHID0gbnVsbHB0cjsKKyAgICBtX2JhY2t3YXJkc0NGRyA9
IG51bGxwdHI7CisgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbnVsbHB0cjsKK30KKwogdm9pZCBQcmVmaXg6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA3NmY5ZGI4MmY5MTEuLjYyYTFmZWYzZGMy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTA3NCw2ICsxMDc0LDgg
QEAgcHVibGljOgogICAgICAgICBtX2NhdGNoRW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlw
b2ludERhdGEgeyBtYWNoaW5lQ29kZSwgRml4ZWRWZWN0b3I8Rmx1c2hGb3JtYXQ+KFdURk1vdmUo
YXJndW1lbnRGb3JtYXRzKSksIGJ5dGVjb2RlSW5kZXggfSk7CiAgICAgfQogCisgICAgdm9pZCBm
cmVlREZHSVJBZnRlckxvd2VyaW5nKCk7CisKICAgICBTdGFja0NoZWNrIG1fc3RhY2tDaGVja2Vy
OwogICAgIFZNJiBtX3ZtOwogICAgIFBsYW4mIG1fcGxhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IGRlZjVjMmUwYjQ3My4uMTZjY2ZlZWI1Nzg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTU4LDYgKzU4LDkgQEAg
dm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJl
c3VsdCkKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIHN0YXRlLnBy
b2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIobWFrZVVuaXF1ZTxCMzo6QWlyOjpEaXNhc3NlbWJs
ZXI+KCkpOwogCisgICAgaWYgKCFzaG91bGREdW1wRGlzYXNzZW1ibHkoKSAmJiAhT3B0aW9uczo6
YXN5bmNEaXNhc3NlbWJseSgpICYmICFncmFwaC5jb21waWxhdGlvbigpKQorICAgICAgICBncmFw
aC5mcmVlREZHSVJBZnRlckxvd2VyaW5nKCk7CisKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBv
aW50IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIzYmU3ZTc3NWQz
YS4uODRkMzRjMGRkYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC0yMzgwLDYgKzIzODAsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRj
aHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIFN0
YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9k
ZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0yNDEwLDEyICsy
NDExLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBleGNlcHRpb25zLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0aElDKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRp
b25zLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoaW5nRnVu
Y3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
c2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobWF0aElDKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0aElDR2Vu
ZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsLmNhbGwoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFt
c1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG5vblJlcGF0Y2hpbmdGdW5jdGlv
biwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1h
bnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
anVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTI0MzQsOCArMjQzNSw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vblJl
cGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1z
WzFdLmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFU
UykKQEAgLTI0ODcsNiArMjQ4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQtPm51
bUZQU2NyYXRjaFJlZ2lzdGVycyA9IDI7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgU3RhdGUqIHN0YXRl
ID0gJm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTI1MjAsMTIgKzI1MjIsMTIgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0aElDR2Vu
ZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4
Y2VwdGlvbnMuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5n
cHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwg
ZXhjZXB0aW9ucy5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRj
aGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdw
cigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0aElDKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxs
LmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBub25S
ZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJh
bXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3By
KCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiks
IHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGwuY2FsbCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBAIC0yNTQ0LDggKzI1NDYsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBub25S
ZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJh
bXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMu
Z2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBh
cmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNO
b2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAg
ICAgICAgIH0KIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMzk4MywxMCArMzk4NSwx
MSBAQCBwcml2YXRlOgogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAg
ICAgICBib29sIGJhc2VJc0NlbGwgPSBhYnN0cmFjdFZhbHVlKG5vZGUtPmNoaWxkMSgpKS5pc1R5
cGUoU3BlY0NlbGwpOworICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2Fs
bFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdp
bnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAogICAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9u
IGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNl
cHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5q
dW1wcyhqaXQpOwpAQCAtNDAwMSw3ICs0MDA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJl
Z3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKIAogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwpAQCAtNDAxOSw5ICs0MDIyLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5r
KCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRo
QmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGljT3JpZ2luLAogICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09y
aWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKQEAg
LTQxMTUsMTAgKzQxMTgsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAm
bV9mdGxTdGF0ZTsKICAgICAgICAgYm9vbCBiYXNlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpOworICAgICAgICBDb2RlT3JpZ2luIG5vZGVT
ZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFk
ZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAog
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRp
b24gY2FsbHMuCiAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0
aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVt
cHMoaml0KTsKQEAgLTQxMzIsNyArNDEzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBHUFJS
ZWcgYnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBub3RDZWxsOwpAQCAtNDE2Miw5ICs0MTY2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdp
biwKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2
YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFu
ZEdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogCkBAIC00NTI0LDEzICs0NTI4LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUq
IHN0YXRlID0gJm1fZnRsU3RhdGU7Ci0gICAgICAgIAorCisgICAgICAgIENvZGVPcmlnaW4gbm9k
ZVNlbWFudGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAg
ICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxT
aXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChu
b2RlU2VtYW50aWNPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6
SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC00NTM5LDcg
KzQ1NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2No
ZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAogICAg
ICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+Ojpj
cmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVS
ZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFN
b2RlLAogICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKQEAgLTQ1NTQsOSArNDU1OSw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVt
cCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFu
dGljT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtNTI0Mywx
MCArNTI0OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0
aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3Rh
dGU7CisgICAgICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxT
aXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5z
LT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRpY09yaWdpbik7CiAKICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBj
YWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0
aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVt
cHMoaml0KTsKQEAgLTUyNjEsNyArNTI2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOwogCiAgICAgICAgICAgICAgICAg
YXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGU6OkdldEJ5VmFsLAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BS
KSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSBwcm9wZXJ0eUlzU3RyaW5nOwpAQCAtNTI4
Myw5ICs1Mjg5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGljT3Jp
Z2luLAogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9u
R2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGVTZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOwogICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtNTg0Mywx
MiArNTg0OSwxNiBAQCBwcml2YXRlOgogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0
YXRlOwogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBDb2RlT3JpZ2luIG5v
ZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgYXV0byBj
aGlsZDFVc2VLaW5kID0gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpOworICAgICAgICBhdXRvIGNo
aWxkMlVzZUtpbmQgPSBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCk7CisgICAgICAgIGF1dG8gZWNt
YU1vZGUgPSBub2RlLT5lY21hTW9kZSgpLnZhbHVlKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRl
eChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1h
bnRpY09yaWdpbik7CiAKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlz
dD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2No
ZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTU4NjAsNyArNTg3MCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1z
LmdwU2NyYXRjaCgwKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJh
bXMuZ3BTY3JhdGNoKDApKTsKIAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQxVXNlS2lu
ZCkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RD
ZWxsKGJhc2UpKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlv
bkZ1bmN0aW9uID0gWyZdICgpIHsKQEAgLTU4NzUsNyArNTg4NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1
YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1z
WzJdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGls
ZDJVc2VLaW5kID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFtc1syXS5n
cHIoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJh
bXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC01ODg0LDEyICs1ODk0LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0g
ewogICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpO
b3JtYWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlJZEdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2Fs
bFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZVNlbWFudGljT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdw
U2NyYXRjaCgwKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTU5MDYsMTEgKzU5MTYsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJl
Z2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25G
dW5jdGlvbiwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGVjbWFNb2RlKSku
Y2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC05NzExLDYgKzk3MjEsOCBA
QCBwcml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVz
Y3JpcHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRl
OwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBub2Rl
U2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIGF1dG8gbm9k
ZU9wID0gbm9kZS0+b3AoKTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAg
ICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC05NzIyLDE2ICs5NzM0LDE2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdG
b3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBq
aXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9j
aygpLT5hZGRDYWxsTGlua0luZm8obm9kZVNlbWFudGljT3JpZ2luKTsKICAgICAgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3Ao
KSA9PSBDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6
Q2FsbCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgICAgICBub2RlT3AgPT0gQ29u
c3RydWN0ID8gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3QgOiBDYWxsTGlua0luZm86OkNhbGwsIEdQ
UkluZm86OnJlZ1QwKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGggPSBjYWxsTGlu
a0luZm8tPmVtaXRGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBJbnZhbGlkR1BSUmVnLCBD
YWxsTGlua0luZm86OlVzZURhdGFJQzo6Tm8pOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gaml0LmxhYmVs
KCk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1h
bnRpY09yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogCiAgICAgICAgICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwpAQCAtOTgyMSw2ICs5ODMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9u
T2ZDYWxsU2l0ZSgpOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7
CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CkBAIC05ODU0LDcgKzk4NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBzaHVm
ZmxlRGF0YS5udW1QYXNzZWRBcmdzID0gbnVtUGFzc2VkQXJnczsKICAgICAgICAgICAgICAgICAg
ICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKGppdC5jb2RlQmxvY2soKSk7
CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3Jp
Z2luKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExp
bmtJbmZvOjpEaXJlY3RUYWlsQ2FsbCwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0g
aml0LmxhYmVsKCk7CkBAIC05ODcxLDcgKzk4ODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoID0gaml0LmxhYmVsKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHRvU2F2ZSwgaml0LAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQo
KSwgb3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnZh
bGlkR1BSUmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgY2Fs
bGVlR1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKG1h
aW5QYXRoLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVj
dXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CkBAIC05ODg2LDcgKzk4OTksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGpp
dC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAg
ICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCiAgICAgICAgICAgICAgICAgICAg
IGlzQ29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpEaXJlY3RDb25zdHJ1Y3QgOiBDYWxsTGlua0lu
Zm86OkRpcmVjdENhbGwsIEludmFsaWRHUFJSZWcpOwogCkBAIC05OTEzLDcgKzk5MjYsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxp
bmtEaXJlY3RDYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljTm9kZU9y
aWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW52YWxpZEdQUlJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGNhbGxMaW5rSW5mbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVl
R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyht
YWluUGF0aCwgJmppdCk7CkBAIC05OTg5LDYgKzEwMDAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgp
OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0g
JnRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAg
ICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTEwMDI2LDcgKzEwMDQwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVS
ZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKIAotICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVn
VDMpOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0
KTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gaml0LmxhYmVsKCk7CkBA
IC0xMDA0MCw3ICsxMDA1NCw2MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgIH0KLSAgICAKKworICAgIHN0cnVjdCBDYXB0dXJlZEZvclBo
YW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlIHsKKyAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVy
T2Zmc2V0OworICAgIH07CisgICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5QnVm
ZmVyQ2FzZSB7CisgICAgICAgIGludDY0X3QgdmFsdWU7CisgICAgICAgIGludDMyX3QgY3VycmVu
dFN0b3JlT2Zmc2V0OworICAgIH07CisgICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbU5ld0Fy
cmF5QnVmZmVyRW5kIHsKKyAgICAgICAgdW5zaWduZWQgYXJyYXlMZW5ndGg7CisgICAgfTsKKyAg
ICBzdHJ1Y3QgQ2FwdHVyZWRGb3JQaGFudG9tQ3JlYXRlUmVzdCB7CisgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcDsKKyAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0OworICAgIH07Cisg
ICAgc3RydWN0IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdCB7CisgICAgICAgIGVudW0gVHlw
ZSB7CisgICAgICAgICAgICBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSwKKyAgICAgICAg
ICAgIFBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UsCisgICAgICAgICAgICBQaGFudG9tTmV3QXJy
YXlCdWZmZXJFbmQsCisgICAgICAgICAgICBQaGFudG9tQ3JlYXRlUmVzdAorICAgICAgICB9IG1f
dHlwZTsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgQ2FwdHVyZWRGb3JQaGFudG9tTmV3
QXJyYXlXaXRoU3ByZWFkQ2FzZSBtX3BoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlOworICAg
ICAgICAgICAgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlIG1fcGhhbnRvbU5l
d0FycmF5QnVmZmVyQ2FzZTsKKyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5
QnVmZmVyRW5kIG1fcGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kOworICAgICAgICAgICAgQ2FwdHVy
ZWRGb3JQaGFudG9tQ3JlYXRlUmVzdCBtX3BoYW50b21DcmVhdGVSZXN0OworICAgICAgICB9Owor
CisgICAgICAgIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdChWYXJhcmdzU3ByZWFkQXJndW1l
bnRUb0VtaXQ6OlR5cGUgdCwgdW5zaWduZWQgYXJnKQorICAgICAgICAgICAgOiBtX3R5cGUodCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBQaGFudG9tTmV3QXJyYXlXaXRo
U3ByZWFkQ2FzZSkKKyAgICAgICAgICAgICAgICBtX3BoYW50b21OZXdBcnJheVdpdGhTcHJlYWRD
YXNlID0geyBhcmcgfTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VS
VCh0ID09IFBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCk7CisgICAgICAgICAgICAgICAgbV9waGFu
dG9tTmV3QXJyYXlCdWZmZXJFbmQgPSB7IGFyZyB9OworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdChWYXJhcmdzU3ByZWFkQXJndW1l
bnRUb0VtaXQ6OlR5cGUgdCwgaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBjdXJyZW50U3RvcmVPZmZz
ZXQpCisgICAgICAgICAgICA6IG1fdHlwZSh0KQorICAgICAgICAgICAgLCBtX3BoYW50b21OZXdB
cnJheUJ1ZmZlckNhc2UoeyB2YWx1ZSwgY3VycmVudFN0b3JlT2Zmc2V0IH0pCisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVCh0ID09IFBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UpOworICAg
ICAgICB9CisgICAgICAgIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdChWYXJhcmdzU3ByZWFk
QXJndW1lbnRUb0VtaXQ6OlR5cGUgdCwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUs
IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwLCB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZz
ZXQpCisgICAgICAgICAgICA6IG1fdHlwZSh0KQorICAgICAgICAgICAgLCBtX3BoYW50b21DcmVh
dGVSZXN0KHsgaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgcGFyYW1l
dGVyT2Zmc2V0IH0pCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCh0ID09IFBoYW50b21D
cmVhdGVSZXN0KTsKKyAgICAgICAgfQorICAgIH07CisKICAgICB2b2lkIGNvbXBpbGVDYWxsT3JD
b25zdHJ1Y3RWYXJhcmdzU3ByZWFkKCkKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25v
ZGU7CkBAIC0xMDA1NSwxNCArMTAxMjIsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPExW
YWx1ZSwgMj4gc3ByZWFkTGVuZ3RoczsKICAgICAgICAgVmVjdG9yPExWYWx1ZSwgOD4gcGF0Y2hw
b2ludEFyZ3VtZW50czsKICAgICAgICAgSGFzaE1hcDxJbmxpbmVDYWxsRnJhbWUqLCBMVmFsdWUs
IFdURjo6RGVmYXVsdEhhc2g8SW5saW5lQ2FsbEZyYW1lKj4sIFdURjo6TnVsbGFibGVIYXNoVHJh
aXRzPElubGluZUNhbGxGcmFtZSo+PiBjYWNoZWRTcHJlYWRMZW5ndGhzOworICAgICAgICAvLyBC
ZWNhdXNlIHRoZSBwYXRjaHBvaW50IGdlbmVyYXRvciBydW5zIGxhdGUgaW4gQWlyLCB0aGUgZGZn
IGdyYXBoIHdpbGwgYmUgbG9uZyBnb25lLgorICAgICAgICAvLyBTbyB3ZSBtdXN0IGxvYWQgZXZl
cnl0aGluZyByZWxldmFudCByaWdodCBub3csIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGV5IGFyZSBj
YXB0dXJlZCBieSB2YWx1ZSBieSB0aGUgbGFtYmRhIHRoYXQgYWN0cyBhcyB0aGUgZ2VuZXJhdG9y
CisgICAgICAgIC8vIE9uZSBwYXJ0aWN1bGFybHkgdHJpY2t5IHBvaW50IGlzIHRoYXQgdGhlIGdl
bmVyYXRvciB3b3VsZCBsaWtlIHRvIHdhbGsgb3ZlciB0aGUgdHJlZSByb290ZWQgYXQgdGhpcyBu
b2RlLCBleHBsb3JpbmcgdGhyb3VnaCBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkIGFuZCBQaGFu
dG9tTmV3QXJyYXlCdWZmZXIsIGVtaXR0aW5nIGNvZGUgYWxvbmcgdGhlIHdheS4KKyAgICAgICAg
Ly8gSW5zdGVhZCwgd2UgZG8gdGhhdCB3YWxrIGhlcmUsIGFuZCByZWNvcmQganVzdCBlbm91Z2gg
aW5mb3JtYXRpb24gaW4gdGhlIGZvbGxvd2luZyB2ZWN0b3IgdG8gZW1pdCB0aGUgcmlnaHQgY29k
ZSBhdCB0aGUgZW5kIG9mIEFpci4KKyAgICAgICAgVmVjdG9yPFZhcmFyZ3NTcHJlYWRBcmd1bWVu
dFRvRW1pdD4gYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0OworICAgICAgICBpbnQgc3Rv
cmVPZmZzZXQgPSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgdW5zaWduZWQgcGFyYW1zT2Zmc2V0ID0g
NDsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICBhdXRvIHB1c2hBbmRDb3Vu
dEFyZ3VtZW50c0Zyb21SaWdodFRvTGVmdCA9IHJlY3Vyc2FibGVMYW1iZGEoWyZdKGF1dG8gc2Vs
ZiwgTm9kZSogdGFyZ2V0KSAtPiB2b2lkIHsKLSAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkg
PT0gUGhhbnRvbVNwcmVhZCkgeworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQtPm9wKCkpIHsK
KyAgICAgICAgICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICAgICAgICAgICAgICBzZWxmKHRh
cmdldC0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbU5ld0FycmF5
V2l0aFNwcmVhZCkgeworICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFk
OiB7CiAgICAgICAgICAgICAgICAgQml0VmVjdG9yKiBiaXRWZWN0b3IgPSB0YXJnZXQtPmJpdFZl
Y3RvcigpOworICAgICAgICAgICAgICAgIENoZWNrZWQ8aW50MzJfdD4gb2Zmc2V0Q291bnQgeyAx
IH07CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFyZ2V0LT5udW1DaGlsZHJl
bigpOyBpLS07ICkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYml0VmVjdG9yLT5nZXQoaSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKG1fZ3JhcGgudmFyQXJnQ2hpbGQodGFyZ2V0
LCBpKS5ub2RlKCkpOwpAQCAtMTAwNzAsMjcgKzEwMTQ1LDQ1IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICArK3N0YXRpY0FyZ3VtZW50Q291bnQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSB0aGlzLT5sb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJn
Q2hpbGQodGFyZ2V0LCBpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50QXJn
dW1lbnRzLmFwcGVuZChhcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dHNUb0VtaXRGcm9tUmlnaHRUb0xlZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9F
bWl0OjpUeXBlOjpQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSwgcGFyYW1zT2Zmc2V0ICsg
KGluZGV4KyspfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
dGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJheUJ1ZmZlcikgewotICAgICAgICAgICAgICAg
IHN0YXRpY0FyZ3VtZW50Q291bnQgKz0gdGFyZ2V0LT5jYXN0T3BlcmFuZDxKU0ltbXV0YWJsZUJ1
dHRlcmZseSo+KCktPmxlbmd0aCgpOworICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlC
dWZmZXI6IHsKKyAgICAgICAgICAgICAgICBhdXRvKiBhcnJheSA9IHRhcmdldC0+Y2FzdE9wZXJh
bmQ8SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFy
cmF5TGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHN0YXRpY0FyZ3Vt
ZW50Q291bnQgKz0gYXJyYXlMZW5ndGg7CisgICAgICAgICAgICAgICAgQ2hlY2tlZDxpbnQzMl90
PiBvZmZzZXRDb3VudCB7IDEgfTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBh
cnJheUxlbmd0aDsgaS0tOyArK29mZnNldENvdW50KSB7CisgICAgICAgICAgICAgICAgICAgIENo
ZWNrZWQ8aW50MzJfdD4gY3VycmVudFN0b3JlT2Zmc2V0IHsgc3RvcmVPZmZzZXQgfTsKKyAgICAg
ICAgICAgICAgICAgICAgY3VycmVudFN0b3JlT2Zmc2V0IC09IChvZmZzZXRDb3VudCAqIHN0YXRp
Y19jYXN0PGludDMyX3Q+KHNpemVvZihSZWdpc3RlcikpKTsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gQmVjYXVzZSB2YXJhcmdzIHZhbHVlcyBhcmUgZHJhaW5lZCBhcyBKU1ZhbHVlLCB3ZSBzaG91
bGQgbm90IGdlbmVyYXRlIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIC8vIGluIERvdWJsZSBm
b3JtIGV2ZW4gaWYgUGhhbnRvbU5ld0FycmF5QnVmZmVyJ3MgaW5kZXhpbmdUeXBlIGlzIEFycmF5
V2l0aERvdWJsZS4KKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IEpTVmFsdWU6
OmVuY29kZShhcnJheS0+Z2V0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzVG9F
bWl0RnJvbVJpZ2h0VG9MZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6
VHlwZTo6UGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZSwgdmFsdWUsIGN1cnJlbnRTdG9yZU9mZnNl
dC52YWx1ZSgpIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmd1bWVu
dHNUb0VtaXRGcm9tUmlnaHRUb0xlZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9F
bWl0OjpUeXBlOjpQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQsIGFycmF5TGVuZ3RoIH0pOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQodGFyZ2V0LT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKLSAgICAgICAgICAg
IElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcCA9IHRhcmdldC0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKLSAgICAgICAg
ICAgIExWYWx1ZSBsZW5ndGggPSBjYWNoZWRTcHJlYWRMZW5ndGhzLmVuc3VyZShpbmxpbmVDYWxs
RnJhbWUsIFsmXSAoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0Lnplcm9FeHRQdHIo
dGhpcy0+Z2V0U3ByZWFkTGVuZ3RoRnJvbUlubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUs
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKSk7Ci0gICAgICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgICAgICAgICBwYXRjaHBvaW50QXJndW1lbnRzLmFwcGVuZChsZW5ndGgpOwotICAg
ICAgICAgICAgc3ByZWFkTGVuZ3Rocy5hcHBlbmQobGVuZ3RoKTsKKyAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZVJlc3Q6IHsKKyAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9IHRhcmdldC0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgp
OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gdGFy
Z2V0LT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHBhcmFtZXRlck9mZnNldCA9IHBhcmFtc09mZnNldCArIChpbmRleCsrKTsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgbGVuZ3RoID0gY2FjaGVkU3ByZWFkTGVuZ3Rocy5lbnN1cmUoaW5saW5lQ2Fs
bEZyYW1lLCBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuemVyb0V4
dFB0cih0aGlzLT5nZXRTcHJlYWRMZW5ndGhGcm9tSW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxG
cmFtZSwgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApKTsKKyAgICAgICAgICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludEFyZ3VtZW50cy5hcHBlbmQo
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBzcHJlYWRMZW5ndGhzLmFwcGVuZChsZW5ndGgpOwor
ICAgICAgICAgICAgICAgIGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBW
YXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21DcmVhdGVSZXN0LCBpbmxp
bmVDYWxsRnJhbWUsIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwLCBwYXJhbWV0ZXJPZmZzZXR9KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0pOwotCiAgICAgICAgIHB1c2hBbmRDb3VudEFyZ3VtZW50c0Zy
b21SaWdodFRvTGVmdChhcmd1bWVudHMpOworCiAgICAgICAgIExWYWx1ZSBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IG1fb3V0LmNvbnN0SW50UHRyKHN0YXRpY0FyZ3VtZW50Q291bnQgKyAx
KTsKICAgICAgICAgZm9yIChMVmFsdWUgbGVuZ3RoIDogc3ByZWFkTGVuZ3RocykKICAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gbV9vdXQuYWRkKGxlbmd0aCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOwpAQCAtMTAxMTgsMTIgKzEwMjExLDE0IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRl
cygpLCA1ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiAKICAgICAgICAgbV9wcm9jLnJlcXVl
c3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKG1pbmltdW1KU0NhbGxBcmVhU2l6ZSk7Ci0gICAgICAg
IAorCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmlnaW5EZXNjcmlwdGlv
bk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAg
ICAgIFZNKiB2bSA9ICZ0aGlzLT52bSgpOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9k
ZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgYXV0byBub2RlT3AgPSBu
b2RlLT5vcCgpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgICAg
ICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgWz0sIGFyZ3VtZW50c1RvRW1pdCA9IFdURk1vdmUoYXJn
dW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0KV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAg
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQogICAgICAgICAgICAgICAgICAgICBz
dGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4
KGNvZGVPcmlnaW4pOwpAQCAtMTAxMzcsNyArMTAyMzIsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMo
KSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdp
c3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwogICAgICAgICAg
ICAgICAgIHVzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3Rl
cnNGb3JKU0NhbGwoKSk7CkBAIC0xMDIwMSw3NCArMTAyOTYsNTQgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIxLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0
KSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaW50IHN0b3JlT2Zmc2V0ID0gQ2FsbEZyYW1lOjp0
aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1zT2Zmc2V0ID0gNDsKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgICAgICAgICAgICAgICAgICBh
dXRvIGVtaXRBcmd1bWVudHNGcm9tUmlnaHRUb0xlZnQgPSByZWN1cnNhYmxlTGFtYmRhKFsmXShh
dXRvIHNlbGYsIE5vZGUqIHRhcmdldCkgLT4gdm9pZCB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21TcHJlYWQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmKHRhcmdldC0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgYXJndW1lbnRUb0VtaXQgOiBhcmd1bWVudHNUb0VtaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYXJndW1lbnRUb0VtaXQubV90eXBlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbU5ld0FycmF5
V2l0aFNwcmVhZENhc2U6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBw
YXJhbWV0ZXJPZmZzZXQgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50b21OZXdBcnJheVdpdGhTcHJl
YWRDYXNlLnBhcmFtZXRlck9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
c3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEp
KSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRnJv
bVJlcChwYXJhbXNbcGFyYW1ldGVyT2Zmc2V0XSwgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OkJh
c2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6VGltZXNFaWdo
dCwgc3RvcmVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQml0VmVjdG9yKiBiaXRWZWN0b3IgPSB0YXJnZXQtPmJpdFZlY3Rv
cigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhcmdl
dC0+bnVtQ2hpbGRyZW4oKTsgaS0tOyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJpdFZlY3Rvci0+Z2V0KGkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZihzdGF0ZS0+Z3JhcGgudmFyQXJnQ2hpbGQodGFyZ2V0LCBpKS5ub2RlKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAocGFyYW1zW3BhcmFtc09mZnNldCAr
IChpbmRleCsrKV0sIHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3Jh
dGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpQaGFudG9tTmV3QXJyYXlC
dWZmZXJDYXNlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9
IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZS52YWx1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGN1cnJlbnRTdG9yZU9mZnNldCA9IGFyZ3Vt
ZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZS5jdXJyZW50U3RvcmVPZmZzZXQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tNjQodmFsdWUpLCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0
Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBjdXJyZW50U3Rv
cmVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdl
dC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvKiBhcnJheSA9IHRhcmdldC0+Y2FzdE9wZXJhbmQ8SlNJbW11dGFibGVCdXR0
ZXJmbHkqPigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZWQ8aW50MzJfdD4g
b2Zmc2V0Q291bnQgeyAxIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYXJyYXktPmxlbmd0aCgpOyBpLS07ICsrb2Zmc2V0Q291bnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB2YXJhcmdzIHZhbHVlcyBhcmUgZHJh
aW5lZCBhcyBKU1ZhbHVlLCB3ZSBzaG91bGQgbm90IGdlbmVyYXRlIHZhbHVlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGluIERvdWJsZSBmb3JtIGV2ZW4gaWYgUGhhbnRvbU5l
d0FycmF5QnVmZmVyJ3MgaW5kZXhpbmdUeXBlIGlzIEFycmF5V2l0aERvdWJsZS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShh
cnJheS0+Z2V0KGkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQodmFsdWUpLCBzY3JhdGNoR1BSMyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZWQ8aW50MzJfdD4gY3VycmVudFN0b3JlT2Zm
c2V0IHsgc3RvcmVPZmZzZXQgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudFN0b3JlT2Zmc2V0IC09IChvZmZzZXRDb3VudCAqIHN0YXRpY19jYXN0PGludDMyX3Q+KHNp
emVvZihSZWdpc3RlcikpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0
b3JlNjQoc2NyYXRjaEdQUjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIENDYWxsSGVs
cGVyczo6VGltZXNFaWdodCwgY3VycmVudFN0b3JlT2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oYXJyYXktPmxlbmd0
aCgpKSksIHNjcmF0Y2hHUFIyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1p
dDo6UGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGFycmF5TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihhcmd1bWVudFRvRW1p
dC5tX3BoYW50b21OZXdBcnJheUJ1ZmZlckVuZC5hcnJheUxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYXJy
YXlMZW5ndGgpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tQ3JlYXRlUmVzdCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9
IHRhcmdldC0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHRhcmdldC0+
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgQjM6
OlZhbHVlUmVwIG51bUFyZ3VtZW50c1RvQ29weSA9IHBhcmFtc1twYXJhbXNPZmZzZXQgKyAoaW5k
ZXgrKyldOwotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWVGcm9tUmVwKG51bUFyZ3Vt
ZW50c1RvQ29weSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxv
YWRPZmZzZXQgPSAoQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNTdGFydChpbmxpbmVDYWxsRnJh
bWUpLm9mZnNldCgpICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBkb25l
ID0gaml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hHUFIzKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcFN0YXJ0ID0gaml0LmxhYmVsKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGlj
X2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIyKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIGxvYWRPZmZzZXQp
LCBzY3JhdGNoR1BSNCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3Jh
dGNoR1BSNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJhc2VJ
bmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwg
c3RvcmVPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUjMpLmxpbmtUbyhsb29wU3RhcnQsICZq
aXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEFyZ3VtZW50c0Zyb21SaWdo
dFRvTGVmdChhcmd1bWVudHMpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWYXJhcmdz
U3ByZWFkQXJndW1lbnRUb0VtaXQ6OlBoYW50b21DcmVhdGVSZXN0OiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBhcmd1bWVu
dFRvRW1pdC5tX3BoYW50b21DcmVhdGVSZXN0LmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IGFyZ3Vt
ZW50VG9FbWl0Lm1fcGhhbnRvbUNyZWF0ZVJlc3QubnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0ID0gYXJn
dW1lbnRUb0VtaXQubV9waGFudG9tQ3JlYXRlUmVzdC5wYXJhbWV0ZXJPZmZzZXQ7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgbnVtQXJndW1lbnRzVG9Db3B5ID0g
cGFyYW1zW3BhcmFtZXRlck9mZnNldF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
VmFsdWVGcm9tUmVwKG51bUFyZ3VtZW50c1RvQ29weSwgc2NyYXRjaEdQUjMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBsb2FkT2Zmc2V0ID0gKEFzc2VtYmx5SGVscGVyczo6YXJn
dW1lbnRzU3RhcnQoaW5saW5lQ2FsbEZyYW1lKS5vZmZzZXQoKSArIG51bWJlck9mQXJndW1lbnRz
VG9Ta2lwKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbG9vcFN0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6
ZV90PigxKSksIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
c3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEp
KSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQo
Q0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHNjcmF0
Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIGxvYWRPZmZzZXQpLCBzY3JhdGNoR1BS
NCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4
KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBzdG9y
ZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUjMpLmxpbmtUbyhsb29wU3RhcnQsICZq
aXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbnRUaHJvdyA9IGppdC5qdW1w
KCk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNr
T3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93Rm9yVmFyYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhS
ZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsKQEAgLTEwMjgyLDkgKzEw
MzU3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BS
MywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoMCkpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0VmFyYXJncyB8fCBub2RlLT5v
cCgpID09IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKQorICAgICAgICAgICAgICAgIGlmIChub2Rl
T3AgPT0gQ29uc3RydWN0VmFyYXJncyB8fCBub2RlT3AgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFy
Z3MpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1
Y3RWYXJhcmdzOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gVGFpbENh
bGxWYXJhcmdzIHx8IG5vZGUtPm9wKCkgPT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncykKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChub2RlT3AgPT0gVGFpbENhbGxWYXJhcmdzIHx8IG5vZGVPcCA9
PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9
IENhbGxMaW5rSW5mbzo6VGFpbENhbGxWYXJhcmdzOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNhbGxWYXJhcmdzOwpA
QCAtMTAzMTIsNyArMTAzODcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgaWYgKGlz
VGFpbENhbGwpCiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVz
KCk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGlj
Tm9kZU9yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmIChpc1RhaWxDYWxsKQpAQCAtMTA0MTgsNiArMTA0OTMsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZD
YWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAg
Vk0qIHZtID0gJnRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3Jp
Z2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAg
aW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQzKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0g
c2VtYW50aWNOb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICBDYWxsVmFyYXJn
c0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKKyAgICAgICAgYXV0byBub2Rl
T3AgPSBub2RlLT5vcCgpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTEwNDMzLDggKzEwNTE2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKSk7CiAKLSAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGpp
dC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRhID0gbm9kZS0+Y2FsbFZhcmFyZ3NE
YXRhKCk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQu
Y29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOwogCiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSAxOwogICAgICAgICAgICAgICAgIEdQUlJl
ZyBjYWxsZWVHUFIgPSBwYXJhbXNbYXJnSW5kZXgrK10uZ3ByKCk7CkBAIC0xMDUxOCwxOCArMTA2
MDAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hlaWdodCAvIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlOwotICAgICAgICAgICAgICAg
ICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMygpKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2Fs
bEZyYW1lID0gbm9kZS0+Y2hpbGQzKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUo
KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgaW5s
aW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwog
CiAgICAgICAgICAgICAgICAgICAgIC8vIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlIG1v
ZGlmaWVzIHRoZSBzdGFjayBwb2ludGVyIGlmIGl0IHN1Y2NlZWRzLgogICAgICAgICAgICAgICAg
ICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSgqdm0sIGppdCwgc2NyYXRjaEdQUjIs
IHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIGlubGluZUNhbGxGcmFtZSwg
ZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKIAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAgICAgICAgICAgICAgICAg
ICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4o
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQoKikoKT4ob3BlcmF0aW9uVGhyb3dT
dGFja092ZXJmbG93Rm9yVmFyYXJncykpOwogICAgICAgICAgICAgICAgICAgICBqaXQuYWJvcnRX
aXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJvdyk7CkBAIC0xMDUzNyw3
ICsxMDYxNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNrSGVpZ2h0IC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpPihq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBh
cmd1bWVudHNHUFIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRh
LT5maXJzdFZhckFyZ09mZnNldCkpOworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyk+KGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIGFyZ3VtZW50c0dQUiwg
c2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJn
T2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihq
aXQudm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0
d2lzZV9jYXN0PHZvaWQoKikoKT4ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncykpOwogCkBA
IC0xMDU0Niw3ICsxMDYyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50c0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCBhcmd1bWVudHNHUFIpOwogICAgICAgICAgICAg
ICAgICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKGppdCwgc2NyYXRjaEdQUjEsIGZhbHNlLCBzY3Jh
dGNoR1BSMiwgc2NyYXRjaEdQUjIpOwogICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1taW5pbXVtSlNDYWxsQXJlYVNpemUpLCBzY3JhdGNo
R1BSMiwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICAg
ICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25TZXR1cFZhcmFyZ3NG
cmFtZSk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksIHNjcmF0Y2hHUFIyLCBhcmd1bWVudHNHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSwgc2NyYXRjaEdQUjEpOworICAgICAgICAgICAg
ICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0dXBWYXJhcmdz
RnJhbWUpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmln
aW4pLCBzY3JhdGNoR1BSMiwgYXJndW1lbnRzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihkYXRhLT5maXJzdFZhckFyZ09mZnNldCksIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgICAg
ICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCgqKSgpPihvcGVy
YXRpb25TZXR1cFZhcmFyZ3NGcmFtZSkpOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTEwNTYz
LDkgKzEwNjQwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NCh0aGlz
R1BSLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdCgwKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZTsKLSAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RWYXJhcmdzIHx8IG5vZGUt
Pm9wKCkgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3MpCisgICAgICAgICAgICAgICAgaWYgKG5v
ZGVPcCA9PSBDb25zdHJ1Y3RWYXJhcmdzIHx8IG5vZGVPcCA9PSBDb25zdHJ1Y3RGb3J3YXJkVmFy
YXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNvbnN0
cnVjdFZhcmFyZ3M7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBUYWls
Q2FsbFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKQorICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVPcCA9PSBUYWlsQ2FsbFZhcmFyZ3MgfHwgbm9kZU9w
ID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxUeXBl
ID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZhcmFyZ3M7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3M7
CkBAIC0xMDU5MSw3ICsxMDY2OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBpZiAo
aXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2
ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50
aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC0xMDY2NSw2ICsxMDc0Miw4IEBAIHByaXZhdGU6
CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9m
Q2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3Jp
Z2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBhdXRvIGVjbWFNb2RlID0gbm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPSwgJnZtXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBA
IC0xMDY3OSw3ICsxMDc1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
KSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwpA
QCAtMTA2OTEsNyArMTA3NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHJlcXVpcmVkQnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBzaXplb2YoQ2FsbEZy
YW1lKikgKiAyOwogICAgICAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAg
ICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHJlcXVpcmVk
Qnl0ZXMpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZWNtYU1vZGUpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAg
ICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFs
KT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAg
ICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFy
Z3VtZW50R1BSMCk7CkBAIC0xMjI0OSwxOSArMTIzMjgsMjAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAg
ICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRp
Y05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAg
ICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJ
bmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+
aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFu
dGljTm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3Qg
ZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsK
IAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNW
YWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocGFyYW1zWzBdLmdwcigpKSk7CiAKQEAgLTEyMjc1LDkgKzEyMzU1LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygm
aml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1Bh
dGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9u
SW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBh
cmFtc1sxXS5ncHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJh
d0JpdHMoKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5r
VG8oZG9uZSwgJmppdCk7CkBAIC0xMjQ5Myw2ICsxMjU3Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAg
ICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCisg
ICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKQEAgLTEyNTE2LDE0ICsxMjU5NywxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocHJvdG90
eXBlR1BSKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNv
bW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVP
cmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQg
dGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVs
cGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5z
dGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
cmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3JhdGNoR1BSLAogICAgICAgICAg
ICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmplY3QpOwogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwpAQCAtMTI1MzgsOSArMTI2MTks
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRo
QmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlv
bkZ1bmN0aW9uLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihz
ZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtMTM5OTgs
MTIgKzE0MDc5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZv
ckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRs
U3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3Jp
Z2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAg
ICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21t
b24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3Jp
Z2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChzZW1hbnRpY05vZGVPcmlnaW4pOwogCiAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRp
b24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4
Y2VwdGlvbnMgPQpAQCAtMTQwMTUsNyArMTQwOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1z
LCBjYWxsU2l0ZUluZGV4KTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNp
dGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCiAgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5cGUpOwogCkBAIC0xNDAz
MSw5ICsxNDExMyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygp
KSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CkBAIC0xNDA2NywxMiArMTQxNDksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBT
dGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05v
ZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRl
eChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGlj
Tm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhp
dCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CkBAIC0xNDA4NCw3ICsxNDE2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVh
dGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCiAgICAgICAgICAgICAgICAg
YXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPjo6Y3JlYXRl
KAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBzZW1hbnRpY05vZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhw
YXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNb
MV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsKIApAQCAtMTQxMDAsOSAr
MTQxODMsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZp
ZXIucmF3Qml0cygpKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAo
KS5saW5rVG8oZG9uZSwgJmppdCk7CkBAIC0xNTQxNiw2ICsxNTQ5OSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVl
UmVwOjpTb21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmln
aW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAg
ICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTU0NDEsMTYgKzE1NTI1LDE2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXBMaXN0KCkubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQ
YXRoRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhG
dW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNl
bWFudGljTm9kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIHNsb3dQYXRoRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9KTsKQEAgLTE1NDgzLDYgKzE1NTY3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6
OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRl
OworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xNTUwNCw5ICsxNTU4OSw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcExpc3QoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3By
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4p
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJd
LmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUs
ICZqaXQpOwogICAgICAgICAgICAgICAgICAgICB9KTsKQEAgLTE1NTQwLDYgKzE1NjI1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50
cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIFN0YXRlKiBzdGF0
ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xNTU2Nyw5ICsxNTY1Myw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJp
dFJTaGlmdCA6IG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9y
aWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93
UGF0aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICB9
KTsKQEAgLTE5ODYyLDYgKzE5OTQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gYmxvY2stPmluZGV4OwogICAgICAgICB1bnNpZ25lZCBub2RlSW5kZXggPSBu
b2RlID8gbm9kZS0+aW5kZXgoKSA6IFVJTlRfTUFYOwogI2lmICFBU1NFUlRfRU5BQkxFRAorICAg
ICAgICBhdXRvIG5vZGVPcCA9IG5vZGUgPyBub2RlLT5vcCgpIDogTGFzdE5vZGVUeXBlOwogICAg
ICAgICBtX291dC5wYXRjaHBvaW50KFZvaWQpLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwpAQCAtMTk4NjksNyArMTk5NTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJsb2NrSW5kZXgpLCBHUFJJ
bmZvOjpyZWdUMCk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobm9kZUluZGV4KSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGlm
IChub2RlKQotICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihub2RlLT5vcCgpKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlT3ApLCBHUFJJbmZvOjpy
ZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihGVExDcmFzaCk7CiAg
ICAgICAgICAgICB9KTsKICNlbHNlIC8vIEFTU0VSVF9FTkFCTEVECg==
</data>
<flag name="review"
          id="451848"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="451849"
          type_id="3"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430428</attachid>
            <date>2021-06-02 18:05:07 -0700</date>
            <delta_ts>2021-06-03 16:20:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226556</filename>
            <type>text/plain</type>
            <size>69797</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM1ZmE2MjJiMmZiNi4uN2VkNDdhMWViNjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNi0wMiAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgdGhlIEZU
TChERkcpIGdyYXBoIGFmdGVyIGxvd2VyaW5nIHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NTYKKworICAgICAgICBSZXZpZXdlZCBieSBQ
aGlsIFBpemxvLgorCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCB3YXMgZGVh
bGluZyB3aXRoIGFsbCBvZiB0aGUgUGF0Y2hwb2ludHMgY3JlYXRlZCBieSBGVExMb3dlckRGR1Rv
QjM6IHRoZXkgZ2V0IGEgbGFtYmRhIGF0IHRoYXQgdGltZSwgd2hpY2ggdGhleSBleGVjdXRlIGF0
IHRoZSBlbmQgb2YgQWlyLCBhbmQgbWFueSBvZiB0aGVzZSBsYW1iZGFzIHdlcmUgY2FwdHVyaW5n
IGEgcG9pbnRlciB0byBzb21lIHBhcnRzIG9mIHRoZSBERkcgZ3JhcGggYW5kIHJlYWRpbmcgdGhy
b3VnaCBpdCB3aGVuIGJlaW5nIGV4ZWN1dGVkLgorICAgICAgICBJbiBhbGwgY2FzZXMgYnV0IG9u
ZSBpdCB3YXMgZWFzaWx5IGZpeGVkOiB0aGV5IHdlcmUgb25seSByZWFkaW5nIGEgZmV3IGJpdHMg
ZnJvbSBhIGdpdmVuIG5vZGUsIHNvIEkganVzdCByZWFkIHRoZXNlIGJpdHMgaW4gRlRMTG93ZXJE
RkdUb0IzLCBhbmQgY2FwdHVyZWQgdGhlbSAoYnkgdmFsdWUpIGluc3RlYWQgb2YgdGhlIHBvaW50
ZXIgdG8gdGhlIG5vZGUuCisgICAgICAgIFRoZSBleGNlcHRpb24gd2FzIGNvbXBpbGVDYWxsT3JD
b25zdHJ1Y3RWYXJhcmdzU3ByZWFkKCk6IGl0cyBwYXRjaHBvaW50IGdlbmVyYXRvciB3YXMgd2Fs
a2luZyB0aHJvdWdoIHRoZSBncmFwaCwgZmxhdHRlbmluZyBhIHRyZWUgb2YgUGhhbnRvbVNwcmVh
ZC9QaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkL1BoYW50b21OZXdBcnJheUJ1ZmZlci9QaGFudG9t
Q3JlYXRlUmVzdCwgZW1pdHRpbmcgc29tZSBjb2RlIGFsb25nIHRoZSB3YXkuCisgICAgICAgIFdl
IG5vdyBkbyB0aGlzIGZsYXR0ZW5pbmcgb2YgdGhlIHRyZWUgaW4gRlRMTG93ZXJERkdUb0IzLCBz
dG9yZSBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBsYXRlciBlbWl0IHRoZSByZXF1aXJlZCBj
b2RlIGluIGEgdmVjdG9yLCBhbmQgY2FwdHVyZSB0aGF0IHZlY3RvciBpbiB0aGUgbGFtYmRhICh0
aHJvdWdoIGEgbW92ZSBjYXB0dXJlLCB3aGljaCBpcyBhbGxvd2VkIHNpbmNlIEMrKzE0KS4gU2Vl
IGBzdHJ1Y3QgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0YCBmb3IgdGhlIGluZm9ybWF0aW9u
IHRoYXQgd2UgbmVlZCB0byBzdG9yZSBpbiB0aGF0IHZlY3Rvci4KKworICAgICAgICBJIHRlc3Rl
ZCB0aGlzIGNoYW5nZSBieSBjb21wbGV0aW5nIGEgZnVsbCBydW4gb2YgSmV0U3RyZWFtMiB3aXRo
IEFTQU4uCisgICAgICAgIEkgYWxzbyByYW4gdGhlIHN0cmVzcyB0ZXN0cyB3aXRoICJzcHJlYWQi
IGluIHRoZWlyIG5hbWUgaW4gRGVidWcgbW9kZS4KKworICAgICAgICAqIGIzL0IzU3BhcnNlQ29s
bGVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xlYXJBbGwp
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZyZWVERkdJUkFmdGVyTG93ZXJpbmcpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVuYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENhbGxPckNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVU
YWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OlZhcmFyZ3NT
cHJlYWRBcmd1bWVudFRvRW1pdDo6VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZh
cmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0UmlnaHRTaGlmdFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjcmFzaCk6CisKIDIwMjEtMDYtMDIgIFJvYmluIE1vcmlzc2V0ICA8
cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJnZSBCMzo6U3RhY2tTbG90IGFuZCBB
aXI6OlN0YWNrU2xvdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAy
NWFiOWMzMzk1MWYuLmZkZjgzZmY3NzNkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKQEAgLTE4NjEsNiArMTg2MSwyNyBAQCB2b2lkIEdyYXBoOjpjbGVhckNQU0NGR0Rh
dGEoKQogICAgIG1fY3BzQ0ZHID0gbnVsbHB0cjsKIH0KIAordm9pZCBHcmFwaDo6ZnJlZURGR0lS
QWZ0ZXJMb3dlcmluZygpCit7CisgICAgbV9ibG9ja3MuY2xlYXIoKTsKKyAgICBtX3Jvb3RzLmNs
ZWFyKCk7CisgICAgbV92YXJBcmdDaGlsZHJlbi5jbGVhcigpOworICAgIG1fbm9kZXMuY2xlYXJB
bGwoKTsKKworICAgIG1fYnl0ZWNvZGVMaXZlbmVzcy5jbGVhcigpOworICAgIG1fc2FmZVRvTG9h
ZC5jbGVhcigpOworICAgIG1fZG9tSklUU25pcHBldHMuY2xlYXIoKTsKKyAgICBtX2Nwc0RvbWlu
YXRvcnMgPSBudWxscHRyOworICAgIG1fc3NhRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9j
cHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbnVsbHB0
cjsKKyAgICBtX3NzYUNGRyA9IG51bGxwdHI7CisgICAgbV9jcHNDRkcgPSBudWxscHRyOworICAg
IG1fYmFja3dhcmRzQ0ZHID0gbnVsbHB0cjsKKyAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBu
dWxscHRyOworICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOworfQor
CiB2b2lkIFByZWZpeDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICgh
bV9lbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDc2ZjlkYjgy
ZjkxMS4uNjJhMWZlZjNkYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBA
IC0xMDc0LDYgKzEwNzQsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2F0Y2hFbnRyeXBvaW50cy5h
cHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IG1hY2hpbmVDb2RlLCBGaXhlZFZlY3RvcjxGbHVz
aEZvcm1hdD4oV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKSwgYnl0ZWNvZGVJbmRleCB9KTsKICAg
ICB9CiAKKyAgICB2b2lkIGZyZWVERkdJUkFmdGVyTG93ZXJpbmcoKTsKKwogICAgIFN0YWNrQ2hl
Y2sgbV9zdGFja0NoZWNrZXI7CiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggMjhmOTg5YWU3MjQ2Li40
MWFhNjMzZmY5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApA
QCAtNTgsNiArNTgsOSBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
c3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkK
ICAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIz
OjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAKKyAgICBpZiAoIXNob3VsZER1bXBEaXNhc3NlbWJs
eSgpICYmICFPcHRpb25zOjphc3luY0Rpc2Fzc2VtYmx5KCkgJiYgIWdyYXBoLmNvbXBpbGF0aW9u
KCkgJiYgIXN0YXRlLnByb2MtPm5lZWRzUENUb09yaWdpbk1hcCgpKQorICAgICAgICBncmFwaC5m
cmVlREZHSVJBZnRlckxvd2VyaW5nKCk7CisKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50
IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIzYmU3ZTc3NWQzYS4u
YzZiMTY0NjBkODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC0yMzgwLDYgKzIzODAsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIFN0YXRl
KiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9y
aWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0yNDEwLDEyICsyNDEx
LDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1h
dGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBleGNlcHRpb25zLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0aElDKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRpb25z
LmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoaW5nRnVuY3Rp
b24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2Vt
YW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobWF0aElDKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0aElDR2VuZXJh
dGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsLmNhbGwoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwgcGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
bG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwg
cGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRp
Y05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTI0MzQsOCArMjQzNSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgZXhjZXB0aW9ucy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFd
LmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykK
QEAgLTI0ODcsNiArMjQ4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUZQ
U2NyYXRjaFJlZ2lzdGVycyA9IDI7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0g
Jm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAg
ICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTI1MjAsMTIgKzI1MjIsMTIgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0aElDR2VuZXJh
dGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2Vw
dGlvbnMuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwgZXhj
ZXB0aW9ucy5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaGlu
Z0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigp
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0aElDKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsLmNh
bGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBub25SZXBh
dGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNb
Ml0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIHNlbWFudGljTm9kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBh
cmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGwuY2FsbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1
bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBAIC0yNTQ0LDggKzI1NDYsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBub25SZXBh
dGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNb
Ml0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0
KCksCisgICAgICAgICAgICAgICAgICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFt
c1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2Rl
T3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAg
ICAgIH0KIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMzk4MywxMCArMzk4NSwxMSBA
QCBwcml2YXRlOgogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAg
ICBib29sIGJhc2VJc0NlbGwgPSBhYnN0cmFjdFZhbHVlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUo
U3BlY0NlbGwpOworICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNp
dGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMt
PmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNh
bGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRp
b25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1w
cyhqaXQpOwpAQCAtNDAwMSw3ICs0MDA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBH
UFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CiAKICAgICAgICAgICAgICAgICBh
dXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKIAogICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwpAQCAtNDAxOSw5ICs0MDIyLDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVn
aW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGljT3JpZ2luLAogICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdp
biksCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKICAg
ICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKQEAgLTQx
MTUsMTAgKzQxMTgsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKICAgICAgICAgYm9vbCBiYXNlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpOworICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1h
bnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVu
aXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9y
aWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAogICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24g
Y2FsbHMuCiAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9u
cyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMo
aml0KTsKQEAgLTQxMzIsNyArNDEzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBHUFJSZWcg
YnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9y
ID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVT
ZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKICAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpT
VmFsdWVSZWdzKGJyYW5kR1BSKSk7CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBu
b3RDZWxsOwpAQCAtNDE2Miw5ICs0MTY2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwK
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRl
QWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQ
UikuY2FsbCgpOwogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQp
OwogCkBAIC00NTI0LDEzICs0NTI4LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJl
UGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0
YXRlID0gJm1fZnRsU3RhdGU7Ci0gICAgICAgIAorCisgICAgICAgIENvZGVPcmlnaW4gbm9kZVNl
bWFudGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAg
ICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRl
SW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUt
PmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2Rl
U2VtYW50aWNPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVt
cExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUt
PnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC00NTM5LDcgKzQ1
NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1
bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVh
dGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdz
KHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFt
c1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2Rl
LAogICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKQEAgLTQ1NTQsOSArNDU1OSw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGlj
T3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdl
bmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtNTI0MywxMCAr
NTI0OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9u
cyhwYXRjaHBvaW50KTsKIAogICAgICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7
CisgICAgICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdp
bi5zZW1hbnRpYzsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
ewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRl
SW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRpY09yaWdpbik7CiAKICAgICAgICAgICAg
ICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxs
cy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9u
cyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMo
aml0KTsKQEAgLTUyNjEsNyArNTI2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgR1BS
UmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOwogCiAgICAgICAgICAgICAgICAgYXV0
byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBub2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkdldEJ5VmFsLAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwg
SlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0
dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSBwcm9wZXJ0eUlzU3RyaW5nOwpAQCAtNTI4Myw5
ICs1Mjg5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93
UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGljT3JpZ2lu
LAogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0
QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVT
ZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOwogICAgICAgICAg
ICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtNTg0MywxMiAr
NTg0OSwxNiBAQCBwcml2YXRlOgogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRl
OwogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBDb2RlT3JpZ2luIG5vZGVT
ZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgYXV0byBjaGls
ZDFVc2VLaW5kID0gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpOworICAgICAgICBhdXRvIGNoaWxk
MlVzZUtpbmQgPSBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCk7CisgICAgICAgIGF1dG8gZWNtYU1v
ZGUgPSBub2RlLT5lY21hTW9kZSgpLnZhbHVlKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAgICAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29k
ZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRp
Y09yaWdpbik7CiAKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4g
ZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1
bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTU4NjAsNyArNTg3MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdw
U2NyYXRjaCgwKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMu
Z3BTY3JhdGNoKDApKTsKIAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQxVXNlS2luZCkK
ICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2UpKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1
bmN0aW9uID0gWyZdICgpIHsKQEAgLTU4NzUsNyArNTg4NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNj
cmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1zWzJd
LmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZDJV
c2VLaW5kID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIo
KSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNb
Ml0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC01ODg0LDEyICs1ODk0LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewog
ICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3Jt
YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlJZEdlbmVy
YXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNp
dGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Qm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZVNl
bWFudGljT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2Ny
YXRjaCgwKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTU5MDYsMTEgKzU5MTYsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2lu
ID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5j
dGlvbiwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNl
bWFudGljT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGVjbWFNb2RlKSkuY2Fs
bCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmpp
dCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhD
YWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC05NzExLDYgKzk3MjEsOCBAQCBw
cml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVzY3Jp
cHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwog
ICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBub2RlU2Vt
YW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIGF1dG8gbm9kZU9w
ID0gbm9kZS0+b3AoKTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAg
ICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC05NzIyLDE2ICs5NzM0LDE2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRl
SW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Io
VmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQu
Y29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8obm9kZVNlbWFudGljT3JpZ2luKTsKICAgICAgICAgICAgICAgICBj
YWxsTGlua0luZm8tPnNldFVwQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9
PSBDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6Q2Fs
bCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgICAgICBub2RlT3AgPT0gQ29uc3Ry
dWN0ID8gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3QgOiBDYWxsTGlua0luZm86OkNhbGwsIEdQUklu
Zm86OnJlZ1QwKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGggPSBjYWxsTGlua0lu
Zm8tPmVtaXRGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBJbnZhbGlkR1BSUmVnLCBDYWxs
TGlua0luZm86OlVzZURhdGFJQzo6Tm8pOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmso
JmppdCk7CiAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBH
UFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRp
Y09yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogCiAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZq
aXQpOwpAQCAtOTgyMSw2ICs5ODMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZD
YWxsU2l0ZSgpOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBA
IC05ODU0LDcgKzk4NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBzaHVmZmxl
RGF0YS5udW1QYXNzZWRBcmdzID0gbnVtUGFzc2VkQXJnczsKICAgICAgICAgICAgICAgICAgICAg
c2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKGppdC5jb2RlQmxvY2soKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2lu
KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJ
bmZvOjpEaXJlY3RUYWlsQ2FsbCwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0
LmxhYmVsKCk7CkBAIC05ODcxLDcgKzk4ODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoID0gaml0LmxhYmVsKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHRvU2F2ZSwgaml0LAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwg
b3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlk
R1BSUmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgY2FsbGVl
R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKG1haW5Q
YXRoLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVjdXRh
YmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CkBAIC05ODg2LDcgKzk4OTksNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5j
b2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCiAgICAgICAgICAgICAgICAgICAgIGlz
Q29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpEaXJlY3RDb25zdHJ1Y3QgOiBDYWxsTGlua0luZm86
OkRpcmVjdENhbGwsIEludmFsaWRHUFJSZWcpOwogCkBAIC05OTEzLDcgKzk5MjYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxpbmtE
aXJlY3RDYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljTm9kZU9yaWdp
biwgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW52YWxpZEdQUlJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGNhbGxMaW5rSW5mbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVlR1BS
KS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWlu
UGF0aCwgJmppdCk7CkBAIC05OTg5LDYgKzEwMDAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwog
ICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRo
aXMtPnZtKCk7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTEwMDI2LDcgKzEwMDQwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVSZWdz
KEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAgICAgICAgICAgc2xvd1BhdGhT
aHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKIAotICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMp
OwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsK
IAogICAgICAgICAgICAgICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gaml0LmxhYmVsKCk7CkBAIC0x
MDA0MCw3ICsxMDA1NCw2MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0pOwogICAgIH0KLSAgICAKKworICAgIHN0cnVjdCBDYXB0dXJlZEZvclBoYW50
b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlIHsKKyAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zm
c2V0OworICAgIH07CisgICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5QnVmZmVy
Q2FzZSB7CisgICAgICAgIGludDY0X3QgdmFsdWU7CisgICAgICAgIGludDMyX3QgY3VycmVudFN0
b3JlT2Zmc2V0OworICAgIH07CisgICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5
QnVmZmVyRW5kIHsKKyAgICAgICAgdW5zaWduZWQgYXJyYXlMZW5ndGg7CisgICAgfTsKKyAgICBz
dHJ1Y3QgQ2FwdHVyZWRGb3JQaGFudG9tQ3JlYXRlUmVzdCB7CisgICAgICAgIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcDsKKyAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0OworICAgIH07CisgICAg
c3RydWN0IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdCB7CisgICAgICAgIGVudW0gVHlwZSB7
CisgICAgICAgICAgICBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSwKKyAgICAgICAgICAg
IFBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UsCisgICAgICAgICAgICBQaGFudG9tTmV3QXJyYXlC
dWZmZXJFbmQsCisgICAgICAgICAgICBQaGFudG9tQ3JlYXRlUmVzdAorICAgICAgICB9IG1fdHlw
ZTsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJy
YXlXaXRoU3ByZWFkQ2FzZSBtX3BoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlOworICAgICAg
ICAgICAgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlIG1fcGhhbnRvbU5ld0Fy
cmF5QnVmZmVyQ2FzZTsKKyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5QnVm
ZmVyRW5kIG1fcGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kOworICAgICAgICAgICAgQ2FwdHVyZWRG
b3JQaGFudG9tQ3JlYXRlUmVzdCBtX3BoYW50b21DcmVhdGVSZXN0OworICAgICAgICB9OworCisg
ICAgICAgIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdChWYXJhcmdzU3ByZWFkQXJndW1lbnRU
b0VtaXQ6OlR5cGUgdCwgdW5zaWduZWQgYXJnKQorICAgICAgICAgICAgOiBtX3R5cGUodCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3By
ZWFkQ2FzZSkKKyAgICAgICAgICAgICAgICBtX3BoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNl
ID0geyBhcmcgfTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0
ID09IFBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCk7CisgICAgICAgICAgICAgICAgbV9waGFudG9t
TmV3QXJyYXlCdWZmZXJFbmQgPSB7IGFyZyB9OworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdChWYXJhcmdzU3ByZWFkQXJndW1lbnRU
b0VtaXQ6OlR5cGUgdCwgaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBjdXJyZW50U3RvcmVPZmZzZXQp
CisgICAgICAgICAgICA6IG1fdHlwZSh0KQorICAgICAgICAgICAgLCBtX3BoYW50b21OZXdBcnJh
eUJ1ZmZlckNhc2UoeyB2YWx1ZSwgY3VycmVudFN0b3JlT2Zmc2V0IH0pCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCh0ID09IFBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UpOworICAgICAg
ICB9CisgICAgICAgIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdChWYXJhcmdzU3ByZWFkQXJn
dW1lbnRUb0VtaXQ6OlR5cGUgdCwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIHVu
c2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwLCB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQp
CisgICAgICAgICAgICA6IG1fdHlwZSh0KQorICAgICAgICAgICAgLCBtX3BoYW50b21DcmVhdGVS
ZXN0KHsgaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgcGFyYW1ldGVy
T2Zmc2V0IH0pCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCh0ID09IFBoYW50b21DcmVh
dGVSZXN0KTsKKyAgICAgICAgfQorICAgIH07CisKICAgICB2b2lkIGNvbXBpbGVDYWxsT3JDb25z
dHJ1Y3RWYXJhcmdzU3ByZWFkKCkKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CkBAIC0xMDA1NSwxMyArMTAxMjIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPExWYWx1
ZSwgMj4gc3ByZWFkTGVuZ3RoczsKICAgICAgICAgVmVjdG9yPExWYWx1ZSwgOD4gcGF0Y2hwb2lu
dEFyZ3VtZW50czsKICAgICAgICAgSGFzaE1hcDxJbmxpbmVDYWxsRnJhbWUqLCBMVmFsdWUsIFdU
Rjo6RGVmYXVsdEhhc2g8SW5saW5lQ2FsbEZyYW1lKj4sIFdURjo6TnVsbGFibGVIYXNoVHJhaXRz
PElubGluZUNhbGxGcmFtZSo+PiBjYWNoZWRTcHJlYWRMZW5ndGhzOworICAgICAgICAvLyBCZWNh
dXNlIHRoZSBwYXRjaHBvaW50IGdlbmVyYXRvciBydW5zIGxhdGUgaW4gQWlyLCB0aGUgZGZnIGdy
YXBoIHdpbGwgYmUgbG9uZyBnb25lLgorICAgICAgICAvLyBTbyB3ZSBtdXN0IGxvYWQgZXZlcnl0
aGluZyByZWxldmFudCByaWdodCBub3csIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGV5IGFyZSBjYXB0
dXJlZCBieSB2YWx1ZSBieSB0aGUgbGFtYmRhIHRoYXQgYWN0cyBhcyB0aGUgZ2VuZXJhdG9yCisg
ICAgICAgIC8vIE9uZSBwYXJ0aWN1bGFybHkgdHJpY2t5IHBvaW50IGlzIHRoYXQgdGhlIGdlbmVy
YXRvciB3b3VsZCBsaWtlIHRvIHdhbGsgb3ZlciB0aGUgdHJlZSByb290ZWQgYXQgdGhpcyBub2Rl
LCBleHBsb3JpbmcgdGhyb3VnaCBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkIGFuZCBQaGFudG9t
TmV3QXJyYXlCdWZmZXIsIGVtaXR0aW5nIGNvZGUgYWxvbmcgdGhlIHdheS4KKyAgICAgICAgLy8g
SW5zdGVhZCwgd2UgZG8gdGhhdCB3YWxrIGhlcmUsIGFuZCByZWNvcmQganVzdCBlbm91Z2ggaW5m
b3JtYXRpb24gaW4gdGhlIGZvbGxvd2luZyB2ZWN0b3IgdG8gZW1pdCB0aGUgcmlnaHQgY29kZSBh
dCB0aGUgZW5kIG9mIEFpci4KKyAgICAgICAgVmVjdG9yPFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRv
RW1pdD4gYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0OworICAgICAgICBpbnQgc3RvcmVP
ZmZzZXQgPSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgdW5zaWduZWQgcGFyYW1zT2Zmc2V0ID0gNDsK
KyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICBhdXRvIHB1c2hBbmRDb3VudEFy
Z3VtZW50c0Zyb21SaWdodFRvTGVmdCA9IHJlY3Vyc2FibGVMYW1iZGEoWyZdKGF1dG8gc2VsZiwg
Tm9kZSogdGFyZ2V0KSAtPiB2b2lkIHsKLSAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0g
UGhhbnRvbVNwcmVhZCkgeworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQtPm9wKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICAgICAgICAgICAgICBzZWxmKHRhcmdl
dC0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbU5ld0FycmF5V2l0
aFNwcmVhZCkgeworICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOiB7
CiAgICAgICAgICAgICAgICAgQml0VmVjdG9yKiBiaXRWZWN0b3IgPSB0YXJnZXQtPmJpdFZlY3Rv
cigpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhcmdldC0+bnVtQ2hpbGRy
ZW4oKTsgaS0tOyApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdFZlY3Rvci0+Z2V0KGkp
KQpAQCAtMTAwNzAsMjcgKzEwMTQ0LDQ1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICArK3N0YXRpY0FyZ3VtZW50Q291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBMVmFs
dWUgYXJndW1lbnQgPSB0aGlzLT5sb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQodGFyZ2V0
LCBpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50QXJndW1lbnRzLmFwcGVu
ZChhcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNUb0VtaXRGcm9t
UmlnaHRUb0xlZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlOjpQ
aGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSwgcGFyYW1zT2Zmc2V0ICsgKGluZGV4KyspfSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodGFyZ2V0LT5vcCgp
ID09IFBoYW50b21OZXdBcnJheUJ1ZmZlcikgewotICAgICAgICAgICAgICAgIHN0YXRpY0FyZ3Vt
ZW50Q291bnQgKz0gdGFyZ2V0LT5jYXN0T3BlcmFuZDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCkt
Pmxlbmd0aCgpOworICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlCdWZmZXI6IHsKKyAg
ICAgICAgICAgICAgICBhdXRvKiBhcnJheSA9IHRhcmdldC0+Y2FzdE9wZXJhbmQ8SlNJbW11dGFi
bGVCdXR0ZXJmbHkqPigpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFycmF5TGVuZ3RoID0g
YXJyYXktPmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHN0YXRpY0FyZ3VtZW50Q291bnQgKz0g
YXJyYXlMZW5ndGg7CisgICAgICAgICAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBvZmZzZXRDb3Vu
dCB7IDEgfTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheUxlbmd0aDsg
aS0tOyArK29mZnNldENvdW50KSB7CisgICAgICAgICAgICAgICAgICAgIENoZWNrZWQ8aW50MzJf
dD4gY3VycmVudFN0b3JlT2Zmc2V0IHsgc3RvcmVPZmZzZXQgfTsKKyAgICAgICAgICAgICAgICAg
ICAgY3VycmVudFN0b3JlT2Zmc2V0IC09IChvZmZzZXRDb3VudCAqIHN0YXRpY19jYXN0PGludDMy
X3Q+KHNpemVvZihSZWdpc3RlcikpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB2
YXJhcmdzIHZhbHVlcyBhcmUgZHJhaW5lZCBhcyBKU1ZhbHVlLCB3ZSBzaG91bGQgbm90IGdlbmVy
YXRlIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIC8vIGluIERvdWJsZSBmb3JtIGV2ZW4gaWYg
UGhhbnRvbU5ld0FycmF5QnVmZmVyJ3MgaW5kZXhpbmdUeXBlIGlzIEFycmF5V2l0aERvdWJsZS4K
KyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShhcnJh
eS0+Z2V0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0
VG9MZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRv
bU5ld0FycmF5QnVmZmVyQ2FzZSwgdmFsdWUsIGN1cnJlbnRTdG9yZU9mZnNldC52YWx1ZSgpIH0p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmd1bWVudHNUb0VtaXRGcm9t
UmlnaHRUb0xlZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlOjpQ
aGFudG9tTmV3QXJyYXlCdWZmZXJFbmQsIGFycmF5TGVuZ3RoIH0pOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGFy
Z2V0LT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKLSAgICAgICAgICAgIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2Fs
bEZyYW1lKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9
IHRhcmdldC0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKLSAgICAgICAgICAgIExWYWx1ZSBs
ZW5ndGggPSBjYWNoZWRTcHJlYWRMZW5ndGhzLmVuc3VyZShpbmxpbmVDYWxsRnJhbWUsIFsmXSAo
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0Lnplcm9FeHRQdHIodGhpcy0+Z2V0U3By
ZWFkTGVuZ3RoRnJvbUlubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUsIG51bWJlck9mQXJn
dW1lbnRzVG9Ta2lwKSk7Ci0gICAgICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAg
ICAgICBwYXRjaHBvaW50QXJndW1lbnRzLmFwcGVuZChsZW5ndGgpOwotICAgICAgICAgICAgc3By
ZWFkTGVuZ3Rocy5hcHBlbmQobGVuZ3RoKTsKKyAgICAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0
ZVJlc3Q6IHsKKyAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA9IHRhcmdldC0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gdGFyZ2V0LT5udW1iZXJP
ZkFyZ3VtZW50c1RvU2tpcCgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlck9m
ZnNldCA9IHBhcmFtc09mZnNldCArIChpbmRleCsrKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUg
bGVuZ3RoID0gY2FjaGVkU3ByZWFkTGVuZ3Rocy5lbnN1cmUoaW5saW5lQ2FsbEZyYW1lLCBbJl0g
KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuemVyb0V4dFB0cih0aGlzLT5n
ZXRTcHJlYWRMZW5ndGhGcm9tSW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSwgbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXApKTsKKyAgICAgICAgICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludEFyZ3VtZW50cy5hcHBlbmQobGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBzcHJlYWRMZW5ndGhzLmFwcGVuZChsZW5ndGgpOworICAgICAgICAgICAg
ICAgIGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJhcmdzU3ByZWFk
QXJndW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21DcmVhdGVSZXN0LCBpbmxpbmVDYWxsRnJhbWUs
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwLCBwYXJhbWV0ZXJPZmZzZXQgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKLQogICAgICAgICBwdXNoQW5kQ291bnRBcmd1bWVudHNGcm9tUmlnaHRUb0xl
ZnQoYXJndW1lbnRzKTsKKwogICAgICAgICBMVmFsdWUgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPSBtX291dC5jb25zdEludFB0cihzdGF0aWNBcmd1bWVudENvdW50ICsgMSk7CiAgICAgICAg
IGZvciAoTFZhbHVlIGxlbmd0aCA6IHNwcmVhZExlbmd0aHMpCiAgICAgICAgICAgICBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA9IG1fb3V0LmFkZChsZW5ndGgsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsKQEAgLTEwMTE4LDEyICsxMDIxMCwxNCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpOwogCiAgICAgICAgIG1fcHJvYy5yZXF1ZXN0Q2FsbEFyZ0Fy
ZWFTaXplSW5CeXRlcyhtaW5pbXVtSlNDYWxsQXJlYVNpemUpOwotICAgICAgICAKKwogICAgICAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRl
KCk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBWTSogdm0g
PSAmdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBu
b2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIGF1dG8gbm9kZU9wID0gbm9kZS0+b3AoKTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICAgICAgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
KyAgICAgICAgICAgIFs9LCBhcmd1bWVudHNUb0VtaXQgPSBXVEZNb3ZlKGFyZ3VtZW50c1RvRW1p
dEZyb21SaWdodFRvTGVmdCldIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENv
ZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2lu
KTsKQEAgLTEwMTM3LDcgKzEwMjMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKLSAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1h
bnRpY05vZGVPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lz
dGVycyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgICAgICB1c2Vk
UmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxs
KCkpOwpAQCAtMTAyMDEsNzQgKzEwMjk1LDU0IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAg
ICAgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSMSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwogCi0gICAg
ICAgICAgICAgICAgICAgIGludCBzdG9yZU9mZnNldCA9IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtc09mZnNldCA9IDQ7Ci0gICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBlbWl0QXJn
dW1lbnRzRnJvbVJpZ2h0VG9MZWZ0ID0gcmVjdXJzYWJsZUxhbWJkYShbJl0oYXV0byBzZWxmLCBO
b2RlKiB0YXJnZXQpIC0+IHZvaWQgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdl
dC0+b3AoKSA9PSBQaGFudG9tU3ByZWFkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZih0YXJnZXQtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGFyZ3VtZW50
VG9FbWl0IDogYXJndW1lbnRzVG9FbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGFyZ3VtZW50VG9FbWl0Lm1fdHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRD
YXNlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zm
c2V0ID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZS5wYXJh
bWV0ZXJPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hH
UFIyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAocGFyYW1z
W3BhcmFtZXRlck9mZnNldF0sIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2Ny
YXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIHN0b3JlT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQtPm9w
KCkgPT0gUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gdGFyZ2V0LT5iaXRWZWN0b3IoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YXJnZXQtPm51bUNoaWxk
cmVuKCk7IGktLTsgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaXRW
ZWN0b3ItPmdldChpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYo
c3RhdGUtPmdyYXBoLnZhckFyZ0NoaWxkKHRhcmdldCwgaSkubm9kZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2Fz
dDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2V0VmFsdWVGcm9tUmVwKHBhcmFtc1twYXJhbXNPZmZzZXQgKyAoaW5kZXgrKyld
LCBzY3JhdGNoR1BSMyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
c3RvcmU2NChzY3JhdGNoR1BSMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIEND
YWxsSGVscGVyczo6VGltZXNFaWdodCwgc3RvcmVPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZTog
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBhcmd1bWVudFRv
RW1pdC5tX3BoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UudmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBjdXJyZW50U3RvcmVPZmZzZXQgPSBhcmd1bWVudFRvRW1pdC5t
X3BoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UuY3VycmVudFN0b3JlT2Zmc2V0OworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KHZh
bHVlKSwgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTY0KHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgY3VycmVudFN0b3JlT2Zmc2V0KSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0g
UGhhbnRvbU5ld0FycmF5QnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byogYXJyYXkgPSB0YXJnZXQtPmNhc3RPcGVyYW5kPEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VkPGludDMyX3Q+IG9mZnNldENvdW50
IHsgMSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFy
cmF5LT5sZW5ndGgoKTsgaS0tOyArK29mZnNldENvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEJlY2F1c2UgdmFyYXJncyB2YWx1ZXMgYXJlIGRyYWluZWQgYXMgSlNW
YWx1ZSwgd2Ugc2hvdWxkIG5vdCBnZW5lcmF0ZSB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpbiBEb3VibGUgZm9ybSBldmVuIGlmIFBoYW50b21OZXdBcnJheUJ1ZmZl
cidzIGluZGV4aW5nVHlwZSBpcyBBcnJheVdpdGhEb3VibGUuCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPmdldChp
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTY0KHZhbHVlKSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDaGVja2VkPGludDMyX3Q+IGN1cnJlbnRTdG9yZU9mZnNldCB7IHN0b3Jl
T2Zmc2V0IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdG9yZU9m
ZnNldCAtPSAob2Zmc2V0Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoUmVnaXN0
ZXIpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0
Y2hHUFIzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpCYXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVz
RWlnaHQsIGN1cnJlbnRTdG9yZU9mZnNldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KGFycmF5LT5sZW5ndGgoKSkpLCBzY3Jh
dGNoR1BSMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlBoYW50b21O
ZXdBcnJheUJ1ZmZlckVuZDogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBh
cnJheUxlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oYXJndW1lbnRUb0VtaXQubV9waGFudG9t
TmV3QXJyYXlCdWZmZXJFbmQuYXJyYXlMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGFycmF5TGVuZ3RoKSwg
c2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0YXJnZXQtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9mQXJn
dW1lbnRzVG9Ta2lwKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCBu
dW1Bcmd1bWVudHNUb0NvcHkgPSBwYXJhbXNbcGFyYW1zT2Zmc2V0ICsgKGluZGV4KyspXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRnJvbVJlcChudW1Bcmd1bWVudHNUb0NvcHks
IHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBsb2FkT2Zmc2V0ID0g
KEFzc2VtYmx5SGVscGVyczo6YXJndW1lbnRzU3RhcnQoaW5saW5lQ2FsbEZyYW1lKS5vZmZzZXQo
KSArIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IGppdC5icmFu
Y2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSMyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvIGxvb3BTdGFydCA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGlj
X2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVf
dD4oMSkpLCBzY3JhdGNoR1BSMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0
KENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzY3Jh
dGNoR1BSMywgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBsb2FkT2Zmc2V0KSwgc2NyYXRjaEdQ
UjQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRj
aEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIHN0b3JlT2Zmc2V0
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIHNjcmF0Y2hHUFIzKS5saW5rVG8obG9vcFN0YXJ0LCAmaml0KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRBcmd1bWVudHNGcm9tUmlnaHRUb0xlZnQoYXJn
dW1lbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFyYXJnc1NwcmVhZEFyZ3Vt
ZW50VG9FbWl0OjpQaGFudG9tQ3JlYXRlUmVzdDogeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gYXJndW1lbnRUb0VtaXQubV9w
aGFudG9tQ3JlYXRlUmVzdC5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBhcmd1bWVudFRvRW1pdC5t
X3BoYW50b21DcmVhdGVSZXN0Lm51bWJlck9mQXJndW1lbnRzVG9Ta2lwOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldCA9IGFyZ3VtZW50VG9FbWl0
Lm1fcGhhbnRvbUNyZWF0ZVJlc3QucGFyYW1ldGVyT2Zmc2V0OworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQjM6OlZhbHVlUmVwIG51bUFyZ3VtZW50c1RvQ29weSA9IHBhcmFtc1twYXJh
bWV0ZXJPZmZzZXRdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRnJvbVJl
cChudW1Bcmd1bWVudHNUb0NvcHksIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbG9hZE9mZnNldCA9IChBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50c1N0YXJ0
KGlubGluZUNhbGxGcmFtZSkub2Zmc2V0KCkgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBkb25lID0gaml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxvb3BT
dGFydCA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBz
Y3JhdGNoR1BSMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hH
UFIyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVy
czo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzY3JhdGNoR1BSMywgQ0Nh
bGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBsb2FkT2Zmc2V0KSwgc2NyYXRjaEdQUjQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFI0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BS
MSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgc3RvcmVPZmZzZXQpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIHNjcmF0Y2hHUFIzKS5saW5rVG8obG9vcFN0YXJ0LCAmaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb250VGhyb3cgPSBqaXQuanVtcCgpOwogICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9y
VmFyYXJncyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpOworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk+KGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbikpOwogICAgICAgICAgICAgICAg
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24oaml0LnZtKCkpOwogICAgICAgICAgICAgICAg
ICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Zv
clZhcmFyZ3MpOwogICAgICAgICAgICAgICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1Zh
cmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJvdyk7CkBAIC0xMDI4Miw5ICsxMDM1Niw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsIENDYWxsSGVs
cGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDApKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOwotICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IENvbnN0cnVjdFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBDb25z
dHJ1Y3RGb3J3YXJkVmFyYXJncykKKyAgICAgICAgICAgICAgICBpZiAobm9kZU9wID09IENvbnN0
cnVjdFZhcmFyZ3MgfHwgbm9kZU9wID09IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKQogICAgICAg
ICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0VmFyYXJnczsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IFRhaWxDYWxsVmFyYXJncyB8
fCBub2RlLT5vcCgpID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZU9wID09IFRhaWxDYWxsVmFyYXJncyB8fCBub2RlT3AgPT0gVGFpbENhbGxG
b3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0lu
Zm86OlRhaWxDYWxsVmFyYXJnczsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpDYWxsVmFyYXJnczsKQEAgLTEwMzEyLDcg
KzEwMzg2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQog
ICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6
cmVnVDMpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4p
KSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNs
b3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAo
aXNUYWlsQ2FsbCkKQEAgLTEwNDE4LDYgKzEwNDkyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsK
ICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIFZNKiB2bSA9ICZ0
aGlzLT52bSgpOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWU7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgIGlubGluZUNhbGxG
cmFtZSA9IG5vZGUtPmNoaWxkMygpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9IHNlbWFudGljTm9k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRh
ID0gbm9kZS0+Y2FsbFZhcmFyZ3NEYXRhKCk7CisgICAgICAgIGF1dG8gbm9kZU9wID0gbm9kZS0+
b3AoKTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CkBAIC0xMDQzMyw4ICsxMDUxNSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0
cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogCi0g
ICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2Nr
KCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAg
ICAgIENhbGxWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmNhbGxWYXJhcmdzRGF0YSgpOworICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKIAogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKICAgICAgICAgICAgICAgICBHUFJSZWcgY2FsbGVlR1BS
ID0gcGFyYW1zW2FyZ0luZGV4KytdLmdwcigpOwpAQCAtMTA1MTgsMTggKzEwNTk5LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgc2Ny
YXRjaEdQUjIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKLSAgICAgICAgICAgICAgICAgICAgSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9IG5v
ZGUtPmNoaWxkMygpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFt
ZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsKIAogICAgICAgICAg
ICAgICAgICAgICAvLyBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSBtb2RpZmllcyB0aGUg
c3RhY2sgcG9pbnRlciBpZiBpdCBzdWNjZWVkcy4KICAgICAgICAgICAgICAgICAgICAgZW1pdFNl
dHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoKnZtLCBqaXQsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BS
MSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBpbmxpbmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0
VmFyQXJnT2Zmc2V0LCBzbG93Q2FzZSk7CiAKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZS5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk+KGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOworICAgICAgICAg
ICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93Rm9yVmFyYXJncyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNl
bWFudGljTm9kZU9yaWdpbikpOwogICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24oaml0LnZtKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKGJpdHdpc2VfY2FzdDx2b2lkKCopKCk+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxv
d0ZvclZhcmFyZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihE
RkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwpAQCAtMTA1MzcsNyArMTA2MTMsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hlaWdodCAvIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpLCBzY3JhdGNoR1BSMSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgYXJndW1lbnRzR1BS
LCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJB
cmdPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLCBhcmd1bWVudHNHUFIsIHNjcmF0Y2hHUFIx
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJzdFZhckFyZ09mZnNldCkpOwog
ICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24oaml0LnZtKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2
b2lkKCopKCk+KG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpKTsKIApAQCAtMTA1NDYsNyAr
MTA2MjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNMYXRlUmVw
LmVtaXRSZXN0b3JlKGppdCwgYXJndW1lbnRzR1BSKTsKICAgICAgICAgICAgICAgICAgICAgZW1p
dFNldFZhcmFyZ3NGcmFtZShqaXQsIHNjcmF0Y2hHUFIxLCBmYWxzZSwgc2NyYXRjaEdQUjIsIHNj
cmF0Y2hHUFIyKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigtbWluaW11bUpTQ2FsbEFyZWFTaXplKSwgc2NyYXRjaEdQUjIsIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUpPihqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBzY3Jh
dGNoR1BSMiwgYXJndW1lbnRzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5m
aXJzdFZhckFyZ09mZnNldCksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgICAgICAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKT4oaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgc2NyYXRj
aEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmly
c3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQoKikoKT4ob3BlcmF0aW9uU2V0dXBW
YXJhcmdzRnJhbWUpKTsKICAgICAgICAgICAgICAgICAgICAgCkBAIC0xMDU2Myw5ICsxMDYzOSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQodGhpc0dQUiwgQ0NhbGxI
ZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoMCkpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0VmFyYXJncyB8fCBub2RlLT5vcCgpID09IENv
bnN0cnVjdEZvcndhcmRWYXJhcmdzKQorICAgICAgICAgICAgICAgIGlmIChub2RlT3AgPT0gQ29u
c3RydWN0VmFyYXJncyB8fCBub2RlT3AgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3MpCiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3RWYXJhcmdz
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gVGFpbENhbGxWYXJhcmdz
IHx8IG5vZGUtPm9wKCkgPT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncykKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChub2RlT3AgPT0gVGFpbENhbGxWYXJhcmdzIHx8IG5vZGVPcCA9PSBUYWlsQ2Fs
bEZvcndhcmRWYXJhcmdzKQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5r
SW5mbzo6VGFpbENhbGxWYXJhcmdzOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNhbGxWYXJhcmdzOwpAQCAtMTA1OTEs
NyArMTA2NjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwp
CiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBHUFJJbmZv
OjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdp
bikpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5lbWl0
U2xvd1BhdGgoKnZtLCBqaXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlm
IChpc1RhaWxDYWxsKQpAQCAtMTA2NjUsNiArMTA3NDEsOCBAQCBwcml2YXRlOgogICAgICAgICBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7
CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgYXV0byBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz0sICZ2bV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtMTA2NzksNyAr
MTA3NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1h
bnRpY05vZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KENhbGxMaW5rSW5mbzo6Q2FsbCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLXN0
YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKQEAgLTEwNjkxLDcg
KzEwNzY5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1bnNpZ25lZCByZXF1aXJlZEJ5
dGVzID0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgc2l6ZW9mKENhbGxGcmFtZSopICogMjsK
ICAgICAgICAgICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRlcyk7CiAgICAgICAgICAgICAgICAg
aml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZXF1aXJlZEJ5dGVzKSwgQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwg
R1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGVjbWFNb2RlKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9i
amVjdCwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25DYWxsRXZhbCkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAp
OwpAQCAtMTIyNDksMTkgKzEyMzI3LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJl
UGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0
YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2lu
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5q
aXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNv
bW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChzZW1hbnRpY05vZGVPcmln
aW4pOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0
IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6
SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAKICAgICAgICAg
ICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sw
XS5ncHIoKSkpOwogCkBAIC0xMjI3NSw5ICsxMjM1NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBq
aXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGlt
aXplLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihz
ZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3By
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNh
bGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwpAQCAtMTI0OTMsNiArMTI1NzIsNyBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8UGF0
Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHBy
ZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAorICAgICAgICBDb2Rl
T3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CkBAIC0xMjUxNiwxNCArMTI1OTYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZUdQUikpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9y
aWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRk
VW5pcXVlQ2FsbFNpdGVJbmRleChzZW1hbnRpY05vZGVPcmlnaW4pOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Ig
b3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5z
Y2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluc3RhbmNlT2ZHZW5l
cmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwg
dmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgICAgICAgICAgICAg
c2NyYXRjaDJHUFIsIHByb3RvdHlwZUlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTEyNTM4LDkgKzEyNjE4LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0
LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwg
cmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2Rl
T3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTEzOTk4LDEyICsxNDA3OCwx
MyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25z
KHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAg
ICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
YzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXggPQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmln
aW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVu
aXF1ZUNhbGxTaXRlSW5kZXgoc2VtYW50aWNOb2RlT3JpZ2luKTsKIAogICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgog
ICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0K
QEAgLTE0MDE1LDcgKzE0MDk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJ
bmRleCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlk
R2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBzZW1hbnRpY05vZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlm
aWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCB0eXBlKTsKIApAQCAtMTQwMzEsOSArMTQxMTIs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFu
dGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpA
QCAtMTQwNjcsMTIgKzE0MTQ4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJlUGF0
Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0YXRl
ID0gJm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRD
b2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1v
bi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChzZW1hbnRpY05vZGVPcmlnaW4p
OwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZv
ciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVt
cExpc3Q+IGV4Y2VwdGlvbnMgPQpAQCAtMTQwODQsNyArMTQxNjYsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndp
bmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgc2VtYW50aWNO
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdw
cigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwg
SlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSk7CiAKQEAgLTE0MTAwLDkgKzE0MTgyLDkgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1w
KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05v
ZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIHBhcmFtc1sxXS5ncHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNb
Ml0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMo
KSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOwpAQCAtMTU0MTYsNiArMTU0OTgsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVh
cmx5UmVnaXN0ZXIgfTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAg
ICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
ewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKQEAgLTE1NDQxLDE2ICsxNTUyNCwxNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wTGlzdCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0aW9u
LCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRoRnVuY3Rpb24sIHBh
cmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0
aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSk7CkBAIC0xNTQ4Myw2ICsxNTU2Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlS
ZWdpc3RlciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAg
Q29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAg
ICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOwpAQCAtMTU1MDQsOSArMTU1ODgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXBMaXN0KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAg
ICAgICAgICAgICAgICAgICAgfSk7CkBAIC0xNTU0MCw2ICsxNTYyNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVl
UmVwOjpTb21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmln
aW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAg
ICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTU1NjcsOSArMTU2NTIsOSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQgOiBv
cGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlv
biwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2Vt
YW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMV0u
Z3ByKCksIHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgfSk7CkBAIC0xOTg2
Miw2ICsxOTk0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IGJsb2NrLT5pbmRleDsKICAgICAgICAgdW5zaWduZWQgbm9kZUluZGV4ID0gbm9kZSA/IG5vZGUt
PmluZGV4KCkgOiBVSU5UX01BWDsKICNpZiAhQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXV0byBu
b2RlT3AgPSBub2RlID8gbm9kZS0+b3AoKSA6IExhc3ROb2RlVHlwZTsKICAgICAgICAgbV9vdXQu
cGF0Y2hwb2ludChWb2lkKS0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
QEAgLTE5ODY5LDcgKzE5OTU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihibG9ja0luZGV4KSwgR1BSSW5mbzo6cmVnVDAp
OwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5v
ZGVJbmRleCksIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgICAgICAgICBpZiAobm9kZSkKLSAg
ICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9k
ZS0+b3AoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZU9wKSwgR1BSSW5mbzo6cmVnVDIpOwogICAg
ICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oRlRMQ3Jhc2gpOwogICAgICAgICAgICAg
fSk7CiAjZWxzZSAvLyBBU1NFUlRfRU5BQkxFRAo=
</data>
<flag name="commit-queue"
          id="451870"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430512</attachid>
            <date>2021-06-03 16:20:15 -0700</date>
            <delta_ts>2021-06-04 00:43:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226556</filename>
            <type>text/plain</type>
            <size>75287</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM1ZmE2MjJiMmZiNi4uN2VkNDdhMWViNjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNi0wMiAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgdGhlIEZU
TChERkcpIGdyYXBoIGFmdGVyIGxvd2VyaW5nIHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NTYKKworICAgICAgICBSZXZpZXdlZCBieSBQ
aGlsIFBpemxvLgorCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCB3YXMgZGVh
bGluZyB3aXRoIGFsbCBvZiB0aGUgUGF0Y2hwb2ludHMgY3JlYXRlZCBieSBGVExMb3dlckRGR1Rv
QjM6IHRoZXkgZ2V0IGEgbGFtYmRhIGF0IHRoYXQgdGltZSwgd2hpY2ggdGhleSBleGVjdXRlIGF0
IHRoZSBlbmQgb2YgQWlyLCBhbmQgbWFueSBvZiB0aGVzZSBsYW1iZGFzIHdlcmUgY2FwdHVyaW5n
IGEgcG9pbnRlciB0byBzb21lIHBhcnRzIG9mIHRoZSBERkcgZ3JhcGggYW5kIHJlYWRpbmcgdGhy
b3VnaCBpdCB3aGVuIGJlaW5nIGV4ZWN1dGVkLgorICAgICAgICBJbiBhbGwgY2FzZXMgYnV0IG9u
ZSBpdCB3YXMgZWFzaWx5IGZpeGVkOiB0aGV5IHdlcmUgb25seSByZWFkaW5nIGEgZmV3IGJpdHMg
ZnJvbSBhIGdpdmVuIG5vZGUsIHNvIEkganVzdCByZWFkIHRoZXNlIGJpdHMgaW4gRlRMTG93ZXJE
RkdUb0IzLCBhbmQgY2FwdHVyZWQgdGhlbSAoYnkgdmFsdWUpIGluc3RlYWQgb2YgdGhlIHBvaW50
ZXIgdG8gdGhlIG5vZGUuCisgICAgICAgIFRoZSBleGNlcHRpb24gd2FzIGNvbXBpbGVDYWxsT3JD
b25zdHJ1Y3RWYXJhcmdzU3ByZWFkKCk6IGl0cyBwYXRjaHBvaW50IGdlbmVyYXRvciB3YXMgd2Fs
a2luZyB0aHJvdWdoIHRoZSBncmFwaCwgZmxhdHRlbmluZyBhIHRyZWUgb2YgUGhhbnRvbVNwcmVh
ZC9QaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkL1BoYW50b21OZXdBcnJheUJ1ZmZlci9QaGFudG9t
Q3JlYXRlUmVzdCwgZW1pdHRpbmcgc29tZSBjb2RlIGFsb25nIHRoZSB3YXkuCisgICAgICAgIFdl
IG5vdyBkbyB0aGlzIGZsYXR0ZW5pbmcgb2YgdGhlIHRyZWUgaW4gRlRMTG93ZXJERkdUb0IzLCBz
dG9yZSBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBsYXRlciBlbWl0IHRoZSByZXF1aXJlZCBj
b2RlIGluIGEgdmVjdG9yLCBhbmQgY2FwdHVyZSB0aGF0IHZlY3RvciBpbiB0aGUgbGFtYmRhICh0
aHJvdWdoIGEgbW92ZSBjYXB0dXJlLCB3aGljaCBpcyBhbGxvd2VkIHNpbmNlIEMrKzE0KS4gU2Vl
IGBzdHJ1Y3QgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0YCBmb3IgdGhlIGluZm9ybWF0aW9u
IHRoYXQgd2UgbmVlZCB0byBzdG9yZSBpbiB0aGF0IHZlY3Rvci4KKworICAgICAgICBJIHRlc3Rl
ZCB0aGlzIGNoYW5nZSBieSBjb21wbGV0aW5nIGEgZnVsbCBydW4gb2YgSmV0U3RyZWFtMiB3aXRo
IEFTQU4uCisgICAgICAgIEkgYWxzbyByYW4gdGhlIHN0cmVzcyB0ZXN0cyB3aXRoICJzcHJlYWQi
IGluIHRoZWlyIG5hbWUgaW4gRGVidWcgbW9kZS4KKworICAgICAgICAqIGIzL0IzU3BhcnNlQ29s
bGVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xlYXJBbGwp
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZyZWVERkdJUkFmdGVyTG93ZXJpbmcpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVuYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENhbGxPckNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVU
YWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OlZhcmFyZ3NT
cHJlYWRBcmd1bWVudFRvRW1pdDo6VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZh
cmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0UmlnaHRTaGlmdFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjcmFzaCk6CisKIDIwMjEtMDYtMDIgIFJvYmluIE1vcmlzc2V0ICA8
cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJnZSBCMzo6U3RhY2tTbG90IGFuZCBB
aXI6OlN0YWNrU2xvdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAy
NWFiOWMzMzk1MWYuLjQxYjI3OTJkODkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKQEAgLTE4NjEsNiArMTg2MSwyNiBAQCB2b2lkIEdyYXBoOjpjbGVhckNQU0NGR0Rh
dGEoKQogICAgIG1fY3BzQ0ZHID0gbnVsbHB0cjsKIH0KIAordm9pZCBHcmFwaDo6ZnJlZURGR0lS
QWZ0ZXJMb3dlcmluZygpCit7CisgICAgbV9ibG9ja3MuY2xlYXIoKTsKKyAgICBtX3Jvb3RzLmNs
ZWFyKCk7CisgICAgbV92YXJBcmdDaGlsZHJlbi5jbGVhcigpOworICAgIG1fbm9kZXMuY2xlYXJB
bGwoKTsKKworICAgIG1fYnl0ZWNvZGVMaXZlbmVzcy5jbGVhcigpOworICAgIG1fc2FmZVRvTG9h
ZC5jbGVhcigpOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9zc2FEb21p
bmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAg
bV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fc3NhQ0ZHID0gbnVsbHB0cjsKKyAg
ICBtX2Nwc0NGRyA9IG51bGxwdHI7CisgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOworICAg
IG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jb250cm9sRXF1aXZhbGVu
Y2VBbmFseXNpcyA9IG51bGxwdHI7Cit9CisKIHZvaWQgUHJlZml4OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgKaW5kZXggNzZmOWRiODJmOTExLi42MmExZmVmM2RjMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTEwNzQsNiArMTA3NCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9jYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgbWFj
aGluZUNvZGUsIEZpeGVkVmVjdG9yPEZsdXNoRm9ybWF0PihXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0
cykpLCBieXRlY29kZUluZGV4IH0pOwogICAgIH0KIAorICAgIHZvaWQgZnJlZURGR0lSQWZ0ZXJM
b3dlcmluZygpOworCiAgICAgU3RhY2tDaGVjayBtX3N0YWNrQ2hlY2tlcjsKICAgICBWTSYgbV92
bTsKICAgICBQbGFuJiBtX3BsYW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxl
LmNwcAppbmRleCAyOGY5ODlhZTcyNDYuLjQxYWE2MzNmZjkzYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC01OCw2ICs1OCw5IEBAIHZvaWQgY29tcGlsZShT
dGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgaWYg
KHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQogICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0
RGlzYXNzZW1ibGVyKG1ha2VVbmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAorICAg
IGlmICghc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgJiYgIU9wdGlvbnM6OmFzeW5jRGlzYXNzZW1i
bHkoKSAmJiAhZ3JhcGguY29tcGlsYXRpb24oKSAmJiAhc3RhdGUucHJvYy0+bmVlZHNQQ1RvT3Jp
Z2luTWFwKCkpCisgICAgICAgIGdyYXBoLmZyZWVERkdJUkFmdGVyTG93ZXJpbmcoKTsKKwogICAg
IHsKICAgICAgICAgR3JhcGhTYWZlcG9pbnQgc2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9p
bnRSZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggMjNiZTdlNzc1ZDNhLi45MTZkNWIzMGY1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTIzODAsNiArMjM4MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7
CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAg
IENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwog
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewog
ICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKQEAgLTI0MTAsMTIgKzI0MTEsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93
UGF0aFJlcGF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdw
cigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLCBwYXJhbXNbMV0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRoSUMp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1h
bnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3By
KCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGwu
Y2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG5vblJl
cGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9k
ZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtMjQz
NCw4ICsyNDM1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
IHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0
aW9ucy5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vblJlcGF0Y2hpbmdGdW5jdGlv
biwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1h
bnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCkpOwogICAgICAgICAgICAgICAgIH0KIAog
I2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjQ4Nyw2ICsyNDg4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9yaWdp
biBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpA
QCAtMjUyMCwxMiArMjUyMiwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNob3VsZFNsb3dQYXRoUmVwYXRj
aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHBhcmFt
c1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bWF0aElDKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRpb25zLmdldCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1z
WzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
YXRoSUMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3Rh
dGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGwuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigp
LCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBub25SZXBhdGNoaW5n
RnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2xv
d1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTI1
NDQsOCArMjU0Niw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigp
LCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGlj
Tm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFt
c1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgfQogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RB
VFMpCkBAIC0zOTgzLDEwICszOTg1LDExIEBAIHByaXZhdGU6CiAKICAgICAgICAgU3RhdGUqIHN0
YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIGJvb2wgYmFzZUlzQ2VsbCA9IGFic3RyYWN0VmFs
dWUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7CisgICAgICAgIENvZGVPcmlnaW4g
bm9kZVNlbWFudGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNv
ZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmpp
dENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlU2Vt
YW50aWNPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4
aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxs
SGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxl
RXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC00MDAxLDcgKzQwMDQsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5n
cHIoKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFs
R2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZVNlbWFu
dGljT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dEdQUikpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CkBA
IC00MDE5LDkgKzQwMjIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlU2VtYW50
aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVy
YXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKIApAQCAtNDExNSwxMCArNDExOCwxMSBAQCBwcml2YXRlOgogCiAg
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBib29sIGJhc2VJc0Nl
bGwgPSBhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7Cisg
ICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAot
ICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3Rh
dGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChu
b2RlU2VtYW50aWNPcmlnaW4pOwogCiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3Qg
ZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgIEJveDxDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4
aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtNDEzMiw3ICs0MTM2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIEdQUlJlZyBicmFuZEdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKIAog
ICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAorICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZVNlbWFudGljT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBh
Y2Nlc3NUeXBlLAogICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKIAogICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CkBAIC00MTYyLDkgKzQxNjYsOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygm
aml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4g
PSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZVNlbWFudGljT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52
YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgaml0
Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKQEAgLTQ1MjQsMTMgKzQ1MjgsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBv
aW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgCisK
KyAgICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2Rl
T3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRpY09yaWdpbik7CiAKICAgICAgICAgICAg
ICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+
anVtcHMoaml0KTsKQEAgLTQ1MzksNyArNDU0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMs
IGNhbGxTaXRlSW5kZXgpOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8
SklUUHV0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZVNlbWFudGljT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2lu
dFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCiAgICAgICAgICAgICAgICAgICAgIHB1dEtpbmQp
OwpAQCAtNDU1NCw5ICs0NTU5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCksIElu
dmFsaWRHUFJSZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50
aWNPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7CkBAIC01MjQzLDEwICs1MjQ4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJl
cGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgICAgICBT
dGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgICAgIENvZGVPcmlnaW4gbm9kZVNl
bWFudGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2Rl
T3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRD
b2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFu
dGljT3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0
IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4
aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtNTI2MSw3ICs1MjY3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3By
KCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFs
LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdp
biwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsCiAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwg
SlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKIAogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHBy
b3BlcnR5SXNTdHJpbmc7CkBAIC01MjgzLDkgKzUyODksOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCByZXN1bHRHUFIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOwogCkBAIC01ODQzLDEyICs1ODQ5LDE2IEBAIHByaXZhdGU6CiAKICAgICAgICAg
U3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CisgICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNl
bWFudGljOworICAgICAgICBhdXRvIGNoaWxkMVVzZUtpbmQgPSBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCk7CisgICAgICAgIGF1dG8gY2hpbGQyVXNlS2luZCA9IG5vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKTsKKyAgICAgICAgYXV0byBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
ICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgg
PQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5z
LT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1
ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIEJv
eDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhq
aXQpOwpAQCAtNTg2MCw3ICs1ODcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBBU1NF
UlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogCi0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAg
ICAgICAgIGlmIChjaGlsZDFVc2VLaW5kKQogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwogCiAgICAgICAgICAgICAgICAgY29u
c3RleHByIGF1dG8gb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBbJl0gKCkgewpAQCAtNTg3NSw3ICs1
ODg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocGFyYW1z
LmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkMlVzZUtpbmQgPT0gVW50eXBlZFVzZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwo
SlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTU4ODQsMTIgKzU4OTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb25z
dCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
bm9kZVNlbWFudGljT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBw
YXJhbXMuZ3BTY3JhdGNoKDApKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+OjpjcmVh
dGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVn
cyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtNTkwNiwxMSArNTkxNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZVNlbWFudGljT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoZWNtYU1vZGUpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxs
KTsKQEAgLTk3MTEsNiArOTcyMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiA9IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3Rh
dGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIFZNKiB2bSA9ICZ0aGlzLT52bSgpOwor
ICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKKyAgICAgICAgYXV0byBub2RlT3AgPSBub2RlLT5vcCgpOwogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTk3
MjIsMTYgKzk3MzQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKLSAgICAgICAgICAgICAgICBDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlU2VtYW50aWNP
cmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5vcCgpID09IENvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6Q29u
c3RydWN0IDogQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgIG5vZGVPcCA9PSBDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA6
IENhbGxMaW5rSW5mbzo6Q2FsbCwgR1BSSW5mbzo6cmVnVDApOwogCiAgICAgICAgICAgICAgICAg
YXV0byBzbG93UGF0aCA9IGNhbGxMaW5rSW5mby0+ZW1pdEZhc3RQYXRoKGppdCwgR1BSSW5mbzo6
cmVnVDAsIEludmFsaWRHUFJSZWcsIENhbGxMaW5rSW5mbzo6VXNlRGF0YUlDOjpObyk7CiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAg
ICAgICAgICAgICAgc2xvd1BhdGgubGluaygmaml0KTsKICAgICAgICAgICAgICAgICBhdXRvIHNs
b3dQYXRoU3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAKICAg
ICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CkBAIC05ODIxLDYgKzk4MzMsNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CisgICAgICAgIENvZGVPcmlnaW4g
c2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBTdGF0
ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTk4NTQsNyArOTg2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bVBhc3NlZEFyZ3MgPSBudW1QYXNzZWRB
cmdzOwogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdp
c3RlcnMoaml0LmNvZGVCbG9jaygpKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5h
ZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxM
aW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBJbnZhbGlkR1BS
UmVnKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgbWFpblBhdGggPSBqaXQubGFiZWwoKTsKQEAgLTk4NzEsNyArOTg4NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1Bh
dGggPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgdG9TYXZlLCBqaXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkxpbmtEaXJlY3RDYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNOb2Rl
T3JpZ2luLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIEludmFsaWRHUFJSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihjYWxsTGlua0luZm8pLCBjYWxsZWVHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAg
ICAgaml0Lmp1bXAoKS5saW5rVG8obWFpblBhdGgsICZqaXQpOwogICAgICAgICAgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnNldEV4ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihleGVjdXRhYmxl
KTsKQEAgLTk4ODYsNyArOTg5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxM
aW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oc2Vt
YW50aWNOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2Fs
bCgKICAgICAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkRpcmVj
dENvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6RGlyZWN0Q2FsbCwgSW52YWxpZEdQUlJlZyk7CiAK
QEAgLTk5MTMsNyArOTkyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0
aW9ucy5nZXQoKSwgb3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25M
aW5rRGlyZWN0Q2FsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlkR1BSUmVn
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmaml0KTsKQEAgLTk5ODksNiArMTAwMDIs
NyBAQCBwcml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
RGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0
YXRlOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBz
ZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAt
MTAwMjYsNyArMTAwNDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHNsb3dQYXRoU2h1
ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApKTsK
ICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnByZXBhcmVGb3JTbG93UGF0aCgpOwog
Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBH
UFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9k
ZU9yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogCiAgICAgICAgICAgICAgICAgYXV0byBkb25lTG9j
YXRpb24gPSBqaXQubGFiZWwoKTsKQEAgLTEwMDQwLDcgKzEwMDU0LDYwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgfQotICAgIAorCisg
ICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UgeworICAg
ICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQ7CisgICAgfTsKKyAgICBzdHJ1Y3QgQ2FwdHVy
ZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlIHsKKyAgICAgICAgaW50NjRfdCB2YWx1ZTsK
KyAgICAgICAgaW50MzJfdCBjdXJyZW50U3RvcmVPZmZzZXQ7CisgICAgfTsKKyAgICBzdHJ1Y3Qg
Q2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQgeworICAgICAgICB1bnNpZ25lZCBh
cnJheUxlbmd0aDsKKyAgICB9OworICAgIHN0cnVjdCBDYXB0dXJlZEZvclBoYW50b21DcmVhdGVS
ZXN0IHsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWU7CisgICAgICAg
IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOworICAgICAgICB1bnNpZ25lZCBwYXJh
bWV0ZXJPZmZzZXQ7CisgICAgfTsKKyAgICBzdHJ1Y3QgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9F
bWl0IHsKKyAgICAgICAgZW51bSBUeXBlIHsKKyAgICAgICAgICAgIFBoYW50b21OZXdBcnJheVdp
dGhTcHJlYWRDYXNlLAorICAgICAgICAgICAgUGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZSwKKyAg
ICAgICAgICAgIFBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCwKKyAgICAgICAgICAgIFBoYW50b21D
cmVhdGVSZXN0CisgICAgICAgIH0gbV90eXBlOworICAgICAgICB1bmlvbiB7CisgICAgICAgICAg
ICBDYXB0dXJlZEZvclBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlIG1fcGhhbnRvbU5ld0Fy
cmF5V2l0aFNwcmVhZENhc2U7CisgICAgICAgICAgICBDYXB0dXJlZEZvclBoYW50b21OZXdBcnJh
eUJ1ZmZlckNhc2UgbV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlOworICAgICAgICAgICAgQ2Fw
dHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQgbV9waGFudG9tTmV3QXJyYXlCdWZmZXJF
bmQ7CisgICAgICAgICAgICBDYXB0dXJlZEZvclBoYW50b21DcmVhdGVSZXN0IG1fcGhhbnRvbUNy
ZWF0ZVJlc3Q7CisgICAgICAgIH07CisKKyAgICAgICAgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9F
bWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0LCB1bnNpZ25lZCBhcmcpCisg
ICAgICAgICAgICA6IG1fdHlwZSh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV90eXBl
ID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlKQorICAgICAgICAgICAgICAgIG1fcGhh
bnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UgPSB7IGFyZyB9OworICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKHQgPT0gUGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kKTsK
KyAgICAgICAgICAgICAgICBtX3BoYW50b21OZXdBcnJheUJ1ZmZlckVuZCA9IHsgYXJnIH07Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9F
bWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0LCBpbnQ2NF90IHZhbHVlLCBp
bnQzMl90IGN1cnJlbnRTdG9yZU9mZnNldCkKKyAgICAgICAgICAgIDogbV90eXBlKHQpCisgICAg
ICAgICAgICAsIG1fcGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZSh7IHZhbHVlLCBjdXJyZW50U3Rv
cmVPZmZzZXQgfSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHQgPT0gUGhhbnRvbU5l
d0FycmF5QnVmZmVyQ2FzZSk7CisgICAgICAgIH0KKyAgICAgICAgVmFyYXJnc1NwcmVhZEFyZ3Vt
ZW50VG9FbWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0LCBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAs
IHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldCkKKyAgICAgICAgICAgIDogbV90eXBlKHQpCisgICAg
ICAgICAgICAsIG1fcGhhbnRvbUNyZWF0ZVJlc3QoeyBpbmxpbmVDYWxsRnJhbWUsIG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwLCBwYXJhbWV0ZXJPZmZzZXQgfSkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKHQgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpOworICAgICAgICB9CisgICAgfTsKKwog
ICAgIHZvaWQgY29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQoKQogICAgIHsKICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKQEAgLTEwMDU1LDEzICsxMDEyMiwyMCBAQCBwcml2
YXRlOgogICAgICAgICBWZWN0b3I8TFZhbHVlLCAyPiBzcHJlYWRMZW5ndGhzOwogICAgICAgICBW
ZWN0b3I8TFZhbHVlLCA4PiBwYXRjaHBvaW50QXJndW1lbnRzOwogICAgICAgICBIYXNoTWFwPElu
bGluZUNhbGxGcmFtZSosIExWYWx1ZSwgV1RGOjpEZWZhdWx0SGFzaDxJbmxpbmVDYWxsRnJhbWUq
PiwgV1RGOjpOdWxsYWJsZUhhc2hUcmFpdHM8SW5saW5lQ2FsbEZyYW1lKj4+IGNhY2hlZFNwcmVh
ZExlbmd0aHM7CisgICAgICAgIC8vIEJlY2F1c2UgdGhlIHBhdGNocG9pbnQgZ2VuZXJhdG9yIHJ1
bnMgbGF0ZSBpbiBBaXIsIHRoZSBkZmcgZ3JhcGggd2lsbCBiZSBsb25nIGdvbmUuCisgICAgICAg
IC8vIFNvIHdlIG11c3QgbG9hZCBldmVyeXRoaW5nIHJlbGV2YW50IHJpZ2h0IG5vdywgYW5kIG1h
a2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGNhcHR1cmVkIGJ5IHZhbHVlIGJ5IHRoZSBsYW1iZGEgdGhh
dCBhY3RzIGFzIHRoZSBnZW5lcmF0b3IKKyAgICAgICAgLy8gT25lIHBhcnRpY3VsYXJseSB0cmlj
a3kgcG9pbnQgaXMgdGhhdCB0aGUgZ2VuZXJhdG9yIHdvdWxkIGxpa2UgdG8gd2FsayBvdmVyIHRo
ZSB0cmVlIHJvb3RlZCBhdCB0aGlzIG5vZGUsIGV4cGxvcmluZyB0aHJvdWdoIFBoYW50b21OZXdB
cnJheVdpdGhTcHJlYWQgYW5kIFBoYW50b21OZXdBcnJheUJ1ZmZlciwgZW1pdHRpbmcgY29kZSBh
bG9uZyB0aGUgd2F5LgorICAgICAgICAvLyBJbnN0ZWFkLCB3ZSBkbyB0aGF0IHdhbGsgaGVyZSwg
YW5kIHJlY29yZCBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB0aGUgZm9sbG93aW5nIHZlY3Rv
ciB0byBlbWl0IHRoZSByaWdodCBjb2RlIGF0IHRoZSBlbmQgb2YgQWlyLgorICAgICAgICBWZWN0
b3I8VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0PiBhcmd1bWVudHNUb0VtaXRGcm9tUmlnaHRU
b0xlZnQ7CisgICAgICAgIGludCBzdG9yZU9mZnNldCA9IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworICAgICAgICB1
bnNpZ25lZCBwYXJhbXNPZmZzZXQgPSA0OworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAg
ICAgICAgIGF1dG8gcHVzaEFuZENvdW50QXJndW1lbnRzRnJvbVJpZ2h0VG9MZWZ0ID0gcmVjdXJz
YWJsZUxhbWJkYShbJl0oYXV0byBzZWxmLCBOb2RlKiB0YXJnZXQpIC0+IHZvaWQgewotICAgICAg
ICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tU3ByZWFkKSB7CisgICAgICAgICAgICBz
d2l0Y2ggKHRhcmdldC0+b3AoKSkgeworICAgICAgICAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgog
ICAgICAgICAgICAgICAgIHNlbGYodGFyZ2V0LT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRhcmdldC0+
b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkKSB7CisgICAgICAgICAgICBjYXNlIFBo
YW50b21OZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJp
dFZlY3RvciA9IHRhcmdldC0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gdGFyZ2V0LT5udW1DaGlsZHJlbigpOyBpLS07ICkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoYml0VmVjdG9yLT5nZXQoaSkpCkBAIC0xMDA3MCwyNyArMTAxNDQsNDUgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICsrc3RhdGljQXJndW1lbnRDb3VudDsKICAg
ICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IHRoaXMtPmxvd0pTVmFsdWUo
bV9ncmFwaC52YXJBcmdDaGlsZCh0YXJnZXQsIGkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHBhdGNocG9pbnRBcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJhcmdzU3By
ZWFkQXJndW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlLCBw
YXJhbXNPZmZzZXQgKyAoaW5kZXgrKyl9KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbU5ld0FycmF5QnVmZmVyKSB7Ci0g
ICAgICAgICAgICAgICAgc3RhdGljQXJndW1lbnRDb3VudCArPSB0YXJnZXQtPmNhc3RPcGVyYW5k
PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBjYXNlIFBo
YW50b21OZXdBcnJheUJ1ZmZlcjogeworICAgICAgICAgICAgICAgIGF1dG8qIGFycmF5ID0gdGFy
Z2V0LT5jYXN0T3BlcmFuZDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCk7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgYXJyYXlMZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAgICAg
ICAgc3RhdGljQXJndW1lbnRDb3VudCArPSBhcnJheUxlbmd0aDsKKyAgICAgICAgICAgICAgICBD
aGVja2VkPGludDMyX3Q+IG9mZnNldENvdW50IHsgMSB9OworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGFycmF5TGVuZ3RoOyBpLS07ICsrb2Zmc2V0Q291bnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBjdXJyZW50U3RvcmVPZmZzZXQgeyBzdG9yZU9m
ZnNldCB9OworICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RvcmVPZmZzZXQgLT0gKG9mZnNl
dENvdW50ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgICAg
ICAgICAgICAgICAgICAvLyBCZWNhdXNlIHZhcmFyZ3MgdmFsdWVzIGFyZSBkcmFpbmVkIGFzIEpT
VmFsdWUsIHdlIHNob3VsZCBub3QgZ2VuZXJhdGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAg
Ly8gaW4gRG91YmxlIGZvcm0gZXZlbiBpZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRleGlu
Z1R5cGUgaXMgQXJyYXlXaXRoRG91YmxlLgorICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5LT5nZXQoaSkpOworICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHNUb0VtaXRGcm9tUmlnaHRUb0xlZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFy
Z3VtZW50VG9FbWl0OjpUeXBlOjpQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlLCB2YWx1ZSwgY3Vy
cmVudFN0b3JlT2Zmc2V0LnZhbHVlKCkgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJhcmdzU3By
ZWFkQXJndW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCwgYXJyYXlM
ZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJlc3Qp
OwotICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0YXJnZXQt
Pm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gdGFyZ2V0LT5udW1iZXJPZkFyZ3VtZW50c1RvU2tp
cCgpOwotICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGNhY2hlZFNwcmVhZExlbmd0aHMuZW5z
dXJlKGlubGluZUNhbGxGcmFtZSwgWyZdICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9v
dXQuemVyb0V4dFB0cih0aGlzLT5nZXRTcHJlYWRMZW5ndGhGcm9tSW5saW5lQ2FsbEZyYW1lKGlu
bGluZUNhbGxGcmFtZSwgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApKTsKLSAgICAgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgIHBhdGNocG9pbnRBcmd1bWVudHMuYXBwZW5k
KGxlbmd0aCk7Ci0gICAgICAgICAgICBzcHJlYWRMZW5ndGhzLmFwcGVuZChsZW5ndGgpOworICAg
ICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDogeworICAgICAgICAgICAgICAgIElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVu
dHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0ID0gcGFyYW1zT2Zmc2V0ICsgKGluZGV4Kysp
OworICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBjYWNoZWRTcHJlYWRMZW5ndGhzLmVu
c3VyZShpbmxpbmVDYWxsRnJhbWUsIFsmXSAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBtX291dC56ZXJvRXh0UHRyKHRoaXMtPmdldFNwcmVhZExlbmd0aEZyb21JbmxpbmVDYWxsRnJh
bWUoaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkpOworICAgICAgICAg
ICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50QXJn
dW1lbnRzLmFwcGVuZChsZW5ndGgpOworICAgICAgICAgICAgICAgIHNwcmVhZExlbmd0aHMuYXBw
ZW5kKGxlbmd0aCk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9M
ZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRvbUNy
ZWF0ZVJlc3QsIGlubGluZUNhbGxGcmFtZSwgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHBhcmFt
ZXRlck9mZnNldCB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwotCiAgICAgICAgIHB1c2hBbmRD
b3VudEFyZ3VtZW50c0Zyb21SaWdodFRvTGVmdChhcmd1bWVudHMpOworCiAgICAgICAgIExWYWx1
ZSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IG1fb3V0LmNvbnN0SW50UHRyKHN0YXRpY0Fy
Z3VtZW50Q291bnQgKyAxKTsKICAgICAgICAgZm9yIChMVmFsdWUgbGVuZ3RoIDogc3ByZWFkTGVu
Z3RocykKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gbV9vdXQuYWRk
KGxlbmd0aCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwpAQCAtMTAxMTgsMTIgKzEwMjEw
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3Rh
Y2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiAKICAgICAg
ICAgbV9wcm9jLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKG1pbmltdW1KU0NhbGxBcmVh
U2l6ZSk7Ci0gICAgICAgIAorCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1f
ZnRsU3RhdGU7CiAgICAgICAgIFZNKiB2bSA9ICZ0aGlzLT52bSgpOworICAgICAgICBDb2RlT3Jp
Z2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAg
YXV0byBub2RlT3AgPSBub2RlLT5vcCgpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCi0gICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgWz0sIGFyZ3VtZW50c1RvRW1p
dCA9IFdURk1vdmUoYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0KV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQogICAgICAg
ICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlx
dWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOwpAQCAtMTAxMzcsNyArMTAyMzEsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxs
U2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFn
Rm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
aml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxv
Y2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAgICAg
ICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVy
cygpOwogICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6
dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CkBAIC0xMDIwMSw3NCArMTAyOTUsNTQgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSMiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0KSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaW50IHN0b3JlT2Zmc2V0
ID0gQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1zT2Zm
c2V0ID0gNDsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgICAg
ICAgICAgICAgICAgICBhdXRvIGVtaXRBcmd1bWVudHNGcm9tUmlnaHRUb0xlZnQgPSByZWN1cnNh
YmxlTGFtYmRhKFsmXShhdXRvIHNlbGYsIE5vZGUqIHRhcmdldCkgLT4gdm9pZCB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21TcHJlYWQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKHRhcmdldC0+Y2hpbGQxKCkubm9kZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgYXJndW1lbnRUb0VtaXQgOiBhcmd1bWVudHNUb0VtaXQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRUb0VtaXQubV90eXBlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6
UGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2U6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50b21O
ZXdBcnJheVdpdGhTcHJlYWRDYXNlLnBhcmFtZXRlck9mZnNldDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNf
Y2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldFZhbHVlRnJvbVJlcChwYXJhbXNbcGFyYW1ldGVyT2Zmc2V0XSwgc2NyYXRjaEdQUjMp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLCBD
Q2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIENDYWxsSGVs
cGVyczo6VGltZXNFaWdodCwgc3RvcmVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFk
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0VmVjdG9yKiBiaXRWZWN0b3IgPSB0
YXJnZXQtPmJpdFZlY3RvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IHRhcmdldC0+bnVtQ2hpbGRyZW4oKTsgaS0tOyApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGJpdFZlY3Rvci0+Z2V0KGkpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZihzdGF0ZS0+Z3JhcGgudmFyQXJnQ2hpbGQodGFyZ2V0
LCBpKS5ub2RlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAocGFyYW1z
W3BhcmFtc09mZnNldCArIChpbmRleCsrKV0sIHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNj
cmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBzdG9yZU9m
ZnNldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpQ
aGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCB2YWx1ZSA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVyQ2Fz
ZS52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGN1cnJlbnRTdG9y
ZU9mZnNldCA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZS5jdXJy
ZW50U3RvcmVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQodmFsdWUpLCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6
QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0Vp
Z2h0LCBjdXJyZW50U3RvcmVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBhcnJheSA9IHRhcmdldC0+Y2FzdE9wZXJhbmQ8
SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENo
ZWNrZWQ8aW50MzJfdD4gb2Zmc2V0Q291bnQgeyAxIH07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJyYXktPmxlbmd0aCgpOyBpLS07ICsrb2Zmc2V0Q291
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB2YXJhcmdz
IHZhbHVlcyBhcmUgZHJhaW5lZCBhcyBKU1ZhbHVlLCB3ZSBzaG91bGQgbm90IGdlbmVyYXRlIHZh
bHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIERvdWJsZSBmb3JtIGV2
ZW4gaWYgUGhhbnRvbU5ld0FycmF5QnVmZmVyJ3MgaW5kZXhpbmdUeXBlIGlzIEFycmF5V2l0aERv
dWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IEpT
VmFsdWU6OmVuY29kZShhcnJheS0+Z2V0KGkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQodmFsdWUpLCBzY3JhdGNo
R1BSMyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZWQ8aW50MzJfdD4g
Y3VycmVudFN0b3JlT2Zmc2V0IHsgc3RvcmVPZmZzZXQgfTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudFN0b3JlT2Zmc2V0IC09IChvZmZzZXRDb3VudCAqIHN0YXRpY19j
YXN0PGludDMyX3Q+KHNpemVvZihSZWdpc3RlcikpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRj
aEdQUjIsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgY3VycmVudFN0b3JlT2Zmc2V0KSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVf
dD4oYXJyYXktPmxlbmd0aCgpKSksIHNjcmF0Y2hHUFIyKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZhcmFyZ3NTcHJl
YWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGFycmF5TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90
Pihhcmd1bWVudFRvRW1pdC5tX3BoYW50b21OZXdBcnJheUJ1ZmZlckVuZC5hcnJheUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoYXJyYXlMZW5ndGgpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldC0+b3AoKSA9PSBQaGFudG9t
Q3JlYXRlUmVzdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9IHRhcmdldC0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcCA9IHRhcmdldC0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgQjM6OlZhbHVlUmVwIG51bUFyZ3VtZW50c1RvQ29weSA9IHBhcmFtc1twYXJh
bXNPZmZzZXQgKyAoaW5kZXgrKyldOwotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWVG
cm9tUmVwKG51bUFyZ3VtZW50c1RvQ29weSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGxvYWRPZmZzZXQgPSAoQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNTdGFy
dChpbmxpbmVDYWxsRnJhbWUpLm9mZnNldCgpICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBkb25lID0gaml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcFN0YXJ0ID0g
aml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIyKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWln
aHQsIGxvYWRPZmZzZXQpLCBzY3JhdGNoR1BSNCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBq
aXQuc3RvcmU2NChzY3JhdGNoR1BSNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVy
czo6VGltZXNFaWdodCwgc3RvcmVPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUjMpLmxpbmtU
byhsb29wU3RhcnQsICZqaXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZq
aXQpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEFy
Z3VtZW50c0Zyb21SaWdodFRvTGVmdChhcmd1bWVudHMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlBoYW50b21DcmVhdGVSZXN0OiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWUgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50b21DcmVhdGVSZXN0LmlubGluZUNhbGxGcmFt
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbUNyZWF0ZVJlc3QubnVtYmVyT2ZBcmd1
bWVudHNUb1NraXA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1l
dGVyT2Zmc2V0ID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tQ3JlYXRlUmVzdC5wYXJhbWV0ZXJP
ZmZzZXQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgbnVtQXJn
dW1lbnRzVG9Db3B5ID0gcGFyYW1zW3BhcmFtZXRlck9mZnNldF07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0VmFsdWVGcm9tUmVwKG51bUFyZ3VtZW50c1RvQ29weSwgc2NyYXRjaEdQ
UjMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsb2FkT2Zmc2V0ID0gKEFzc2Vt
Ymx5SGVscGVyczo6YXJndW1lbnRzU3RhcnQoaW5saW5lQ2FsbEZyYW1lKS5vZmZzZXQoKSArIG51
bWJlck9mQXJndW1lbnRzVG9Ta2lwKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuYnJhbmNo
VGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gbG9vcFN0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
c3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNf
Y2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIGxvYWRPZmZz
ZXQpLCBzY3JhdGNoR1BSNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
NjQoc2NyYXRjaEdQUjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpU
aW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUjMpLmxpbmtU
byhsb29wU3RhcnQsICZqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUubGlu
aygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbnRU
aHJvdyA9IGppdC5qdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJmpp
dCk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dG
b3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2Rl
T3JpZ2luKSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihq
aXQudm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk7CiAgICAgICAgICAgICAgICAgICAg
IGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsK
QEAgLTEwMjgyLDkgKzEwMzU2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmU2NChzY3JhdGNoR1BSMywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoMCkpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUg
Y2FsbFR5cGU7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0VmFy
YXJncyB8fCBub2RlLT5vcCgpID09IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKQorICAgICAgICAg
ICAgICAgIGlmIChub2RlT3AgPT0gQ29uc3RydWN0VmFyYXJncyB8fCBub2RlT3AgPT0gQ29uc3Ry
dWN0Rm9yd2FyZFZhcmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExp
bmtJbmZvOjpDb25zdHJ1Y3RWYXJhcmdzOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUt
Pm9wKCkgPT0gVGFpbENhbGxWYXJhcmdzIHx8IG5vZGUtPm9wKCkgPT0gVGFpbENhbGxGb3J3YXJk
VmFyYXJncykKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlT3AgPT0gVGFpbENhbGxWYXJh
cmdzIHx8IG5vZGVPcCA9PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKQogICAgICAgICAgICAgICAg
ICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6VGFpbENhbGxWYXJhcmdzOwogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86
OkNhbGxWYXJhcmdzOwpAQCAtMTAzMTIsNyArMTAzODYsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQpAQCAtMTA0MTgsNiArMTA0OTIs
MTQgQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdp
bkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmlnaW4g
c2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygp
KQorICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQzKCktPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5s
aW5lQ2FsbEZyYW1lID0gc2VtYW50aWNOb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOworICAg
ICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKKyAg
ICAgICAgYXV0byBub2RlT3AgPSBub2RlLT5vcCgpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTEwNDMzLDggKzEw
NTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKLSAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRhID0gbm9k
ZS0+Y2FsbFZhcmFyZ3NEYXRhKCk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVP
cmlnaW4pOwogCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSAxOwogICAgICAg
ICAgICAgICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBwYXJhbXNbYXJnSW5kZXgrK10uZ3ByKCk7CkBA
IC0xMDUxOCwxOCArMTA1OTksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hlaWdodCAvIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlOwot
ICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQzKCktPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZSgpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIGVtaXRTZXR1cFZhcmFyZ3NG
cmFtZUZhc3RDYXNlIG1vZGlmaWVzIHRoZSBzdGFjayBwb2ludGVyIGlmIGl0IHN1Y2NlZWRzLgog
ICAgICAgICAgICAgICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSgqdm0sIGpp
dCwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIGlu
bGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKIAogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAg
ICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZs
b3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQoKikoKT4o
b3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncykpOwogICAgICAgICAgICAgICAg
ICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJv
dyk7CkBAIC0xMDUzNyw3ICsxMDYxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNr
SGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIxKTsKLSAgICAgICAg
ICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNpemVGcmFt
ZUZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLCBhcmd1bWVudHNHUFIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihkYXRhLT5maXJzdFZhckFyZ09mZnNldCkpOworICAgICAgICAgICAgICAgICAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJn
cyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiks
IGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGRh
dGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQoKikoKT4ob3BlcmF0aW9uU2l6ZUZyYW1lRm9y
VmFyYXJncykpOwogCkBAIC0xMDU0Niw3ICsxMDYyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50c0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCBhcmd1bWVudHNHUFIp
OwogICAgICAgICAgICAgICAgICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKGppdCwgc2NyYXRjaEdQ
UjEsIGZhbHNlLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjIpOwogICAgICAgICAgICAgICAgICAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1taW5pbXVtSlNDYWxsQXJl
YVNpemUpLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25TZXR1cFZhcmFyZ3NGcmFtZSk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksIHNjcmF0Y2hHUFIyLCBhcmd1bWVudHNHUFIsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSwgc2NyYXRjaEdQUjEp
OworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uU2V0dXBWYXJhcmdzRnJhbWUpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihz
ZW1hbnRpY05vZGVPcmlnaW4pLCBzY3JhdGNoR1BSMiwgYXJndW1lbnRzR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJzdFZhckFyZ09mZnNldCksIHNjcmF0Y2hHUFIxKTsK
ICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8
dm9pZCgqKSgpPihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSkpOwogICAgICAgICAgICAgICAg
ICAgICAKQEAgLTEwNTYzLDkgKzEwNjM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBq
aXQuc3RvcmU2NCh0aGlzR1BSLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdCgwKSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlw
ZSBjYWxsVHlwZTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RW
YXJhcmdzIHx8IG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3MpCisgICAgICAg
ICAgICAgICAgaWYgKG5vZGVPcCA9PSBDb25zdHJ1Y3RWYXJhcmdzIHx8IG5vZGVPcCA9PSBDb25z
dHJ1Y3RGb3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxs
TGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBUYWlsQ2FsbEZvcndh
cmRWYXJhcmdzKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVPcCA9PSBUYWlsQ2FsbFZh
cmFyZ3MgfHwgbm9kZU9wID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZhcmFyZ3M7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5m
bzo6Q2FsbFZhcmFyZ3M7CkBAIC0xMDU5MSw3ICsxMDY2Nyw3IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRS
ZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAg
ICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC0xMDY2NSw2ICsxMDc0
MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmln
aW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRs
U3RhdGU7CiAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmlnaW4g
c2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBhdXRv
IGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpOwogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBb
PSwgJnZtXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CkBAIC0xMDY3OSw3ICsxMDc1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygp
KSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
aml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxv
Y2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDEpOwpAQCAtMTA2OTEsNyArMTA3NjksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykg
KyBzaXplb2YoQ2FsbEZyYW1lKikgKiAyOwogICAgICAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXMg
PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJl
ZEJ5dGVzKTsKICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZWNtYU1vZGUpLCBHUFJJbmZv
OjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkNhbGxFdmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDIpOwogICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NG
dW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5v
blByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CkBAIC0xMjI0OSwxOSArMTIzMjcsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBv
aW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29k
ZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAg
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOwogCiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRk
VW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxs
U2l0ZUluZGV4KHNlbWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAg
ICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1z
KS0+anVtcHMoaml0KTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKICAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSk7CiAKQEAgLTEyMjc1LDkgKzEyMzU0
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1Bh
dGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1h
bnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBAIC0xMjQ5Myw2ICsxMjU3Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRp
b25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBh
dGNocG9pbnQpOwogCisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAg
ICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTEyNTE2LDE0ICsxMjU5NiwxNCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJ
Zk5vdENlbGwocHJvdG90eXBlR1BSKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29k
ZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGljTm9k
ZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAg
ICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1
bXBzKGppdCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0
b3IgPSBCb3g8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3Jp
Z2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3JhdGNo
R1BSLAogICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmplY3Qp
OwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwpAQCAt
MTI1MzgsOSArMTI2MTgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50
aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCB2YWx1ZUdQUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNh
bGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwpAQCAtMTM5OTgsMTIgKzE0MDc4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUq
IHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3Jp
Z2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRl
LT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChzZW1hbnRpY05vZGVP
cmlnaW4pOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFy
Z2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVy
czo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQpAQCAtMTQwMTUsNyArMTQwOTYsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25G
b3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAogICAgICAgICAgICAgICAgIGF1dG8g
Z2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9k
ZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5
cGUpOwogCkBAIC0xNDAzMSw5ICsxNDExMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFi
ZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJh
bXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05v
ZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50
aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1
bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBAIC0xNDA2NywxMiArMTQxNDgsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9y
aWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogCiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5p
cXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAg
ICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0
ZUluZGV4KHNlbWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAg
ICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CkBAIC0xNDA4NCw3
ICsxNDE2Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5z
Y2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCiAg
ICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBzZW1hbnRpY05vZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVy
LCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsK
IApAQCAtMTQxMDAsOSArMTQxODIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBd
LmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3Jp
Z2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBAIC0xNDQ5Nyw2ICsxNDU3OSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAg
ICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICBOb2RlVHlwZSBvcCA9IG1fbm9kZS0+b3Ao
KTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4u
c2VtYW50aWM7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQxQ29uc3RhbnQgPSBtX3N0YXRlLmZvck5v
ZGUobV9ub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKIAogICAgICAgICBhdXRvIG5vZGVJbmRleCA9
IG1fbm9kZUluZGV4SW5HcmFwaDsKQEAgLTE0NTE4LDcgKzE0NjAxLDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBoYW5kbGUgPSBleGl0RGVzY3Jp
cHRvci0+ZW1pdE9TUkV4aXRMYXRlcigqc3RhdGUsIEJhZFR5cGUsIG9yaWdpbiwgcGFyYW1zLCBu
b2RlSW5kZXgsIG9zckV4aXRBcmd1bWVudE9mZnNldCk7CiAKLSAgICAgICAgICAgICAgICBTbmlw
cGV0UGFyYW1zIGRvbUpJVFBhcmFtcygqc3RhdGUsIHBhcmFtcywgbm9kZSwgbnVsbHB0ciwgV1RG
TW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAg
ICAgICAgICAgICAgIFNuaXBwZXRQYXJhbXMgZG9tSklUUGFyYW1zKCpzdGF0ZSwgcGFyYW1zLCBz
ZW1hbnRpY05vZGVPcmlnaW4sIG51bGxwdHIsIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3Jh
dGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0IGZhaWx1cmVDYXNlcyA9IGRvbUpJVC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIGRv
bUpJVFBhcmFtcyk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBub3RK
U0Nhc3RGYWlsdXJlQ2FzZXM7CiAgICAgICAgICAgICAgICAgaWYgKG9wID09IENoZWNrTm90SlND
YXN0KSB7CkBAIC0xNDYzOCw2ICsxNDcyMSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgU3RhdGUq
IHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAg
ICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
ewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKQEAgLTE0NjU5LDcgKzE0NzQzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAg
ICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9u
SGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogCi0gICAg
ICAgICAgICAgICAgU25pcHBldFBhcmFtcyBkb21KSVRQYXJhbXMoKnN0YXRlLCBwYXJhbXMsIG5v
ZGUsIGV4Y2VwdGlvbnMsIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92
ZShmcFNjcmF0Y2gpKTsKKyAgICAgICAgICAgICAgICBTbmlwcGV0UGFyYW1zIGRvbUpJVFBhcmFt
cygqc3RhdGUsIHBhcmFtcywgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRpb25zLCBXVEZNb3Zl
KHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CiAgICAgICAg
ICAgICAgICAgZG9tSklULT5nZW5lcmF0b3IoKS0+cnVuKGppdCwgZG9tSklUUGFyYW1zKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9y
Q2FsbCgpOwpAQCAtMTU0MTYsNiArMTU1MDAsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5
UmVnaXN0ZXIgfTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAg
IENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwog
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewog
ICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKQEAgLTE1NDQxLDE2ICsxNTUyNiwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
c2xvd1BhdGhKdW1wTGlzdCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0aW9uLCBw
YXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRoRnVuY3Rpb24sIHBhcmFt
c1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmln
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1
bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSk7CkBAIC0xNTQ4Myw2ICsxNTU2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAg
cGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdp
c3RlciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29k
ZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAg
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOwpAQCAtMTU1MDQsOSArMTU1OTAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1
bXBMaXN0KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICAg
ICAgICAgICAgICAgICAgfSk7CkBAIC0xNTU0MCw2ICsxNTYyNiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVw
OjpTb21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0
ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4u
c2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAg
IFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTU1NjcsOSArMTU2NTQsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID8gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQgOiBvcGVy
YXRpb25WYWx1ZUJpdFVSU2hpZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlvbiwg
cGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50
aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMV0uZ3By
KCksIHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgp
LmxpbmtUbyhkb25lLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgfSk7CkBAIC0xOTg2Miw2
ICsxOTk0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IGJs
b2NrLT5pbmRleDsKICAgICAgICAgdW5zaWduZWQgbm9kZUluZGV4ID0gbm9kZSA/IG5vZGUtPmlu
ZGV4KCkgOiBVSU5UX01BWDsKICNpZiAhQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXV0byBub2Rl
T3AgPSBub2RlID8gbm9kZS0+b3AoKSA6IExhc3ROb2RlVHlwZTsKICAgICAgICAgbV9vdXQucGF0
Y2hwb2ludChWb2lkKS0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAg
LTE5ODY5LDcgKzE5OTU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihibG9ja0luZGV4KSwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGVJ
bmRleCksIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgICAgICAgICBpZiAobm9kZSkKLSAgICAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+
b3AoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZU9wKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAg
ICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oRlRMQ3Jhc2gpOwogICAgICAgICAgICAgfSk7
CiAjZWxzZSAvLyBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU25pcHBldFBhcmFtcy5jcHAKaW5kZXggNmQ2Njg4OWVlNTIzLi5mNjc1YzE5ZjRhYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU25pcHBldFBhcmFtcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmNwcApAQCAt
MzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZSBB
cmd1bWVudHMsIHNpemVfdC4uLiBBcmd1bWVudHNJbmRleD4KLXN0YXRpYyB2b2lkIGRpc3BhdGNo
KENDYWxsSGVscGVycyYgaml0LCBGVEw6OlN0YXRlKiBzdGF0ZSwgY29uc3QgQjM6OlN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCBERkc6Ok5vZGUqIG5vZGUsIEJveDxDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0PiBleGNlcHRpb25zLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIE9w
ZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzIGFyZ3Vt
ZW50cywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVudHNJbmRleC4uLj4pCitzdGF0aWMgdm9p
ZCBkaXNwYXRjaChDQ2FsbEhlbHBlcnMmIGppdCwgRlRMOjpTdGF0ZSogc3RhdGUsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgQ29kZU9yaWdpbiBzZW1hbnRpY05v
ZGVPcmlnaW4sIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zLCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGZyb20sIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzIGFyZ3VtZW50cywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVu
dHNJbmRleC4uLj4pCiB7CiAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVs
KCk7CiAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAg
LTQyLDcgKzQyLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxwZXJzJiBqaXQsIEZU
TDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KIAogICAgICAgICBmcm9tLmxp
bmsoJmppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
c2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0
aW9uLCBleHRyYWN0UmVzdWx0KHJlc3VsdCksIHN0ZDo6Z2V0PEFyZ3VtZW50c0luZGV4Pihhcmd1
bWVudHMpLi4uKTsKICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAgICAg
fSk7CkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoKENDYWxsSGVscGVycyYg
aml0LCBGVEw6OlN0YXRlKiBzdGF0ZSwgY29uc3QgQjM6OlN0YWNrbWFwR2VuCiAjZGVmaW5lIEpT
Q19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIC4uLikg
XAogICAgIHZvaWQgU25pcHBldFBhcmFtczo6YWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVycyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJh
dGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwK
ICAgICB7IFwKLSAgICAgICAgZGlzcGF0Y2goaml0LCAmbV9zdGF0ZSwgbV9wYXJhbXMsIG1fbm9k
ZSwgbV9leGNlcHRpb25zLCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3RkOjptYWtl
X2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZhbHVlPigp
KTsgXAorICAgICAgICBkaXNwYXRjaChqaXQsICZtX3N0YXRlLCBtX3BhcmFtcywgbV9zZW1hbnRp
Y05vZGVPcmlnaW4sIG1fZXhjZXB0aW9ucywgZnJvbSwgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3Ms
IHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8ZGVjbHR5cGUoYXJncyk+
Ojp2YWx1ZT4oKSk7IFwKICAgICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RF
RklORV9DQUxMX09QRVJBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU25p
cHBldFBhcmFtcy5oCmluZGV4IDFhZjJiZDM4ZjRkYi4uNjAwYmVmNjE0MDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaApAQCAtMzgsMTEgKzM4LDEx
IEBAIGNsYXNzIFN0YXRlOwogCiBjbGFzcyBTbmlwcGV0UGFyYW1zIGZpbmFsIDogcHVibGljIEpT
Qzo6U25pcHBldFBhcmFtcyB7CiBwdWJsaWM6Ci0gICAgU25pcHBldFBhcmFtcyhTdGF0ZSYgc3Rh
dGUsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgREZHOjpOb2Rl
KiBub2RlLCBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucywgVmVjdG9yPFZh
bHVlPiYmIHJlZ3MsIFZlY3RvcjxHUFJSZWc+JiYgZ3BTY3JhdGNoLCBWZWN0b3I8RlBSUmVnPiYm
IGZwU2NyYXRjaCkKKyAgICBTbmlwcGV0UGFyYW1zKFN0YXRlJiBzdGF0ZSwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9y
aWdpbiwgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMsIFZlY3RvcjxWYWx1
ZT4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQUlJlZz4mJiBm
cFNjcmF0Y2gpCiAgICAgICAgIDogSlNDOjpTbmlwcGV0UGFyYW1zKHN0YXRlLnZtKCksIFdURk1v
dmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKQogICAgICAg
ICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9wYXJhbXMocGFyYW1zKQotICAgICAgICAs
IG1fbm9kZShub2RlKQorICAgICAgICAsIG1fc2VtYW50aWNOb2RlT3JpZ2luKHNlbWFudGljTm9k
ZU9yaWdpbikKICAgICAgICAgLCBtX2V4Y2VwdGlvbnMoZXhjZXB0aW9ucykKICAgICB7CiAgICAg
fQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUmIG1fc3RhdGU7CiAgICAg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgbV9wYXJhbXM7Ci0gICAgREZHOjpO
b2RlKiBtX25vZGU7CisgICAgQ29kZU9yaWdpbiBtX3NlbWFudGljTm9kZU9yaWdpbjsKICAgICBC
b3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gbV9leGNlcHRpb25zOwogfTsKIAo=
</data>
<flag name="commit-queue"
          id="452018"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430555</attachid>
            <date>2021-06-04 00:43:40 -0700</date>
            <delta_ts>2021-06-04 08:35:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch226556</filename>
            <type>text/plain</type>
            <size>76590</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZkYjE4YTNiNTUxOS4uYTRlYWMxNzA1ODNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNi0wMyAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgdGhlIEZU
TChERkcpIGdyYXBoIGFmdGVyIGxvd2VyaW5nIHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NTYKKworICAgICAgICBSZXZpZXdlZCBieSBQ
aGlsIFBpemxvLgorCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCB3YXMgZGVh
bGluZyB3aXRoIGFsbCBvZiB0aGUgUGF0Y2hwb2ludHMgY3JlYXRlZCBieSBGVExMb3dlckRGR1Rv
QjM6IHRoZXkgZ2V0IGEgbGFtYmRhIGF0IHRoYXQgdGltZSwgd2hpY2ggdGhleSBleGVjdXRlIGF0
IHRoZSBlbmQgb2YgQWlyLCBhbmQgbWFueSBvZiB0aGVzZSBsYW1iZGFzIHdlcmUgY2FwdHVyaW5n
IGEgcG9pbnRlciB0byBzb21lIHBhcnRzIG9mIHRoZSBERkcgZ3JhcGggYW5kIHJlYWRpbmcgdGhy
b3VnaCBpdCB3aGVuIGJlaW5nIGV4ZWN1dGVkLgorICAgICAgICBJbiBhbGwgY2FzZXMgYnV0IG9u
ZSBpdCB3YXMgZWFzaWx5IGZpeGVkOiB0aGV5IHdlcmUgb25seSByZWFkaW5nIGEgZmV3IGJpdHMg
ZnJvbSBhIGdpdmVuIG5vZGUsIHNvIEkganVzdCByZWFkIHRoZXNlIGJpdHMgaW4gRlRMTG93ZXJE
RkdUb0IzLCBhbmQgY2FwdHVyZWQgdGhlbSAoYnkgdmFsdWUpIGluc3RlYWQgb2YgdGhlIHBvaW50
ZXIgdG8gdGhlIG5vZGUuCisgICAgICAgIFRoZSBleGNlcHRpb24gd2FzIGNvbXBpbGVDYWxsT3JD
b25zdHJ1Y3RWYXJhcmdzU3ByZWFkKCk6IGl0cyBwYXRjaHBvaW50IGdlbmVyYXRvciB3YXMgd2Fs
a2luZyB0aHJvdWdoIHRoZSBncmFwaCwgZmxhdHRlbmluZyBhIHRyZWUgb2YgUGhhbnRvbVNwcmVh
ZC9QaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkL1BoYW50b21OZXdBcnJheUJ1ZmZlci9QaGFudG9t
Q3JlYXRlUmVzdCwgZW1pdHRpbmcgc29tZSBjb2RlIGFsb25nIHRoZSB3YXkuCisgICAgICAgIFdl
IG5vdyBkbyB0aGlzIGZsYXR0ZW5pbmcgb2YgdGhlIHRyZWUgaW4gRlRMTG93ZXJERkdUb0IzLCBz
dG9yZSBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBsYXRlciBlbWl0IHRoZSByZXF1aXJlZCBj
b2RlIGluIGEgdmVjdG9yLCBhbmQgY2FwdHVyZSB0aGF0IHZlY3RvciBpbiB0aGUgbGFtYmRhICh0
aHJvdWdoIGEgbW92ZSBjYXB0dXJlLCB3aGljaCBpcyBhbGxvd2VkIHNpbmNlIEMrKzE0KS4gU2Vl
IGBzdHJ1Y3QgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0YCBmb3IgdGhlIGluZm9ybWF0aW9u
IHRoYXQgd2UgbmVlZCB0byBzdG9yZSBpbiB0aGF0IHZlY3Rvci4KKworICAgICAgICBJIHRlc3Rl
ZCB0aGlzIGNoYW5nZSBieSBjb21wbGV0aW5nIGEgZnVsbCBydW4gb2YgSmV0U3RyZWFtMiB3aXRo
IEFTQU4uCisgICAgICAgIEkgYWxzbyByYW4gdGhlIHN0cmVzcyB0ZXN0cyB3aXRoICJzcHJlYWQi
IGluIHRoZWlyIG5hbWUgaW4gRGVidWcgbW9kZS4KKworICAgICAgICAqIGIzL0IzU3BhcnNlQ29s
bGVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xlYXJBbGwp
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZyZWVERkdJUkFmdGVyTG93ZXJpbmcpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVuYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENhbGxPckNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVU
YWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OlZhcmFyZ3NT
cHJlYWRBcmd1bWVudFRvRW1pdDo6VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZh
cmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0UmlnaHRTaGlmdFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjcmFzaCk6CisKIDIwMjEtMDYtMDMgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtKU0NdIEltcGxlbWVudCBKSVQgSUNz
IGZvciBJbkJ5VmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDEx
MTAwODI2MDM5OC4uOWQ0OWZlNjMyNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcApAQCAtMTg2MSw2ICsxODYxLDI2IEBAIHZvaWQgR3JhcGg6OmNsZWFyQ1BTQ0ZHRGF0
YSgpCiAgICAgbV9jcHNDRkcgPSBudWxscHRyOwogfQogCit2b2lkIEdyYXBoOjpmcmVlREZHSVJB
ZnRlckxvd2VyaW5nKCkKK3sKKyAgICBtX2Jsb2Nrcy5jbGVhcigpOworICAgIG1fcm9vdHMuY2xl
YXIoKTsKKyAgICBtX3ZhckFyZ0NoaWxkcmVuLmNsZWFyKCk7CisgICAgbV9ub2Rlcy5jbGVhckFs
bCgpOworCisgICAgbV9ieXRlY29kZUxpdmVuZXNzLmNsZWFyKCk7CisgICAgbV9zYWZlVG9Mb2Fk
LmNsZWFyKCk7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWlu
YXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBt
X3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FDRkcgPSBudWxscHRyOworICAg
IG1fY3BzQ0ZHID0gbnVsbHB0cjsKKyAgICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CisgICAg
bV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2NvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzID0gbnVsbHB0cjsKK30KKwogdm9pZCBQcmVmaXg6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAppbmRleCA3NmY5ZGI4MmY5MTEuLjYyYTFmZWYzZGMyYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTA3NCw2ICsxMDc0LDggQEAgcHVibGljOgogICAg
ICAgICBtX2NhdGNoRW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlwb2ludERhdGEgeyBtYWNo
aW5lQ29kZSwgRml4ZWRWZWN0b3I8Rmx1c2hGb3JtYXQ+KFdURk1vdmUoYXJndW1lbnRGb3JtYXRz
KSksIGJ5dGVjb2RlSW5kZXggfSk7CiAgICAgfQogCisgICAgdm9pZCBmcmVlREZHSVJBZnRlckxv
d2VyaW5nKCk7CisKICAgICBTdGFja0NoZWNrIG1fc3RhY2tDaGVja2VyOwogICAgIFZNJiBtX3Zt
OwogICAgIFBsYW4mIG1fcGxhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwCmluZGV4IDI4Zjk4OWFlNzI0Ni4uNDFhYTYzM2ZmOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXRE
aXNhc3NlbWJsZXIobWFrZVVuaXF1ZTxCMzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOwogCisgICAg
aWYgKCFzaG91bGREdW1wRGlzYXNzZW1ibHkoKSAmJiAhT3B0aW9uczo6YXN5bmNEaXNhc3NlbWJs
eSgpICYmICFncmFwaC5jb21waWxhdGlvbigpICYmICFzdGF0ZS5wcm9jLT5uZWVkc1BDVG9Pcmln
aW5NYXAoKSkKKyAgICAgICAgZ3JhcGguZnJlZURGR0lSQWZ0ZXJMb3dlcmluZygpOworCiAgICAg
ewogICAgICAgICBHcmFwaFNhZmVwb2ludCBzYWZlcG9pbnQoc3RhdGUuZ3JhcGgsIHNhZmVwb2lu
dFJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCBkNzhkN2UzYWE5MmIuLjE5OWFiYjIwNjExMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjM4MCw2ICsyMzgwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAg
Q29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAg
ICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOwpAQCAtMjQxMCwxMiArMjQxMSwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNob3VsZFNsb3dQ
YXRoUmVwYXRjaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3By
KCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksIHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGhJQykp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFu
dGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5j
YWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHBhcmFtc1sxXS5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
KCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2Rl
T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQ
YXRoQ2FsbCA9IGNhbGwuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBAIC0yNDM0
LDggKzI0MzUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwg
cGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRp
b25zLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
LCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFu
dGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgfQogCiAj
aWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yNDg3LDYgKzI0ODgsNyBAQCBwcml2YXRlOgog
ICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOwogICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2lu
IHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBA
IC0yNTIwLDEyICsyNTIyLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNo
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1z
WzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
YXRoSUMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLCBwYXJhbXNb
MV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1h
dGhJQykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0
ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
IHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG5vblJlcGF0Y2hpbmdG
dW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihzZW1hbnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtMjU0
NCw4ICsyNTQ2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
IHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNO
b2RlT3JpZ2luLCBleGNlcHRpb25zLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1z
WzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFU
UykKQEAgLTM5ODMsMTAgKzM5ODUsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSogc3Rh
dGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgYm9vbCBiYXNlSXNDZWxsID0gYWJzdHJhY3RWYWx1
ZShub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAgICAgICAgQ29kZU9yaWdpbiBu
b2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1h
bnRpY09yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhp
dCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTQwMDEsNyArNDAwNCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdw
cigpOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxH
ZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50
aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAogICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSk7CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKQEAg
LTQwMTksOSArNDAyMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRp
Y09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIs
IHByb3BlcnR5R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlu
a1RvKGRvbmUsICZqaXQpOwogCkBAIC00MTE1LDEwICs0MTE4LDExIEBAIHByaXZhdGU6CiAKICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIGJvb2wgYmFzZUlzQ2Vs
bCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAg
ICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0g
ICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+
Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0
ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5v
ZGVTZW1hbnRpY09yaWdpbik7CiAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBl
eGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgQm94PENDYWxsSGVs
cGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC00MTMyLDcgKzQxMzYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0gcGFyYW1zWzFdLmdwcigpOwogCiAg
ICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCisgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFj
Y2Vzc1R5cGUsCiAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOwogCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKQEAgLTQxNjIsOSArNDE2Niw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9
IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZh
bGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICBqaXQu
anVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtNDUyNCwxMyArNDUyOCwxNCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9p
bnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICAKKwor
ICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXggPQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVP
cmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFk
ZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICAgICAg
ICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5q
dW1wcyhqaXQpOwpAQCAtNDUzOSw3ICs0NTQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywg
Y2FsbFNpdGVJbmRleCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxK
SVRQdXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRl
SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50
U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAgICAgICAgICAgICAgICAgICAgcHV0S2luZCk7
CkBAIC00NTU0LDkgKzQ1NTksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52
YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRp
Y09yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0
cygpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKQEAgLTUyNDMsMTAgKzUyNDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgICAgIFN0
YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICAgICAgQ29kZU9yaWdpbiBub2RlU2Vt
YW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVP
cmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENv
ZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlU2VtYW50
aWNPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQg
dGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVs
cGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC01MjYxLDcgKzUyNjcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWws
CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZVNlbWFudGljT3JpZ2lu
LCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBK
U1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJv
cGVydHlJc1N0cmluZzsKQEAgLTUyODMsOSArNTI4OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CiAKQEAgLTU4NDMsMTIgKzU4NDksMTYgQEAgcHJpdmF0ZToKIAogICAgICAgICBT
dGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsK
KyAgICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWM7CisgICAgICAgIGF1dG8gY2hpbGQxVXNlS2luZCA9IG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKTsKKyAgICAgICAgYXV0byBjaGlsZDJVc2VLaW5kID0gbm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpOworICAgICAgICBhdXRvIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpOwog
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewog
ICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMt
PmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVl
Q2FsbFNpdGVJbmRleChub2RlU2VtYW50aWNPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgQm94
PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGpp
dCk7CkBAIC01ODYwLDcgKzU4NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFTU0VS
VChiYXNlLmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChyZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAKLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkMVVzZUtpbmQpCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CiAKICAgICAgICAgICAgICAgICBjb25z
dGV4cHIgYXV0byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IFsmXSAoKSB7CkBAIC01ODc1LDcgKzU4
ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMu
Z3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hpbGQyVXNlS2luZCA9PSBVbnR5cGVkVXNlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChK
U1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtNTg4NCwxMiArNTg5NCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHBy
IChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBh
cmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0
ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
YmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdz
KHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC01OTA2LDExICs1OTE2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihlY21hTW9kZSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwp
OwpAQCAtOTcxMSw2ICs5NzIxLDggQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0
ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7Cisg
ICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljOworICAgICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtOTcy
MiwxNiArOTczNCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGVTZW1hbnRpY09y
aWdpbik7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpDb25z
dHJ1Y3QgOiBDYWxsTGlua0luZm86OkNhbGwsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZU9wID09IENvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0IDog
Q2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgICAgICAgICBh
dXRvIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5lbWl0RmFzdFBhdGgoaml0LCBHUFJJbmZvOjpy
ZWdUMCwgSW52YWxpZEdQUlJlZywgQ2FsbExpbmtJbmZvOjpVc2VEYXRhSUM6Ok5vKTsKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAg
ICAgICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIGF1dG8gc2xv
d1BhdGhTdGFydCA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKIAogICAg
ICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKQEAgLTk4MjEsNiArOTgzMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9
IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKKyAgICAgICAgQ29kZU9yaWdpbiBz
ZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIFN0YXRl
KiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtOTg1NCw3ICs5ODY3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJncyA9IG51bVBhc3NlZEFy
Z3M7CiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lz
dGVycyhqaXQuY29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6RGlyZWN0VGFpbENhbGwsIEludmFsaWRHUFJS
ZWcpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBtYWluUGF0aCA9IGppdC5sYWJlbCgpOwpAQCAtOTg3MSw3ICs5ODg0LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0
aCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCB0b1NhdmUsIGppdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0
aW9uTGlua0RpcmVjdENhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY05vZGVP
cmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgSW52YWxpZEdQUlJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGNhbGxMaW5rSW5mbyksIGNhbGxlZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAg
ICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0RXhlY3V0YWJsZUR1cmluZ0NvbXBpbGF0aW9uKGV4ZWN1dGFibGUp
OwpAQCAtOTg4Niw3ICs5ODk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1h
bnRpY05vZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KAogICAgICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0
Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJlY3RDYWxsLCBJbnZhbGlkR1BSUmVnKTsKIApA
QCAtOTkxMyw3ICs5OTI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRp
b25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxp
bmtEaXJlY3RDYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRHUFJSZWcs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxlZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0Lmp1bXAoKS5saW5rVG8obWFpblBhdGgsICZqaXQpOwpAQCAtOTk4OSw2ICsxMDAwMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmlnaW5E
ZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3Rh
dGU7CiAgICAgICAgIFZNKiB2bSA9ICZ0aGlzLT52bSgpOworICAgICAgICBDb2RlT3JpZ2luIHNl
bWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0x
MDAyNiw3ICsxMDA0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgc2xvd1BhdGhTaHVm
Zmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOwog
ICAgICAgICAgICAgICAgIHNsb3dQYXRoU2h1ZmZsZXIucHJlcGFyZUZvclNsb3dQYXRoKCk7CiAK
LSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEdQ
UkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2Rl
T3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8t
PmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGRvbmVMb2Nh
dGlvbiA9IGppdC5sYWJlbCgpOwpAQCAtMTAwNDAsNyArMTAwNTQsNjAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9Ci0gICAgCisKKyAg
ICBzdHJ1Y3QgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSB7CisgICAg
ICAgIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldDsKKyAgICB9OworICAgIHN0cnVjdCBDYXB0dXJl
ZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UgeworICAgICAgICBpbnQ2NF90IHZhbHVlOwor
ICAgICAgICBpbnQzMl90IGN1cnJlbnRTdG9yZU9mZnNldDsKKyAgICB9OworICAgIHN0cnVjdCBD
YXB0dXJlZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCB7CisgICAgICAgIHVuc2lnbmVkIGFy
cmF5TGVuZ3RoOworICAgIH07CisgICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbUNyZWF0ZVJl
c3QgeworICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CisgICAgICAgIHVuc2lnbmVkIHBhcmFt
ZXRlck9mZnNldDsKKyAgICB9OworICAgIHN0cnVjdCBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0Vt
aXQgeworICAgICAgICBlbnVtIFR5cGUgeworICAgICAgICAgICAgUGhhbnRvbU5ld0FycmF5V2l0
aFNwcmVhZENhc2UsCisgICAgICAgICAgICBQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlLAorICAg
ICAgICAgICAgUGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kLAorICAgICAgICAgICAgUGhhbnRvbUNy
ZWF0ZVJlc3QKKyAgICAgICAgfSBtX3R5cGU7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAg
IENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UgbV9waGFudG9tTmV3QXJy
YXlXaXRoU3ByZWFkQ2FzZTsKKyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5
QnVmZmVyQ2FzZSBtX3BoYW50b21OZXdBcnJheUJ1ZmZlckNhc2U7CisgICAgICAgICAgICBDYXB0
dXJlZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCBtX3BoYW50b21OZXdBcnJheUJ1ZmZlckVu
ZDsKKyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhhbnRvbUNyZWF0ZVJlc3QgbV9waGFudG9tQ3Jl
YXRlUmVzdDsKKyAgICAgICAgfTsKKworICAgICAgICBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0Vt
aXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQsIHVuc2lnbmVkIGFyZykKKyAg
ICAgICAgICAgIDogbV90eXBlKHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3R5cGUg
PT0gUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UpCisgICAgICAgICAgICAgICAgbV9waGFu
dG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSA9IHsgYXJnIH07CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQodCA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQpOwor
ICAgICAgICAgICAgICAgIG1fcGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kID0geyBhcmcgfTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0Vt
aXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQsIGludDY0X3QgdmFsdWUsIGlu
dDMyX3QgY3VycmVudFN0b3JlT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3R5cGUodCkKKyAgICAg
ICAgICAgICwgbV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlKHsgdmFsdWUsIGN1cnJlbnRTdG9y
ZU9mZnNldCB9KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQodCA9PSBQaGFudG9tTmV3
QXJyYXlCdWZmZXJDYXNlKTsKKyAgICAgICAgfQorICAgICAgICBWYXJhcmdzU3ByZWFkQXJndW1l
bnRUb0VtaXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQsIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lLCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwg
dW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3R5cGUodCkKKyAgICAg
ICAgICAgICwgbV9waGFudG9tQ3JlYXRlUmVzdCh7IGlubGluZUNhbGxGcmFtZSwgbnVtYmVyT2ZB
cmd1bWVudHNUb1NraXAsIHBhcmFtZXRlck9mZnNldCB9KQorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQodCA9PSBQaGFudG9tQ3JlYXRlUmVzdCk7CisgICAgICAgIH0KKyAgICB9OworCiAg
ICAgdm9pZCBjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCgpCiAgICAgewogICAg
ICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwpAQCAtMTAwNTUsMTMgKzEwMTIyLDIwIEBAIHByaXZh
dGU6CiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDI+IHNwcmVhZExlbmd0aHM7CiAgICAgICAgIFZl
Y3RvcjxMVmFsdWUsIDg+IHBhdGNocG9pbnRBcmd1bWVudHM7CiAgICAgICAgIEhhc2hNYXA8SW5s
aW5lQ2FsbEZyYW1lKiwgTFZhbHVlLCBXVEY6OkRlZmF1bHRIYXNoPElubGluZUNhbGxGcmFtZSo+
LCBXVEY6Ok51bGxhYmxlSGFzaFRyYWl0czxJbmxpbmVDYWxsRnJhbWUqPj4gY2FjaGVkU3ByZWFk
TGVuZ3RoczsKKyAgICAgICAgLy8gQmVjYXVzZSB0aGUgcGF0Y2hwb2ludCBnZW5lcmF0b3IgcnVu
cyBsYXRlIGluIEFpciwgdGhlIGRmZyBncmFwaCB3aWxsIGJlIGxvbmcgZ29uZS4KKyAgICAgICAg
Ly8gU28gd2UgbXVzdCBsb2FkIGV2ZXJ5dGhpbmcgcmVsZXZhbnQgcmlnaHQgbm93LCBhbmQgbWFr
ZSBzdXJlIHRoYXQgdGhleSBhcmUgY2FwdHVyZWQgYnkgdmFsdWUgYnkgdGhlIGxhbWJkYSB0aGF0
IGFjdHMgYXMgdGhlIGdlbmVyYXRvcgorICAgICAgICAvLyBPbmUgcGFydGljdWxhcmx5IHRyaWNr
eSBwb2ludCBpcyB0aGF0IHRoZSBnZW5lcmF0b3Igd291bGQgbGlrZSB0byB3YWxrIG92ZXIgdGhl
IHRyZWUgcm9vdGVkIGF0IHRoaXMgbm9kZSwgZXhwbG9yaW5nIHRocm91Z2ggUGhhbnRvbU5ld0Fy
cmF5V2l0aFNwcmVhZCBhbmQgUGhhbnRvbU5ld0FycmF5QnVmZmVyLCBlbWl0dGluZyBjb2RlIGFs
b25nIHRoZSB3YXkuCisgICAgICAgIC8vIEluc3RlYWQsIHdlIGRvIHRoYXQgd2FsayBoZXJlLCBh
bmQgcmVjb3JkIGp1c3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHRoZSBmb2xsb3dpbmcgdmVjdG9y
IHRvIGVtaXQgdGhlIHJpZ2h0IGNvZGUgYXQgdGhlIGVuZCBvZiBBaXIuCisgICAgICAgIFZlY3Rv
cjxWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ+IGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRv
TGVmdDsKKyAgICAgICAgaW50IHN0b3JlT2Zmc2V0ID0gQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRP
ZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAgIHVu
c2lnbmVkIHBhcmFtc09mZnNldCA9IDQ7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAg
ICAgICAgYXV0byBwdXNoQW5kQ291bnRBcmd1bWVudHNGcm9tUmlnaHRUb0xlZnQgPSByZWN1cnNh
YmxlTGFtYmRhKFsmXShhdXRvIHNlbGYsIE5vZGUqIHRhcmdldCkgLT4gdm9pZCB7Ci0gICAgICAg
ICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21TcHJlYWQpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAodGFyZ2V0LT5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CiAg
ICAgICAgICAgICAgICAgc2VsZih0YXJnZXQtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodGFyZ2V0LT5v
cCgpID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQpIHsKKyAgICAgICAgICAgIGNhc2UgUGhh
bnRvbU5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0
VmVjdG9yID0gdGFyZ2V0LT5iaXRWZWN0b3IoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSB0YXJnZXQtPm51bUNoaWxkcmVuKCk7IGktLTsgKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChiaXRWZWN0b3ItPmdldChpKSkKQEAgLTEwMDcwLDI3ICsxMDE0NCw0NSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgKytzdGF0aWNBcmd1bWVudENvdW50OwogICAg
ICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gdGhpcy0+bG93SlNWYWx1ZSht
X2dyYXBoLnZhckFyZ0NoaWxkKHRhcmdldCwgaSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cGF0Y2hwb2ludEFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJl
YWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UsIHBh
cmFtc09mZnNldCArIChpbmRleCsrKX0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKLSAg
ICAgICAgICAgICAgICBzdGF0aWNBcmd1bWVudENvdW50ICs9IHRhcmdldC0+Y2FzdE9wZXJhbmQ8
SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIGNhc2UgUGhh
bnRvbU5ld0FycmF5QnVmZmVyOiB7CisgICAgICAgICAgICAgICAgYXV0byogYXJyYXkgPSB0YXJn
ZXQtPmNhc3RPcGVyYW5kPEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKTsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBhcnJheUxlbmd0aCA9IGFycmF5LT5sZW5ndGgoKTsKKyAgICAgICAgICAgICAg
ICBzdGF0aWNBcmd1bWVudENvdW50ICs9IGFycmF5TGVuZ3RoOworICAgICAgICAgICAgICAgIENo
ZWNrZWQ8aW50MzJfdD4gb2Zmc2V0Q291bnQgeyAxIH07CisgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gYXJyYXlMZW5ndGg7IGktLTsgKytvZmZzZXRDb3VudCkgeworICAgICAgICAg
ICAgICAgICAgICBDaGVja2VkPGludDMyX3Q+IGN1cnJlbnRTdG9yZU9mZnNldCB7IHN0b3JlT2Zm
c2V0IH07CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdG9yZU9mZnNldCAtPSAob2Zmc2V0
Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEJlY2F1c2UgdmFyYXJncyB2YWx1ZXMgYXJlIGRyYWluZWQgYXMgSlNW
YWx1ZSwgd2Ugc2hvdWxkIG5vdCBnZW5lcmF0ZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAv
LyBpbiBEb3VibGUgZm9ybSBldmVuIGlmIFBoYW50b21OZXdBcnJheUJ1ZmZlcidzIGluZGV4aW5n
VHlwZSBpcyBBcnJheVdpdGhEb3VibGUuCisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFs
dWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPmdldChpKSk7CisgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJhcmdzU3ByZWFkQXJn
dW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UsIHZhbHVlLCBjdXJy
ZW50U3RvcmVPZmZzZXQudmFsdWUoKSB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJl
YWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kLCBhcnJheUxl
bmd0aCB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tQ3JlYXRlUmVzdCk7
Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRhcmdldC0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lw
KCk7Ci0gICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gY2FjaGVkU3ByZWFkTGVuZ3Rocy5lbnN1
cmUoaW5saW5lQ2FsbEZyYW1lLCBbJl0gKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBtX291
dC56ZXJvRXh0UHRyKHRoaXMtPmdldFNwcmVhZExlbmd0aEZyb21JbmxpbmVDYWxsRnJhbWUoaW5s
aW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkpOwotICAgICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgcGF0Y2hwb2ludEFyZ3VtZW50cy5hcHBlbmQo
bGVuZ3RoKTsKLSAgICAgICAgICAgIHNwcmVhZExlbmd0aHMuYXBwZW5kKGxlbmd0aCk7CisgICAg
ICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OiB7CisgICAgICAgICAgICAgICAgSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0YXJnZXQtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCA9IHRhcmdldC0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQgPSBwYXJhbXNPZmZzZXQgKyAoaW5kZXgrKyk7
CisgICAgICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGNhY2hlZFNwcmVhZExlbmd0aHMuZW5z
dXJlKGlubGluZUNhbGxGcmFtZSwgWyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1fb3V0Lnplcm9FeHRQdHIodGhpcy0+Z2V0U3ByZWFkTGVuZ3RoRnJvbUlubGluZUNhbGxGcmFt
ZShpbmxpbmVDYWxsRnJhbWUsIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKSk7CisgICAgICAgICAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnRBcmd1
bWVudHMuYXBwZW5kKGxlbmd0aCk7CisgICAgICAgICAgICAgICAgc3ByZWFkTGVuZ3Rocy5hcHBl
bmQobGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNUb0VtaXRGcm9tUmlnaHRUb0xl
ZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlOjpQaGFudG9tQ3Jl
YXRlUmVzdCwgaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgcGFyYW1l
dGVyT2Zmc2V0IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7Ci0KICAgICAgICAgcHVzaEFuZENv
dW50QXJndW1lbnRzRnJvbVJpZ2h0VG9MZWZ0KGFyZ3VtZW50cyk7CisKICAgICAgICAgTFZhbHVl
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gbV9vdXQuY29uc3RJbnRQdHIoc3RhdGljQXJn
dW1lbnRDb3VudCArIDEpOwogICAgICAgICBmb3IgKExWYWx1ZSBsZW5ndGggOiBzcHJlYWRMZW5n
dGhzKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBtX291dC5hZGQo
bGVuZ3RoLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CkBAIC0xMDExOCwxMiArMTAyMTAs
MTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKIAogICAgICAg
ICBtX3Byb2MucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMobWluaW11bUpTQ2FsbEFyZWFT
aXplKTsKLSAgICAgICAgCisKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9y
aWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmln
aW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBh
dXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKLSAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBbPSwgYXJndW1lbnRzVG9FbWl0
ID0gV1RGTW92ZShhcmd1bWVudHNUb0VtaXRGcm9tUmlnaHRUb0xlZnQpXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CiAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1
ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CkBAIC0xMDEzNyw3ICsxMDIzMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdG
b3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBq
aXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9j
aygpLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKIAogICAgICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojp2
b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTEwMjAxLDc0ICsxMDI5NSw1NCBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIyLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUjEsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQpKTsKIAotICAgICAgICAgICAgICAgICAgICBpbnQgc3RvcmVPZmZzZXQg
PSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKTsKLQotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJhbXNPZmZz
ZXQgPSA0OwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gZW1pdEFyZ3VtZW50c0Zyb21SaWdodFRvTGVmdCA9IHJlY3Vyc2Fi
bGVMYW1iZGEoWyZdKGF1dG8gc2VsZiwgTm9kZSogdGFyZ2V0KSAtPiB2b2lkIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYodGFyZ2V0LT5jaGlsZDEoKS5ub2RlKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBhcmd1bWVudFRvRW1pdCA6IGFyZ3VtZW50c1RvRW1pdCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmd1bWVudFRvRW1pdC5tX3R5cGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpQ
aGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZTogeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldCA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5l
d0FycmF5V2l0aFNwcmVhZENhc2UucGFyYW1ldGVyT2Zmc2V0OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19j
YXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0VmFsdWVGcm9tUmVwKHBhcmFtc1twYXJhbWV0ZXJPZmZzZXRdLCBzY3JhdGNoR1BSMyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsIEND
YWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxw
ZXJzOjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IHRh
cmdldC0+Yml0VmVjdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gdGFyZ2V0LT5udW1DaGlsZHJlbigpOyBpLS07ICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYml0VmVjdG9yLT5nZXQoaSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmKHN0YXRlLT5ncmFwaC52YXJBcmdDaGlsZCh0YXJnZXQs
IGkpLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIyKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRnJvbVJlcChwYXJhbXNb
cGFyYW1zT2Zmc2V0ICsgKGluZGV4KyspXSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2Ny
YXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIHN0b3JlT2Zm
c2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlBo
YW50b21OZXdBcnJheUJ1ZmZlckNhc2U6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHZhbHVlID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNl
LnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY3VycmVudFN0b3Jl
T2Zmc2V0ID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlLmN1cnJl
bnRTdG9yZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSksIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywgQ0NhbGxIZWxwZXJzOjpC
YXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWln
aHQsIGN1cnJlbnRTdG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJheUJ1ZmZlcikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGFycmF5ID0gdGFyZ2V0LT5jYXN0T3BlcmFuZDxK
U0ltbXV0YWJsZUJ1dHRlcmZseSo+KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hl
Y2tlZDxpbnQzMl90PiBvZmZzZXRDb3VudCB7IDEgfTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheS0+bGVuZ3RoKCk7IGktLTsgKytvZmZzZXRDb3Vu
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHZhcmFyZ3Mg
dmFsdWVzIGFyZSBkcmFpbmVkIGFzIEpTVmFsdWUsIHdlIHNob3VsZCBub3QgZ2VuZXJhdGUgdmFs
dWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gRG91YmxlIGZvcm0gZXZl
biBpZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRleGluZ1R5cGUgaXMgQXJyYXlXaXRoRG91
YmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0gSlNW
YWx1ZTo6ZW5jb2RlKGFycmF5LT5nZXQoaSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSksIHNjcmF0Y2hH
UFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBj
dXJyZW50U3RvcmVPZmZzZXQgeyBzdG9yZU9mZnNldCB9OwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50U3RvcmVPZmZzZXQgLT0gKG9mZnNldENvdW50ICogc3RhdGljX2Nh
c3Q8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNo
R1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBjdXJyZW50U3RvcmVPZmZzZXQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90
PihhcnJheS0+bGVuZ3RoKCkpKSwgc2NyYXRjaEdQUjIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFyYXJnc1NwcmVh
ZEFyZ3VtZW50VG9FbWl0OjpQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQ6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgYXJyYXlMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kLmFycmF5TGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihhcnJheUxlbmd0aCksIHNjcmF0Y2hHUFIyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGFyZ2V0LT5vcCgpID09IFBoYW50b21D
cmVhdGVSZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwID0gdGFyZ2V0LT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBCMzo6VmFsdWVSZXAgbnVtQXJndW1lbnRzVG9Db3B5ID0gcGFyYW1zW3BhcmFt
c09mZnNldCArIChpbmRleCsrKV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZy
b21SZXAobnVtQXJndW1lbnRzVG9Db3B5LCBzY3JhdGNoR1BSMyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbG9hZE9mZnNldCA9IChBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50c1N0YXJ0
KGlubGluZUNhbGxGcmFtZSkub2Zmc2V0KCkgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIGRvbmUgPSBqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywg
c2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wU3RhcnQgPSBq
aXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlciwgc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6VGltZXNFaWdo
dCwgbG9hZE9mZnNldCksIHNjcmF0Y2hHUFI0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTY0KHNjcmF0Y2hHUFI0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJz
OjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoR1BSMykubGlua1Rv
KGxvb3BTdGFydCwgJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmpp
dCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICBlbWl0QXJn
dW1lbnRzRnJvbVJpZ2h0VG9MZWZ0KGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbUNyZWF0ZVJlc3Q6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbUNyZWF0ZVJlc3QuaW5saW5lQ2FsbEZyYW1l
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRz
VG9Ta2lwID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tQ3JlYXRlUmVzdC5udW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJhbWV0
ZXJPZmZzZXQgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50b21DcmVhdGVSZXN0LnBhcmFtZXRlck9m
ZnNldDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCBudW1Bcmd1
bWVudHNUb0NvcHkgPSBwYXJhbXNbcGFyYW1ldGVyT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAobnVtQXJndW1lbnRzVG9Db3B5LCBzY3JhdGNoR1BS
Myk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvYWRPZmZzZXQgPSAoQXNzZW1i
bHlIZWxwZXJzOjphcmd1bWVudHNTdGFydChpbmxpbmVDYWxsRnJhbWUpLm9mZnNldCgpICsgbnVt
YmVyT2ZBcmd1bWVudHNUb1NraXApICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IGppdC5icmFuY2hU
ZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb29wU3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihz
dGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19j
YXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlciwgc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgbG9hZE9mZnNl
dCksIHNjcmF0Y2hHUFI0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2
NChzY3JhdGNoR1BSNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpCYXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRp
bWVzRWlnaHQsIHN0b3JlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoR1BSMykubGlua1Rv
KGxvb3BTdGFydCwgJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9udFRo
cm93ID0gaml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0
KTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Zv
clZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVP
cmlnaW4pKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGpp
dC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKTsKICAgICAgICAgICAgICAgICAgICAg
aml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwpA
QCAtMTAyODIsOSArMTAzNTYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTY0KHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdCgwKSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBj
YWxsVHlwZTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RWYXJh
cmdzIHx8IG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3MpCisgICAgICAgICAg
ICAgICAgaWYgKG5vZGVPcCA9PSBDb25zdHJ1Y3RWYXJhcmdzIHx8IG5vZGVPcCA9PSBDb25zdHJ1
Y3RGb3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlu
a0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+
b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVPcCA9PSBUYWlsQ2FsbFZhcmFy
Z3MgfHwgbm9kZU9wID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCiAgICAgICAgICAgICAgICAg
ICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZhcmFyZ3M7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6
Q2FsbFZhcmFyZ3M7CkBAIC0xMDMxMiw3ICsxMDM4Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC0xMDQxOCw2ICsxMDQ5Miwx
NCBAQCBwcml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
RGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0
YXRlOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBz
ZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOworICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkp
CisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5jaGlsZDMoKS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmxp
bmVDYWxsRnJhbWUgPSBzZW1hbnRpY05vZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCk7CisgICAg
ICAgIENhbGxWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmNhbGxWYXJhcmdzRGF0YSgpOworICAg
ICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTA0MzMsOCArMTA1
MTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2Rl
LT5jYWxsVmFyYXJnc0RhdGEoKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9y
aWdpbik7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDE7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHBhcmFtc1thcmdJbmRleCsrXS5ncHIoKTsKQEAg
LTEwNTE4LDE4ICsxMDU5OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNrSGVpZ2h0IC8gc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIyKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOwotICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5jaGlsZDMoKS0+b3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gZW1pdFNldHVwVmFyYXJnc0Zy
YW1lRmFzdENhc2UgbW9kaWZpZXMgdGhlIHN0YWNrIHBvaW50ZXIgaWYgaXQgc3VjY2VlZHMuCiAg
ICAgICAgICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKCp2bSwgaml0
LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgaW5s
aW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2UpOwogCiAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKICAg
ICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxv
d0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKTsKICAgICAgICAgICAg
ICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCgqKSgpPihv
cGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93
KTsKQEAgLTEwNTM3LDcgKzEwNjEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ZG9uZS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tI
ZWlnaHQgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgc2NyYXRjaEdQUjEpOwotICAgICAgICAg
ICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2l6ZUZyYW1l
Rm9yVmFyYXJncyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksIGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdz
KT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwg
YXJndW1lbnRzR1BSLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0
YS0+Zmlyc3RWYXJBcmdPZmZzZXQpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNl
cHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCgqKSgpPihvcGVyYXRpb25TaXplRnJhbWVGb3JW
YXJhcmdzKSk7CiAKQEAgLTEwNTQ2LDcgKzEwNjIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgYXJndW1lbnRzTGF0ZVJlcC5lbWl0UmVzdG9yZShqaXQsIGFyZ3VtZW50c0dQUik7
CiAgICAgICAgICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUoaml0LCBzY3JhdGNoR1BS
MSwgZmFsc2UsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1pbmltdW1KU0NhbGxBcmVh
U2l6ZSksIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
LSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
blNldHVwVmFyYXJnc0ZyYW1lKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwgc2NyYXRjaEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25TZXR1cFZhcmFyZ3NGcmFtZSk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNl
bWFudGljTm9kZU9yaWdpbiksIHNjcmF0Y2hHUFIyLCBhcmd1bWVudHNHUFIsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSwgc2NyYXRjaEdQUjEpOwog
ICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24oaml0LnZtKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2
b2lkKCopKCk+KG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKSk7CiAgICAgICAgICAgICAgICAg
ICAgIApAQCAtMTA1NjMsOSArMTA2MzksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDApKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBl
IGNhbGxUeXBlOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENvbnN0cnVjdFZh
cmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJncykKKyAgICAgICAg
ICAgICAgICBpZiAobm9kZU9wID09IENvbnN0cnVjdFZhcmFyZ3MgfHwgbm9kZU9wID09IENvbnN0
cnVjdEZvcndhcmRWYXJhcmdzKQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxM
aW5rSW5mbzo6Q29uc3RydWN0VmFyYXJnczsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChub2Rl
LT5vcCgpID09IFRhaWxDYWxsVmFyYXJncyB8fCBub2RlLT5vcCgpID09IFRhaWxDYWxsRm9yd2Fy
ZFZhcmFyZ3MpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZU9wID09IFRhaWxDYWxsVmFy
YXJncyB8fCBub2RlT3AgPT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAg
ICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxsVmFyYXJnczsKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZv
OjpDYWxsVmFyYXJnczsKQEAgLTEwNTkxLDcgKzEwNjY3LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJl
c3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTEwNjY1LDYgKzEwNzQx
LDggQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdp
bkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBz
ZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIGF1dG8g
ZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpLnZhbHVlKCk7CiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9
LCAmdm1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKQEAgLTEwNjc5LDcgKzEwNzU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkp
LAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBq
aXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9j
aygpLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIEdQUkluZm86OnJl
Z1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJ
bmZvOjpyZWdUMSk7CkBAIC0xMDY5MSw3ICsxMDc2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAr
IHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAgICAgICAgICAgICAgcmVxdWlyZWRCeXRlcyA9
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVk
Qnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihlY21hTW9kZSksIEdQUkluZm86
OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpy
ZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1
bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ2FsbEV2YWwpKSwgR1BSSW5mbzo6bm9u
UHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKQEAgLTEyMjQwLDEyICsxMjMxOCwxMiBAQCBwcml2
YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAg
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBOb2RlKiBub2RlID0g
bV9ub2RlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFk
ZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAg
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9u
LmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGljTm9kZU9yaWdpbik7
CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9y
IG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1w
TGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24o
cGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTEyMjYzLDEyICsxMjM0MSwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6Y3JlYXRl
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luIGNhbGxTaXRlSW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1
YnNjcmlwdFZhbHVlLCBiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJldHVybkdQUikpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRJbkJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNl
LCBzdWJzY3JpcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0
dXJuR1BSKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMjg2LDE2ICsxMjM2NCwxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBJbkJ5S2luZDo6Tm9ybWFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3Vic2NyaXB0KS5jYWxsKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9y
aWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCByZXR1cm5HUFIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTI1MjIsNiArMTI2MDAsNyBAQCBwcml2YXRlOgog
ICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxl
ID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKIAorICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdp
bi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAg
ICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xMjU0NSwxNCArMTI2MjQsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxs
KHByb3RvdHlwZUdQUikpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRD
b2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1v
bi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChzZW1hbnRpY05vZGVPcmlnaW4p
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVj
dCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2Fs
bFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc2NyYXRjaEdQUiwKICAg
ICAgICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIsIHByb3RvdHlwZUlzT2JqZWN0KTsKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTEyNTY3LDkg
KzEyNjQ2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9y
aWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRp
bWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVH
UFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAg
LTE0MDI3LDEyICsxNDEwNiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9
ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29k
ZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24u
Y29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoc2VtYW50aWNOb2RlT3JpZ2luKTsK
IAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Ig
b3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0PiBleGNlcHRpb25zID0KQEAgLTE0MDQ0LDcgKzE0MTI0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5k
KHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRv
ciA9IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBzZW1hbnRpY05vZGVPcmlnaW4s
IGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAogICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCB0eXBlKTsKIApA
QCAtMTQwNjAsOSArMTQxNDAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdw
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2lu
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlu
a1RvKGRvbmUsICZqaXQpOwpAQCAtMTQwOTYsMTIgKzE0MTc2LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2Vt
YW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAg
ICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxT
aXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChz
ZW1hbnRpY05vZGVPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGly
ZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94
PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQpAQCAtMTQxMTMsNyArMTQxOTQs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAogICAgICAgICAg
ICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46
OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1
ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSk7CiAKQEAgLTE0
MTI5LDkgKzE0MjEwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihp
ZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtMTQ1MjYsNiArMTQ2MDcsNyBAQCBwcml2
YXRlOgogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9kZSog
bm9kZSA9IG1fbm9kZTsKICAgICAgICAgTm9kZVR5cGUgb3AgPSBtX25vZGUtPm9wKCk7CisgICAg
ICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OwogICAgICAgICBKU1ZhbHVlIGNoaWxkMUNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG1fbm9k
ZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAKICAgICAgICAgYXV0byBub2RlSW5kZXggPSBtX25vZGVJ
bmRleEluR3JhcGg7CkBAIC0xNDU0Nyw3ICsxNDYyOSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgICAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0gZXhpdERlc2NyaXB0b3ItPmVt
aXRPU1JFeGl0TGF0ZXIoKnN0YXRlLCBCYWRUeXBlLCBvcmlnaW4sIHBhcmFtcywgbm9kZUluZGV4
LCBvc3JFeGl0QXJndW1lbnRPZmZzZXQpOwogCi0gICAgICAgICAgICAgICAgU25pcHBldFBhcmFt
cyBkb21KSVRQYXJhbXMoKnN0YXRlLCBwYXJhbXMsIG5vZGUsIG51bGxwdHIsIFdURk1vdmUocmVn
cyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICAgICAgICAg
ICAgICBTbmlwcGV0UGFyYW1zIGRvbUpJVFBhcmFtcygqc3RhdGUsIHBhcmFtcywgc2VtYW50aWNO
b2RlT3JpZ2luLCBudWxscHRyLCBXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdU
Rk1vdmUoZnBTY3JhdGNoKSk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCBmYWlsdXJlQ2FzZXMgPSBkb21KSVQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQYXJh
bXMpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgbm90SlNDYXN0RmFp
bHVyZUNhc2VzOwogICAgICAgICAgICAgICAgIGlmIChvcCA9PSBDaGVja05vdEpTQ2FzdCkgewpA
QCAtMTQ2NjcsNiArMTQ3NDksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9
ICZtX2Z0bFN0YXRlOwogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBDb2Rl
T3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CkBAIC0xNDY4OCw3ICsxNDc3MSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBC
b3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAotICAgICAgICAgICAg
ICAgIFNuaXBwZXRQYXJhbXMgZG9tSklUUGFyYW1zKCpzdGF0ZSwgcGFyYW1zLCBub2RlLCBleGNl
cHRpb25zLCBXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3Jh
dGNoKSk7CisgICAgICAgICAgICAgICAgU25pcHBldFBhcmFtcyBkb21KSVRQYXJhbXMoKnN0YXRl
LCBwYXJhbXMsIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucywgV1RGTW92ZShyZWdzKSwg
V1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgICAgICAgICAgICAg
IGRvbUpJVC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIGRvbUpJVFBhcmFtcyk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNhbGwoKTsK
QEAgLTE1NDQ1LDYgKzE1NTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRj
aHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVy
IH07CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3Jp
Z2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
CkBAIC0xNTQ3MCwxNiArMTU1NTQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRo
SnVtcExpc3QoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlvbiwgcGFyYW1zWzBd
LmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRp
Y05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMV0u
Z3ByKCksIHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3By
KCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlvbiwg
cGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRp
Y05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwpAQCAt
MTU1MTIsNiArMTU1OTYsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVy
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsK
ICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4g
c2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAg
LTE1NTMzLDkgKzE1NjE4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wTGlzdCgp
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50
aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIHNsb3dQYXRoRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAgICAgICAgICAgICAg
ICAgICAgIH0pOwpAQCAtMTU1NjksNiArMTU2NTQsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVh
cmx5UmVnaXN0ZXIgfTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAg
ICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
ewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKQEAgLTE1NTk2LDkgKzE1NjgyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFs
dWVCaXRVUlNoaWZ0OwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRoRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9y
aWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzFdLmdwcigpLCBwYXJh
bXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwpAQCAtMTk4OTEsNiArMTk5Nzcs
NyBAQCBwcml2YXRlOgogICAgICAgICBCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBibG9jay0+aW5k
ZXg7CiAgICAgICAgIHVuc2lnbmVkIG5vZGVJbmRleCA9IG5vZGUgPyBub2RlLT5pbmRleCgpIDog
VUlOVF9NQVg7CiAjaWYgIUFTU0VSVF9FTkFCTEVECisgICAgICAgIGF1dG8gbm9kZU9wID0gbm9k
ZSA/IG5vZGUtPm9wKCkgOiBMYXN0Tm9kZVR5cGU7CiAgICAgICAgIG1fb3V0LnBhdGNocG9pbnQo
Vm9pZCktPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xOTg5OCw3
ICsxOTk4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoYmxvY2tJbmRleCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlSW5kZXgpLCBH
UFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPm9wKCkpLCBH
UFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKG5vZGVPcCksIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAg
ICBqaXQuYWJvcnRXaXRoUmVhc29uKEZUTENyYXNoKTsKICAgICAgICAgICAgIH0pOwogI2Vsc2Ug
Ly8gQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBw
ZXRQYXJhbXMuY3BwCmluZGV4IDZkNjY4ODllZTUyMy4uZjY3NWMxOWY0YWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU25pcHBldFBhcmFtcy5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUgQXJndW1lbnRz
LCBzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+Ci1zdGF0aWMgdm9pZCBkaXNwYXRjaChDQ2FsbEhl
bHBlcnMmIGppdCwgRlRMOjpTdGF0ZSogc3RhdGUsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcywgREZHOjpOb2RlKiBub2RlLCBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1w
TGlzdD4gZXhjZXB0aW9ucywgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBPcGVyYXRpb25U
eXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cyBhcmd1bWVudHMsIHN0
ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5kZXguLi4+KQorc3RhdGljIHZvaWQgZGlzcGF0
Y2goQ0NhbGxIZWxwZXJzJiBqaXQsIEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2lu
LCBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucywgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBmcm9tLCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50cyBhcmd1bWVudHMsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5kZXgu
Li4+KQogewogICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogICAg
IHBhcmFtcy5hZGRMYXRlUGF0aChbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC00Miw3ICs0
Miw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoKENDYWxsSGVscGVycyYgaml0LCBGVEw6OlN0YXRl
KiBzdGF0ZSwgY29uc3QgQjM6OlN0YWNrbWFwR2VuCiAKICAgICAgICAgZnJvbS5saW5rKCZqaXQp
OwogICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGlj
Tm9kZU9yaWdpbiwKICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbiwgZXh0
cmFjdFJlc3VsdChyZXN1bHQpLCBzdGQ6OmdldDxBcmd1bWVudHNJbmRleD4oYXJndW1lbnRzKS4u
Lik7CiAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgIH0pOwpAQCAt
NTEsNyArNTEsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaChDQ2FsbEhlbHBlcnMmIGppdCwgRlRM
OjpTdGF0ZSogc3RhdGUsIGNvbnN0IEIzOjpTdGFja21hcEdlbgogI2RlZmluZSBKU0NfREVGSU5F
X0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIFwKICAgICB2
b2lkIFNuaXBwZXRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJl
c3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBc
Ci0gICAgICAgIGRpc3BhdGNoKGppdCwgJm1fc3RhdGUsIG1fcGFyYW1zLCBtX25vZGUsIG1fZXhj
ZXB0aW9ucywgZnJvbSwgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MsIHN0ZDo6bWFrZV9pbmRleF9z
ZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8ZGVjbHR5cGUoYXJncyk+Ojp2YWx1ZT4oKSk7IFwKKyAg
ICAgICAgZGlzcGF0Y2goaml0LCAmbV9zdGF0ZSwgbV9wYXJhbXMsIG1fc2VtYW50aWNOb2RlT3Jp
Z2luLCBtX2V4Y2VwdGlvbnMsIGZyb20sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzLCBzdGQ6Om1h
a2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPGRlY2x0eXBlKGFyZ3MpPjo6dmFsdWU+
KCkpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FM
TF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bmlwcGV0UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJh
bXMuaAppbmRleCAxYWYyYmQzOGY0ZGIuLjYwMGJlZjYxNDAxNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmgKQEAgLTM4LDExICszOCwxMSBAQCBjbGFz
cyBTdGF0ZTsKIAogY2xhc3MgU25pcHBldFBhcmFtcyBmaW5hbCA6IHB1YmxpYyBKU0M6OlNuaXBw
ZXRQYXJhbXMgewogcHVibGljOgotICAgIFNuaXBwZXRQYXJhbXMoU3RhdGUmIHN0YXRlLCBjb25z
dCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIERGRzo6Tm9kZSogbm9kZSwg
Qm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMsIFZlY3RvcjxWYWx1ZT4mJiBy
ZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQUlJlZz4mJiBmcFNjcmF0
Y2gpCisgICAgU25pcHBldFBhcmFtcyhTdGF0ZSYgc3RhdGUsIGNvbnN0IEIzOjpTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcywgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4sIEJv
eDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zLCBWZWN0b3I8VmFsdWU+JiYgcmVn
cywgVmVjdG9yPEdQUlJlZz4mJiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiYgZnBTY3JhdGNo
KQogICAgICAgICA6IEpTQzo6U25pcHBldFBhcmFtcyhzdGF0ZS52bSgpLCBXVEZNb3ZlKHJlZ3Mp
LCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSkKICAgICAgICAgLCBtX3N0
YXRlKHN0YXRlKQogICAgICAgICAsIG1fcGFyYW1zKHBhcmFtcykKLSAgICAgICAgLCBtX25vZGUo
bm9kZSkKKyAgICAgICAgLCBtX3NlbWFudGljTm9kZU9yaWdpbihzZW1hbnRpY05vZGVPcmlnaW4p
CiAgICAgICAgICwgbV9leGNlcHRpb25zKGV4Y2VwdGlvbnMpCiAgICAgewogICAgIH0KQEAgLTU0
LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0YXRlJiBtX3N0YXRlOwogICAgIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIG1fcGFyYW1zOwotICAgIERGRzo6Tm9kZSogbV9u
b2RlOworICAgIENvZGVPcmlnaW4gbV9zZW1hbnRpY05vZGVPcmlnaW47CiAgICAgQm94PENDYWxs
SGVscGVyczo6SnVtcExpc3Q+IG1fZXhjZXB0aW9uczsKIH07CiAK
</data>
<flag name="commit-queue"
          id="452035"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430580</attachid>
            <date>2021-06-04 08:35:12 -0700</date>
            <delta_ts>2021-06-08 15:03:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch226556</filename>
            <type>text/plain</type>
            <size>76591</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZkYjE4YTNiNTUxOS4uYTRlYWMxNzA1ODNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNi0wMyAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgdGhlIEZU
TChERkcpIGdyYXBoIGFmdGVyIGxvd2VyaW5nIHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NTYKKworICAgICAgICBSZXZpZXdlZCBieSBQ
aGlsIFBpemxvLgorCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCB3YXMgZGVh
bGluZyB3aXRoIGFsbCBvZiB0aGUgUGF0Y2hwb2ludHMgY3JlYXRlZCBieSBGVExMb3dlckRGR1Rv
QjM6IHRoZXkgZ2V0IGEgbGFtYmRhIGF0IHRoYXQgdGltZSwgd2hpY2ggdGhleSBleGVjdXRlIGF0
IHRoZSBlbmQgb2YgQWlyLCBhbmQgbWFueSBvZiB0aGVzZSBsYW1iZGFzIHdlcmUgY2FwdHVyaW5n
IGEgcG9pbnRlciB0byBzb21lIHBhcnRzIG9mIHRoZSBERkcgZ3JhcGggYW5kIHJlYWRpbmcgdGhy
b3VnaCBpdCB3aGVuIGJlaW5nIGV4ZWN1dGVkLgorICAgICAgICBJbiBhbGwgY2FzZXMgYnV0IG9u
ZSBpdCB3YXMgZWFzaWx5IGZpeGVkOiB0aGV5IHdlcmUgb25seSByZWFkaW5nIGEgZmV3IGJpdHMg
ZnJvbSBhIGdpdmVuIG5vZGUsIHNvIEkganVzdCByZWFkIHRoZXNlIGJpdHMgaW4gRlRMTG93ZXJE
RkdUb0IzLCBhbmQgY2FwdHVyZWQgdGhlbSAoYnkgdmFsdWUpIGluc3RlYWQgb2YgdGhlIHBvaW50
ZXIgdG8gdGhlIG5vZGUuCisgICAgICAgIFRoZSBleGNlcHRpb24gd2FzIGNvbXBpbGVDYWxsT3JD
b25zdHJ1Y3RWYXJhcmdzU3ByZWFkKCk6IGl0cyBwYXRjaHBvaW50IGdlbmVyYXRvciB3YXMgd2Fs
a2luZyB0aHJvdWdoIHRoZSBncmFwaCwgZmxhdHRlbmluZyBhIHRyZWUgb2YgUGhhbnRvbVNwcmVh
ZC9QaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkL1BoYW50b21OZXdBcnJheUJ1ZmZlci9QaGFudG9t
Q3JlYXRlUmVzdCwgZW1pdHRpbmcgc29tZSBjb2RlIGFsb25nIHRoZSB3YXkuCisgICAgICAgIFdl
IG5vdyBkbyB0aGlzIGZsYXR0ZW5pbmcgb2YgdGhlIHRyZWUgaW4gRlRMTG93ZXJERkdUb0IzLCBz
dG9yZSBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBsYXRlciBlbWl0IHRoZSByZXF1aXJlZCBj
b2RlIGluIGEgdmVjdG9yLCBhbmQgY2FwdHVyZSB0aGF0IHZlY3RvciBpbiB0aGUgbGFtYmRhICh0
aHJvdWdoIGEgbW92ZSBjYXB0dXJlLCB3aGljaCBpcyBhbGxvd2VkIHNpbmNlIEMrKzE0KS4gU2Vl
IGBzdHJ1Y3QgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0YCBmb3IgdGhlIGluZm9ybWF0aW9u
IHRoYXQgd2UgbmVlZCB0byBzdG9yZSBpbiB0aGF0IHZlY3Rvci4KKworICAgICAgICBJIHRlc3Rl
ZCB0aGlzIGNoYW5nZSBieSBjb21wbGV0aW5nIGEgZnVsbCBydW4gb2YgSmV0U3RyZWFtMiB3aXRo
IEFTQU4uCisgICAgICAgIEkgYWxzbyByYW4gdGhlIHN0cmVzcyB0ZXN0cyB3aXRoICJzcHJlYWQi
IGluIHRoZWlyIG5hbWUgaW4gRGVidWcgbW9kZS4KKworICAgICAgICAqIGIzL0IzU3BhcnNlQ29s
bGVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xlYXJBbGwp
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZyZWVERkdJUkFmdGVyTG93ZXJpbmcpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVuYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENhbGxPckNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVU
YWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OlZhcmFyZ3NT
cHJlYWRBcmd1bWVudFRvRW1pdDo6VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZh
cmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0UmlnaHRTaGlmdFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjcmFzaCk6CisKIDIwMjEtMDYtMDMgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtKU0NdIEltcGxlbWVudCBKSVQgSUNz
IGZvciBJbkJ5VmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDEx
MTAwODI2MDM5OC4uOWQ0OWZlNjMyNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcApAQCAtMTg2MSw2ICsxODYxLDI2IEBAIHZvaWQgR3JhcGg6OmNsZWFyQ1BTQ0ZHRGF0
YSgpCiAgICAgbV9jcHNDRkcgPSBudWxscHRyOwogfQogCit2b2lkIEdyYXBoOjpmcmVlREZHSVJB
ZnRlckxvd2VyaW5nKCkKK3sKKyAgICBtX2Jsb2Nrcy5jbGVhcigpOworICAgIG1fcm9vdHMuY2xl
YXIoKTsKKyAgICBtX3ZhckFyZ0NoaWxkcmVuLmNsZWFyKCk7CisgICAgbV9ub2Rlcy5jbGVhckFs
bCgpOworCisgICAgbV9ieXRlY29kZUxpdmVuZXNzLmNsZWFyKCk7CisgICAgbV9zYWZlVG9Mb2Fk
LmNsZWFyKCk7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWlu
YXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBt
X3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FDRkcgPSBudWxscHRyOworICAg
IG1fY3BzQ0ZHID0gbnVsbHB0cjsKKyAgICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CisgICAg
bV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2NvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzID0gbnVsbHB0cjsKK30KKwogdm9pZCBQcmVmaXg6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAppbmRleCA3NmY5ZGI4MmY5MTEuLjYyYTFmZWYzZGMyYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTA3NCw2ICsxMDc0LDggQEAgcHVibGljOgogICAg
ICAgICBtX2NhdGNoRW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlwb2ludERhdGEgeyBtYWNo
aW5lQ29kZSwgRml4ZWRWZWN0b3I8Rmx1c2hGb3JtYXQ+KFdURk1vdmUoYXJndW1lbnRGb3JtYXRz
KSksIGJ5dGVjb2RlSW5kZXggfSk7CiAgICAgfQogCisgICAgdm9pZCBmcmVlREZHSVJBZnRlckxv
d2VyaW5nKCk7CisKICAgICBTdGFja0NoZWNrIG1fc3RhY2tDaGVja2VyOwogICAgIFZNJiBtX3Zt
OwogICAgIFBsYW4mIG1fcGxhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwCmluZGV4IDI4Zjk4OWFlNzI0Ni4uNDFhYTYzM2ZmOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXRE
aXNhc3NlbWJsZXIobWFrZVVuaXF1ZTxCMzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOwogCisgICAg
aWYgKCFzaG91bGREdW1wRGlzYXNzZW1ibHkoKSAmJiAhT3B0aW9uczo6YXN5bmNEaXNhc3NlbWJs
eSgpICYmICFncmFwaC5jb21waWxhdGlvbigpICYmICFzdGF0ZS5wcm9jLT5uZWVkc1BDVG9Pcmln
aW5NYXAoKSkKKyAgICAgICAgZ3JhcGguZnJlZURGR0lSQWZ0ZXJMb3dlcmluZygpOworCiAgICAg
ewogICAgICAgICBHcmFwaFNhZmVwb2ludCBzYWZlcG9pbnQoc3RhdGUuZ3JhcGgsIHNhZmVwb2lu
dFJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCBkNzhkN2UzYWE5MmIuLjYwMTM4YTI3OTk2YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjM4MCw2ICsyMzgwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAg
Q29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAg
ICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOwpAQCAtMjQxMCwxMiArMjQxMSwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNob3VsZFNsb3dQ
YXRoUmVwYXRjaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3By
KCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksIHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGhJQykp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFu
dGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5j
YWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHBhcmFtc1sxXS5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
KCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2Rl
T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQ
YXRoQ2FsbCA9IGNhbGwuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBAIC0yNDM0
LDggKzI0MzUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwg
cGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRp
b25zLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
LCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFu
dGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgfQogCiAj
aWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yNDg3LDYgKzI0ODgsNyBAQCBwcml2YXRlOgog
ICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOwogICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2lu
IHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBA
IC0yNTIwLDEyICsyNTIyLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNo
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1z
WzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
YXRoSUMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLCBwYXJhbXNb
MV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1h
dGhJQykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0
ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
IHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG5vblJlcGF0Y2hpbmdG
dW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihzZW1hbnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtMjU0
NCw4ICsyNTQ2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
IHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNO
b2RlT3JpZ2luLCBleGNlcHRpb25zLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1z
WzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFU
UykKQEAgLTM5ODMsMTAgKzM5ODUsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSogc3Rh
dGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgYm9vbCBiYXNlSXNDZWxsID0gYWJzdHJhY3RWYWx1
ZShub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAgICAgICAgQ29kZU9yaWdpbiBu
b2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1h
bnRpY09yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhp
dCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTQwMDEsNyArNDAwNCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdw
cigpOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxH
ZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50
aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAogICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSk7CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKQEAg
LTQwMTksOSArNDAyMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRp
Y09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIs
IHByb3BlcnR5R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlu
a1RvKGRvbmUsICZqaXQpOwogCkBAIC00MTE1LDEwICs0MTE4LDExIEBAIHByaXZhdGU6CiAKICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIGJvb2wgYmFzZUlzQ2Vs
bCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAg
ICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0g
ICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+
Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0
ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5v
ZGVTZW1hbnRpY09yaWdpbik7CiAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBl
eGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgQm94PENDYWxsSGVs
cGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC00MTMyLDcgKzQxMzYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0gcGFyYW1zWzFdLmdwcigpOwogCiAg
ICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCisgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFj
Y2Vzc1R5cGUsCiAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOwogCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKQEAgLTQxNjIsOSArNDE2Niw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9
IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZh
bGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICBqaXQu
anVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtNDUyNCwxMyArNDUyOCwxNCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9p
bnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICAKKwor
ICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXggPQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVP
cmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFk
ZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICAgICAg
ICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5q
dW1wcyhqaXQpOwpAQCAtNDUzOSw3ICs0NTQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywg
Y2FsbFNpdGVJbmRleCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxK
SVRQdXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRl
SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50
U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAgICAgICAgICAgICAgICAgICAgcHV0S2luZCk7
CkBAIC00NTU0LDkgKzQ1NTksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52
YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRp
Y09yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0
cygpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKQEAgLTUyNDMsMTAgKzUyNDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgICAgIFN0
YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICAgICAgQ29kZU9yaWdpbiBub2RlU2Vt
YW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVP
cmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENv
ZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlU2VtYW50
aWNPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQg
dGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVs
cGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC01MjYxLDcgKzUyNjcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWws
CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZVNlbWFudGljT3JpZ2lu
LCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBK
U1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJv
cGVydHlJc1N0cmluZzsKQEAgLTUyODMsOSArNTI4OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CiAKQEAgLTU4NDMsMTIgKzU4NDksMTYgQEAgcHJpdmF0ZToKIAogICAgICAgICBT
dGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsK
KyAgICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWM7CisgICAgICAgIGF1dG8gY2hpbGQxVXNlS2luZCA9IG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKTsKKyAgICAgICAgYXV0byBjaGlsZDJVc2VLaW5kID0gbm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpOworICAgICAgICBhdXRvIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpOwog
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewog
ICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMt
PmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVl
Q2FsbFNpdGVJbmRleChub2RlU2VtYW50aWNPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgQm94
PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGpp
dCk7CkBAIC01ODYwLDcgKzU4NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFTU0VS
VChiYXNlLmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChyZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAKLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkMVVzZUtpbmQpCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CiAKICAgICAgICAgICAgICAgICBjb25z
dGV4cHIgYXV0byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IFsmXSAoKSB7CkBAIC01ODc1LDcgKzU4
ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMu
Z3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hpbGQyVXNlS2luZCA9PSBVbnR5cGVkVXNlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChK
U1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtNTg4NCwxMiArNTg5NCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHBy
IChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBh
cmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0
ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
YmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdz
KHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC01OTA2LDExICs1OTE2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihlY21hTW9kZSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwp
OwpAQCAtOTcxMSw2ICs5NzIxLDggQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0
ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7Cisg
ICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljOworICAgICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtOTcy
MiwxNiArOTczNCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGVTZW1hbnRpY09y
aWdpbik7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpDb25z
dHJ1Y3QgOiBDYWxsTGlua0luZm86OkNhbGwsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZU9wID09IENvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0IDog
Q2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgICAgICAgICBh
dXRvIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5lbWl0RmFzdFBhdGgoaml0LCBHUFJJbmZvOjpy
ZWdUMCwgSW52YWxpZEdQUlJlZywgQ2FsbExpbmtJbmZvOjpVc2VEYXRhSUM6Ok5vKTsKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAg
ICAgICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIGF1dG8gc2xv
d1BhdGhTdGFydCA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKIAogICAg
ICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKQEAgLTk4MjEsNiArOTgzMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9
IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKKyAgICAgICAgQ29kZU9yaWdpbiBz
ZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIFN0YXRl
KiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtOTg1NCw3ICs5ODY3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJncyA9IG51bVBhc3NlZEFy
Z3M7CiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lz
dGVycyhqaXQuY29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6RGlyZWN0VGFpbENhbGwsIEludmFsaWRHUFJS
ZWcpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBtYWluUGF0aCA9IGppdC5sYWJlbCgpOwpAQCAtOTg3MSw3ICs5ODg0LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0
aCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCB0b1NhdmUsIGppdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0
aW9uTGlua0RpcmVjdENhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY05vZGVP
cmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgSW52YWxpZEdQUlJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGNhbGxMaW5rSW5mbyksIGNhbGxlZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAg
ICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0RXhlY3V0YWJsZUR1cmluZ0NvbXBpbGF0aW9uKGV4ZWN1dGFibGUp
OwpAQCAtOTg4Niw3ICs5ODk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1h
bnRpY05vZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KAogICAgICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0
Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJlY3RDYWxsLCBJbnZhbGlkR1BSUmVnKTsKIApA
QCAtOTkxMyw3ICs5OTI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRp
b25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxp
bmtEaXJlY3RDYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRHUFJSZWcs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxlZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0Lmp1bXAoKS5saW5rVG8obWFpblBhdGgsICZqaXQpOwpAQCAtOTk4OSw2ICsxMDAwMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmlnaW5E
ZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3Rh
dGU7CiAgICAgICAgIFZNKiB2bSA9ICZ0aGlzLT52bSgpOworICAgICAgICBDb2RlT3JpZ2luIHNl
bWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0x
MDAyNiw3ICsxMDA0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgc2xvd1BhdGhTaHVm
Zmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOwog
ICAgICAgICAgICAgICAgIHNsb3dQYXRoU2h1ZmZsZXIucHJlcGFyZUZvclNsb3dQYXRoKCk7CiAK
LSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEdQ
UkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2Rl
T3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8t
PmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGRvbmVMb2Nh
dGlvbiA9IGppdC5sYWJlbCgpOwpAQCAtMTAwNDAsNyArMTAwNTQsNjAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9Ci0gICAgCisKKyAg
ICBzdHJ1Y3QgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSB7CisgICAg
ICAgIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldDsKKyAgICB9OworICAgIHN0cnVjdCBDYXB0dXJl
ZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UgeworICAgICAgICBpbnQ2NF90IHZhbHVlOwor
ICAgICAgICBpbnQzMl90IGN1cnJlbnRTdG9yZU9mZnNldDsKKyAgICB9OworICAgIHN0cnVjdCBD
YXB0dXJlZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCB7CisgICAgICAgIHVuc2lnbmVkIGFy
cmF5TGVuZ3RoOworICAgIH07CisgICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbUNyZWF0ZVJl
c3QgeworICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CisgICAgICAgIHVuc2lnbmVkIHBhcmFt
ZXRlck9mZnNldDsKKyAgICB9OworICAgIHN0cnVjdCBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0Vt
aXQgeworICAgICAgICBlbnVtIFR5cGUgeworICAgICAgICAgICAgUGhhbnRvbU5ld0FycmF5V2l0
aFNwcmVhZENhc2UsCisgICAgICAgICAgICBQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlLAorICAg
ICAgICAgICAgUGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kLAorICAgICAgICAgICAgUGhhbnRvbUNy
ZWF0ZVJlc3QKKyAgICAgICAgfSBtX3R5cGU7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAg
IENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UgbV9waGFudG9tTmV3QXJy
YXlXaXRoU3ByZWFkQ2FzZTsKKyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5
QnVmZmVyQ2FzZSBtX3BoYW50b21OZXdBcnJheUJ1ZmZlckNhc2U7CisgICAgICAgICAgICBDYXB0
dXJlZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCBtX3BoYW50b21OZXdBcnJheUJ1ZmZlckVu
ZDsKKyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhhbnRvbUNyZWF0ZVJlc3QgbV9waGFudG9tQ3Jl
YXRlUmVzdDsKKyAgICAgICAgfTsKKworICAgICAgICBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0Vt
aXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQsIHVuc2lnbmVkIGFyZykKKyAg
ICAgICAgICAgIDogbV90eXBlKHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3R5cGUg
PT0gUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UpCisgICAgICAgICAgICAgICAgbV9waGFu
dG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSA9IHsgYXJnIH07CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQodCA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQpOwor
ICAgICAgICAgICAgICAgIG1fcGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kID0geyBhcmcgfTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0Vt
aXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQsIGludDY0X3QgdmFsdWUsIGlu
dDMyX3QgY3VycmVudFN0b3JlT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3R5cGUodCkKKyAgICAg
ICAgICAgICwgbV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlKHsgdmFsdWUsIGN1cnJlbnRTdG9y
ZU9mZnNldCB9KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQodCA9PSBQaGFudG9tTmV3
QXJyYXlCdWZmZXJDYXNlKTsKKyAgICAgICAgfQorICAgICAgICBWYXJhcmdzU3ByZWFkQXJndW1l
bnRUb0VtaXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQsIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lLCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwg
dW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3R5cGUodCkKKyAgICAg
ICAgICAgICwgbV9waGFudG9tQ3JlYXRlUmVzdCh7IGlubGluZUNhbGxGcmFtZSwgbnVtYmVyT2ZB
cmd1bWVudHNUb1NraXAsIHBhcmFtZXRlck9mZnNldCB9KQorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQodCA9PSBQaGFudG9tQ3JlYXRlUmVzdCk7CisgICAgICAgIH0KKyAgICB9OworCiAg
ICAgdm9pZCBjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCgpCiAgICAgewogICAg
ICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwpAQCAtMTAwNTUsMTMgKzEwMTIyLDIwIEBAIHByaXZh
dGU6CiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDI+IHNwcmVhZExlbmd0aHM7CiAgICAgICAgIFZl
Y3RvcjxMVmFsdWUsIDg+IHBhdGNocG9pbnRBcmd1bWVudHM7CiAgICAgICAgIEhhc2hNYXA8SW5s
aW5lQ2FsbEZyYW1lKiwgTFZhbHVlLCBXVEY6OkRlZmF1bHRIYXNoPElubGluZUNhbGxGcmFtZSo+
LCBXVEY6Ok51bGxhYmxlSGFzaFRyYWl0czxJbmxpbmVDYWxsRnJhbWUqPj4gY2FjaGVkU3ByZWFk
TGVuZ3RoczsKKyAgICAgICAgLy8gQmVjYXVzZSB0aGUgcGF0Y2hwb2ludCBnZW5lcmF0b3IgcnVu
cyBsYXRlIGluIEFpciwgdGhlIGRmZyBncmFwaCB3aWxsIGJlIGxvbmcgZ29uZS4KKyAgICAgICAg
Ly8gU28gd2UgbXVzdCBsb2FkIGV2ZXJ5dGhpbmcgcmVsZXZhbnQgcmlnaHQgbm93LCBhbmQgbWFr
ZSBzdXJlIHRoYXQgdGhleSBhcmUgY2FwdHVyZWQgYnkgdmFsdWUgYnkgdGhlIGxhbWJkYSB0aGF0
IGFjdHMgYXMgdGhlIGdlbmVyYXRvcgorICAgICAgICAvLyBPbmUgcGFydGljdWxhcmx5IHRyaWNr
eSBwb2ludCBpcyB0aGF0IHRoZSBnZW5lcmF0b3Igd291bGQgbGlrZSB0byB3YWxrIG92ZXIgdGhl
IHRyZWUgcm9vdGVkIGF0IHRoaXMgbm9kZSwgZXhwbG9yaW5nIHRocm91Z2ggUGhhbnRvbU5ld0Fy
cmF5V2l0aFNwcmVhZCBhbmQgUGhhbnRvbU5ld0FycmF5QnVmZmVyLCBlbWl0dGluZyBjb2RlIGFs
b25nIHRoZSB3YXkuCisgICAgICAgIC8vIEluc3RlYWQsIHdlIGRvIHRoYXQgd2FsayBoZXJlLCBh
bmQgcmVjb3JkIGp1c3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHRoZSBmb2xsb3dpbmcgdmVjdG9y
IHRvIGVtaXQgdGhlIHJpZ2h0IGNvZGUgYXQgdGhlIGVuZCBvZiBBaXIuCisgICAgICAgIFZlY3Rv
cjxWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ+IGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRv
TGVmdDsKKyAgICAgICAgaW50IHN0b3JlT2Zmc2V0ID0gQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRP
ZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAgIHVu
c2lnbmVkIHBhcmFtc09mZnNldCA9IDQ7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAg
ICAgICAgYXV0byBwdXNoQW5kQ291bnRBcmd1bWVudHNGcm9tUmlnaHRUb0xlZnQgPSByZWN1cnNh
YmxlTGFtYmRhKFsmXShhdXRvIHNlbGYsIE5vZGUqIHRhcmdldCkgLT4gdm9pZCB7Ci0gICAgICAg
ICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21TcHJlYWQpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAodGFyZ2V0LT5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CiAg
ICAgICAgICAgICAgICAgc2VsZih0YXJnZXQtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodGFyZ2V0LT5v
cCgpID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQpIHsKKyAgICAgICAgICAgIGNhc2UgUGhh
bnRvbU5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0
VmVjdG9yID0gdGFyZ2V0LT5iaXRWZWN0b3IoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSB0YXJnZXQtPm51bUNoaWxkcmVuKCk7IGktLTsgKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChiaXRWZWN0b3ItPmdldChpKSkKQEAgLTEwMDcwLDI3ICsxMDE0NCw0NSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgKytzdGF0aWNBcmd1bWVudENvdW50OwogICAg
ICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gdGhpcy0+bG93SlNWYWx1ZSht
X2dyYXBoLnZhckFyZ0NoaWxkKHRhcmdldCwgaSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cGF0Y2hwb2ludEFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJl
YWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UsIHBh
cmFtc09mZnNldCArIChpbmRleCsrKX0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKLSAg
ICAgICAgICAgICAgICBzdGF0aWNBcmd1bWVudENvdW50ICs9IHRhcmdldC0+Y2FzdE9wZXJhbmQ8
SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIGNhc2UgUGhh
bnRvbU5ld0FycmF5QnVmZmVyOiB7CisgICAgICAgICAgICAgICAgYXV0byogYXJyYXkgPSB0YXJn
ZXQtPmNhc3RPcGVyYW5kPEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKTsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBhcnJheUxlbmd0aCA9IGFycmF5LT5sZW5ndGgoKTsKKyAgICAgICAgICAgICAg
ICBzdGF0aWNBcmd1bWVudENvdW50ICs9IGFycmF5TGVuZ3RoOworICAgICAgICAgICAgICAgIENo
ZWNrZWQ8aW50MzJfdD4gb2Zmc2V0Q291bnQgeyAxIH07CisgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gYXJyYXlMZW5ndGg7IGktLTsgKytvZmZzZXRDb3VudCkgeworICAgICAgICAg
ICAgICAgICAgICBDaGVja2VkPGludDMyX3Q+IGN1cnJlbnRTdG9yZU9mZnNldCB7IHN0b3JlT2Zm
c2V0IH07CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdG9yZU9mZnNldCAtPSAob2Zmc2V0
Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEJlY2F1c2UgdmFyYXJncyB2YWx1ZXMgYXJlIGRyYWluZWQgYXMgSlNW
YWx1ZSwgd2Ugc2hvdWxkIG5vdCBnZW5lcmF0ZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAv
LyBpbiBEb3VibGUgZm9ybSBldmVuIGlmIFBoYW50b21OZXdBcnJheUJ1ZmZlcidzIGluZGV4aW5n
VHlwZSBpcyBBcnJheVdpdGhEb3VibGUuCisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFs
dWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPmdldChpKSk7CisgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJhcmdzU3ByZWFkQXJn
dW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UsIHZhbHVlLCBjdXJy
ZW50U3RvcmVPZmZzZXQudmFsdWUoKSB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJl
YWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kLCBhcnJheUxl
bmd0aCB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tQ3JlYXRlUmVzdCk7
Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRhcmdldC0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lw
KCk7Ci0gICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gY2FjaGVkU3ByZWFkTGVuZ3Rocy5lbnN1
cmUoaW5saW5lQ2FsbEZyYW1lLCBbJl0gKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBtX291
dC56ZXJvRXh0UHRyKHRoaXMtPmdldFNwcmVhZExlbmd0aEZyb21JbmxpbmVDYWxsRnJhbWUoaW5s
aW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkpOwotICAgICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgcGF0Y2hwb2ludEFyZ3VtZW50cy5hcHBlbmQo
bGVuZ3RoKTsKLSAgICAgICAgICAgIHNwcmVhZExlbmd0aHMuYXBwZW5kKGxlbmd0aCk7CisgICAg
ICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OiB7CisgICAgICAgICAgICAgICAgSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0YXJnZXQtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCA9IHRhcmdldC0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQgPSBwYXJhbXNPZmZzZXQgKyAoaW5kZXgrKyk7
CisgICAgICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGNhY2hlZFNwcmVhZExlbmd0aHMuZW5z
dXJlKGlubGluZUNhbGxGcmFtZSwgWyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1fb3V0Lnplcm9FeHRQdHIodGhpcy0+Z2V0U3ByZWFkTGVuZ3RoRnJvbUlubGluZUNhbGxGcmFt
ZShpbmxpbmVDYWxsRnJhbWUsIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKSk7CisgICAgICAgICAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnRBcmd1
bWVudHMuYXBwZW5kKGxlbmd0aCk7CisgICAgICAgICAgICAgICAgc3ByZWFkTGVuZ3Rocy5hcHBl
bmQobGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNUb0VtaXRGcm9tUmlnaHRUb0xl
ZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlOjpQaGFudG9tQ3Jl
YXRlUmVzdCwgaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgcGFyYW1l
dGVyT2Zmc2V0IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7Ci0KICAgICAgICAgcHVzaEFuZENv
dW50QXJndW1lbnRzRnJvbVJpZ2h0VG9MZWZ0KGFyZ3VtZW50cyk7CisKICAgICAgICAgTFZhbHVl
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gbV9vdXQuY29uc3RJbnRQdHIoc3RhdGljQXJn
dW1lbnRDb3VudCArIDEpOwogICAgICAgICBmb3IgKExWYWx1ZSBsZW5ndGggOiBzcHJlYWRMZW5n
dGhzKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBtX291dC5hZGQo
bGVuZ3RoLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CkBAIC0xMDExOCwxMiArMTAyMTAs
MTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKIAogICAgICAg
ICBtX3Byb2MucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMobWluaW11bUpTQ2FsbEFyZWFT
aXplKTsKLSAgICAgICAgCisKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9y
aWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmln
aW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBh
dXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKLSAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBbPSwgYXJndW1lbnRzVG9FbWl0
ID0gV1RGTW92ZShhcmd1bWVudHNUb0VtaXRGcm9tUmlnaHRUb0xlZnQpXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CiAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1
ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CkBAIC0xMDEzNyw3ICsxMDIzMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdG
b3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBq
aXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9j
aygpLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKIAogICAgICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojp2
b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTEwMjAxLDc0ICsxMDI5NSw1NCBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIyLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUjEsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQpKTsKIAotICAgICAgICAgICAgICAgICAgICBpbnQgc3RvcmVPZmZzZXQg
PSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKTsKLQotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJhbXNPZmZz
ZXQgPSA0OwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gZW1pdEFyZ3VtZW50c0Zyb21SaWdodFRvTGVmdCA9IHJlY3Vyc2Fi
bGVMYW1iZGEoWyZdKGF1dG8gc2VsZiwgTm9kZSogdGFyZ2V0KSAtPiB2b2lkIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYodGFyZ2V0LT5jaGlsZDEoKS5ub2RlKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBhcmd1bWVudFRvRW1pdCA6IGFyZ3VtZW50c1RvRW1pdCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmd1bWVudFRvRW1pdC5tX3R5cGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpQ
aGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZTogeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldCA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5l
d0FycmF5V2l0aFNwcmVhZENhc2UucGFyYW1ldGVyT2Zmc2V0OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19j
YXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0VmFsdWVGcm9tUmVwKHBhcmFtc1twYXJhbWV0ZXJPZmZzZXRdLCBzY3JhdGNoR1BSMyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsIEND
YWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxw
ZXJzOjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IHRh
cmdldC0+Yml0VmVjdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gdGFyZ2V0LT5udW1DaGlsZHJlbigpOyBpLS07ICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYml0VmVjdG9yLT5nZXQoaSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmKHN0YXRlLT5ncmFwaC52YXJBcmdDaGlsZCh0YXJnZXQs
IGkpLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIyKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRnJvbVJlcChwYXJhbXNb
cGFyYW1zT2Zmc2V0ICsgKGluZGV4KyspXSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2Ny
YXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIHN0b3JlT2Zm
c2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlBo
YW50b21OZXdBcnJheUJ1ZmZlckNhc2U6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHZhbHVlID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNl
LnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY3VycmVudFN0b3Jl
T2Zmc2V0ID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlLmN1cnJl
bnRTdG9yZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSksIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywgQ0NhbGxIZWxwZXJzOjpC
YXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWln
aHQsIGN1cnJlbnRTdG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJheUJ1ZmZlcikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGFycmF5ID0gdGFyZ2V0LT5jYXN0T3BlcmFuZDxK
U0ltbXV0YWJsZUJ1dHRlcmZseSo+KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hl
Y2tlZDxpbnQzMl90PiBvZmZzZXRDb3VudCB7IDEgfTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheS0+bGVuZ3RoKCk7IGktLTsgKytvZmZzZXRDb3Vu
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHZhcmFyZ3Mg
dmFsdWVzIGFyZSBkcmFpbmVkIGFzIEpTVmFsdWUsIHdlIHNob3VsZCBub3QgZ2VuZXJhdGUgdmFs
dWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gRG91YmxlIGZvcm0gZXZl
biBpZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRleGluZ1R5cGUgaXMgQXJyYXlXaXRoRG91
YmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0gSlNW
YWx1ZTo6ZW5jb2RlKGFycmF5LT5nZXQoaSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSksIHNjcmF0Y2hH
UFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBj
dXJyZW50U3RvcmVPZmZzZXQgeyBzdG9yZU9mZnNldCB9OwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50U3RvcmVPZmZzZXQgLT0gKG9mZnNldENvdW50ICogc3RhdGljX2Nh
c3Q8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNo
R1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBjdXJyZW50U3RvcmVPZmZzZXQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90
PihhcnJheS0+bGVuZ3RoKCkpKSwgc2NyYXRjaEdQUjIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFyYXJnc1NwcmVh
ZEFyZ3VtZW50VG9FbWl0OjpQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQ6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgYXJyYXlMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kLmFycmF5TGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihhcnJheUxlbmd0aCksIHNjcmF0Y2hHUFIyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGFyZ2V0LT5vcCgpID09IFBoYW50b21D
cmVhdGVSZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwID0gdGFyZ2V0LT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBCMzo6VmFsdWVSZXAgbnVtQXJndW1lbnRzVG9Db3B5ID0gcGFyYW1zW3BhcmFt
c09mZnNldCArIChpbmRleCsrKV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZy
b21SZXAobnVtQXJndW1lbnRzVG9Db3B5LCBzY3JhdGNoR1BSMyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbG9hZE9mZnNldCA9IChBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50c1N0YXJ0
KGlubGluZUNhbGxGcmFtZSkub2Zmc2V0KCkgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIGRvbmUgPSBqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywg
c2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wU3RhcnQgPSBq
aXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlciwgc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6VGltZXNFaWdo
dCwgbG9hZE9mZnNldCksIHNjcmF0Y2hHUFI0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTY0KHNjcmF0Y2hHUFI0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJz
OjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoR1BSMykubGlua1Rv
KGxvb3BTdGFydCwgJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmpp
dCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICBlbWl0QXJn
dW1lbnRzRnJvbVJpZ2h0VG9MZWZ0KGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbUNyZWF0ZVJlc3Q6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbUNyZWF0ZVJlc3QuaW5saW5lQ2FsbEZyYW1l
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRz
VG9Ta2lwID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tQ3JlYXRlUmVzdC5udW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJhbWV0
ZXJPZmZzZXQgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50b21DcmVhdGVSZXN0LnBhcmFtZXRlck9m
ZnNldDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCBudW1Bcmd1
bWVudHNUb0NvcHkgPSBwYXJhbXNbcGFyYW1ldGVyT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAobnVtQXJndW1lbnRzVG9Db3B5LCBzY3JhdGNoR1BS
Myk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvYWRPZmZzZXQgPSAoQXNzZW1i
bHlIZWxwZXJzOjphcmd1bWVudHNTdGFydChpbmxpbmVDYWxsRnJhbWUpLm9mZnNldCgpICsgbnVt
YmVyT2ZBcmd1bWVudHNUb1NraXApICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IGppdC5icmFuY2hU
ZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb29wU3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihz
dGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19j
YXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlciwgc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgbG9hZE9mZnNl
dCksIHNjcmF0Y2hHUFI0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2
NChzY3JhdGNoR1BSNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpCYXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRp
bWVzRWlnaHQsIHN0b3JlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoR1BSMykubGlua1Rv
KGxvb3BTdGFydCwgJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9udFRo
cm93ID0gaml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0
KTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Zv
clZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVP
cmlnaW4pKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGpp
dC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKTsKICAgICAgICAgICAgICAgICAgICAg
aml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwpA
QCAtMTAyODIsOSArMTAzNTYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTY0KHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdCgwKSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBj
YWxsVHlwZTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RWYXJh
cmdzIHx8IG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3MpCisgICAgICAgICAg
ICAgICAgaWYgKG5vZGVPcCA9PSBDb25zdHJ1Y3RWYXJhcmdzIHx8IG5vZGVPcCA9PSBDb25zdHJ1
Y3RGb3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlu
a0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+
b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVPcCA9PSBUYWlsQ2FsbFZhcmFy
Z3MgfHwgbm9kZU9wID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCiAgICAgICAgICAgICAgICAg
ICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZhcmFyZ3M7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6
Q2FsbFZhcmFyZ3M7CkBAIC0xMDMxMiw3ICsxMDM4Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC0xMDQxOCw2ICsxMDQ5Miwx
NCBAQCBwcml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
RGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0
YXRlOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBz
ZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOworICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkp
CisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5jaGlsZDMoKS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmxp
bmVDYWxsRnJhbWUgPSBzZW1hbnRpY05vZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCk7CisgICAg
ICAgIENhbGxWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmNhbGxWYXJhcmdzRGF0YSgpOworICAg
ICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTA0MzMsOCArMTA1
MTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2Rl
LT5jYWxsVmFyYXJnc0RhdGEoKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9y
aWdpbik7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDE7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHBhcmFtc1thcmdJbmRleCsrXS5ncHIoKTsKQEAg
LTEwNTE4LDE4ICsxMDU5OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNrSGVpZ2h0IC8gc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIyKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOwotICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5jaGlsZDMoKS0+b3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gZW1pdFNldHVwVmFyYXJnc0Zy
YW1lRmFzdENhc2UgbW9kaWZpZXMgdGhlIHN0YWNrIHBvaW50ZXIgaWYgaXQgc3VjY2VlZHMuCiAg
ICAgICAgICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKCp2bSwgaml0
LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgaW5s
aW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2UpOwogCiAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKICAg
ICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxv
d0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKTsKICAgICAgICAgICAg
ICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCgqKSgpPihv
cGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93
KTsKQEAgLTEwNTM3LDcgKzEwNjEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ZG9uZS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tI
ZWlnaHQgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgc2NyYXRjaEdQUjEpOwotICAgICAgICAg
ICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2l6ZUZyYW1l
Rm9yVmFyYXJncyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksIGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdz
KT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwg
YXJndW1lbnRzR1BSLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0
YS0+Zmlyc3RWYXJBcmdPZmZzZXQpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNl
cHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCgqKSgpPihvcGVyYXRpb25TaXplRnJhbWVGb3JW
YXJhcmdzKSk7CiAKQEAgLTEwNTQ2LDcgKzEwNjIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgYXJndW1lbnRzTGF0ZVJlcC5lbWl0UmVzdG9yZShqaXQsIGFyZ3VtZW50c0dQUik7
CiAgICAgICAgICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUoaml0LCBzY3JhdGNoR1BS
MSwgZmFsc2UsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1pbmltdW1KU0NhbGxBcmVh
U2l6ZSksIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
LSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
blNldHVwVmFyYXJnc0ZyYW1lKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwgc2NyYXRjaEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25TZXR1cFZhcmFyZ3NGcmFtZSk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNl
bWFudGljTm9kZU9yaWdpbiksIHNjcmF0Y2hHUFIyLCBhcmd1bWVudHNHUFIsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSwgc2NyYXRjaEdQUjEpOwog
ICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24oaml0LnZtKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2
b2lkKCopKCk+KG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKSk7CiAgICAgICAgICAgICAgICAg
ICAgIApAQCAtMTA1NjMsOSArMTA2MzksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDApKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBl
IGNhbGxUeXBlOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENvbnN0cnVjdFZh
cmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJncykKKyAgICAgICAg
ICAgICAgICBpZiAobm9kZU9wID09IENvbnN0cnVjdFZhcmFyZ3MgfHwgbm9kZU9wID09IENvbnN0
cnVjdEZvcndhcmRWYXJhcmdzKQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxM
aW5rSW5mbzo6Q29uc3RydWN0VmFyYXJnczsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChub2Rl
LT5vcCgpID09IFRhaWxDYWxsVmFyYXJncyB8fCBub2RlLT5vcCgpID09IFRhaWxDYWxsRm9yd2Fy
ZFZhcmFyZ3MpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZU9wID09IFRhaWxDYWxsVmFy
YXJncyB8fCBub2RlT3AgPT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAg
ICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxsVmFyYXJnczsKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZv
OjpDYWxsVmFyYXJnczsKQEAgLTEwNTkxLDcgKzEwNjY3LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJl
c3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTEwNjY1LDYgKzEwNzQx
LDggQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdp
bkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBz
ZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIGF1dG8g
ZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpLnZhbHVlKCk7CiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9
LCAmdm1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKQEAgLTEwNjc5LDcgKzEwNzU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkp
LAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBq
aXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9j
aygpLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIEdQUkluZm86OnJl
Z1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJ
bmZvOjpyZWdUMSk7CkBAIC0xMDY5MSw3ICsxMDc2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAr
IHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAgICAgICAgICAgICAgcmVxdWlyZWRCeXRlcyA9
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVk
Qnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihlY21hTW9kZSksIEdQUkluZm86
OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpy
ZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1
bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ2FsbEV2YWwpKSwgR1BSSW5mbzo6bm9u
UHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKQEAgLTEyMjQwLDEyICsxMjMxOCwxMiBAQCBwcml2
YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAg
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBOb2RlKiBub2RlID0g
bV9ub2RlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFk
ZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAg
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9u
LmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGljTm9kZU9yaWdpbik7
CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9y
IG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1w
TGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24o
cGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTEyMjYzLDEyICsxMjM0MSwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6Y3JlYXRl
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBz
dWJzY3JpcHRWYWx1ZSwgYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyhyZXR1cm5HUFIpKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFz
ZSwgc3Vic2NyaXB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJl
dHVybkdQUikpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMjI4NiwxNiArMTIzNjQsMTYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGw7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQg
PT0gSW5CeUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5C
eUlkT3B0aW1pemUsIHJldHVybkdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVP
cmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyNTIyLDYgKzEyNjAwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CiAKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmln
aW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAg
ICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTI1NDUsMTQgKzEyNjI0LDE0IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2Vs
bChwcm90b3R5cGVHUFIpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21t
b24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoc2VtYW50aWNOb2RlT3JpZ2lu
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJl
Y3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJv
eDxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBzZW1hbnRpY05vZGVPcmlnaW4sIGNh
bGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHNjcmF0Y2hHUFIsCiAg
ICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BSLCBwcm90b3R5cGVJc09iamVjdCk7CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CkBAIC0xMjU2Nyw5
ICsxMjY0Niw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMu
bGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
c2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVP
cmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0
aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVl
R1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBA
IC0xNDAyNywxMiArMTQxMDYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRj
aHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUg
PSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBu
b2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigK
ICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAgICAgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENv
ZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9u
LmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGljTm9kZU9yaWdpbik7
CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9y
IG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1w
TGlzdD4gZXhjZXB0aW9ucyA9CkBAIC0xNDA0NCw3ICsxNDEyNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2lu
ZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0
b3IgPSBCb3g8SklUR2V0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2lu
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKICAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgdHlwZSk7CiAK
QEAgLTE0MDYwLDkgKzE0MTQwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5n
cHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdp
biksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5y
YXdCaXRzKCkpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKQEAgLTE0MDk2LDEyICsxNDE3NiwxMyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAg
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2luIHNl
bWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKICAg
ICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxs
U2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0
YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgo
c2VtYW50aWNOb2RlT3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRp
cmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJv
eDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KQEAgLTE0MTEzLDcgKzE0MTk0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxl
RXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKICAgICAgICAg
ICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+
OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFs
dWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHBhcmFtc1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpOwogCkBAIC0x
NDEyOSw5ICsxNDIxMCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
aWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTE0NTI2LDYgKzE0NjA3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX25vZGU7CiAgICAgICAgIE5vZGVUeXBlIG9wID0gbV9ub2RlLT5vcCgpOworICAg
ICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
YzsKICAgICAgICAgSlNWYWx1ZSBjaGlsZDFDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShtX25v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogCiAgICAgICAgIGF1dG8gbm9kZUluZGV4ID0gbV9ub2Rl
SW5kZXhJbkdyYXBoOwpAQCAtMTQ1NDcsNyArMTQ2MjksNyBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICAgICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGV4aXREZXNjcmlwdG9yLT5l
bWl0T1NSRXhpdExhdGVyKCpzdGF0ZSwgQmFkVHlwZSwgb3JpZ2luLCBwYXJhbXMsIG5vZGVJbmRl
eCwgb3NyRXhpdEFyZ3VtZW50T2Zmc2V0KTsKIAotICAgICAgICAgICAgICAgIFNuaXBwZXRQYXJh
bXMgZG9tSklUUGFyYW1zKCpzdGF0ZSwgcGFyYW1zLCBub2RlLCBudWxscHRyLCBXVEZNb3ZlKHJl
Z3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgICAgICAg
ICAgICAgU25pcHBldFBhcmFtcyBkb21KSVRQYXJhbXMoKnN0YXRlLCBwYXJhbXMsIHNlbWFudGlj
Tm9kZU9yaWdpbiwgbnVsbHB0ciwgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBX
VEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgZmFpbHVyZUNhc2VzID0gZG9tSklULT5nZW5lcmF0b3IoKS0+cnVuKGppdCwgZG9tSklUUGFy
YW1zKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG5vdEpTQ2FzdEZh
aWx1cmVDYXNlczsKICAgICAgICAgICAgICAgICBpZiAob3AgPT0gQ2hlY2tOb3RKU0Nhc3QpIHsK
QEAgLTE0NjY3LDYgKzE0NzQ5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSogc3RhdGUg
PSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgQ29k
ZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAg
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOwpAQCAtMTQ2ODgsNyArMTQ3NzEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Qm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUt
PnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAKLSAgICAgICAgICAg
ICAgICBTbmlwcGV0UGFyYW1zIGRvbUpJVFBhcmFtcygqc3RhdGUsIHBhcmFtcywgbm9kZSwgZXhj
ZXB0aW9ucywgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2Ny
YXRjaCkpOworICAgICAgICAgICAgICAgIFNuaXBwZXRQYXJhbXMgZG9tSklUUGFyYW1zKCpzdGF0
ZSwgcGFyYW1zLCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMsIFdURk1vdmUocmVncyks
IFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICAgICAgICAgICAg
ICBkb21KSVQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQYXJhbXMpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDYWxsKCk7
CkBAIC0xNTQ0NSw2ICsxNTUyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3Rl
ciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9y
aWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwpAQCAtMTU0NzAsMTYgKzE1NTU0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXBMaXN0KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRoRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50
aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzFd
LmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlvbiwgcGFyYW1zWzBdLmdw
cigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRoRnVuY3Rpb24s
IHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50
aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKQEAg
LTE1NTEyLDYgKzE1NTk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBv
aW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07
CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2lu
IHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBA
IC0xNTUzMyw5ICsxNTYxOCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcExpc3Qo
KS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFu
dGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBzbG93UGF0aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAg
ICAgICAgICB9KTsKQEAgLTE1NTY5LDYgKzE1NjU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwog
ICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVF
YXJseVJlZ2lzdGVyIH07CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAg
ICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
YzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CkBAIC0xNTU5Niw5ICsxNTY4Miw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdCA6IG9wZXJhdGlvblZh
bHVlQml0VVJTaGlmdDsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0aW9uLCBwYXJhbXNb
MF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVP
cmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sxXS5ncHIoKSwgcGFy
YW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1Rv
KGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICB9KTsKQEAgLTE5ODkxLDYgKzE5OTc3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQmxvY2tJbmRleCBibG9ja0luZGV4ID0gYmxvY2stPmlu
ZGV4OwogICAgICAgICB1bnNpZ25lZCBub2RlSW5kZXggPSBub2RlID8gbm9kZS0+aW5kZXgoKSA6
IFVJTlRfTUFYOwogI2lmICFBU1NFUlRfRU5BQkxFRAorICAgICAgICBhdXRvIG5vZGVPcCA9IG5v
ZGUgPyBub2RlLT5vcCgpIDogTGFzdE5vZGVUeXBlOwogICAgICAgICBtX291dC5wYXRjaHBvaW50
KFZvaWQpLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTk4OTgs
NyArMTk5ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGJsb2NrSW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZUluZGV4KSwg
R1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5vcCgpKSwg
R1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihub2RlT3ApLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAg
ICAgaml0LmFib3J0V2l0aFJlYXNvbihGVExDcmFzaCk7CiAgICAgICAgICAgICB9KTsKICNlbHNl
IC8vIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlw
cGV0UGFyYW1zLmNwcAppbmRleCA2ZDY2ODg5ZWU1MjMuLmY2NzVjMTlmNGFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwCkBAIC0zNCw3ICsz
NCw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50
cywgc2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4Pgotc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxI
ZWxwZXJzJiBqaXQsIEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMsIERGRzo6Tm9kZSogbm9kZSwgQm94PENDYWxsSGVscGVyczo6SnVt
cExpc3Q+IGV4Y2VwdGlvbnMsIENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgT3BlcmF0aW9u
VHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMgYXJndW1lbnRzLCBz
dGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKK3N0YXRpYyB2b2lkIGRpc3Bh
dGNoKENDYWxsSGVscGVycyYgaml0LCBGVEw6OlN0YXRlKiBzdGF0ZSwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdp
biwgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMsIENDYWxsSGVscGVyczo6
SnVtcExpc3QgZnJvbSwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0
LCBBcmd1bWVudHMgYXJndW1lbnRzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4
Li4uPikKIHsKICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKICAg
ICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewpAQCAtNDIsNyAr
NDIsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaChDQ2FsbEhlbHBlcnMmIGppdCwgRlRMOjpTdGF0
ZSogc3RhdGUsIGNvbnN0IEIzOjpTdGFja21hcEdlbgogCiAgICAgICAgIGZyb20ubGluaygmaml0
KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRp
Y05vZGVPcmlnaW4sCiAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb24sIGV4
dHJhY3RSZXN1bHQocmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KGFyZ3VtZW50cyku
Li4pOwogICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICB9KTsKQEAg
LTUxLDcgKzUxLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxwZXJzJiBqaXQsIEZU
TDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KICNkZWZpbmUgSlNDX0RFRklO
RV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBcCiAgICAg
dm9pZCBTbmlwcGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVt
cExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBS
ZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsg
XAotICAgICAgICBkaXNwYXRjaChqaXQsICZtX3N0YXRlLCBtX3BhcmFtcywgbV9ub2RlLCBtX2V4
Y2VwdGlvbnMsIGZyb20sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzLCBzdGQ6Om1ha2VfaW5kZXhf
c2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPGRlY2x0eXBlKGFyZ3MpPjo6dmFsdWU+KCkpOyBcCisg
ICAgICAgIGRpc3BhdGNoKGppdCwgJm1fc3RhdGUsIG1fcGFyYW1zLCBtX3NlbWFudGljTm9kZU9y
aWdpbiwgbV9leGNlcHRpb25zLCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3RkOjpt
YWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZhbHVl
PigpKTsgXAogICAgIH0gXAogCiBTTklQUEVUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NB
TExfT1BFUkFUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U25pcHBldFBhcmFtcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFy
YW1zLmgKaW5kZXggMWFmMmJkMzhmNGRiLi42MDBiZWY2MTQwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU25pcHBldFBhcmFtcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU25pcHBldFBhcmFtcy5oCkBAIC0zOCwxMSArMzgsMTEgQEAgY2xh
c3MgU3RhdGU7CiAKIGNsYXNzIFNuaXBwZXRQYXJhbXMgZmluYWwgOiBwdWJsaWMgSlNDOjpTbmlw
cGV0UGFyYW1zIHsKIHB1YmxpYzoKLSAgICBTbmlwcGV0UGFyYW1zKFN0YXRlJiBzdGF0ZSwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCBERkc6Ok5vZGUqIG5vZGUs
IEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zLCBWZWN0b3I8VmFsdWU+JiYg
cmVncywgVmVjdG9yPEdQUlJlZz4mJiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiYgZnBTY3Jh
dGNoKQorICAgIFNuaXBwZXRQYXJhbXMoU3RhdGUmIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luLCBC
b3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucywgVmVjdG9yPFZhbHVlPiYmIHJl
Z3MsIFZlY3RvcjxHUFJSZWc+JiYgZ3BTY3JhdGNoLCBWZWN0b3I8RlBSUmVnPiYmIGZwU2NyYXRj
aCkKICAgICAgICAgOiBKU0M6OlNuaXBwZXRQYXJhbXMoc3RhdGUudm0oKSwgV1RGTW92ZShyZWdz
KSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpCiAgICAgICAgICwgbV9z
dGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3BhcmFtcyhwYXJhbXMpCi0gICAgICAgICwgbV9ub2Rl
KG5vZGUpCisgICAgICAgICwgbV9zZW1hbnRpY05vZGVPcmlnaW4oc2VtYW50aWNOb2RlT3JpZ2lu
KQogICAgICAgICAsIG1fZXhjZXB0aW9ucyhleGNlcHRpb25zKQogICAgIHsKICAgICB9CkBAIC01
NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBTdGF0ZSYgbV9zdGF0ZTsKICAgICBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBtX3BhcmFtczsKLSAgICBERkc6Ok5vZGUqIG1f
bm9kZTsKKyAgICBDb2RlT3JpZ2luIG1fc2VtYW50aWNOb2RlT3JpZ2luOwogICAgIEJveDxDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0PiBtX2V4Y2VwdGlvbnM7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430898</attachid>
            <date>2021-06-08 15:03:27 -0700</date>
            <delta_ts>2021-06-15 19:32:39 -0700</delta_ts>
            <desc>Patch for re-landing</desc>
            <filename>patch226556</filename>
            <type>text/plain</type>
            <size>76831</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVjZTRkYjZiNTI4NC4uNDUyMDE5NTRiZDA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNi0wOCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgdGhlIEZU
TChERkcpIGdyYXBoIGFmdGVyIGxvd2VyaW5nIHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NTYKKworICAgICAgICBSZXZpZXdlZCBieSBQ
aGlsIFBpemxvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggb3JpZ2luYWxseSBsYW5kZWQgYXMgcjI3
ODQ2Mywgd2FzIHJldmVydGVkIGluIHIyNzg0NjMuCisgICAgICAgIEkgYmVsaWV2ZSB0aGF0IHRo
ZSBidWcgZm9yIHdoaWNoIGl0IHdhcyByZXZlcnRlZCBhY3R1YWxseSBjb21lcyBmcm9tIHIyNzgz
NzEsIHdoaWNoIHdhcyBhbHNvIHJldmVydGVkIGF0IHRoZSBzYW1lIHRpbWUuIFNvIEkgYW0gbm93
IHJlbGFuZGluZyB0aGlzLgorCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCB3
YXMgZGVhbGluZyB3aXRoIGFsbCBvZiB0aGUgUGF0Y2hwb2ludHMgY3JlYXRlZCBieSBGVExMb3dl
ckRGR1RvQjM6IHRoZXkgZ2V0IGEgbGFtYmRhIGF0IHRoYXQgdGltZSwgd2hpY2ggdGhleSBleGVj
dXRlIGF0IHRoZSBlbmQgb2YgQWlyLCBhbmQgbWFueSBvZiB0aGVzZSBsYW1iZGFzIHdlcmUgY2Fw
dHVyaW5nIGEgcG9pbnRlciB0byBzb21lIHBhcnRzIG9mIHRoZSBERkcgZ3JhcGggYW5kIHJlYWRp
bmcgdGhyb3VnaCBpdCB3aGVuIGJlaW5nIGV4ZWN1dGVkLgorICAgICAgICBJbiBhbGwgY2FzZXMg
YnV0IG9uZSBpdCB3YXMgZWFzaWx5IGZpeGVkOiB0aGV5IHdlcmUgb25seSByZWFkaW5nIGEgZmV3
IGJpdHMgZnJvbSBhIGdpdmVuIG5vZGUsIHNvIEkganVzdCByZWFkIHRoZXNlIGJpdHMgaW4gRlRM
TG93ZXJERkdUb0IzLCBhbmQgY2FwdHVyZWQgdGhlbSAoYnkgdmFsdWUpIGluc3RlYWQgb2YgdGhl
IHBvaW50ZXIgdG8gdGhlIG5vZGUuCisgICAgICAgIFRoZSBleGNlcHRpb24gd2FzIGNvbXBpbGVD
YWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKCk6IGl0cyBwYXRjaHBvaW50IGdlbmVyYXRvciB3
YXMgd2Fsa2luZyB0aHJvdWdoIHRoZSBncmFwaCwgZmxhdHRlbmluZyBhIHRyZWUgb2YgUGhhbnRv
bVNwcmVhZC9QaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkL1BoYW50b21OZXdBcnJheUJ1ZmZlci9Q
aGFudG9tQ3JlYXRlUmVzdCwgZW1pdHRpbmcgc29tZSBjb2RlIGFsb25nIHRoZSB3YXkuCisgICAg
ICAgIFdlIG5vdyBkbyB0aGlzIGZsYXR0ZW5pbmcgb2YgdGhlIHRyZWUgaW4gRlRMTG93ZXJERkdU
b0IzLCBzdG9yZSBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBsYXRlciBlbWl0IHRoZSByZXF1
aXJlZCBjb2RlIGluIGEgdmVjdG9yLCBhbmQgY2FwdHVyZSB0aGF0IHZlY3RvciBpbiB0aGUgbGFt
YmRhICh0aHJvdWdoIGEgbW92ZSBjYXB0dXJlLCB3aGljaCBpcyBhbGxvd2VkIHNpbmNlIEMrKzE0
KS4gU2VlIGBzdHJ1Y3QgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0YCBmb3IgdGhlIGluZm9y
bWF0aW9uIHRoYXQgd2UgbmVlZCB0byBzdG9yZSBpbiB0aGF0IHZlY3Rvci4KKworICAgICAgICBJ
IHRlc3RlZCB0aGlzIGNoYW5nZSBieSBjb21wbGV0aW5nIGEgZnVsbCBydW4gb2YgSmV0U3RyZWFt
MiB3aXRoIEFTQU4uCisgICAgICAgIEkgYWxzbyByYW4gdGhlIHN0cmVzcyB0ZXN0cyB3aXRoICJz
cHJlYWQiIGluIHRoZWlyIG5hbWUgaW4gRGVidWcgbW9kZS4KKworICAgICAgICAqIGIzL0IzU3Bh
cnNlQ29sbGVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xl
YXJBbGwpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmZyZWVERkdJUkFmdGVyTG93ZXJpbmcpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVuYXJ5TWF0aElDKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENh
bGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OlZh
cmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0
cnVjdFZhcmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjplbWl0UmlnaHRTaGlmdFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjcmFzaCk6CisKIDIwMjEtMDYtMDggIFJvYmluIE1vcmlz
c2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgZHJvcCBCMyB2
YWx1ZXMgd2hpbGUgcnVubmluZyBBaXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggMTExMDA4MjYwMzk4Li45ZDQ5ZmU2MzI1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xODYxLDYgKzE4NjEsMjYgQEAgdm9pZCBHcmFwaDo6Y2xl
YXJDUFNDRkdEYXRhKCkKICAgICBtX2Nwc0NGRyA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgR3JhcGg6
OmZyZWVERkdJUkFmdGVyTG93ZXJpbmcoKQoreworICAgIG1fYmxvY2tzLmNsZWFyKCk7CisgICAg
bV9yb290cy5jbGVhcigpOworICAgIG1fdmFyQXJnQ2hpbGRyZW4uY2xlYXIoKTsKKyAgICBtX25v
ZGVzLmNsZWFyQWxsKCk7CisKKyAgICBtX2J5dGVjb2RlTGl2ZW5lc3MuY2xlYXIoKTsKKyAgICBt
X3NhZmVUb0xvYWQuY2xlYXIoKTsKKyAgICBtX2Nwc0RvbWluYXRvcnMgPSBudWxscHRyOworICAg
IG1fc3NhRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBudWxs
cHRyOworICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBtX3NzYUNGRyA9IG51
bGxwdHI7CisgICAgbV9jcHNDRkcgPSBudWxscHRyOworICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVs
bHB0cjsKKyAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fY29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOworfQorCiB2b2lkIFByZWZpeDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghbV9lbmFibGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDc2ZjlkYjgyZjkxMS4uNjJhMWZlZjNkYzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0xMDc0LDYgKzEwNzQsOCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fY2F0Y2hFbnRyeXBvaW50cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50
RGF0YSB7IG1hY2hpbmVDb2RlLCBGaXhlZFZlY3RvcjxGbHVzaEZvcm1hdD4oV1RGTW92ZShhcmd1
bWVudEZvcm1hdHMpKSwgYnl0ZWNvZGVJbmRleCB9KTsKICAgICB9CiAKKyAgICB2b2lkIGZyZWVE
RkdJUkFmdGVyTG93ZXJpbmcoKTsKKwogICAgIFN0YWNrQ2hlY2sgbV9zdGFja0NoZWNrZXI7CiAg
ICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAKaW5kZXggMjhmOTg5YWU3MjQ2Li40MWFhNjMzZmY5M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAtNTgsNiArNTgsOSBAQCB2b2lk
IGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0
KQogICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgc3RhdGUucHJvYy0+
Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4o
KSk7CiAKKyAgICBpZiAoIXNob3VsZER1bXBEaXNhc3NlbWJseSgpICYmICFPcHRpb25zOjphc3lu
Y0Rpc2Fzc2VtYmx5KCkgJiYgIWdyYXBoLmNvbXBpbGF0aW9uKCkgJiYgIXN0YXRlLnByb2MtPm5l
ZWRzUENUb09yaWdpbk1hcCgpKQorICAgICAgICBncmFwaC5mcmVlREZHSVJBZnRlckxvd2VyaW5n
KCk7CisKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0ZS5ncmFw
aCwgc2FmZXBvaW50UmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IGFiZDY5NGY4ZGM2NC4uNDEzM2I4MjhiNjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMzg0LDYg
KzIzODQsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSAxOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRl
OworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CkBAIC0yNDE0LDEyICsyNDE1LDEyIEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+
c2hvdWxkU2xvd1BhdGhSZXBhdGNoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xv
d1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoaW5nRnVuY3Rpb24sIHBh
cmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobWF0aElDKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRpb25zLmdldCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFy
YW1zWzFdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0aElDKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENh
bGwgPSBjYWxsLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
KCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdw
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBz
ZW1hbnRpY05vZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLCBwYXJhbXNb
MV0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25T
dGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0
KTsKQEAgLTI0MzgsOCArMjQzOSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1z
WzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmln
aW4sIGV4Y2VwdGlvbnMuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICBub25SZXBhdGNo
aW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpKTsKICAgICAgICAgICAg
ICAgICB9CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI0OTEsNiArMjQ5Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IDI7
CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAg
IENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwog
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewog
ICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKQEAgLTI1MjQsMTIgKzI1MjYsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93
UGF0aFJlcGF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdw
cigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRo
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0u
Z3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdp
biksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobWF0aElDKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0aElDR2Vu
ZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsLmNhbGwoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFt
c1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1z
WzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9u
U3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGwuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmpp
dCk7CkBAIC0yNTQ4LDggKzI1NTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFt
c1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdw
cigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgIH0KIAogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQpAQCAtMzk5MywxMCArMzk5NSwxMSBAQCBwcml2YXRlOgogCiAgICAgICAg
IFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBib29sIGJhc2VJc0NlbGwgPSBh
YnN0cmFjdFZhbHVlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpOworICAgICAgICBD
b2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAg
ICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9
IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5k
ZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAg
IEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxl
LT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtNDAxMSw3ICs0
MDE0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBw
YXJhbXNbMl0uZ3ByKCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxK
SVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0
ZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVl
UmVncyhyZXN1bHRHUFIpKTsKIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBu
b3RDZWxsOwpAQCAtNDAyOSw5ICs0MDMyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZVNlbWFudGljT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgaml0
Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKQEAgLTQxMjUsMTAgKzQxMjgsMTEgQEAgcHJp
dmF0ZToKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgYm9v
bCBiYXNlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3Bl
Y0NlbGwpOworICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAKLSAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRl
LT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxT
aXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICBC
b3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTQxNDIsNyArNDE0
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJhbXNbMV0u
Z3ByKCk7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKKyAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNp
dGVJbmRleCwgYWNjZXNzVHlwZSwKICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7
CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwpAQCAtNDE3Miw5ICs0
MTc2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVt
cCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93
UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNz
VHlwZSksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdp
biksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOwogICAgICAgICAg
ICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCkBAIC00NTM0LDEzICs0NTM4
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Ci0g
ICAgICAgIAorCisgICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5j
b21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2Rl
T3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlU2VtYW50aWNPcmlnaW4pOwogCiAg
ICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQog
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9u
KHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC00NTQ5LDcgKzQ1NTQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndp
bmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdp
biwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAg
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86
OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAogICAgICAgICAgICAgICAgICAg
ICBwdXRLaW5kKTsKQEAgLTQ1NjQsOSArNDU2OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGljT3JpZ2luLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5j
dGlvbigpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdw
cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRp
Zmllci5yYXdCaXRzKCkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtNTI1MywxMCArNTI1OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhh
bmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAg
ICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgICAgICBDb2RlT3Jp
Z2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAg
ICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5j
b21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBz
dGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4
KG5vZGVTZW1hbnRpY09yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBk
aXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBC
b3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTUyNzEsNyArNTI3
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFy
YW1zWzJdLmdwcigpOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklU
R2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBl
OjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2Vt
YW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAogICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNT
dHJpbmcgPSBwcm9wZXJ0eUlzU3RyaW5nOwpAQCAtNTI5Myw5ICs1Mjk5LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4g
PSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGljT3JpZ2luLAogICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0
R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgp
LmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtNTg1MywxMiArNTg1OSwxNiBAQCBwcml2YXRlOgog
CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ub2RlOworICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgYXV0byBjaGlsZDFVc2VLaW5kID0gbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpOworICAgICAgICBhdXRvIGNoaWxkMlVzZUtpbmQgPSBub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAg
IFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5j
b2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5z
LT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRpY09yaWdpbik7CiAKICAgICAgICAg
ICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1z
KS0+anVtcHMoaml0KTsKQEAgLTU4NzAsNyArNTg4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKIAotICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkK
KyAgICAgICAgICAgICAgICBpZiAoY2hpbGQxVXNlS2luZCkKICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKIAogICAgICAgICAg
ICAgICAgIGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gWyZdICgpIHsKQEAg
LTU4ODUsNyArNTg5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZDJVc2VLaW5kID09IFVudHlwZWRVc2Up
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNo
SWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC01ODk0LDEyICs1OTA0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewogICAgICAgICAgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0
VmFsdWUsIGJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0
dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJh
dG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZVNlbWFudGljT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwg
SlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KQEAgLTU5MTYsMTEgKzU5MjYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJh
dG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJz
Y3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGVjbWFNb2RlKSkuY2FsbCgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNs
b3dQYXRoQ2FsbCk7CkBAIC05Nzc2LDYgKzk3ODYsOCBAQCBwcml2YXRlOgogICAgICAgICBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CiAg
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBWTSogdm0gPSAmdGhp
cy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5v
cmlnaW4uc2VtYW50aWM7CisgICAgICAgIGF1dG8gbm9kZU9wID0gbm9kZS0+b3AoKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CkBAIC05Nzg3LDE2ICs5Nzk5LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogCi0gICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxM
aW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9k
ZVNlbWFudGljT3JpZ2luKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2Fs
bCgKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QgPyBDYWxsTGlu
a0luZm86OkNvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6Q2FsbCwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgICAgICAgICBub2RlT3AgPT0gQ29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpD
b25zdHJ1Y3QgOiBDYWxsTGlua0luZm86OkNhbGwsIEdQUkluZm86OnJlZ1QwKTsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gc2xvd1BhdGggPSBjYWxsTGlua0luZm8tPmVtaXRGYXN0UGF0aChqaXQs
IEdQUkluZm86OnJlZ1QwLCBJbnZhbGlkR1BSUmVnLCBDYWxsTGlua0luZm86OlVzZURhdGFJQzo6
Tm8pOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAo
KTsKIAogICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAg
ICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbikpLCBHUFJJbmZvOjpy
ZWdUMyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5lbWl0U2xvd1BhdGgoKnZtLCBq
aXQpOwogCiAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtOTg4Niw2ICs5ODk4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOworICAgICAgICBD
b2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBAIC05OTE5LDcgKzk5MzIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1QYXNzZWRBcmdzID0g
bnVtUGFzc2VkQXJnczsKICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxs
ZWVTYXZlUmVnaXN0ZXJzKGppdC5jb2RlQmxvY2soKSk7CiAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2Rl
QmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpEaXJlY3RUYWlsQ2FsbCwg
SW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7CkBAIC05OTM2LDcg
Kzk5NDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIHNsb3dQYXRoID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHRvU2F2ZSwgaml0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdl
dCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uTGlua0RpcmVjdENh
bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgY2FsbGVlR1BSKS5jYWxsKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmaml0KTsKICAgICAgICAg
ICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVjdXRhYmxlRHVyaW5nQ29tcGlsYXRpb24o
ZXhlY3V0YWJsZSk7CkBAIC05OTUxLDcgKzk5NjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoCiAgICAgICAgICAgICAgICAgICAgIGlzQ29uc3RydWN0ID8gQ2FsbExpbmtJ
bmZvOjpEaXJlY3RDb25zdHJ1Y3QgOiBDYWxsTGlua0luZm86OkRpcmVjdENhbGwsIEludmFsaWRH
UFJSZWcpOwogCkBAIC05OTc4LDcgKzk5OTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwg
b3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52
YWxpZEdQUlJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVlR1BSKS5jYWxsKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CkBAIC0xMDA1
NCw2ICsxMDA2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9
IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRl
ID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIFZNKiB2bSA9ICZ0aGlzLT52bSgpOworICAgICAgICBD
b2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CkBAIC0xMDA5MSw3ICsxMDEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
c2xvd1BhdGhTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZv
OjpyZWdUMCkpOwogICAgICAgICAgICAgICAgIHNsb3dQYXRoU2h1ZmZsZXIucHJlcGFyZUZvclNs
b3dQYXRoKCk7CiAKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
c2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgICAgICBj
YWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAKICAgICAgICAgICAgICAgICBh
dXRvIGRvbmVMb2NhdGlvbiA9IGppdC5sYWJlbCgpOwpAQCAtMTAxMDUsNyArMTAxMTksNjAgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9
Ci0gICAgCisKKyAgICBzdHJ1Y3QgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFk
Q2FzZSB7CisgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldDsKKyAgICB9OworICAgIHN0
cnVjdCBDYXB0dXJlZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UgeworICAgICAgICBpbnQ2
NF90IHZhbHVlOworICAgICAgICBpbnQzMl90IGN1cnJlbnRTdG9yZU9mZnNldDsKKyAgICB9Owor
ICAgIHN0cnVjdCBDYXB0dXJlZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCB7CisgICAgICAg
IHVuc2lnbmVkIGFycmF5TGVuZ3RoOworICAgIH07CisgICAgc3RydWN0IENhcHR1cmVkRm9yUGhh
bnRvbUNyZWF0ZVJlc3QgeworICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CisgICAgICAgIHVu
c2lnbmVkIHBhcmFtZXRlck9mZnNldDsKKyAgICB9OworICAgIHN0cnVjdCBWYXJhcmdzU3ByZWFk
QXJndW1lbnRUb0VtaXQgeworICAgICAgICBlbnVtIFR5cGUgeworICAgICAgICAgICAgUGhhbnRv
bU5ld0FycmF5V2l0aFNwcmVhZENhc2UsCisgICAgICAgICAgICBQaGFudG9tTmV3QXJyYXlCdWZm
ZXJDYXNlLAorICAgICAgICAgICAgUGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kLAorICAgICAgICAg
ICAgUGhhbnRvbUNyZWF0ZVJlc3QKKyAgICAgICAgfSBtX3R5cGU7CisgICAgICAgIHVuaW9uIHsK
KyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UgbV9w
aGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZTsKKyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhh
bnRvbU5ld0FycmF5QnVmZmVyQ2FzZSBtX3BoYW50b21OZXdBcnJheUJ1ZmZlckNhc2U7CisgICAg
ICAgICAgICBDYXB0dXJlZEZvclBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCBtX3BoYW50b21OZXdB
cnJheUJ1ZmZlckVuZDsKKyAgICAgICAgICAgIENhcHR1cmVkRm9yUGhhbnRvbUNyZWF0ZVJlc3Qg
bV9waGFudG9tQ3JlYXRlUmVzdDsKKyAgICAgICAgfTsKKworICAgICAgICBWYXJhcmdzU3ByZWFk
QXJndW1lbnRUb0VtaXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQsIHVuc2ln
bmVkIGFyZykKKyAgICAgICAgICAgIDogbV90eXBlKHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChtX3R5cGUgPT0gUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UpCisgICAgICAgICAg
ICAgICAgbV9waGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZSA9IHsgYXJnIH07CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodCA9PSBQaGFudG9tTmV3QXJyYXlC
dWZmZXJFbmQpOworICAgICAgICAgICAgICAgIG1fcGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kID0g
eyBhcmcgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBWYXJhcmdzU3ByZWFk
QXJndW1lbnRUb0VtaXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQsIGludDY0
X3QgdmFsdWUsIGludDMyX3QgY3VycmVudFN0b3JlT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3R5
cGUodCkKKyAgICAgICAgICAgICwgbV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlKHsgdmFsdWUs
IGN1cnJlbnRTdG9yZU9mZnNldCB9KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQodCA9
PSBQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlKTsKKyAgICAgICAgfQorICAgICAgICBWYXJhcmdz
U3ByZWFkQXJndW1lbnRUb0VtaXQoVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlIHQs
IElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcCwgdW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3R5
cGUodCkKKyAgICAgICAgICAgICwgbV9waGFudG9tQ3JlYXRlUmVzdCh7IGlubGluZUNhbGxGcmFt
ZSwgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHBhcmFtZXRlck9mZnNldCB9KQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQodCA9PSBQaGFudG9tQ3JlYXRlUmVzdCk7CisgICAgICAgIH0K
KyAgICB9OworCiAgICAgdm9pZCBjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCgp
CiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwpAQCAtMTAxMjAsMTMgKzEwMTg3
LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDI+IHNwcmVhZExlbmd0aHM7
CiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDg+IHBhdGNocG9pbnRBcmd1bWVudHM7CiAgICAgICAg
IEhhc2hNYXA8SW5saW5lQ2FsbEZyYW1lKiwgTFZhbHVlLCBXVEY6OkRlZmF1bHRIYXNoPElubGlu
ZUNhbGxGcmFtZSo+LCBXVEY6Ok51bGxhYmxlSGFzaFRyYWl0czxJbmxpbmVDYWxsRnJhbWUqPj4g
Y2FjaGVkU3ByZWFkTGVuZ3RoczsKKyAgICAgICAgLy8gQmVjYXVzZSB0aGUgcGF0Y2hwb2ludCBn
ZW5lcmF0b3IgcnVucyBsYXRlIGluIEFpciwgdGhlIGRmZyBncmFwaCB3aWxsIGJlIGxvbmcgZ29u
ZS4KKyAgICAgICAgLy8gU28gd2UgbXVzdCBsb2FkIGV2ZXJ5dGhpbmcgcmVsZXZhbnQgcmlnaHQg
bm93LCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhleSBhcmUgY2FwdHVyZWQgYnkgdmFsdWUgYnkgdGhl
IGxhbWJkYSB0aGF0IGFjdHMgYXMgdGhlIGdlbmVyYXRvcgorICAgICAgICAvLyBPbmUgcGFydGlj
dWxhcmx5IHRyaWNreSBwb2ludCBpcyB0aGF0IHRoZSBnZW5lcmF0b3Igd291bGQgbGlrZSB0byB3
YWxrIG92ZXIgdGhlIHRyZWUgcm9vdGVkIGF0IHRoaXMgbm9kZSwgZXhwbG9yaW5nIHRocm91Z2gg
UGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZCBhbmQgUGhhbnRvbU5ld0FycmF5QnVmZmVyLCBlbWl0
dGluZyBjb2RlIGFsb25nIHRoZSB3YXkuCisgICAgICAgIC8vIEluc3RlYWQsIHdlIGRvIHRoYXQg
d2FsayBoZXJlLCBhbmQgcmVjb3JkIGp1c3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHRoZSBmb2xs
b3dpbmcgdmVjdG9yIHRvIGVtaXQgdGhlIHJpZ2h0IGNvZGUgYXQgdGhlIGVuZCBvZiBBaXIuCisg
ICAgICAgIFZlY3RvcjxWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ+IGFyZ3VtZW50c1RvRW1p
dEZyb21SaWdodFRvTGVmdDsKKyAgICAgICAgaW50IHN0b3JlT2Zmc2V0ID0gQ2FsbEZyYW1lOjp0
aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7
CisgICAgICAgIHVuc2lnbmVkIHBhcmFtc09mZnNldCA9IDQ7CisgICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKICAgICAgICAgYXV0byBwdXNoQW5kQ291bnRBcmd1bWVudHNGcm9tUmlnaHRUb0xl
ZnQgPSByZWN1cnNhYmxlTGFtYmRhKFsmXShhdXRvIHNlbGYsIE5vZGUqIHRhcmdldCkgLT4gdm9p
ZCB7Ci0gICAgICAgICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21TcHJlYWQpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAodGFyZ2V0LT5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIFBoYW50
b21TcHJlYWQ6CiAgICAgICAgICAgICAgICAgc2VsZih0YXJnZXQtPmNoaWxkMSgpLm5vZGUoKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQpIHsKKyAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAgICAgICAgICAgIEJp
dFZlY3RvciogYml0VmVjdG9yID0gdGFyZ2V0LT5iaXRWZWN0b3IoKTsKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB0YXJnZXQtPm51bUNoaWxkcmVuKCk7IGktLTsgKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChiaXRWZWN0b3ItPmdldChpKSkKQEAgLTEwMTM1LDI3ICsxMDIw
OSw0NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgKytzdGF0aWNBcmd1bWVu
dENvdW50OwogICAgICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gdGhpcy0+
bG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKHRhcmdldCwgaSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcGF0Y2hwb2ludEFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0LmFwcGVuZCh7
IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRvbU5ld0FycmF5V2l0aFNw
cmVhZENhc2UsIHBhcmFtc09mZnNldCArIChpbmRleCsrKX0pOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlC
dWZmZXIpIHsKLSAgICAgICAgICAgICAgICBzdGF0aWNBcmd1bWVudENvdW50ICs9IHRhcmdldC0+
Y2FzdE9wZXJhbmQ8SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpLT5sZW5ndGgoKTsKKyAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5QnVmZmVyOiB7CisgICAgICAgICAgICAgICAgYXV0byog
YXJyYXkgPSB0YXJnZXQtPmNhc3RPcGVyYW5kPEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKTsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBhcnJheUxlbmd0aCA9IGFycmF5LT5sZW5ndGgoKTsKKyAg
ICAgICAgICAgICAgICBzdGF0aWNBcmd1bWVudENvdW50ICs9IGFycmF5TGVuZ3RoOworICAgICAg
ICAgICAgICAgIENoZWNrZWQ8aW50MzJfdD4gb2Zmc2V0Q291bnQgeyAxIH07CisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJyYXlMZW5ndGg7IGktLTsgKytvZmZzZXRDb3VudCkg
eworICAgICAgICAgICAgICAgICAgICBDaGVja2VkPGludDMyX3Q+IGN1cnJlbnRTdG9yZU9mZnNl
dCB7IHN0b3JlT2Zmc2V0IH07CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdG9yZU9mZnNl
dCAtPSAob2Zmc2V0Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoUmVnaXN0ZXIp
KSk7CisgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdmFyYXJncyB2YWx1ZXMgYXJlIGRy
YWluZWQgYXMgSlNWYWx1ZSwgd2Ugc2hvdWxkIG5vdCBnZW5lcmF0ZSB2YWx1ZQorICAgICAgICAg
ICAgICAgICAgICAvLyBpbiBEb3VibGUgZm9ybSBldmVuIGlmIFBoYW50b21OZXdBcnJheUJ1ZmZl
cidzIGluZGV4aW5nVHlwZSBpcyBBcnJheVdpdGhEb3VibGUuCisgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPmdldChpKSk7CisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJh
cmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2Us
IHZhbHVlLCBjdXJyZW50U3RvcmVPZmZzZXQudmFsdWUoKSB9KTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0LmFwcGVuZCh7
IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRvbU5ld0FycmF5QnVmZmVy
RW5kLCBhcnJheUxlbmd0aCB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldC0+b3AoKSA9PSBQaGFudG9t
Q3JlYXRlUmVzdCk7Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA9IHRhcmdldC0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9mQXJn
dW1lbnRzVG9Ta2lwKCk7Ci0gICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gY2FjaGVkU3ByZWFk
TGVuZ3Rocy5lbnN1cmUoaW5saW5lQ2FsbEZyYW1lLCBbJl0gKCkgewotICAgICAgICAgICAgICAg
IHJldHVybiBtX291dC56ZXJvRXh0UHRyKHRoaXMtPmdldFNwcmVhZExlbmd0aEZyb21JbmxpbmVD
YWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkpOwotICAg
ICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgcGF0Y2hwb2ludEFyZ3Vt
ZW50cy5hcHBlbmQobGVuZ3RoKTsKLSAgICAgICAgICAgIHNwcmVhZExlbmd0aHMuYXBwZW5kKGxl
bmd0aCk7CisgICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OiB7CisgICAgICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0YXJnZXQtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHRhcmdldC0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQgPSBwYXJhbXNPZmZzZXQg
KyAoaW5kZXgrKyk7CisgICAgICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGNhY2hlZFNwcmVh
ZExlbmd0aHMuZW5zdXJlKGlubGluZUNhbGxGcmFtZSwgWyZdICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fb3V0Lnplcm9FeHRQdHIodGhpcy0+Z2V0U3ByZWFkTGVuZ3RoRnJvbUlu
bGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUsIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKSk7
CisgICAgICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIHBh
dGNocG9pbnRBcmd1bWVudHMuYXBwZW5kKGxlbmd0aCk7CisgICAgICAgICAgICAgICAgc3ByZWFk
TGVuZ3Rocy5hcHBlbmQobGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNUb0VtaXRG
cm9tUmlnaHRUb0xlZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBl
OjpQaGFudG9tQ3JlYXRlUmVzdCwgaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcCwgcGFyYW1ldGVyT2Zmc2V0IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7Ci0KICAgICAg
ICAgcHVzaEFuZENvdW50QXJndW1lbnRzRnJvbVJpZ2h0VG9MZWZ0KGFyZ3VtZW50cyk7CisKICAg
ICAgICAgTFZhbHVlIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gbV9vdXQuY29uc3RJbnRQ
dHIoc3RhdGljQXJndW1lbnRDb3VudCArIDEpOwogICAgICAgICBmb3IgKExWYWx1ZSBsZW5ndGgg
OiBzcHJlYWRMZW5ndGhzKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBtX291dC5hZGQobGVuZ3RoLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CkBAIC0xMDE4
MywxMiArMTAyNzUsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KTsKIAogICAgICAgICBtX3Byb2MucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMobWluaW11
bUpTQ2FsbEFyZWFTaXplKTsKLSAgICAgICAgCisKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSog
c3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7CisgICAg
ICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OworICAgICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKLSAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBbPSwgYXJn
dW1lbnRzVG9FbWl0ID0gV1RGTW92ZShhcmd1bWVudHNUb0VtaXRGcm9tUmlnaHRUb0xlZnQpXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eCA9CiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdp
bnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CkBAIC0xMDIwMiw3ICsxMDI5
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
aml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKIAog
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6
YWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJl
Z2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTEwMjY2LDc0ICsx
MDM2MCw1NCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKHNj
cmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUjEsIENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKIAotICAgICAgICAgICAgICAgICAgICBpbnQg
c3RvcmVPZmZzZXQgPSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKLQotICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBwYXJhbXNPZmZzZXQgPSA0OwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9
IDA7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZW1pdEFyZ3VtZW50c0Zyb21SaWdodFRvTGVm
dCA9IHJlY3Vyc2FibGVMYW1iZGEoWyZdKGF1dG8gc2VsZiwgTm9kZSogdGFyZ2V0KSAtPiB2b2lk
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbVNw
cmVhZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYodGFyZ2V0LT5jaGlsZDEo
KS5ub2RlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBhcmd1bWVudFRvRW1pdCA6IGFyZ3VtZW50c1Rv
RW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmd1bWVudFRvRW1pdC5t
X3R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFyYXJnc1NwcmVhZEFyZ3Vt
ZW50VG9FbWl0OjpQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkQ2FzZTogeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldCA9IGFyZ3VtZW50VG9FbWl0
Lm1fcGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UucGFyYW1ldGVyT2Zmc2V0OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0VmFsdWVGcm9tUmVwKHBhcmFtc1twYXJhbWV0ZXJPZmZzZXRdLCBz
Y3JhdGNoR1BSMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2Ny
YXRjaEdQUjMsIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BS
MiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJh
eVdpdGhTcHJlYWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJp
dFZlY3RvciA9IHRhcmdldC0+Yml0VmVjdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gdGFyZ2V0LT5udW1DaGlsZHJlbigpOyBpLS07ICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYml0VmVjdG9yLT5nZXQoaSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKHN0YXRlLT5ncmFwaC52YXJBcmdD
aGlsZCh0YXJnZXQsIGkpLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0
Y2hHUFIyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbHVlRnJv
bVJlcChwYXJhbXNbcGFyYW1zT2Zmc2V0ICsgKGluZGV4KyspXSwgc2NyYXRjaEdQUjMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpC
YXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWln
aHQsIHN0b3JlT2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWYXJhcmdzU3ByZWFkQXJndW1l
bnRUb0VtaXQ6OlBoYW50b21OZXdBcnJheUJ1ZmZlckNhc2U6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tTmV3QXJy
YXlCdWZmZXJDYXNlLnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
Y3VycmVudFN0b3JlT2Zmc2V0ID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tTmV3QXJyYXlCdWZm
ZXJDYXNlLmN1cnJlbnRTdG9yZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSksIHNjcmF0Y2hHUFIzKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywgQ0Nh
bGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBl
cnM6OlRpbWVzRWlnaHQsIGN1cnJlbnRTdG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJheUJ1ZmZl
cikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGFycmF5ID0gdGFyZ2V0LT5j
YXN0T3BlcmFuZDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBvZmZzZXRDb3VudCB7IDEgfTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheS0+bGVuZ3RoKCk7IGktLTsg
KytvZmZzZXRDb3VudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWNh
dXNlIHZhcmFyZ3MgdmFsdWVzIGFyZSBkcmFpbmVkIGFzIEpTVmFsdWUsIHdlIHNob3VsZCBub3Qg
Z2VuZXJhdGUgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gRG91
YmxlIGZvcm0gZXZlbiBpZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRleGluZ1R5cGUgaXMg
QXJyYXlXaXRoRG91YmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5LT5nZXQoaSkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1
ZSksIHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tl
ZDxpbnQzMl90PiBjdXJyZW50U3RvcmVPZmZzZXQgeyBzdG9yZU9mZnNldCB9OwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RvcmVPZmZzZXQgLT0gKG9mZnNldENvdW50
ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hH
UFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBjdXJyZW50U3RvcmVP
ZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihhcnJheS0+bGVuZ3RoKCkpKSwgc2NyYXRjaEdQUjIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQ6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYXJyYXlMZW5ndGggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kLmFy
cmF5TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihhcnJheUxlbmd0aCksIHNjcmF0Y2hHUFIyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGFyZ2V0LT5vcCgp
ID09IFBoYW50b21DcmVhdGVSZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gdGFyZ2V0LT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgbnVtQXJndW1lbnRzVG9Db3B5ID0g
cGFyYW1zW3BhcmFtc09mZnNldCArIChpbmRleCsrKV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBnZXRWYWx1ZUZyb21SZXAobnVtQXJndW1lbnRzVG9Db3B5LCBzY3JhdGNoR1BSMyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbG9hZE9mZnNldCA9IChBc3NlbWJseUhlbHBlcnM6OmFy
Z3VtZW50c1N0YXJ0KGlubGluZUNhbGxGcmFtZSkub2Zmc2V0KCkgKyBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBs
b29wU3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBz
Y3JhdGNoR1BSMyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJ
bmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc2NyYXRjaEdQUjMsIENDYWxsSGVscGVy
czo6VGltZXNFaWdodCwgbG9hZE9mZnNldCksIHNjcmF0Y2hHUFI0KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFI0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwg
Q0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNo
R1BSMykubGlua1RvKGxvb3BTdGFydCwgJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
b25lLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
ICAgICBlbWl0QXJndW1lbnRzRnJvbVJpZ2h0VG9MZWZ0KGFyZ3VtZW50cyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbUNy
ZWF0ZVJlc3Q6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbUNyZWF0ZVJlc3QuaW5s
aW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mQXJndW1lbnRzVG9Ta2lwID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tQ3JlYXRlUmVzdC5u
dW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBwYXJhbWV0ZXJPZmZzZXQgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50b21DcmVhdGVSZXN0
LnBhcmFtZXRlck9mZnNldDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIzOjpWYWx1
ZVJlcCBudW1Bcmd1bWVudHNUb0NvcHkgPSBwYXJhbXNbcGFyYW1ldGVyT2Zmc2V0XTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAobnVtQXJndW1lbnRzVG9Db3B5
LCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvYWRPZmZz
ZXQgPSAoQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNTdGFydChpbmxpbmVDYWxsRnJhbWUpLm9m
ZnNldCgpICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9
IGppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSMyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wU3RhcnQgPSBqaXQubGFiZWwoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlciwgc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6VGltZXNFaWdo
dCwgbG9hZE9mZnNldCksIHNjcmF0Y2hHUFI0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2Fs
bEhlbHBlcnM6OlRpbWVzRWlnaHQsIHN0b3JlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNo
R1BSMykubGlua1RvKGxvb3BTdGFydCwgJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZG9udFRocm93ID0gaml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2UubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3Rh
Y2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihz
ZW1hbnRpY05vZGVPcmlnaW4pKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKTsKICAgICAgICAg
ICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlk
Tm90VGhyb3cpOwpAQCAtMTAzNDcsOSArMTA0MjEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50
U2xvdCgwKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZv
OjpDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBD
b25zdHJ1Y3RWYXJhcmdzIHx8IG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3Mp
CisgICAgICAgICAgICAgICAgaWYgKG5vZGVPcCA9PSBDb25zdHJ1Y3RWYXJhcmdzIHx8IG5vZGVP
cCA9PSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5
cGUgPSBDYWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBUYWls
Q2FsbEZvcndhcmRWYXJhcmdzKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVPcCA9PSBU
YWlsQ2FsbFZhcmFyZ3MgfHwgbm9kZU9wID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZhcmFyZ3M7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENh
bGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3M7CkBAIC0xMDM3Nyw3ICsxMDQ1MSw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAg
aml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsK
ICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC0xMDQ4
Myw2ICsxMDU1NywxNCBAQCBwcml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRlKiBzdGF0
ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKKyAgICAgICAg
Q29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOworICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQzKCkpCisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5jaGlsZDMo
KS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBzZW1hbnRpY05vZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lKCk7CisgICAgICAgIENhbGxWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmNhbGxWYXJhcmdz
RGF0YSgpOworICAgICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAt
MTA0OTgsOCArMTA1ODAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8o
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBDYWxsVmFyYXJnc0RhdGEq
IGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKHNl
bWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9
IDE7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHBhcmFtc1thcmdJbmRleCsr
XS5ncHIoKTsKQEAgLTEwNTgzLDE4ICsxMDY2NCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNr
SGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIyKTsKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qg
c2xvd0Nhc2U7Ci0gICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lOwotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5jaGlsZDMoKS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gZW1pdFNl
dHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UgbW9kaWZpZXMgdGhlIHN0YWNrIHBvaW50ZXIgaWYgaXQg
c3VjY2VlZHMuCiAgICAgICAgICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RD
YXNlKCp2bSwgaml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3Jh
dGNoR1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nh
c2UpOwogCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0
Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKLSAgICAg
ICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3Mp
PihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKTsK
ICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8
dm9pZCgqKSgpPihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0
aERpZE5vdFRocm93KTsKQEAgLTEwNjAyLDcgKzEwNjc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9y
aWdpbmFsU3RhY2tIZWlnaHQgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgc2NyYXRjaEdQUjEp
OwotICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CisgICAgICAg
ICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25TaXplRnJh
bWVGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNO
b2RlT3JpZ2luKSwgYXJndW1lbnRzR1BSLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpKTsKICAgICAgICAgICAgICAgICAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAg
Y2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCgqKSgpPihvcGVyYXRpb25T
aXplRnJhbWVGb3JWYXJhcmdzKSk7CiAKQEAgLTEwNjExLDcgKzEwNjg3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzTGF0ZVJlcC5lbWl0UmVzdG9yZShqaXQsIGFy
Z3VtZW50c0dQUik7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUoaml0
LCBzY3JhdGNoR1BSMSwgZmFsc2UsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMik7CiAgICAgICAg
ICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1pbmlt
dW1KU0NhbGxBcmVhU2l6ZSksIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgc2NyYXRjaEdQUjIsIGFyZ3VtZW50c0dQ
UiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpLCBz
Y3JhdGNoR1BSMSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHNjcmF0Y2hHUFIyLCBhcmd1bWVudHNHUFIs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSwgc2Ny
YXRjaEdQUjEpOwogICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
aml0LnZtKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJp
dHdpc2VfY2FzdDx2b2lkKCopKCk+KG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKSk7CiAgICAg
ICAgICAgICAgICAgICAgIApAQCAtMTA2MjgsOSArMTA3MDQsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGppdC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1l
bnRTbG90KDApKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxsTGlua0lu
Zm86OkNhbGxUeXBlIGNhbGxUeXBlOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IENvbnN0cnVjdFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJn
cykKKyAgICAgICAgICAgICAgICBpZiAobm9kZU9wID09IENvbnN0cnVjdFZhcmFyZ3MgfHwgbm9k
ZU9wID09IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKQogICAgICAgICAgICAgICAgICAgICBjYWxs
VHlwZSA9IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0VmFyYXJnczsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChub2RlLT5vcCgpID09IFRhaWxDYWxsVmFyYXJncyB8fCBub2RlLT5vcCgpID09IFRh
aWxDYWxsRm9yd2FyZFZhcmFyZ3MpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZU9wID09
IFRhaWxDYWxsVmFyYXJncyB8fCBub2RlT3AgPT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncykKICAg
ICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxsVmFyYXJn
czsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNhbGxUeXBlID0g
Q2FsbExpbmtJbmZvOjpDYWxsVmFyYXJnczsKQEAgLTEwNjU2LDcgKzEwNzMyLDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQogICAgICAgICAgICAgICAgICAg
ICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMp
OwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTEw
NzMwLDYgKzEwODA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
ID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSogc3Rh
dGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAg
Q29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgICAgIGF1dG8gZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpLnZhbHVlKCk7CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAg
ICAgICAgICAgIFs9LCAmdm1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTEwNzQ0LDcgKzEwODIyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJ
bmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
aml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKICAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGws
IEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+
KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMDc1Niw3ICsxMDgzNCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAgICAgICAgICAgICAgcmVx
dWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVz
KCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihlY21hTW9k
ZSksIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUkluZm86OnJlZ1Qx
LCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ2FsbEV2YWwpKSwg
R1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKQEAgLTEyMzA1LDEyICsxMjM4
MywxMiBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNo
cG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBO
b2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdp
biA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGlj
Tm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhp
dCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTEyMzI4LDEyICsxMjQwNiwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3Jt
YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeUlkR2VuZXJh
dG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeVZhbEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZSwgc3Vic2NyaXB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHJldHVybkdQUikpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMjM1MSwx
NiArMTI0MjksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25z
dGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9y
aWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJldHVybkdQUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN1YnNj
cmlwdCkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBz
ZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwgcmV0dXJuR1BSLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlLCBzdWJzY3JpcHQp
LmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyNTg3LDYgKzEyNjY1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CiAKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4g
PSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTI2MTAsMTQgKzEyNjg5LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJy
YW5jaElmTm90Q2VsbChwcm90b3R5cGVHUFIpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUlu
ZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5q
aXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoc2VtYW50
aWNOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAg
ICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1z
KS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBhdXRvIGdl
bmVyYXRvciA9IEJveDxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBzZW1hbnRpY05v
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHNj
cmF0Y2hHUFIsCiAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BSLCBwcm90b3R5cGVJc09i
amVjdCk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7
CkBAIC0xMjYzMiw5ICsxMjcxMSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBz
ZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIHZhbHVlR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQ
UikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CkBAIC0xNDA5MiwxMiArMTQxNzEsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBT
dGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05v
ZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRl
eChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGlj
Tm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhp
dCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CkBAIC0xNDEwOSw3ICsxNDE4OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVh
dGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCiAgICAgICAgICAgICAgICAg
YXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgc2VtYW50
aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFd
LmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigp
KSwgdHlwZSk7CiAKQEAgLTE0MTI1LDkgKzE0MjA1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGpp
dC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24s
IHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFu
dGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
aWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTE0MTYxLDEyICsxNDI0MSwxMyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNo
cG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBD
b2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNh
bGxTaXRlSW5kZXgoc2VtYW50aWNOb2RlT3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAg
ICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KQEAgLTE0
MTc4LDcgKzE0MjU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7
CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50
aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIo
KSkpOwogCkBAIC0xNDE5NCw5ICsxNDI3NSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFi
ZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJh
bXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05v
ZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTE0NTkxLDYgKzE0
NjcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAg
ICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIE5vZGVUeXBlIG9wID0gbV9ub2Rl
LT5vcCgpOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKICAgICAgICAgSlNWYWx1ZSBjaGlsZDFDb25zdGFudCA9IG1fc3RhdGUu
Zm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogCiAgICAgICAgIGF1dG8gbm9kZUlu
ZGV4ID0gbV9ub2RlSW5kZXhJbkdyYXBoOwpAQCAtMTQ2MTIsNyArMTQ2OTQsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgICAgICAgICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGV4aXRE
ZXNjcmlwdG9yLT5lbWl0T1NSRXhpdExhdGVyKCpzdGF0ZSwgQmFkVHlwZSwgb3JpZ2luLCBwYXJh
bXMsIG5vZGVJbmRleCwgb3NyRXhpdEFyZ3VtZW50T2Zmc2V0KTsKIAotICAgICAgICAgICAgICAg
IFNuaXBwZXRQYXJhbXMgZG9tSklUUGFyYW1zKCpzdGF0ZSwgcGFyYW1zLCBub2RlLCBudWxscHRy
LCBXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7
CisgICAgICAgICAgICAgICAgU25pcHBldFBhcmFtcyBkb21KSVRQYXJhbXMoKnN0YXRlLCBwYXJh
bXMsIHNlbWFudGljTm9kZU9yaWdpbiwgbnVsbHB0ciwgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShn
cFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzID0gZG9tSklULT5nZW5lcmF0b3IoKS0+cnVuKGpp
dCwgZG9tSklUUGFyYW1zKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IG5vdEpTQ2FzdEZhaWx1cmVDYXNlczsKICAgICAgICAgICAgICAgICBpZiAob3AgPT0gQ2hlY2tO
b3RKU0Nhc3QpIHsKQEAgLTE0NzMyLDYgKzE0ODE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBT
dGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsK
KyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwpAQCAtMTQ3NTMsNyArMTQ4MzYsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNl
cHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAK
LSAgICAgICAgICAgICAgICBTbmlwcGV0UGFyYW1zIGRvbUpJVFBhcmFtcygqc3RhdGUsIHBhcmFt
cywgbm9kZSwgZXhjZXB0aW9ucywgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBX
VEZNb3ZlKGZwU2NyYXRjaCkpOworICAgICAgICAgICAgICAgIFNuaXBwZXRQYXJhbXMgZG9tSklU
UGFyYW1zKCpzdGF0ZSwgcGFyYW1zLCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMsIFdU
Rk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAg
ICAgICAgICAgICAgICBkb21KSVQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQYXJhbXMp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3Rz
Ojpmb3JDYWxsKCk7CkBAIC0xNTUxMCw2ICsxNTU5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21l
RWFybHlSZWdpc3RlciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAg
ICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwpAQCAtMTU1MzUsMTYgKzE1NjE5LDE2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXBMaXN0KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRoRnVuY3Rp
b24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlvbiwg
cGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9k
ZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQ
YXRoRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9KTsKQEAgLTE1NTc3LDYgKzE1NjYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAg
ICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJs
eVJlZ2lzdGVyIH07CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAg
ICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsK
ICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
ICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CkBAIC0xNTU5OCw5ICsxNTY4Myw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcExpc3QoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwog
ICAgICAgICAgICAgICAgICAgICB9KTsKQEAgLTE1NjM0LDYgKzE1NzE5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFs
dWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0
bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAg
ICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xNTY2MSw5ICsxNTc0Nyw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdCA6
IG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdDsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0
aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihz
ZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICB9KTsKQEAgLTIw
MDA2LDYgKzIwMDkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gYmxvY2stPmluZGV4OwogICAgICAgICB1bnNpZ25lZCBub2RlSW5kZXggPSBub2RlID8gbm9k
ZS0+aW5kZXgoKSA6IFVJTlRfTUFYOwogI2lmICFBU1NFUlRfRU5BQkxFRAorICAgICAgICBhdXRv
IG5vZGVPcCA9IG5vZGUgPyBub2RlLT5vcCgpIDogTGFzdE5vZGVUeXBlOwogICAgICAgICBtX291
dC5wYXRjaHBvaW50KFZvaWQpLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwpAQCAtMjAwMTMsNyArMjAxMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJsb2NrSW5kZXgpLCBHUFJJbmZvOjpyZWdU
MCk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bm9kZUluZGV4KSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGlmIChub2RlKQot
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihu
b2RlLT5vcCgpKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlT3ApLCBHUFJJbmZvOjpyZWdUMik7CiAg
ICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihGVExDcmFzaCk7CiAgICAgICAgICAg
ICB9KTsKICNlbHNlIC8vIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbmlwcGV0UGFyYW1zLmNwcAppbmRleCA2ZDY2ODg5ZWU1MjMuLmY2NzVjMTlmNGFi
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVu
YW1lIEFyZ3VtZW50cywgc2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4Pgotc3RhdGljIHZvaWQgZGlz
cGF0Y2goQ0NhbGxIZWxwZXJzJiBqaXQsIEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIERGRzo6Tm9kZSogbm9kZSwgQm94PENDYWxs
SGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMsIENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJv
bSwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMg
YXJndW1lbnRzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKK3N0YXRp
YyB2b2lkIGRpc3BhdGNoKENDYWxsSGVscGVycyYgaml0LCBGVEw6OlN0YXRlKiBzdGF0ZSwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCBDb2RlT3JpZ2luIHNlbWFu
dGljTm9kZU9yaWdpbiwgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMsIEND
YWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3Vs
dFR5cGUgcmVzdWx0LCBBcmd1bWVudHMgYXJndW1lbnRzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFy
Z3VtZW50c0luZGV4Li4uPikKIHsKICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQu
bGFiZWwoKTsKICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkg
ewpAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaChDQ2FsbEhlbHBlcnMmIGpp
dCwgRlRMOjpTdGF0ZSogc3RhdGUsIGNvbnN0IEIzOjpTdGFja21hcEdlbgogCiAgICAgICAgIGZy
b20ubGluaygmaml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cGVyYXRpb24sIGV4dHJhY3RSZXN1bHQocmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+
KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsK
ICAgICB9KTsKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxw
ZXJzJiBqaXQsIEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KICNkZWZp
bmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwg
Li4uKSBcCiAgICAgdm9pZCBTbmlwcGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxs
SGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUg
b3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJn
cykgXAogICAgIHsgXAotICAgICAgICBkaXNwYXRjaChqaXQsICZtX3N0YXRlLCBtX3BhcmFtcywg
bV9ub2RlLCBtX2V4Y2VwdGlvbnMsIGZyb20sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzLCBzdGQ6
Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPGRlY2x0eXBlKGFyZ3MpPjo6dmFs
dWU+KCkpOyBcCisgICAgICAgIGRpc3BhdGNoKGppdCwgJm1fc3RhdGUsIG1fcGFyYW1zLCBtX3Nl
bWFudGljTm9kZU9yaWdpbiwgbV9leGNlcHRpb25zLCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwg
YXJncywgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShh
cmdzKT46OnZhbHVlPigpKTsgXAogICAgIH0gXAogCiBTTklQUEVUX1NMT1dfUEFUSF9DQUxMUyhK
U0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU25pcHBldFBhcmFtcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbmlwcGV0UGFyYW1zLmgKaW5kZXggMWFmMmJkMzhmNGRiLi42MDBiZWY2MTQwMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU25pcHBldFBhcmFtcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU25pcHBldFBhcmFtcy5oCkBAIC0zOCwxMSAr
MzgsMTEgQEAgY2xhc3MgU3RhdGU7CiAKIGNsYXNzIFNuaXBwZXRQYXJhbXMgZmluYWwgOiBwdWJs
aWMgSlNDOjpTbmlwcGV0UGFyYW1zIHsKIHB1YmxpYzoKLSAgICBTbmlwcGV0UGFyYW1zKFN0YXRl
JiBzdGF0ZSwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCBERkc6
Ok5vZGUqIG5vZGUsIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zLCBWZWN0
b3I8VmFsdWU+JiYgcmVncywgVmVjdG9yPEdQUlJlZz4mJiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJS
ZWc+JiYgZnBTY3JhdGNoKQorICAgIFNuaXBwZXRQYXJhbXMoU3RhdGUmIHN0YXRlLCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIENvZGVPcmlnaW4gc2VtYW50aWNO
b2RlT3JpZ2luLCBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucywgVmVjdG9y
PFZhbHVlPiYmIHJlZ3MsIFZlY3RvcjxHUFJSZWc+JiYgZ3BTY3JhdGNoLCBWZWN0b3I8RlBSUmVn
PiYmIGZwU2NyYXRjaCkKICAgICAgICAgOiBKU0M6OlNuaXBwZXRQYXJhbXMoc3RhdGUudm0oKSwg
V1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpCiAg
ICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3BhcmFtcyhwYXJhbXMpCi0gICAg
ICAgICwgbV9ub2RlKG5vZGUpCisgICAgICAgICwgbV9zZW1hbnRpY05vZGVPcmlnaW4oc2VtYW50
aWNOb2RlT3JpZ2luKQogICAgICAgICAsIG1fZXhjZXB0aW9ucyhleGNlcHRpb25zKQogICAgIHsK
ICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBTdGF0ZSYgbV9zdGF0ZTsK
ICAgICBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBtX3BhcmFtczsKLSAgICBE
Rkc6Ok5vZGUqIG1fbm9kZTsKKyAgICBDb2RlT3JpZ2luIG1fc2VtYW50aWNOb2RlT3JpZ2luOwog
ICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBtX2V4Y2VwdGlvbnM7CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="452502"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431510</attachid>
            <date>2021-06-15 19:32:39 -0700</date>
            <delta_ts>2021-06-16 11:34:33 -0700</delta_ts>
            <desc>Patch for re-landing</desc>
            <filename>patch226556</filename>
            <type>text/plain</type>
            <size>85759</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDA2NmU1ZmNlNWQ0Ni4uMjY4ZDk2YWYzMjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNi0xNSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgdGhlIEZU
TChERkcpIGdyYXBoIGFmdGVyIGxvd2VyaW5nIHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NTYKKworICAgICAgICBSZXZpZXdlZCBieSBQ
aGlsIFBpemxvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggb3JpZ2luYWxseSBsYW5kZWQgYXMgcjI3
ODQ2Mywgd2FzIHJldmVydGVkIGluIHIyNzg0NjMuCisgICAgICAgIEkgYmVsaWV2ZSB0aGF0IHRo
ZSBidWcgZm9yIHdoaWNoIGl0IHdhcyByZXZlcnRlZCBhY3R1YWxseSBjb21lcyBmcm9tIHIyNzgz
NzEsIHdoaWNoIHdhcyBhbHNvIHJldmVydGVkIGF0IHRoZSBzYW1lIHRpbWUuIFNvIEkgYW0gbm93
IHJlbGFuZGluZyB0aGlzLgorCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCB3
YXMgZGVhbGluZyB3aXRoIGFsbCBvZiB0aGUgUGF0Y2hwb2ludHMgY3JlYXRlZCBieSBGVExMb3dl
ckRGR1RvQjM6IHRoZXkgZ2V0IGEgbGFtYmRhIGF0IHRoYXQgdGltZSwgd2hpY2ggdGhleSBleGVj
dXRlIGF0IHRoZSBlbmQgb2YgQWlyLCBhbmQgbWFueSBvZiB0aGVzZSBsYW1iZGFzIHdlcmUgY2Fw
dHVyaW5nIGEgcG9pbnRlciB0byBzb21lIHBhcnRzIG9mIHRoZSBERkcgZ3JhcGggYW5kIHJlYWRp
bmcgdGhyb3VnaCBpdCB3aGVuIGJlaW5nIGV4ZWN1dGVkLgorICAgICAgICBJbiBhbGwgY2FzZXMg
YnV0IG9uZSBpdCB3YXMgZWFzaWx5IGZpeGVkOiB0aGV5IHdlcmUgb25seSByZWFkaW5nIGEgZmV3
IGJpdHMgZnJvbSBhIGdpdmVuIG5vZGUsIHNvIEkganVzdCByZWFkIHRoZXNlIGJpdHMgaW4gRlRM
TG93ZXJERkdUb0IzLCBhbmQgY2FwdHVyZWQgdGhlbSAoYnkgdmFsdWUpIGluc3RlYWQgb2YgdGhl
IHBvaW50ZXIgdG8gdGhlIG5vZGUuCisgICAgICAgIFRoZSBleGNlcHRpb24gd2FzIGNvbXBpbGVD
YWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKCk6IGl0cyBwYXRjaHBvaW50IGdlbmVyYXRvciB3
YXMgd2Fsa2luZyB0aHJvdWdoIHRoZSBncmFwaCwgZmxhdHRlbmluZyBhIHRyZWUgb2YgUGhhbnRv
bVNwcmVhZC9QaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkL1BoYW50b21OZXdBcnJheUJ1ZmZlci9Q
aGFudG9tQ3JlYXRlUmVzdCwgZW1pdHRpbmcgc29tZSBjb2RlIGFsb25nIHRoZSB3YXkuCisgICAg
ICAgIFdlIG5vdyBkbyB0aGlzIGZsYXR0ZW5pbmcgb2YgdGhlIHRyZWUgaW4gRlRMTG93ZXJERkdU
b0IzLCBzdG9yZSBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBsYXRlciBlbWl0IHRoZSByZXF1
aXJlZCBjb2RlIGluIGEgdmVjdG9yLCBhbmQgY2FwdHVyZSB0aGF0IHZlY3RvciBpbiB0aGUgbGFt
YmRhICh0aHJvdWdoIGEgbW92ZSBjYXB0dXJlLCB3aGljaCBpcyBhbGxvd2VkIHNpbmNlIEMrKzE0
KS4gU2VlIGBzdHJ1Y3QgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0YCBmb3IgdGhlIGluZm9y
bWF0aW9uIHRoYXQgd2UgbmVlZCB0byBzdG9yZSBpbiB0aGF0IHZlY3Rvci4KKworICAgICAgICBJ
IHRlc3RlZCB0aGlzIGNoYW5nZSBieSBjb21wbGV0aW5nIGEgZnVsbCBydW4gb2YgSmV0U3RyZWFt
MiB3aXRoIEFTQU4uCisgICAgICAgIEkgYWxzbyByYW4gdGhlIHN0cmVzcyB0ZXN0cyB3aXRoICJz
cHJlYWQiIGluIHRoZWlyIG5hbWUgaW4gRGVidWcgbW9kZS4KKworICAgICAgICAqIGIzL0IzU3Bh
cnNlQ29sbGVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xl
YXJBbGwpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmZyZWVERkdJUkFmdGVyTG93ZXJpbmcpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVuYXJ5TWF0aElDKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENh
bGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OlZh
cmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0
cnVjdFZhcmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjplbWl0UmlnaHRTaGlmdFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjcmFzaCk6CisKIDIwMjEtMDYtMTUgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2hvdWxkbid0IGRyYWluIHRo
ZSBtaWNybyB0YXNrIHF1ZXVlIHdoZW4gY2FsbGluZyBvdXQgdG8gT2JqQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAxMTEwMDgyNjAzOTguLjlkNDlmZTYzMjVjNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTE4NjEsNiArMTg2MSwy
NiBAQCB2b2lkIEdyYXBoOjpjbGVhckNQU0NGR0RhdGEoKQogICAgIG1fY3BzQ0ZHID0gbnVsbHB0
cjsKIH0KIAordm9pZCBHcmFwaDo6ZnJlZURGR0lSQWZ0ZXJMb3dlcmluZygpCit7CisgICAgbV9i
bG9ja3MuY2xlYXIoKTsKKyAgICBtX3Jvb3RzLmNsZWFyKCk7CisgICAgbV92YXJBcmdDaGlsZHJl
bi5jbGVhcigpOworICAgIG1fbm9kZXMuY2xlYXJBbGwoKTsKKworICAgIG1fYnl0ZWNvZGVMaXZl
bmVzcy5jbGVhcigpOworICAgIG1fc2FmZVRvTG9hZC5jbGVhcigpOworICAgIG1fY3BzRG9taW5h
dG9ycyA9IG51bGxwdHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nw
c05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRy
OworICAgIG1fc3NhQ0ZHID0gbnVsbHB0cjsKKyAgICBtX2Nwc0NGRyA9IG51bGxwdHI7CisgICAg
bV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOworICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51
bGxwdHI7CisgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG51bGxwdHI7Cit9CisK
IHZvaWQgUHJlZml4OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2VuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNzZmOWRiODJm
OTExLi42MmExZmVmM2RjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAg
LTEwNzQsNiArMTA3NCw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9jYXRjaEVudHJ5cG9pbnRzLmFw
cGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgbWFjaGluZUNvZGUsIEZpeGVkVmVjdG9yPEZsdXNo
Rm9ybWF0PihXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpLCBieXRlY29kZUluZGV4IH0pOwogICAg
IH0KIAorICAgIHZvaWQgZnJlZURGR0lSQWZ0ZXJMb3dlcmluZygpOworCiAgICAgU3RhY2tDaGVj
ayBtX3N0YWNrQ2hlY2tlcjsKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCAyOGY5ODlhZTcyNDYuLjQx
YWE2MzNmZjkzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBA
IC01OCw2ICs1OCw5IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVz
dWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQog
ICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKG1ha2VVbmlxdWU8QjM6
OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAorICAgIGlmICghc2hvdWxkRHVtcERpc2Fzc2VtYmx5
KCkgJiYgIU9wdGlvbnM6OmFzeW5jRGlzYXNzZW1ibHkoKSAmJiAhZ3JhcGguY29tcGlsYXRpb24o
KSAmJiAhc3RhdGUucHJvYy0+bmVlZHNQQ1RvT3JpZ2luTWFwKCkpCisgICAgICAgIGdyYXBoLmZy
ZWVERkdJUkFmdGVyTG93ZXJpbmcoKTsKKwogICAgIHsKICAgICAgICAgR3JhcGhTYWZlcG9pbnQg
c2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9pbnRSZXN1bHQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMTljNDhiMDdlYWVlLi4w
YWQ0ZTg5OGY2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTIzODQsNiArMjM4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9p
bnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgU3RhdGUq
IHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3Jp
Z2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTI0MTQsMTIgKzI0MTUs
MTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0
aElDR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGV4Y2VwdGlvbnMuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMu
Z2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hpbmdGdW5jdGlv
biwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1h
bnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0
aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGwuY2FsbCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBd
LmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLCBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNs
b3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBw
YXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGlj
Tm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsLmNhbGwoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtMjQzOCw4ICsyNDM5LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBleGNlcHRpb25zLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0u
Z3ByKCkpOwogICAgICAgICAgICAgICAgIH0KIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpA
QCAtMjQ5MSw2ICsyNDkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBT
Y3JhdGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAm
bV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2Rl
LT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAg
ICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMjUyNCwxMiArMjUyNiwxMiBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0
aW9uU3RhdGUtPnNob3VsZFNsb3dQYXRoUmVwYXRjaCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0
aW9ucy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaGluZ0Z1
bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigp
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0aElDKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNl
cHRpb25zLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoaW5n
RnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCks
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGwuY2Fs
bCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1sy
XS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgc2VtYW50aWNOb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgcGFy
YW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTI1NDgsOCArMjU1MCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgZXhjZXB0aW9ucy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1sy
XS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5nZXQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1z
WzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVP
cmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAg
ICAgfQogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0zOTk0LDEwICszOTk2LDExIEBA
IHByaXZhdGU6CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAg
IGJvb2wgYmFzZUlzQ2VsbCA9IGFic3RyYWN0VmFsdWUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShT
cGVjQ2VsbCk7CisgICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0
ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+
YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlU2VtYW50aWNPcmlnaW4pOwogCiAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2Fs
bHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlv
bnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBz
KGppdCk7CkBAIC00MDEzLDcgKzQwMTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8g
cGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAgICBh
dXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUs
CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBu
b2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lLAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vdENlbGw7CkBAIC00MDM2LDE1ICs0MDM5LDE1IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3Vs
dEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdp
biksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGlj
T3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CkBA
IC00MTQwLDEwICs0MTQzLDExIEBAIHByaXZhdGU6CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0g
Jm1fZnRsU3RhdGU7CiAgICAgICAgIGJvb2wgYmFzZUlzQ2VsbCA9IGFic3RyYWN0VmFsdWUobV9u
b2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKKyAgICAgICAgQ29kZU9yaWdpbiBub2Rl
U2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNv
ZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRpY09yaWdpbik7CiAK
ICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0
aW9uIGNhbGxzLgogICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2Vw
dGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1
bXBzKGppdCk7CkBAIC00MTU4LDcgKzQxNjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgYXV0byBn
ZW5lcmF0b3IgPSBCb3g8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6Y3JlYXRlKAot
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCisgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGVTZW1hbnRpY09yaWdpbiwg
Y2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5k
R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90
Q2VsbDsKQEAgLTQxOTMsMTUgKzQxOTcsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIHN0dWJJbmZvR1BSKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlv
bihhY2Nlc3NUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNl
bWFudGljT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
YXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJS
ZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTQ1
NjMsMTMgKzQ1NjcsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50
Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKLSAgICAgICAgCisKKyAgICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmln
aW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUt
PmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+
Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRpY09y
aWdpbik7CiAKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhj
ZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTQ1ODAsNyArNDU4NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQ
UlJlZzsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5SWRH
ZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2Rl
U2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNb
MF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3By
KCkpLCBzdHViSW5mb0dQUiwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNt
YU1vZGUsCiAgICAgICAgICAgICAgICAgICAgIHB1dEtpbmQpOwpAQCAtNDU5OSwxNiArNDYwNCwx
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQ
Uik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgSW52YWxpZEdQUlJlZywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5n
cHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBp
ZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigp
LCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1z
WzFdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3By
KCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CkBAIC01Mjk3LDEwICs1MzAyLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBSZWZQdHI8
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgICAgICBTdGF0ZSogc3Rh
dGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3Jp
Z2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+
YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAg
ICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21t
b24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2lu
KTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBm
b3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlv
bihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtNTMxNiw3ICs1MzIyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAg
ICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+
OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6
OkdldEJ5VmFsLAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkZUTEpJVCwgbm9kZVNlbWFudGljT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpH
ZXRCeVZhbCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFs
dWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CkBA
IC01MzQzLDE1ICs1MzQ5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgc3R1YkluZm9HUFIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOwogICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1h
bnRpY09yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpAQCAtNTkxMCwxMiArNTkx
NiwxNiBAQCBwcml2YXRlOgogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwog
ICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1h
bnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgYXV0byBjaGlsZDFV
c2VLaW5kID0gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpOworICAgICAgICBhdXRvIGNoaWxkMlVz
ZUtpbmQgPSBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUg
PSBub2RlLT5lY21hTW9kZSgpLnZhbHVlKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUt
PmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+
Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRpY09y
aWdpbik7CiAKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhj
ZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTU5MjksNyArNTkzOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gc2NyYXRjaEdQUik7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBzY3JhdGNoR1BSKTsKIAotICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkK
KyAgICAgICAgICAgICAgICBpZiAoY2hpbGQxVXNlS2luZCkKICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKIAogICAgICAgICAg
ICAgICAgIGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gWyZdICgpIHsKQEAg
LTU5NDQsNyArNTk1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHNjcmF0Y2hHUFIgIT0gcGFyYW1zWzJdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjaGlsZDJVc2VLaW5kID09IFVudHlwZWRVc2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxs
KEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC01OTUzLDEyICs1OTYzLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29u
c3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewogICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4
cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpCeUlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZVNlbWFudGljT3JpZ2luLCBjYWxs
U2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGVTZW1hbnRpY09yaWdpbiwgY2Fs
bFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3Jp
cHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtNTk4MCwxOCArNTk5MCwxOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cHRpbWl6YXRpb25GdW5jdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlU2VtYW50aWNPcmlnaW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHViSW5mb0dQUiwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
c2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZWNtYU1vZGUpKS5jYWxsKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09yaWdpbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9u
RnVuY3Rpb24sIHJldHVybkdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJh
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKGVjbWFNb2RlKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAK
QEAgLTk4MzcsNiArOTg0Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUq
IHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIFZNKiB2bSA9ICZ0aGlzLT52bSgpOworICAg
ICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
YzsKKyAgICAgICAgYXV0byBub2RlT3AgPSBub2RlLT5vcCgpOwogICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTk4NDgs
MTYgKzk4NjAsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKLSAgICAgICAgICAgICAgICBDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhub2RlU2VtYW50aWNPcmln
aW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5vcCgpID09IENvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6Q29uc3Ry
dWN0IDogQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGVPcCA9PSBDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA6IENh
bGxMaW5rSW5mbzo6Q2FsbCwgR1BSSW5mbzo6cmVnVDApOwogCiAgICAgICAgICAgICAgICAgYXV0
byBzbG93UGF0aCA9IGNhbGxMaW5rSW5mby0+ZW1pdEZhc3RQYXRoKGppdCwgR1BSSW5mbzo6cmVn
VDAsIEludmFsaWRHUFJSZWcsIENhbGxMaW5rSW5mbzo6VXNlRGF0YUlDOjpObyk7CiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAg
ICAgICAgICAgc2xvd1BhdGgubGluaygmaml0KTsKICAgICAgICAgICAgICAgICBhdXRvIHNsb3dQ
YXRoU3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAKICAgICAg
ICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CkBAIC05OTQ3LDYgKzk5NTksNyBAQCBwcml2YXRl
OgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CisgICAgICAgIENvZGVPcmlnaW4gc2Vt
YW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBTdGF0ZSog
c3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTk5ODAsNyArOTk5Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bVBhc3NlZEFyZ3MgPSBudW1QYXNzZWRBcmdz
OwogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3Rl
cnMoaml0LmNvZGVCbG9jaygpKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRD
YWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBJbnZhbGlkR1BSUmVn
KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgbWFpblBhdGggPSBqaXQubGFiZWwoKTsKQEAgLTk5OTcsNyArMTAwMTAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRo
ID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHRvU2F2ZSwgaml0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRp
b25MaW5rRGlyZWN0Q2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljTm9kZU9y
aWdpbiwgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoY2FsbExpbmtJbmZvKSwgY2FsbGVlR1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLT5zZXRFeGVjdXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7
CkBAIC0xMDAxMiw3ICsxMDAyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxM
aW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oc2Vt
YW50aWNOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2Fs
bCgKICAgICAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkRpcmVj
dENvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6RGlyZWN0Q2FsbCwgSW52YWxpZEdQUlJlZyk7CiAK
QEAgLTEwMDM5LDcgKzEwMDUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNl
cHRpb25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlv
bkxpbmtEaXJlY3RDYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRHUFJS
ZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbGxlZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaml0Lmp1bXAoKS5saW5rVG8obWFpblBhdGgsICZqaXQpOwpAQCAtMTAxMTUsNiArMTAx
MjgsNyBAQCBwcml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0
bFN0YXRlOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKKyAgICAgICAgQ29kZU9yaWdp
biBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpA
QCAtMTAxNTIsNyArMTAxNjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHNsb3dQYXRo
U2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDAp
KTsKICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnByZXBhcmVGb3JTbG93UGF0aCgp
OwogCi0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGlj
Tm9kZU9yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogCiAgICAgICAgICAgICAgICAgYXV0byBkb25l
TG9jYXRpb24gPSBqaXQubGFiZWwoKTsKQEAgLTEwMTY2LDcgKzEwMTgwLDYwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgfQotICAgIAor
CisgICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2Ugewor
ICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQ7CisgICAgfTsKKyAgICBzdHJ1Y3QgQ2Fw
dHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlIHsKKyAgICAgICAgaW50NjRfdCB2YWx1
ZTsKKyAgICAgICAgaW50MzJfdCBjdXJyZW50U3RvcmVPZmZzZXQ7CisgICAgfTsKKyAgICBzdHJ1
Y3QgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQgeworICAgICAgICB1bnNpZ25l
ZCBhcnJheUxlbmd0aDsKKyAgICB9OworICAgIHN0cnVjdCBDYXB0dXJlZEZvclBoYW50b21DcmVh
dGVSZXN0IHsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWU7CisgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOworICAgICAgICB1bnNpZ25lZCBw
YXJhbWV0ZXJPZmZzZXQ7CisgICAgfTsKKyAgICBzdHJ1Y3QgVmFyYXJnc1NwcmVhZEFyZ3VtZW50
VG9FbWl0IHsKKyAgICAgICAgZW51bSBUeXBlIHsKKyAgICAgICAgICAgIFBoYW50b21OZXdBcnJh
eVdpdGhTcHJlYWRDYXNlLAorICAgICAgICAgICAgUGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZSwK
KyAgICAgICAgICAgIFBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCwKKyAgICAgICAgICAgIFBoYW50
b21DcmVhdGVSZXN0CisgICAgICAgIH0gbV90eXBlOworICAgICAgICB1bmlvbiB7CisgICAgICAg
ICAgICBDYXB0dXJlZEZvclBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlIG1fcGhhbnRvbU5l
d0FycmF5V2l0aFNwcmVhZENhc2U7CisgICAgICAgICAgICBDYXB0dXJlZEZvclBoYW50b21OZXdB
cnJheUJ1ZmZlckNhc2UgbV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlOworICAgICAgICAgICAg
Q2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQgbV9waGFudG9tTmV3QXJyYXlCdWZm
ZXJFbmQ7CisgICAgICAgICAgICBDYXB0dXJlZEZvclBoYW50b21DcmVhdGVSZXN0IG1fcGhhbnRv
bUNyZWF0ZVJlc3Q7CisgICAgICAgIH07CisKKyAgICAgICAgVmFyYXJnc1NwcmVhZEFyZ3VtZW50
VG9FbWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0LCB1bnNpZ25lZCBhcmcp
CisgICAgICAgICAgICA6IG1fdHlwZSh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV90
eXBlID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlKQorICAgICAgICAgICAgICAgIG1f
cGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UgPSB7IGFyZyB9OworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHQgPT0gUGhhbnRvbU5ld0FycmF5QnVmZmVyRW5k
KTsKKyAgICAgICAgICAgICAgICBtX3BoYW50b21OZXdBcnJheUJ1ZmZlckVuZCA9IHsgYXJnIH07
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgVmFyYXJnc1NwcmVhZEFyZ3VtZW50
VG9FbWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0LCBpbnQ2NF90IHZhbHVl
LCBpbnQzMl90IGN1cnJlbnRTdG9yZU9mZnNldCkKKyAgICAgICAgICAgIDogbV90eXBlKHQpCisg
ICAgICAgICAgICAsIG1fcGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZSh7IHZhbHVlLCBjdXJyZW50
U3RvcmVPZmZzZXQgfSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHQgPT0gUGhhbnRv
bU5ld0FycmF5QnVmZmVyQ2FzZSk7CisgICAgICAgIH0KKyAgICAgICAgVmFyYXJnc1NwcmVhZEFy
Z3VtZW50VG9FbWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0LCBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXAsIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldCkKKyAgICAgICAgICAgIDogbV90eXBlKHQpCisg
ICAgICAgICAgICAsIG1fcGhhbnRvbUNyZWF0ZVJlc3QoeyBpbmxpbmVDYWxsRnJhbWUsIG51bWJl
ck9mQXJndW1lbnRzVG9Ta2lwLCBwYXJhbWV0ZXJPZmZzZXQgfSkKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKHQgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpOworICAgICAgICB9CisgICAgfTsK
KwogICAgIHZvaWQgY29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQoKQogICAgIHsK
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKQEAgLTEwMTgxLDEzICsxMDI0OCwyMCBAQCBw
cml2YXRlOgogICAgICAgICBWZWN0b3I8TFZhbHVlLCAyPiBzcHJlYWRMZW5ndGhzOwogICAgICAg
ICBWZWN0b3I8TFZhbHVlLCA4PiBwYXRjaHBvaW50QXJndW1lbnRzOwogICAgICAgICBIYXNoTWFw
PElubGluZUNhbGxGcmFtZSosIExWYWx1ZSwgV1RGOjpEZWZhdWx0SGFzaDxJbmxpbmVDYWxsRnJh
bWUqPiwgV1RGOjpOdWxsYWJsZUhhc2hUcmFpdHM8SW5saW5lQ2FsbEZyYW1lKj4+IGNhY2hlZFNw
cmVhZExlbmd0aHM7CisgICAgICAgIC8vIEJlY2F1c2UgdGhlIHBhdGNocG9pbnQgZ2VuZXJhdG9y
IHJ1bnMgbGF0ZSBpbiBBaXIsIHRoZSBkZmcgZ3JhcGggd2lsbCBiZSBsb25nIGdvbmUuCisgICAg
ICAgIC8vIFNvIHdlIG11c3QgbG9hZCBldmVyeXRoaW5nIHJlbGV2YW50IHJpZ2h0IG5vdywgYW5k
IG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGNhcHR1cmVkIGJ5IHZhbHVlIGJ5IHRoZSBsYW1iZGEg
dGhhdCBhY3RzIGFzIHRoZSBnZW5lcmF0b3IKKyAgICAgICAgLy8gT25lIHBhcnRpY3VsYXJseSB0
cmlja3kgcG9pbnQgaXMgdGhhdCB0aGUgZ2VuZXJhdG9yIHdvdWxkIGxpa2UgdG8gd2FsayBvdmVy
IHRoZSB0cmVlIHJvb3RlZCBhdCB0aGlzIG5vZGUsIGV4cGxvcmluZyB0aHJvdWdoIFBoYW50b21O
ZXdBcnJheVdpdGhTcHJlYWQgYW5kIFBoYW50b21OZXdBcnJheUJ1ZmZlciwgZW1pdHRpbmcgY29k
ZSBhbG9uZyB0aGUgd2F5LgorICAgICAgICAvLyBJbnN0ZWFkLCB3ZSBkbyB0aGF0IHdhbGsgaGVy
ZSwgYW5kIHJlY29yZCBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB0aGUgZm9sbG93aW5nIHZl
Y3RvciB0byBlbWl0IHRoZSByaWdodCBjb2RlIGF0IHRoZSBlbmQgb2YgQWlyLgorICAgICAgICBW
ZWN0b3I8VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0PiBhcmd1bWVudHNUb0VtaXRGcm9tUmln
aHRUb0xlZnQ7CisgICAgICAgIGludCBzdG9yZU9mZnNldCA9IENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworICAgICAg
ICB1bnNpZ25lZCBwYXJhbXNPZmZzZXQgPSA0OworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAgICAgICAgIGF1dG8gcHVzaEFuZENvdW50QXJndW1lbnRzRnJvbVJpZ2h0VG9MZWZ0ID0gcmVj
dXJzYWJsZUxhbWJkYShbJl0oYXV0byBzZWxmLCBOb2RlKiB0YXJnZXQpIC0+IHZvaWQgewotICAg
ICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tU3ByZWFkKSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHRhcmdldC0+b3AoKSkgeworICAgICAgICAgICAgY2FzZSBQaGFudG9tU3ByZWFk
OgogICAgICAgICAgICAgICAgIHNlbGYodGFyZ2V0LT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRhcmdl
dC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkKSB7CisgICAgICAgICAgICBjYXNl
IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgICAgICBCaXRWZWN0b3Iq
IGJpdFZlY3RvciA9IHRhcmdldC0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gdGFyZ2V0LT5udW1DaGlsZHJlbigpOyBpLS07ICkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoYml0VmVjdG9yLT5nZXQoaSkpCkBAIC0xMDE5NiwyNyArMTAyNzAsNDUgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICsrc3RhdGljQXJndW1lbnRDb3VudDsK
ICAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IHRoaXMtPmxvd0pTVmFs
dWUobV9ncmFwaC52YXJBcmdDaGlsZCh0YXJnZXQsIGkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnRBcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJhcmdz
U3ByZWFkQXJndW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNl
LCBwYXJhbXNPZmZzZXQgKyAoaW5kZXgrKyl9KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbU5ld0FycmF5QnVmZmVyKSB7
Ci0gICAgICAgICAgICAgICAgc3RhdGljQXJndW1lbnRDb3VudCArPSB0YXJnZXQtPmNhc3RPcGVy
YW5kPEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBjYXNl
IFBoYW50b21OZXdBcnJheUJ1ZmZlcjogeworICAgICAgICAgICAgICAgIGF1dG8qIGFycmF5ID0g
dGFyZ2V0LT5jYXN0T3BlcmFuZDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCk7CisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgYXJyYXlMZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAg
ICAgICAgc3RhdGljQXJndW1lbnRDb3VudCArPSBhcnJheUxlbmd0aDsKKyAgICAgICAgICAgICAg
ICBDaGVja2VkPGludDMyX3Q+IG9mZnNldENvdW50IHsgMSB9OworICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGFycmF5TGVuZ3RoOyBpLS07ICsrb2Zmc2V0Q291bnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBjdXJyZW50U3RvcmVPZmZzZXQgeyBzdG9y
ZU9mZnNldCB9OworICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RvcmVPZmZzZXQgLT0gKG9m
ZnNldENvdW50ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAg
ICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHZhcmFyZ3MgdmFsdWVzIGFyZSBkcmFpbmVkIGFz
IEpTVmFsdWUsIHdlIHNob3VsZCBub3QgZ2VuZXJhdGUgdmFsdWUKKyAgICAgICAgICAgICAgICAg
ICAgLy8gaW4gRG91YmxlIGZvcm0gZXZlbiBpZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRl
eGluZ1R5cGUgaXMgQXJyYXlXaXRoRG91YmxlLgorICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5LT5nZXQoaSkpOworICAgICAgICAgICAgICAg
ICAgICBhcmd1bWVudHNUb0VtaXRGcm9tUmlnaHRUb0xlZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVh
ZEFyZ3VtZW50VG9FbWl0OjpUeXBlOjpQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlLCB2YWx1ZSwg
Y3VycmVudFN0b3JlT2Zmc2V0LnZhbHVlKCkgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJhcmdz
U3ByZWFkQXJndW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCwgYXJy
YXlMZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0YXJnZXQtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJl
c3QpOwotICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0YXJn
ZXQtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gdGFyZ2V0LT5udW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcCgpOwotICAgICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGNhY2hlZFNwcmVhZExlbmd0aHMu
ZW5zdXJlKGlubGluZUNhbGxGcmFtZSwgWyZdICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bV9vdXQuemVyb0V4dFB0cih0aGlzLT5nZXRTcHJlYWRMZW5ndGhGcm9tSW5saW5lQ2FsbEZyYW1l
KGlubGluZUNhbGxGcmFtZSwgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApKTsKLSAgICAgICAgICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgIHBhdGNocG9pbnRBcmd1bWVudHMuYXBw
ZW5kKGxlbmd0aCk7Ci0gICAgICAgICAgICBzcHJlYWRMZW5ndGhzLmFwcGVuZChsZW5ndGgpOwor
ICAgICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDogeworICAgICAgICAgICAgICAgIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0ID0gcGFyYW1zT2Zmc2V0ICsgKGluZGV4
KyspOworICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBjYWNoZWRTcHJlYWRMZW5ndGhz
LmVuc3VyZShpbmxpbmVDYWxsRnJhbWUsIFsmXSAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtX291dC56ZXJvRXh0UHRyKHRoaXMtPmdldFNwcmVhZExlbmd0aEZyb21JbmxpbmVDYWxs
RnJhbWUoaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkpOworICAgICAg
ICAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50
QXJndW1lbnRzLmFwcGVuZChsZW5ndGgpOworICAgICAgICAgICAgICAgIHNwcmVhZExlbmd0aHMu
YXBwZW5kKGxlbmd0aCk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0
VG9MZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRv
bUNyZWF0ZVJlc3QsIGlubGluZUNhbGxGcmFtZSwgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHBh
cmFtZXRlck9mZnNldCB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwotCiAgICAgICAgIHB1c2hB
bmRDb3VudEFyZ3VtZW50c0Zyb21SaWdodFRvTGVmdChhcmd1bWVudHMpOworCiAgICAgICAgIExW
YWx1ZSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IG1fb3V0LmNvbnN0SW50UHRyKHN0YXRp
Y0FyZ3VtZW50Q291bnQgKyAxKTsKICAgICAgICAgZm9yIChMVmFsdWUgbGVuZ3RoIDogc3ByZWFk
TGVuZ3RocykKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gbV9vdXQu
YWRkKGxlbmd0aCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwpAQCAtMTAyNDQsMTIgKzEw
MzM2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
c3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiAKICAg
ICAgICAgbV9wcm9jLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKG1pbmltdW1KU0NhbGxB
cmVhU2l6ZSk7Ci0gICAgICAgIAorCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNv
ZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0g
Jm1fZnRsU3RhdGU7CiAgICAgICAgIFZNKiB2bSA9ICZ0aGlzLT52bSgpOworICAgICAgICBDb2Rl
T3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAg
ICAgYXV0byBub2RlT3AgPSBub2RlLT5vcCgpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCi0gICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgWz0sIGFyZ3VtZW50c1Rv
RW1pdCA9IFdURk1vdmUoYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0KV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAg
ICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQogICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRV
bmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOwpAQCAtMTAyNjMsNyArMTAzNTcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihj
YWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2Rl
QmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAg
ICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lz
dGVycygpOwogICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNl
dDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CkBAIC0xMDMyNyw3NCArMTA0MjEsNTQg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BS
MiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgKyBQYXlsb2FkT2Zmc2V0KSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaW50IHN0b3JlT2Zm
c2V0ID0gQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1z
T2Zmc2V0ID0gNDsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAg
ICAgICAgICAgICAgICAgICBhdXRvIGVtaXRBcmd1bWVudHNGcm9tUmlnaHRUb0xlZnQgPSByZWN1
cnNhYmxlTGFtYmRhKFsmXShhdXRvIHNlbGYsIE5vZGUqIHRhcmdldCkgLT4gdm9pZCB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LT5vcCgpID09IFBoYW50b21TcHJlYWQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKHRhcmdldC0+Y2hpbGQxKCkubm9kZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgYXJndW1lbnRUb0VtaXQgOiBhcmd1bWVudHNUb0VtaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRUb0VtaXQubV90eXBlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1p
dDo6UGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2U6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50
b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlLnBhcmFtZXRlck9mZnNldDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0
aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldFZhbHVlRnJvbVJlcChwYXJhbXNbcGFyYW1ldGVyT2Zmc2V0XSwgc2NyYXRjaEdQ
UjMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIz
LCBDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIENDYWxs
SGVscGVyczo6VGltZXNFaWdodCwgc3RvcmVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3By
ZWFkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0VmVjdG9yKiBiaXRWZWN0b3Ig
PSB0YXJnZXQtPmJpdFZlY3RvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IHRhcmdldC0+bnVtQ2hpbGRyZW4oKTsgaS0tOyApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdFZlY3Rvci0+Z2V0KGkpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZihzdGF0ZS0+Z3JhcGgudmFyQXJnQ2hpbGQodGFy
Z2V0LCBpKS5ub2RlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BSMik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAocGFy
YW1zW3BhcmFtc09mZnNldCArIChpbmRleCsrKV0sIHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4
KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBzdG9y
ZU9mZnNldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0
OjpQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCB2YWx1ZSA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVy
Q2FzZS52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGN1cnJlbnRT
dG9yZU9mZnNldCA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZS5j
dXJyZW50U3RvcmVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQodmFsdWUpLCBzY3JhdGNoR1BSMyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsIENDYWxsSGVscGVy
czo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1l
c0VpZ2h0LCBjdXJyZW50U3RvcmVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBhcnJheSA9IHRhcmdldC0+Y2FzdE9wZXJh
bmQ8SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENoZWNrZWQ8aW50MzJfdD4gb2Zmc2V0Q291bnQgeyAxIH07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJyYXktPmxlbmd0aCgpOyBpLS07ICsrb2Zmc2V0
Q291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB2YXJh
cmdzIHZhbHVlcyBhcmUgZHJhaW5lZCBhcyBKU1ZhbHVlLCB3ZSBzaG91bGQgbm90IGdlbmVyYXRl
IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIERvdWJsZSBmb3Jt
IGV2ZW4gaWYgUGhhbnRvbU5ld0FycmF5QnVmZmVyJ3MgaW5kZXhpbmdUeXBlIGlzIEFycmF5V2l0
aERvdWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9
IEpTVmFsdWU6OmVuY29kZShhcnJheS0+Z2V0KGkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQodmFsdWUpLCBzY3Jh
dGNoR1BSMyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZWQ8aW50MzJf
dD4gY3VycmVudFN0b3JlT2Zmc2V0IHsgc3RvcmVPZmZzZXQgfTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudFN0b3JlT2Zmc2V0IC09IChvZmZzZXRDb3VudCAqIHN0YXRp
Y19jYXN0PGludDMyX3Q+KHNpemVvZihSZWdpc3RlcikpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgY3VycmVudFN0b3JlT2Zmc2V0KSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNp
emVfdD4oYXJyYXktPmxlbmd0aCgpKSksIHNjcmF0Y2hHUFIyKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZhcmFyZ3NT
cHJlYWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFycmF5TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6
ZV90Pihhcmd1bWVudFRvRW1pdC5tX3BoYW50b21OZXdBcnJheUJ1ZmZlckVuZC5hcnJheUxlbmd0
aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoYXJyYXlMZW5ndGgpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldC0+b3AoKSA9PSBQaGFu
dG9tQ3JlYXRlUmVzdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IHRhcmdldC0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCA9IHRhcmdldC0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgQjM6OlZhbHVlUmVwIG51bUFyZ3VtZW50c1RvQ29weSA9IHBhcmFtc1tw
YXJhbXNPZmZzZXQgKyAoaW5kZXgrKyldOwotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFs
dWVGcm9tUmVwKG51bUFyZ3VtZW50c1RvQ29weSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxvYWRPZmZzZXQgPSAoQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNT
dGFydChpbmxpbmVDYWxsRnJhbWUpLm9mZnNldCgpICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAp
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBkb25lID0gaml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcFN0YXJ0
ID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQ
UjMpOwotICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIyKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OlRpbWVz
RWlnaHQsIGxvYWRPZmZzZXQpLCBzY3JhdGNoR1BSNCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIENDYWxsSGVs
cGVyczo6VGltZXNFaWdodCwgc3RvcmVPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUjMpLmxp
bmtUbyhsb29wU3RhcnQsICZqaXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgZW1p
dEFyZ3VtZW50c0Zyb21SaWdodFRvTGVmdChhcmd1bWVudHMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlBoYW50b21DcmVhdGVSZXN0
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50b21DcmVhdGVSZXN0LmlubGluZUNhbGxG
cmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcCA9IGFyZ3VtZW50VG9FbWl0Lm1fcGhhbnRvbUNyZWF0ZVJlc3QubnVtYmVyT2ZB
cmd1bWVudHNUb1NraXA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFy
YW1ldGVyT2Zmc2V0ID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9tQ3JlYXRlUmVzdC5wYXJhbWV0
ZXJPZmZzZXQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgbnVt
QXJndW1lbnRzVG9Db3B5ID0gcGFyYW1zW3BhcmFtZXRlck9mZnNldF07CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0VmFsdWVGcm9tUmVwKG51bUFyZ3VtZW50c1RvQ29weSwgc2NyYXRj
aEdQUjMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsb2FkT2Zmc2V0ID0gKEFz
c2VtYmx5SGVscGVyczo6YXJndW1lbnRzU3RhcnQoaW5saW5lQ2FsbEZyYW1lKS5vZmZzZXQoKSAr
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUjMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcFN0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0
aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIGxvYWRP
ZmZzZXQpLCBzY3JhdGNoR1BSNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0
b3JlNjQoc2NyYXRjaEdQUjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJz
OjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUjMpLmxp
bmtUbyhsb29wU3RhcnQsICZqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUu
bGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRv
bnRUaHJvdyA9IGppdC5qdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmso
JmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAg
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZs
b3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNO
b2RlT3JpZ2luKSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bihqaXQudm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk7CiAgICAgICAgICAgICAgICAg
ICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93
KTsKQEAgLTEwNDA4LDkgKzEwNDgyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQu
c3RvcmU2NChzY3JhdGNoR1BSMywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoMCkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5
cGUgY2FsbFR5cGU7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0
VmFyYXJncyB8fCBub2RlLT5vcCgpID09IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKQorICAgICAg
ICAgICAgICAgIGlmIChub2RlT3AgPT0gQ29uc3RydWN0VmFyYXJncyB8fCBub2RlT3AgPT0gQ29u
c3RydWN0Rm9yd2FyZFZhcmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gQ2Fs
bExpbmtJbmZvOjpDb25zdHJ1Y3RWYXJhcmdzOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPm9wKCkgPT0gVGFpbENhbGxWYXJhcmdzIHx8IG5vZGUtPm9wKCkgPT0gVGFpbENhbGxGb3J3
YXJkVmFyYXJncykKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlT3AgPT0gVGFpbENhbGxW
YXJhcmdzIHx8IG5vZGVPcCA9PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKQogICAgICAgICAgICAg
ICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6VGFpbENhbGxWYXJhcmdzOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0lu
Zm86OkNhbGxWYXJhcmdzOwpAQCAtMTA0MzgsNyArMTA1MTIsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQpAQCAtMTA1NDQsNiArMTA2
MTgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9y
aWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmln
aW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MygpKQorICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQzKCktPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
aW5saW5lQ2FsbEZyYW1lID0gc2VtYW50aWNOb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwor
ICAgICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsK
KyAgICAgICAgYXV0byBub2RlT3AgPSBub2RlLT5vcCgpOwogICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTEwNTU5LDgg
KzEwNjQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKLSAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRhID0g
bm9kZS0+Y2FsbFZhcmFyZ3NEYXRhKCk7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05v
ZGVPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSAxOwogICAg
ICAgICAgICAgICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBwYXJhbXNbYXJnSW5kZXgrK10uZ3ByKCk7
CkBAIC0xMDY0NCwxOCArMTA3MjUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hlaWdodCAv
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNl
OwotICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQzKCktPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZSgpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIGVtaXRTZXR1cFZhcmFy
Z3NGcmFtZUZhc3RDYXNlIG1vZGlmaWVzIHRoZSBzdGFjayBwb2ludGVyIGlmIGl0IHN1Y2NlZWRz
LgogICAgICAgICAgICAgICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSgqdm0s
IGppdCwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMs
IGlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKIAog
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7
CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3Zl
cmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQoKiko
KT4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncykpOwogICAgICAgICAgICAg
ICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RU
aHJvdyk7CkBAIC0xMDY2Myw3ICsxMDczOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0
YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIxKTsKLSAgICAg
ICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNpemVG
cmFtZUZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLCBhcmd1bWVudHNHUFIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihkYXRhLT5maXJzdFZhckFyZ09mZnNldCkpOworICAgICAgICAgICAgICAg
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFy
YXJncyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdp
biksIGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRo
RXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQoKikoKT4ob3BlcmF0aW9uU2l6ZUZyYW1l
Rm9yVmFyYXJncykpOwogCkBAIC0xMDY3Miw3ICsxMDc0OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50c0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCBhcmd1bWVudHNH
UFIpOwogICAgICAgICAgICAgICAgICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKGppdCwgc2NyYXRj
aEdQUjEsIGZhbHNlLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjIpOwogICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1taW5pbXVtSlNDYWxs
QXJlYVNpemUpLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25TZXR1cFZhcmFyZ3NGcmFtZSk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHNjcmF0Y2hHUFIyLCBhcmd1bWVudHNHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSwgc2NyYXRjaEdQ
UjEpOworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihzZW1hbnRpY05vZGVPcmlnaW4pLCBzY3JhdGNoR1BSMiwgYXJndW1lbnRzR1BSLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJzdFZhckFyZ09mZnNldCksIHNjcmF0Y2hHUFIx
KTsKICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgp
KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nh
c3Q8dm9pZCgqKSgpPihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSkpOwogICAgICAgICAgICAg
ICAgICAgICAKQEAgLTEwNjg5LDkgKzEwNzY1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBqaXQuc3RvcmU2NCh0aGlzR1BSLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdCgw
KSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxs
VHlwZSBjYWxsVHlwZTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDb25zdHJ1
Y3RWYXJhcmdzIHx8IG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3MpCisgICAg
ICAgICAgICAgICAgaWYgKG5vZGVPcCA9PSBDb25zdHJ1Y3RWYXJhcmdzIHx8IG5vZGVPcCA9PSBD
b25zdHJ1Y3RGb3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBD
YWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
bm9kZS0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBUYWlsQ2FsbEZv
cndhcmRWYXJhcmdzKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVPcCA9PSBUYWlsQ2Fs
bFZhcmFyZ3MgfHwgbm9kZU9wID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZhcmFyZ3M7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5r
SW5mbzo6Q2FsbFZhcmFyZ3M7CkBAIC0xMDcxNyw3ICsxMDc5Myw3IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0LmVt
aXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC0xMDc5MSw2ICsx
MDg2Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1f
ZnRsU3RhdGU7CiAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIENvZGVPcmln
aW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBh
dXRvIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpOwogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAg
ICBbPSwgJnZtXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CkBAIC0xMDgwNSw3ICsxMDg4Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0
cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2Rl
QmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZv
OjpyZWdUMCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
R1BSSW5mbzo6cmVnVDEpOwpAQCAtMTA4MTcsNyArMTA4OTUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykgKyBzaXplb2YoQ2FsbEZyYW1lKikgKiAyOwogICAgICAgICAgICAgICAgIHJlcXVpcmVkQnl0
ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1
aXJlZEJ5dGVzKTsKICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZWNtYU1vZGUpLCBHUFJJ
bmZvOjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvbkNhbGxFdmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDIpOwogICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRh
Z0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86
Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CkBAIC0xMjM2OCwxMSArMTI0NDYsMTIgQEAg
cHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmln
aW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2Rl
T3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRD
b2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoc2VtYW50aWNO
b2RlT3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0
IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4
aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtMTIzOTEsMTIgKzEyNDcwLDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewog
ICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeUlkR2VuZXJhdG9y
Pjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExK
SVQsIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUs
IGJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BS
KSwgc3R1YkluZm9HUFIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRJbkJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRM
SklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIHNlbWFudGlj
Tm9kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwgc3Vic2NyaXB0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSKTsK
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTI0MjQsMTUgKzEyNTAzLDE1IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
c2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2Rl
T3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BS
LCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbklu
QnlJZE9wdGltaXplLCByZXR1cm5HUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTI0NDAs
MTYgKzEyNTE5LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBzdHViSW5mb0dQUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeVZhbE9wdGlt
aXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mb0dQUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZSwgc3Vic2Ny
aXB0KS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUs
IHJldHVybkdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobnVsbHB0ciksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTEyNjc3LDYgKzEyNzU2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAg
ICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAK
KyAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwpAQCAtMTI3MDEsMTQgKzEyNzgxLDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChwcm90
b3R5cGVHUFIpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+
Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoc2VtYW50aWNOb2RlT3JpZ2luKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhp
dCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJ
bnN0YW5jZU9mR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZU
TEpJVCwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwg
cHJvdG90eXBlR1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgICAgICAgICAg
ICAgc2NyYXRjaDJHUFIsIHByb3RvdHlwZUlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTEyNzI5LDE2ICsxMjgwOSwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmln
aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgdmFsdWVHUFIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBy
ZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFu
dGljTm9kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDE5OCwxMiArMTQyNzgsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsK
IAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9yaWdp
biBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwog
CiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVl
Q2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUlu
ZGV4KHNlbWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAg
ICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CkBAIC0xNDIxNyw3ICsx
NDI5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDAp
IDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
RlRMSklULCBzZW1hbnRpY05vZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVl
UmVncyhwYXJhbXNbMV0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhw
YXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKQEAgLTE0MjM3LDE2ICsxNDMx
OCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRp
Y05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24s
IHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFt
c1sxXS5ncHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMTQyODEsMTIgKzE0MzYyLDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gc2Vt
YW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAg
ICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxT
aXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChz
ZW1hbnRpY05vZGVPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGly
ZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94
PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQpAQCAtMTQzMDAsNyArMTQzODIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IElu
dmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6RlRMSklULCBzZW1hbnRpY05vZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpLCBzdHViSW5m
b0dQUik7CiAKQEAgLTE0MzIwLDE2ICsxNDQwMiwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRp
b25GdW5jdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
cGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdw
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05v
ZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0NzI1LDYgKzE0ODA3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X25vZGU7CiAgICAgICAgIE5vZGVUeXBlIG9wID0gbV9ub2RlLT5vcCgpOworICAgICAgICBDb2Rl
T3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAg
ICAgSlNWYWx1ZSBjaGlsZDFDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxk
MSgpKS52YWx1ZSgpOwogCiAgICAgICAgIGF1dG8gbm9kZUluZGV4ID0gbV9ub2RlSW5kZXhJbkdy
YXBoOwpAQCAtMTQ3NDYsNyArMTQ4MjksNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
UmVmUHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGV4aXREZXNjcmlwdG9yLT5lbWl0T1NSRXhp
dExhdGVyKCpzdGF0ZSwgQmFkVHlwZSwgb3JpZ2luLCBwYXJhbXMsIG5vZGVJbmRleCwgb3NyRXhp
dEFyZ3VtZW50T2Zmc2V0KTsKIAotICAgICAgICAgICAgICAgIFNuaXBwZXRQYXJhbXMgZG9tSklU
UGFyYW1zKCpzdGF0ZSwgcGFyYW1zLCBub2RlLCBudWxscHRyLCBXVEZNb3ZlKHJlZ3MpLCBXVEZN
b3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgICAgICAgICAgICAgU25p
cHBldFBhcmFtcyBkb21KSVRQYXJhbXMoKnN0YXRlLCBwYXJhbXMsIHNlbWFudGljTm9kZU9yaWdp
biwgbnVsbHB0ciwgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZw
U2NyYXRjaCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVy
ZUNhc2VzID0gZG9tSklULT5nZW5lcmF0b3IoKS0+cnVuKGppdCwgZG9tSklUUGFyYW1zKTsKICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG5vdEpTQ2FzdEZhaWx1cmVDYXNl
czsKICAgICAgICAgICAgICAgICBpZiAob3AgPT0gQ2hlY2tOb3RKU0Nhc3QpIHsKQEAgLTE0ODY2
LDYgKzE0OTQ5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgQ29kZU9yaWdpbiBz
ZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAt
MTQ4ODcsNyArMTQ5NzEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgQm94PENDYWxs
SGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxl
RXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAKLSAgICAgICAgICAgICAgICBTbmlw
cGV0UGFyYW1zIGRvbUpJVFBhcmFtcygqc3RhdGUsIHBhcmFtcywgbm9kZSwgZXhjZXB0aW9ucywg
V1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwor
ICAgICAgICAgICAgICAgIFNuaXBwZXRQYXJhbXMgZG9tSklUUGFyYW1zKCpzdGF0ZSwgcGFyYW1z
LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMsIFdURk1vdmUocmVncyksIFdURk1vdmUo
Z3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICAgICAgICAgICAgICBkb21KSVQt
PmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQYXJhbXMpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDYWxsKCk7CkBAIC0xNTY0
NCw2ICsxNTcyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+
cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlciB9OwogICAg
ICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgQ29kZU9yaWdpbiBzZW1h
bnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTU2
NjksMTYgKzE1NzU0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXBMaXN0
KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRoRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3Jp
Z2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzFdLmdwcigpLCBw
YXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCku
bGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJh
bXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRoRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3Jp
Z2luKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJd
LmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKQEAgLTE1NzExLDYg
KzE1Nzk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAg
IFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGlj
Tm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xNTczMiw5
ICsxNTgxOCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcExpc3QoKS5saW5rKCZq
aXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9y
aWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93
UGF0aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICB9
KTsKQEAgLTE1NzY4LDYgKzE1ODU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBw
YXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lz
dGVyIH07CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBDb2Rl
T3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CkBAIC0xNTc5NSw5ICsxNTg4Miw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdCA6IG9wZXJhdGlvblZhbHVlQml0VVJT
aGlmdDsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdw
cigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogICAgICAgICAgICAgICAgICAgICB9KTsKQEAgLTIwMTQwLDYgKzIwMjI3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgQmxvY2tJbmRleCBibG9ja0luZGV4ID0gYmxvY2stPmluZGV4OwogICAg
ICAgICB1bnNpZ25lZCBub2RlSW5kZXggPSBub2RlID8gbm9kZS0+aW5kZXgoKSA6IFVJTlRfTUFY
OwogI2lmICFBU1NFUlRfRU5BQkxFRAorICAgICAgICBhdXRvIG5vZGVPcCA9IG5vZGUgPyBub2Rl
LT5vcCgpIDogTGFzdE5vZGVUeXBlOwogICAgICAgICBtX291dC5wYXRjaHBvaW50KFZvaWQpLT5z
ZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMjAxNDcsNyArMjAyMzUs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKGJsb2NrSW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZUluZGV4KSwgR1BSSW5mbzo6
cmVnVDEpOwogICAgICAgICAgICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5vcCgpKSwgR1BSSW5mbzo6
cmVnVDIpOworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihub2RlT3ApLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LmFi
b3J0V2l0aFJlYXNvbihGVExDcmFzaCk7CiAgICAgICAgICAgICB9KTsKICNlbHNlIC8vIEFTU0VS
VF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBw
ZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1z
LmNwcAppbmRleCA2ZDY2ODg5ZWU1MjMuLmY2NzVjMTlmNGFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50cywgc2l6ZV90
Li4uIEFyZ3VtZW50c0luZGV4Pgotc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxwZXJzJiBq
aXQsIEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMsIERGRzo6Tm9kZSogbm9kZSwgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4
Y2VwdGlvbnMsIENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgT3BlcmF0aW9uVHlwZSBvcGVy
YXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMgYXJndW1lbnRzLCBzdGQ6OmluZGV4
X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKK3N0YXRpYyB2b2lkIGRpc3BhdGNoKENDYWxs
SGVscGVycyYgaml0LCBGVEw6OlN0YXRlKiBzdGF0ZSwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zLCBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiwgQm94PEND
YWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMsIENDYWxsSGVscGVyczo6SnVtcExpc3Qg
ZnJvbSwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dHMgYXJndW1lbnRzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKIHsK
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKICAgICBwYXJhbXMu
YWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewpAQCAtNDIsNyArNDIsNyBAQCBz
dGF0aWMgdm9pZCBkaXNwYXRjaChDQ2FsbEhlbHBlcnMmIGppdCwgRlRMOjpTdGF0ZSogc3RhdGUs
IGNvbnN0IEIzOjpTdGFja21hcEdlbgogCiAgICAgICAgIGZyb20ubGluaygmaml0KTsKICAgICAg
ICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmln
aW4sCiAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb24sIGV4dHJhY3RSZXN1
bHQocmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KGFyZ3VtZW50cykuLi4pOwogICAg
ICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICB9KTsKQEAgLTUxLDcgKzUx
LDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxwZXJzJiBqaXQsIEZUTDo6U3RhdGUq
IHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KICNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09Q
RVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBcCiAgICAgdm9pZCBTbmlw
cGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJv
bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBl
IHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAotICAgICAg
ICBkaXNwYXRjaChqaXQsICZtX3N0YXRlLCBtX3BhcmFtcywgbV9ub2RlLCBtX2V4Y2VwdGlvbnMs
IGZyb20sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8
c3RkOjp0dXBsZV9zaXplPGRlY2x0eXBlKGFyZ3MpPjo6dmFsdWU+KCkpOyBcCisgICAgICAgIGRp
c3BhdGNoKGppdCwgJm1fc3RhdGUsIG1fcGFyYW1zLCBtX3NlbWFudGljTm9kZU9yaWdpbiwgbV9l
eGNlcHRpb25zLCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3RkOjptYWtlX2luZGV4
X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZhbHVlPigpKTsgXAog
ICAgIH0gXAogCiBTTklQUEVUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFU
SU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU25pcHBldFBh
cmFtcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmgKaW5k
ZXggMWFmMmJkMzhmNGRiLi42MDBiZWY2MTQwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU25pcHBldFBhcmFtcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU25pcHBldFBhcmFtcy5oCkBAIC0zOCwxMSArMzgsMTEgQEAgY2xhc3MgU3RhdGU7
CiAKIGNsYXNzIFNuaXBwZXRQYXJhbXMgZmluYWwgOiBwdWJsaWMgSlNDOjpTbmlwcGV0UGFyYW1z
IHsKIHB1YmxpYzoKLSAgICBTbmlwcGV0UGFyYW1zKFN0YXRlJiBzdGF0ZSwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCBERkc6Ok5vZGUqIG5vZGUsIEJveDxDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zLCBWZWN0b3I8VmFsdWU+JiYgcmVncywgVmVj
dG9yPEdQUlJlZz4mJiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiYgZnBTY3JhdGNoKQorICAg
IFNuaXBwZXRQYXJhbXMoU3RhdGUmIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMsIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luLCBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucywgVmVjdG9yPFZhbHVlPiYmIHJlZ3MsIFZlY3Rv
cjxHUFJSZWc+JiYgZ3BTY3JhdGNoLCBWZWN0b3I8RlBSUmVnPiYmIGZwU2NyYXRjaCkKICAgICAg
ICAgOiBKU0M6OlNuaXBwZXRQYXJhbXMoc3RhdGUudm0oKSwgV1RGTW92ZShyZWdzKSwgV1RGTW92
ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpCiAgICAgICAgICwgbV9zdGF0ZShzdGF0
ZSkKICAgICAgICAgLCBtX3BhcmFtcyhwYXJhbXMpCi0gICAgICAgICwgbV9ub2RlKG5vZGUpCisg
ICAgICAgICwgbV9zZW1hbnRpY05vZGVPcmlnaW4oc2VtYW50aWNOb2RlT3JpZ2luKQogICAgICAg
ICAsIG1fZXhjZXB0aW9ucyhleGNlcHRpb25zKQogICAgIHsKICAgICB9CkBAIC01NCw3ICs1NCw3
IEBAIHByaXZhdGU6CiAKICAgICBTdGF0ZSYgbV9zdGF0ZTsKICAgICBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBtX3BhcmFtczsKLSAgICBERkc6Ok5vZGUqIG1fbm9kZTsKKyAg
ICBDb2RlT3JpZ2luIG1fc2VtYW50aWNOb2RlT3JpZ2luOwogICAgIEJveDxDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0PiBtX2V4Y2VwdGlvbnM7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>